.fts{
  color-scheme:dark;
  --void:#040705; --ink:#F2F5F0; --accent:#55e039; --accent-2:#6fbd44;
  --panel:rgba(242,245,240,.06); --panel-2:rgba(242,245,240,.10); --line:rgba(242,245,240,.14);
  --muted:rgba(242,245,240,.62); --warn:#ffcc00; --bad:#ff5a3c; --ok:#55e039; --ai:#5ad1ff;
  --font:Arial,Helvetica,sans-serif; --mono:'Courier New',monospace;
  --r:14px; --gap:clamp(12px,2vw,24px); --pad:clamp(16px,3vw,40px); --tap:48px;
  --ease:cubic-bezier(.2,.7,.2,1);
}
.fts *{box-sizing:border-box}
.fts,.fts{margin:0;background:var(--void);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased}
.fts{min-height:100vh;overflow-x:hidden;line-height:1.5}
.fts button,.fts select,.fts input,.fts textarea{font:inherit;color:inherit}
.fts :focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:6px}
.fts .mono{font-family:var(--mono);letter-spacing:.04em}
.fts .muted{color:var(--muted)}
.fts .eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}
.fts .chip{border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:8px 14px;min-height:40px;cursor:pointer;font-size:13px}
.fts .chip[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}
.fts .btn{display:inline-flex;align-items:center;gap:10px;min-height:var(--tap);padding:12px 22px;border-radius:999px;border:1px solid var(--line);
  background:var(--panel);cursor:pointer;text-decoration:none;font-weight:700;transition:transform .2s var(--ease),background .2s}
.fts .btn:hover{transform:translateY(-1px);background:var(--panel-2)}
.fts .btn.primary{background:var(--accent);color:#03140a;border-color:transparent}
.fts .btn.danger{background:var(--bad);color:#fff;border-color:transparent}
.fts .btn.ghost{background:transparent}
.fts .btn[disabled]{opacity:.4;cursor:not-allowed}
.fts .grid{display:grid;gap:var(--gap)}
.fts .panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:clamp(14px,2vw,24px)}
.fts .tag{display:inline-block;font-family:var(--mono);font-size:11px;letter-spacing:.08em;padding:4px 8px;border-radius:6px;border:1px solid var(--line);color:var(--muted)}
.fts .tag.ok{color:var(--ok);border-color:currentColor}
.fts .tag.warn{color:var(--warn);border-color:currentColor}
.fts .tag.bad{color:var(--bad);border-color:currentColor}
.fts .tag.ai{color:var(--ai);border-color:currentColor}
.fts .cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:var(--gap)}
.fts .card{position:relative;border-radius:var(--r);overflow:hidden;background:#0b0f0c;border:1px solid var(--line);text-decoration:none;
  display:flex;flex-direction:column;transition:transform .25s var(--ease),border-color .25s}
.fts .card:hover,.fts .card:focus-visible{transform:translateY(-3px);border-color:var(--card-accent,var(--accent))}
.fts .card .meta{padding:14px 16px 18px}
.fts .card .code{font-family:var(--mono);font-size:12px;color:var(--card-accent,var(--accent))}
.fts .card .cn{font-weight:800;font-size:20px;letter-spacing:.02em}
.fts .card .nm{color:var(--muted);font-size:14px}
.fts .card .st{position:absolute;top:10px;left:10px}
.fts .tabs{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 20px}
.fts .section-head{display:flex;justify-content:space-between;align-items:end;gap:16px;flex-wrap:wrap;margin-top:40px}
.fts .score{font-family:var(--mono);font-size:13px;color:var(--muted)}
.fts .stage3d{position:relative;width:100%;height:min(72vh,760px);border-radius:var(--r);overflow:hidden;background:#020403;border:1px solid var(--line)}
.fts .stage3d canvas{display:block;width:100%;height:100%;touch-action:none}
.fts .hud{position:absolute;inset:auto 12px 12px 12px;display:flex;gap:8px;flex-wrap:wrap;align-items:center;pointer-events:none}
.fts .hud>*{pointer-events:auto}
.fts .hud .label{background:rgba(4,7,5,.72);border:1px solid var(--line);padding:8px 12px;border-radius:10px;font-size:13px}
.fts .toast{position:absolute;top:12px;left:50%;transform:translateX(-50%);background:rgba(4,7,5,.85);border:1px solid var(--accent);
  padding:10px 16px;border-radius:10px;font-size:14px;max-width:90%;text-align:center}
.fts .fallback{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:24px;background:#020403}
.fts .split{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:var(--gap)}
@media (max-width:1000px){.fts .split{grid-template-columns:1fr}}
.fts .flow{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.fts .flow .node{background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:13px}
.fts .flow .arr{color:var(--accent);font-family:var(--mono)}
.fts ul.clean{list-style:none;padding:0;margin:0}
.fts ul.clean li{padding:8px 0;border-bottom:1px solid var(--line)}
.fts table{border-collapse:collapse;width:100%;font-size:14px}
.fts th,.fts td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.fts th{font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:var(--muted);font-weight:400}
.fts .kv{display:grid;grid-template-columns:140px 1fr;gap:6px 12px;font-size:14px}
.fts .steps{counter-reset:s;list-style:none;padding:0;margin:0}
.fts .steps li{counter-increment:s;padding:10px 0 10px 44px;position:relative;border-bottom:1px solid var(--line)}
.fts .steps li::before{content:counter(s,decimal-leading-zero);position:absolute;left:0;top:10px;font-family:var(--mono);color:var(--accent)}
.fts .shotlabel{font-family:var(--mono);font-size:11px;padding:3px 7px;border-radius:5px;background:#000a;border:1px solid var(--line)}
.fts .sheet{position:fixed;inset:auto 0 0 0;max-height:80vh;overflow:auto;background:#0b0f0c;border-top:1px solid var(--line);border-radius:18px 18px 0 0;padding:20px;z-index:60;transform:translateY(100%);transition:transform .35s var(--ease)}
.fts .sheet.open{transform:none}
.fts [dir=rtl] .steps li{padding:10px 44px 10px 0}
.fts [dir=rtl] .steps li::before{left:auto;right:0}
@media (prefers-reduced-motion:reduce){.fts *{transition:none!important;animation:none!important}}
.fts .reduced *{transition:none!important;animation:none!important}
@media (max-width:720px){.fts .stage3d{height:56vh}.fts .kv{grid-template-columns:1fr}.fts .cards{grid-template-columns:1fr 1fr}.fts .card .cn{font-size:16px}.fts .card .meta{padding:10px}}
@media (max-width:360px){.fts .cards{grid-template-columns:1fr}}
@media (max-width:480px){.fts .btn{white-space:normal;text-align:center}.fts .panel table{display:block;overflow-x:auto}.fts pre{max-width:100%;overflow-x:auto}.fts #editor .split{grid-template-columns:1fr!important}.fts select,.fts input,.fts textarea{max-width:100%}.fts .pos{grid-template-columns:repeat(5,minmax(0,1fr))!important;font-size:10px}.fts .pos div{padding:4px!important;overflow:hidden}.fts .saf{grid-template-columns:1fr!important}.fts .wf{min-width:0}.fts .wf label{display:flex;flex-direction:column;width:100%}}
.fts{background:var(--void);color:var(--ink);font-family:var(--font)}
.fts .wrap{max-width:1440px;margin:0 auto;padding:clamp(16px,3vw,32px)}
.fts h1,.fts h2,.fts h3{color:var(--ink)}
