/* Tokens */
:root{
  --page:#F3F4F6;--surface:#FFFFFF;--surface-2:#F8F9FA;--ink:#111418;--ink-2:#4B5159;--muted:#7A818C;--line:#E1E4E9;--line-2:#EDEFF2;
  --bench:#1E2126;--bench-2:#2A2E35;--bench-ink:#F2F3F5;--bench-muted:#9AA0A8;--bench-line:rgba(255,255,255,.08);
  --signal:#F5B301;--signal-ink:#2A1F00;--ok:#1E9E5A;--warn:#D9880B;--bad:#D6453D;
  --r-lg:24px;--r-md:14px;--r-sm:8px;--font:"Archivo",system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans","Hiragino Sans","Apple SD Gothic Neo",sans-serif;
  --wide:112%;--narrow:84%;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--page:#141619;--surface:#1C1F24;--surface-2:#202329;--ink:#F2F3F5;--ink-2:#C3C7CE;--muted:#8A919C;--line:#2A2E35;--line-2:#24272D;--bench:#0F1114;--bench-2:#1B1E23}}
:root[data-theme="dark"]{--page:#141619;--surface:#1C1F24;--surface-2:#202329;--ink:#F2F3F5;--ink-2:#C3C7CE;--muted:#8A919C;--line:#2A2E35;--line-2:#24272D;--bench:#0F1114;--bench-2:#1B1E23}

*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
body{margin:0;background:var(--page);color:var(--ink);font-family:var(--font);font-size:17px;line-height:1.5;-webkit-font-smoothing:antialiased;font-feature-settings:"ss01"}
a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.15em}
a:focus-visible,button:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--signal);outline-offset:2px}
.wrap{max-width:1180px;margin:0 auto;padding:0 20px}
h1,h2,h3{font-stretch:var(--wide);letter-spacing:-.025em;line-height:1.08;margin:0;font-weight:700}
h1{font-size:clamp(2rem,4.6vw,3.4rem);max-width:18ch}
h2{font-size:clamp(1.35rem,2.3vw,1.75rem);margin:3rem 0 .8rem}
h3{font-size:1.1rem;margin:1.6rem 0 .5rem}
p{margin:0 0 1em}
.num{font-stretch:var(--narrow);font-variant-numeric:tabular-nums;letter-spacing:0}

/* Header */
.top{background:var(--surface);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:28px;min-height:64px}
.brand{font-stretch:var(--wide);font-weight:800;letter-spacing:-.03em;font-size:1.2rem;text-decoration:none;white-space:nowrap}
.brand b{color:var(--signal)}
.nav{display:flex;gap:2px;flex:1;overflow-x:auto;scrollbar-width:none}
.nav::-webkit-scrollbar{display:none}
.nav a{text-decoration:none;color:var(--ink-2);padding:8px 12px;border-radius:999px;font-size:.95rem;white-space:nowrap}
.nav a:hover{background:var(--surface-2);color:var(--ink)}
.nav a[aria-current]{background:var(--ink);color:var(--surface)}
.lang{appearance:none;-webkit-appearance:none;background:var(--surface-2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%237A818C' stroke-width='1.6'/%3E%3C/svg%3E") no-repeat right 12px center;border:1px solid var(--line);color:var(--ink);border-radius:999px;padding-block:8px;padding-inline:14px 34px;font:inherit;font-size:.9rem;cursor:pointer}

/* Ad slots: reserved height, quiet outline, collapse when marked empty */
.ad{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:.72rem;border:1px dashed var(--line);border-radius:var(--r-sm);background:var(--surface-2)}
.ad::before{content:attr(data-label)}
.ad.top{margin:20px auto 0;max-width:970px;min-height:90px}
.ad.inline{min-height:280px;max-width:336px;margin:2.2rem auto}
.ad.rail{min-height:600px;width:300px;max-width:100%}
.ad[data-state="empty"]{display:none}
@media (max-width:760px){.ad.top{min-height:50px}.ad.inline{min-height:250px;max-width:300px}}

/* Hero */
.hero{padding:44px 0 26px;max-width:72ch}
.lead{color:var(--ink-2);font-size:1.15rem;line-height:1.5;margin:14px 0 0;max-width:60ch}

/* Bench: the controller stage */
.bench{background:var(--bench);color:var(--bench-ink);border-radius:var(--r-lg);padding:28px;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(260px,.9fr);gap:28px;align-items:center;margin:8px 0 18px;box-shadow:0 30px 60px -40px rgba(0,0,0,.55)}
.det-stage{position:relative;min-height:260px;display:flex;align-items:center;justify-content:center}
.det-svg{width:100%;max-width:560px;height:auto;display:block;opacity:.35;transition:opacity .4s}
.det-svg.on{opacity:1}
.det-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px;color:var(--bench-muted);padding:20px}
.det-empty strong{color:var(--bench-ink);font-size:1.05rem;font-stretch:var(--wide)}
.det-specs{margin:0;display:grid;grid-template-columns:auto 1fr;gap:9px 18px;font-size:.92rem;align-content:start;border-inline-start:1px solid var(--bench-line);padding-inline-start:24px}
.det-specs dt{color:var(--bench-muted);margin:0}
.det-specs dd{margin:0;font-stretch:var(--narrow);font-variant-numeric:tabular-nums;word-break:break-word}
/* svg parts */
.det-svg .body{stroke:rgba(0,0,0,.45);stroke-width:1.5}
.det-svg .body-sheen{fill:rgba(255,255,255,.05);stroke:rgba(255,255,255,.12);stroke-width:1}
.det-svg .btn{fill:#3A3F47;stroke:rgba(0,0,0,.5);stroke-width:1;transition:fill .08s}
.det-svg .btn.on{fill:var(--signal);stroke:#8a6600;filter:drop-shadow(0 0 6px rgba(245,179,1,.7))}
.det-svg .btn.touch{fill:#2F343B}
.det-svg .btn.small{fill:#4A5058}
.det-svg .btn-base{fill:#33383F}
.det-svg .well{fill:#15171B;stroke:rgba(0,0,0,.6)}
.det-svg .stick-top{fill:#4A5058;pointer-events:none}
.det-svg .btn.stick.on + .stick-top{fill:#8a6600}
.det-svg .lbl{fill:rgba(255,255,255,.72);font:600 12px var(--font);pointer-events:none}
.det-svg .trig-bg{fill:#3A3F47}
.det-svg .trig-fill{fill:var(--signal)}
.det-svg .trig-outline{fill:none;stroke:rgba(255,255,255,.18)}

/* Tool surface */
.gp{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:24px;margin:0 0 28px}
.gp-head{display:flex;flex-direction:column;gap:4px;margin-bottom:18px}
.gp-status{display:flex;align-items:center;gap:10px;font-weight:600}
.gp-dot{width:9px;height:9px;border-radius:50%;background:var(--bad);flex:none}
.gp-head.on .gp-dot{background:var(--ok)}
.gp-meta{color:var(--muted);font-size:.88rem;font-stretch:var(--narrow);font-variant-numeric:tabular-nums}
.gp-select{background:var(--surface-2);color:var(--ink);border:1px solid var(--line);border-radius:var(--r-sm);padding:6px 8px;font:inherit;max-width:360px;margin-top:6px}
.gp-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.gp-sticks,.gp-compare{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.gp-stickwrap{text-align:center}
.gp-stickwrap h4,.gp-triggers h4,.gp-buttons h4,.gp-axes h4,.gp-vib h4{margin:0 0 8px;font-size:.88rem;font-weight:600;color:var(--ink-2)}
.gp-stick{background:var(--bench);border-radius:50%;max-width:100%;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.gp-val{font-stretch:var(--narrow);font-variant-numeric:tabular-nums;font-size:.85rem;color:var(--muted);margin-top:8px;white-space:pre-wrap}
.gp-bar{display:grid;grid-template-columns:72px 1fr 56px;gap:10px;align-items:center;font-size:.85rem;margin:8px 0;position:relative}
.gp-bar span{color:var(--muted)}
.gp-bar i{display:block;height:8px;background:var(--signal);border-radius:4px;width:0}
.gp-bar b{font-stretch:var(--narrow);font-variant-numeric:tabular-nums;font-weight:500;text-align:end}
.gp-axis{background:linear-gradient(90deg,transparent calc(50% - 1px),var(--line) calc(50% - 1px),var(--line) calc(50% + 1px),transparent calc(50% + 1px))}
.gp-axis i{position:absolute;left:50%;width:10px!important;height:14px;margin-left:-5px;background:var(--ink);border-radius:3px;top:-3px}
.gp-axis span,.gp-axis b{background:var(--surface)}
.gp-btngrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(62px,1fr));gap:6px;margin:8px 0 18px}
.gp-b{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:6px 4px;text-align:center;font-size:.7rem;position:relative}
.gp-b span{display:block;font-weight:700;font-size:.95rem;font-stretch:var(--narrow)}
.gp-b em{font-style:normal;color:var(--muted);font-size:.64rem;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gp-b.seen{border-color:var(--ok)}
.gp-b.on{background:var(--signal);color:var(--signal-ink);border-color:var(--signal)}
.gp-b.on em{color:var(--signal-ink)}
.gp-row{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}
.gp-btn{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:999px;padding:10px 18px;font:inherit;font-weight:600;cursor:pointer}
.gp-btn:hover{border-color:var(--ink)}
.gp-btn.primary{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.gp-btn:disabled{opacity:.45;cursor:default}
.gp-msg,.gp-hint,.gp-note{color:var(--ink-2);font-size:.92rem;margin:6px 0}
.gp-progress{height:4px;background:var(--line);border-radius:2px;overflow:hidden;margin:6px 0 16px}
.gp-progress i{display:block;height:100%;width:0;background:var(--signal)}
.gp-res{display:grid;grid-template-columns:1fr auto;gap:2px 14px;padding:14px 16px;border-radius:var(--r-md);margin:8px 0;background:var(--surface-2)}
.gp-res b{font-size:1rem}.gp-res span{grid-column:1;color:var(--muted);font-size:.85rem;font-variant-numeric:tabular-nums}.gp-res em{grid-row:1/3;grid-column:2;font-style:normal;font-weight:700;align-self:center}
.gp-res.ok em{color:var(--ok)}.gp-res.mid em{color:var(--warn)}.gp-res.bad em{color:var(--bad)}
.gp-rec{font-weight:600;margin:14px 0 4px}
.gp-link{font-weight:600}
.gp-steps{color:var(--ink-2);margin:0 0 16px;padding-inline-start:22px;font-size:.95rem}
.gp-pair{display:flex;gap:10px;justify-content:center}
.gp-pair small{display:block;color:var(--muted);font-size:.78rem;margin-bottom:4px}
.gp-panel{margin-top:18px;border-top:1px solid var(--line);padding-top:16px}
.gp-slider{display:grid;grid-template-columns:150px 1fr 60px;gap:12px;align-items:center;margin:8px 0;font-size:.92rem}
.gp-slider input{width:100%;accent-color:var(--signal)}
.gp-slider b{font-stretch:var(--narrow);font-variant-numeric:tabular-nums;font-weight:500;text-align:end}
.warn{background:rgba(214,69,61,.08);border:1px solid rgba(214,69,61,.3);padding:10px 14px;border-radius:var(--r-sm);margin-bottom:12px}

/* Two-column body */
.cols{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:48px;align-items:start}
.article{max-width:68ch}
.article p,.article li{color:var(--ink-2)}
.article li{margin-bottom:.35em}
.article code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.88em;background:var(--surface-2);padding:.1em .35em;border-radius:4px}
.article strong{color:var(--ink)}
.rail{position:sticky;top:20px;display:flex;flex-direction:column;gap:22px}
.rail h3{margin:0 0 8px;font-size:.95rem}
.plist{display:flex;flex-direction:column}
.plist a{padding:10px 0;border-top:1px solid var(--line);text-decoration:none;color:var(--ink);display:flex;justify-content:space-between}
.plist a:hover{color:var(--signal)}
.plist a::after{content:"›";color:var(--muted)}
.faq details{border-top:1px solid var(--line);padding:14px 0}
.faq details:last-child{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;font-weight:600;list-style:none;display:flex;justify-content:space-between;gap:12px;color:var(--ink)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--muted);font-weight:400}
.faq details[open] summary::after{content:"–"}
.faq p{margin:10px 0 0}
.cross{margin:3rem 0 0;padding:26px 28px;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.cross b{display:block;margin-bottom:4px;font-size:1.05rem;font-stretch:var(--wide)}
.cross span{color:var(--ink-2);font-size:.95rem}
.btn{display:inline-block;background:var(--ink);color:var(--surface);font-weight:600;text-decoration:none;padding:12px 20px;border-radius:999px;white-space:nowrap}
.btn:hover{background:var(--signal);color:var(--signal-ink)}
footer{margin-top:72px;padding:28px 0 48px;color:var(--muted);font-size:.88rem;border-top:1px solid var(--line)}
footer .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px}

@media (max-width:960px){.cols{grid-template-columns:1fr}.rail{position:static}.bench{grid-template-columns:1fr;padding:22px}.det-specs{border-inline-start:0;padding-inline-start:0;border-top:1px solid var(--bench-line);padding-top:18px}}
@media (max-width:760px){.gp-grid{grid-template-columns:1fr}.gp-compare{grid-template-columns:1fr}.gp-slider{grid-template-columns:1fr 1fr 60px}.gp-slider span{grid-column:1/4}.hero{padding:28px 0 18px}.top .wrap{flex-wrap:wrap;gap:10px;padding-top:12px;padding-bottom:12px}.nav{order:3;flex-basis:100%}.lang{margin-inline-start:auto}.gp{padding:18px}}
@media (max-width:480px){.gp-sticks{grid-template-columns:1fr}.gp-pair{flex-direction:column;align-items:center}.gp-bar{grid-template-columns:60px 1fr 48px}.bench{padding:18px;border-radius:18px}}

/* Guides */
.crumb{margin:0 0 10px;font-size:.9rem;color:var(--muted)}
.crumb a{color:var(--muted)}
.fig{margin:1.6rem 0;border-radius:var(--r-md);overflow:hidden;background:var(--surface-2)}
.fig picture{display:block}
.fig img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover}
.fig.missing img{display:none}
.fig.missing::before{content:"";display:block;aspect-ratio:3/2;background:linear-gradient(135deg,var(--surface-2),var(--line))}
.fig figcaption{padding:10px 14px;font-size:.85rem;color:var(--muted);border-top:1px solid var(--line)}
.hero + .fig{margin-top:0;border-radius:var(--r-lg)}
.glist{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:22px}
.gcard{text-decoration:none;color:var(--ink);display:flex;flex-direction:column;gap:8px}
.gcard .gcard-img .fig{margin:0}
.gcard .gcard-img figcaption{display:none}
.gcard strong{font-size:1.1rem;font-stretch:var(--wide);letter-spacing:-.01em;line-height:1.2;margin-top:6px}
.gcard > span:last-child{color:var(--ink-2);font-size:.92rem}
.gcard:hover strong{color:var(--signal)}

/* RTL */
[dir="rtl"] .lang{background-position:left 12px center}
[dir="rtl"] .plist a::after{content:"‹"}
[dir="rtl"] .gp-axis i{margin-left:0;margin-right:-5px}
[dir="rtl"] .det-svg,[dir="rtl"] .gp-stick{direction:ltr}
[dir="rtl"] .gp-val{direction:ltr;unicode-bidi:isolate}
:lang(ar) body,:lang(fa) body{--font:"Archivo","Noto Naskh Arabic","Segoe UI",Tahoma,system-ui,sans-serif}
:lang(zh-Hans),:lang(zh-Hant),:lang(th),:lang(hi),:lang(ar){--wide:100%}

/* Repair gallery */
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin:1rem 0 2rem}
.gallery .fig{margin:0}
.gallery .fig figcaption{font-size:.8rem}

/* analytics consent banner (EEA/UK/CH only) */
.consent{position:fixed;inset:auto 16px 16px;z-index:50;max-width:640px;margin:0 auto;padding:16px 18px;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);box-shadow:0 8px 30px rgba(0,0,0,.12);display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.consent p{margin:0;flex:1 1 260px;font-size:.9rem}
.consent div{display:flex;gap:8px}
