
:root{
  --bg:#f5f6f8;--bg2:#fff;--bg3:#eef0f4;
  --border:#d0d6e0;--border2:#e2e8f0;
  --teal:#0b7a6e;--teal-glow:rgba(11,122,110,.07);
  --text:#1a202c;--muted:#374151;--dim:#6b7280;
  --sans:'DM Sans',system-ui,sans-serif;
  --mono:'DM Mono','JetBrains Mono',monospace;
  --serif:'DM Serif Display',Georgia,serif;
  --tr:.18s;--blue:#2563eb;--amber:#b45309;
}
*,*::before,*::after{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth}
body{font-family:var(--sans);background:var(--bg);color:var(--text);min-height:100vh;padding-top:44px}
.site-nav{position:fixed;top:0;left:0;right:0;z-index:200;height:44px;background:rgba(245,246,248,.92);backdrop-filter:blur(16px);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:6px;padding:0 24px}
.site-nav-logo{font-family:var(--mono);font-size:.8em;color:var(--teal);font-weight:500;letter-spacing:.04em;margin-right:auto;text-decoration:none;white-space:nowrap}
.site-nav-logo span{color:var(--dim)}
.site-nav-link{padding:5px 12px;border-radius:6px;font-size:.77em;color:var(--muted);text-decoration:none;transition:all var(--tr);border:1px solid transparent;font-family:var(--sans);white-space:nowrap}
.site-nav-link:hover{color:var(--teal);background:var(--teal-glow);border-color:rgba(11,122,110,.15)}
.site-nav-link.curr{color:var(--teal);background:var(--teal-glow);border-color:rgba(11,122,110,.2);font-weight:600}
.nav-dropdown{position:relative}
.nav-dropdown-menu{position:absolute;top:100%;left:50%;background:rgba(255,255,255,.97);backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.1);min-width:200px;padding:6px;padding-top:12px;margin-top:-6px;opacity:0;pointer-events:none;transform:translateX(-50%) translateY(-4px);transition:opacity .15s,transform .15s;z-index:9999}
.nav-dropdown:hover .nav-dropdown-menu,.nav-dropdown-menu:hover{opacity:1;pointer-events:all;transform:translateX(-50%) translateY(0)}
.nav-dropdown-item{display:block;padding:7px 14px;border-radius:6px;font-size:.77em;color:var(--muted);text-decoration:none;white-space:nowrap;transition:all .15s}
.nav-dropdown-item:hover{color:var(--teal);background:var(--teal-glow)}
.acc-btn{position:fixed;bottom:22px;right:22px;z-index:9100;width:38px;height:38px;border-radius:50%;background:#0b7a6e;color:#fff;border:none;cursor:pointer;font-size:1em;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 12px rgba(0,0,0,.2);transition:transform .2s}
.acc-btn:hover{transform:scale(1.1)}
.acc-panel{position:fixed;bottom:70px;right:22px;z-index:9100;width:220px;padding:16px 18px 12px;border-radius:12px;border:1px solid #d4d9e8;background:#fff;box-shadow:0 8px 32px rgba(0,0,0,.13);opacity:0;transform:translateY(8px) scale(.97);pointer-events:none;transition:all .2s cubic-bezier(.4,0,.2,1)}
.acc-panel.open{opacity:1;transform:translateY(0) scale(1);pointer-events:all}
.acc-panel-title{font-size:.77em;font-weight:600;margin-bottom:13px;color:#1a202c}
.acc-row{margin-bottom:12px}
.acc-row-label{font-size:.65em;text-transform:uppercase;letter-spacing:.1em;color:#9ca3af;margin-bottom:6px}
.acc-toggle-row{display:flex;align-items:center;justify-content:space-between}
.acc-toggle-label{font-size:.81em;color:#4a5568}
.acc-switch{position:relative;width:38px;height:20px;flex-shrink:0}
.acc-switch input{opacity:0;width:0;height:0}
.acc-slider{position:absolute;inset:0;background:#d1d5db;border-radius:99px;cursor:pointer;transition:background .18s}
.acc-slider::before{content:'';position:absolute;width:14px;height:14px;border-radius:50%;left:3px;top:3px;background:#fff;transition:transform .18s}
.acc-switch input:checked+.acc-slider{background:#0b7a6e}
.acc-switch input:checked+.acc-slider::before{transform:translateX(18px)}
.acc-btn-group{display:flex;gap:4px}
.acc-opt{flex:1;padding:4px;border:1px solid #d4d9e8;border-radius:5px;background:#f5f6f8;color:#718096;font-size:.72em;cursor:pointer;text-align:center;transition:all .15s;font-family:inherit;line-height:1.4}
.acc-opt:hover{color:#0b7a6e;border-color:#0b7a6e;background:rgba(11,122,110,.06)}
.acc-opt.active{color:#0b7a6e;border-color:#0b7a6e;background:rgba(11,122,110,.08);font-weight:600}
.page-wrap{max-width:1360px;margin:0 auto;padding:32px 24px 80px}
.hero{margin-bottom:24px}
.hero-kicker{font-family:var(--mono);font-size:.7em;text-transform:uppercase;letter-spacing:.16em;color:var(--teal);margin-bottom:8px}
.hero h1{font-family:var(--serif);font-size:2.2em;font-weight:400;color:var(--text);margin-bottom:8px}
.hero-sub{color:var(--dim);font-size:.92em;line-height:1.65;max-width:820px;margin-bottom:16px}
.hero-pills{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:18px}
.hero-pill{padding:3px 11px;border-radius:99px;font-size:.72em;font-family:var(--mono);background:rgba(11,122,110,.08);color:var(--teal);border:1px solid rgba(11,122,110,.18)}
.hero-meta{display:flex;gap:28px;flex-wrap:wrap;padding:14px 0;border-top:1px solid var(--border2);border-bottom:1px solid var(--border2)}
.hero-stat-num{font-family:var(--serif);font-size:1.6em;color:var(--teal);line-height:1}
.hero-stat-label{font-size:.68em;color:var(--dim);font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;margin-top:2px}
.ctrl-card{background:var(--bg2);border:1px solid var(--border2);border-radius:18px;padding:14px 18px;margin-bottom:12px;display:flex;flex-wrap:wrap;gap:14px 20px;align-items:flex-end}
.ctrl-grp{display:flex;flex-direction:column;gap:5px;flex-shrink:0}
.ctrl-lbl{font-size:.7em;text-transform:uppercase;letter-spacing:.08em;color:var(--dim);font-weight:500}
.ctrl-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.ctrl-sel{padding:6px 10px;border:1px solid var(--border);border-radius:8px;font-size:.84em;color:var(--text);background:var(--bg);font-family:var(--sans);cursor:pointer;min-width:125px}
.ctrl-sel:hover{border-color:var(--teal)}
input[type=range]{accent-color:var(--teal);height:4px;cursor:pointer;width:100px}
.sv{font-family:var(--mono);font-size:.82em;color:var(--text);min-width:38px;text-align:right}
.btn{padding:7px 15px;border-radius:40px;font-size:.83em;font-weight:500;cursor:pointer;transition:all .15s;border:1px solid var(--border);background:var(--bg2);color:var(--text);font-family:var(--sans);display:inline-flex;align-items:center;gap:4px}
.btn:hover{background:var(--bg3);border-color:#94a3b8;transform:translateY(-1px)}
.btn-primary{background:var(--teal);border-color:var(--teal);color:#fff}
.btn-primary:hover{background:#0a6d62}
.btn-red{background:#fee2e2;border-color:#fca5a5;color:#991b1b}
.btn-red:hover{background:#fecaca}
.tool-btn{padding:5px 11px;border-radius:7px;font-size:.81em;border:1px solid var(--border);background:var(--bg);cursor:pointer;color:var(--muted);transition:all .15s;font-family:var(--sans)}
.tool-btn.on{background:var(--teal-glow);border-color:rgba(11,122,110,.3);color:var(--teal);font-weight:600}
.tool-btn:hover{border-color:#94a3b8}
.chk{display:flex;align-items:center;gap:5px;font-size:.84em;color:var(--muted);cursor:pointer;user-select:none}
.chk input{accent-color:var(--teal);cursor:pointer}
.csep{width:1px;background:var(--border2);height:38px;align-self:center;flex-shrink:0}
.sim-wrap{background:#000916;border:1px solid var(--border2);border-radius:18px;overflow:hidden;margin-bottom:18px}
.sim-top{padding:9px 16px 0;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px}
.sim-ttl{font-weight:600;font-size:.9em;color:#94a3b8;font-family:var(--mono)}
.sim-run{font-size:.78em;color:#4ade80;font-family:var(--mono)}
.sim-run.paused{color:#fbbf24}
.stats-r{display:flex;gap:14px;flex-wrap:wrap}
.stt{font-size:.77em;color:#64748b;font-family:var(--mono)}
.stt span{color:#e2e8f0;font-weight:600}
.canvas-wrap{position:relative;display:block;line-height:0}
#cfdCanvas{display:block;width:100%;image-rendering:auto;cursor:crosshair}
#probeOverlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}
.probe-section{background:#000916;border:1px solid var(--border2);border-radius:14px;overflow:hidden;margin-bottom:18px}
.probe-hdr{background:#000d1f;padding:8px 16px;display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:.78em;color:#64748b;border-bottom:1px solid #1e293b}
.probe-mode-lbl{font-weight:600;color:#4ade80}
.probe-mode-lbl.wall{color:#f59e0b}
.probe-val-lbl{color:#94a3b8}
.probe-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:0}
.pstat-row{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:14px 8px;border-right:1px solid #1e293b;gap:5px}
.pstat-row:last-child{border-right:none}
.pstat-lbl{font-size:.65em;text-transform:uppercase;letter-spacing:.1em;color:#475569;font-family:var(--mono)}
.pstat-val{font-size:.85em;color:#e2e8f0;font-family:var(--mono);font-weight:500;text-align:center;white-space:nowrap}
.pstat-unit{font-size:.62em;color:#38bdf8;font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em}
.sim-bot{padding:9px 16px 12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;background:#000d1f}
.cb-wrap{display:flex;align-items:center;gap:7px;flex:1;min-width:200px}
.cb-val{font-size:.75em;color:#64748b;font-family:var(--mono);min-width:44px}
#cbCanvas{flex:1;height:13px;border-radius:20px;min-width:100px;max-width:260px}
.cb-unit{font-size:.74em;color:#38bdf8;font-family:var(--mono);font-weight:600}
.sim-note{font-size:.72em;color:#334155}
.drawhint{font-size:.76em;color:#fbbf24;background:rgba(251,191,36,.12);padding:2px 9px;border-radius:20px;display:none}
.drawhint.on{display:inline}
.brush-ind{position:fixed;pointer-events:none;border:1.5px solid #4ade80;border-radius:50%;box-shadow:0 0 0 1px rgba(0,0,0,.6);z-index:5;display:none;transform:translate(-50%,-50%)}
.quickstart{background:var(--bg2);border:1px solid var(--border2);border-top:3px solid var(--teal);border-radius:0 0 16px 16px;padding:18px 22px;margin-bottom:10px}
.qs-title{font-family:var(--mono);font-size:.72em;text-transform:uppercase;letter-spacing:.1em;color:var(--teal);font-weight:600;margin-bottom:12px}
.qs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:8px;margin-bottom:12px}
.qs-item{display:flex;align-items:flex-start;gap:9px;font-size:.85em;color:var(--muted);line-height:1.45}
.qs-key{background:var(--teal);color:#fff;font-family:var(--mono);font-size:.72em;font-weight:700;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}
.qs-keys{font-size:.78em;color:var(--dim);border-top:1px solid var(--border2);padding-top:10px;line-height:1.9}
.qs-kbd{background:var(--bg3);border:1px solid var(--border);border-radius:5px;padding:1px 6px;font-family:var(--mono);font-size:.85em;color:var(--text)}
.theory h2{font-family:var(--serif);font-size:1.7em;font-weight:400;color:var(--text);margin:0 0 16px;padding-bottom:12px;border-bottom:2px solid var(--border2)}
.theory h3{font-size:1.05em;font-weight:600;color:var(--text);margin:22px 0 9px}
.theory h4{font-size:.93em;font-weight:600;color:var(--muted);margin:14px 0 7px}
.theory p{line-height:1.75;color:var(--muted);margin-bottom:12px}
.theory p strong{color:var(--text)}
.theory ul{color:var(--muted);line-height:1.9;padding-left:20px;margin-bottom:12px}
.eqb{background:#f8fafc;border-left:3px solid var(--blue);border-radius:0 11px 11px 0;padding:12px 18px;margin:12px 0;overflow-x:auto}
.eqb.teal{border-left-color:var(--teal);background:rgba(11,122,110,.05)}
.eqb.amber{border-left-color:var(--amber);background:rgba(180,83,9,.05)}
.eqb-t{font-size:.76em;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--blue);margin-bottom:6px}
.eqb-t.teal{color:var(--teal)}
.eqb-t.amber{color:var(--amber)}
.eq-row{display:flex;gap:16px;flex-wrap:wrap;margin:10px 0}
.eq-row .eqb{flex:1;min-width:140px}
.pgrid{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:.87em;margin:8px 0}
.pgrid dt{color:var(--text);font-family:var(--mono);font-weight:500}
.pgrid dd{color:var(--muted)}
.vtbl{width:100%;border-collapse:collapse;font-size:.87em;margin:10px 0 14px}
.vtbl thead tr{background:rgba(11,122,110,.08)}
.vtbl th{padding:7px 12px;text-align:left;border-bottom:1px solid var(--border2);color:var(--teal)}
.vtbl td{padding:7px 12px;border-bottom:1px solid var(--border2)}
.vtbl tbody tr:last-child td{border-bottom:none}
.refs{margin-top:24px;padding-top:18px;border-top:1px solid var(--border2)}
.refs h3{font-size:.98em;font-weight:600;color:var(--text);margin-bottom:10px}
.ref-list{list-style:none;counter-reset:ref;display:flex;flex-direction:column;gap:7px}
.ref-list li{font-size:.84em;color:var(--muted);line-height:1.55;padding-left:26px;position:relative;counter-increment:ref}
.ref-list li::before{content:'['counter(ref)']';position:absolute;left:0;top:0;font-family:var(--mono);font-size:.88em;color:var(--teal);font-weight:600}
.ref-list a{color:var(--blue);text-decoration:none}
.ref-list a:hover{text-decoration:underline}
body.dark-mode{--bg:#0f172a;--bg2:#1e293b;--bg3:#253349;--border:#2a3f5a;--border2:#334155;--text:#e2e8f0;--muted:#94a3b8;--dim:#64748b}
body.dark-mode .acc-panel{background:#1e293b;border-color:#334155}
body.dark-mode .acc-panel-title{color:#e2e8f0}
body.dark-mode .acc-toggle-label{color:#cbd5e1}
body.dark-mode .acc-slider{background:#475569}
body.dark-mode .acc-opt{background:#253349;border-color:#334155;color:#94a3b8}
body.dark-mode .acc-opt.active{background:rgba(11,122,110,.2)}
body.dark-mode .site-nav{background:rgba(15,23,42,.92)}
body.dark-mode .nav-dropdown-menu{background:rgba(15,23,42,.97);border-color:#334155}
body.dark-mode .ctrl-sel{background:#1a2740;color:#e2e8f0;border-color:#334155}
body.dark-mode .eqb{background:#1a2740}
body.dark-mode .eqb.teal{background:rgba(11,122,110,.12)}
body.dark-mode .eqb.amber{background:rgba(180,83,9,.1)}
body.size-sm{font-size:14px}
body.size-md{font-size:16px}
body.size-lg{font-size:18px}
body.font-serif,body.font-serif *:not(code):not(pre){font-family:'DM Serif Display',Georgia,serif!important}
body.font-mono,body.font-mono *:not(code):not(pre){font-family:'DM Mono','Courier New',monospace!important}
.err-ov{position:absolute;inset:0;background:rgba(0,9,22,.97);display:none;align-items:center;justify-content:center;z-index:100;padding:40px}
.err-ov.show{display:flex}
.err-box{max-width:540px;padding:24px 28px;background:#1e293b;border:1px solid #ef4444;border-radius:8px;color:#e2e8f0}
.err-box .t{color:#ef4444;font-family:var(--mono);font-size:.88em;margin-bottom:10px;letter-spacing:.06em}
@media(max-width:700px){.page-wrap{padding:18px 12px 60px}.hero h1{font-size:1.6em}.csep{display:none}.theory{padding:16px 14px}}
