:root{
  --ink:#15161c; --ink-2:#565c6b; --mut:#727889;
  --line:#e8eaf0; --line-2:#eef0f5; --paper:#fff; --wash:#f6f7fb;
  --brand:#4f46e5; --brand-ink:#4338ca; --brand-wash:#eef0ff;
  --hit:#0fae74; --hit-wash:#e7f8f1; --warn:#d94636;
  --r:14px; --shadow:0 1px 2px rgba(21,22,28,.04),0 10px 34px rgba(21,22,28,.06);
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans","Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--sans);color:var(--ink);background:var(--wash);line-height:1.6;font-size:16px}
.wrap{max-width:860px;margin:0 auto;padding:0 18px}
a{color:var(--brand-ink);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{margin:0;letter-spacing:-.02em;line-height:1.15;font-weight:750}
img{max-width:100%}

/* header */
.hdr{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.9);backdrop-filter:saturate(140%) blur(8px);border-bottom:1px solid var(--line)}
.hdr .wrap{display:flex;align-items:center;gap:16px;height:58px}
.logo{display:inline-flex;align-items:center;gap:9px;font-weight:800;font-size:19px;letter-spacing:-.03em;color:var(--ink)}
.logo:hover{text-decoration:none}
.logo svg{width:26px;height:26px;flex:0 0 auto}
.logo b{color:var(--brand);font-weight:800}
.nav{margin-left:auto;display:flex;align-items:center;gap:20px;font-size:14.5px;font-weight:550}
.nav a{color:var(--ink-2)}
@media(max-width:600px){.nav a.hs{display:none}}

/* centered section heads */
.hero{padding:40px 0 10px;text-align:center}
.hero h1{font-size:clamp(28px,6.4vw,42px)}
.hero .sub{color:var(--ink-2);font-size:17px;margin:14px auto 0;max-width:56ch}
.eyebrow{font-size:12px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--brand);margin-bottom:12px}
.section{padding:34px 0}
.section h2{font-size:clamp(21px,4.6vw,27px);text-align:center;margin-bottom:15px}
.section .sub{color:var(--ink-2);text-align:center;max-width:60ch;margin:8px auto 20px}

/* tool */
.tool{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:18px;margin:22px 0;text-align:left}
.tabs{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:14px}
.tab{border:1px solid var(--line);background:var(--paper);border-radius:9px;padding:8px 13px;font:600 14px var(--sans);color:var(--ink-2);cursor:pointer}
.tab:hover{border-color:var(--brand);color:var(--ink)}
.tab.on{background:var(--brand);border-color:var(--brand);color:#fff}
.livenote{display:none;background:var(--brand-wash);border:1px solid #d9ddff;color:var(--brand-ink);border-radius:11px;padding:16px;font-size:14.5px;line-height:1.5}
.drop{border:1.5px dashed #cbd0e2;border-radius:12px;background:var(--wash);padding:34px 18px;text-align:center;cursor:pointer;transition:.15s}
.drop:hover,.drop.hot{border-color:var(--brand);background:var(--brand-wash)}
.drop svg{width:38px;height:38px;color:var(--brand);margin-bottom:8px}
.drop b{display:block;font-size:16px}
.drop small{display:block;color:var(--ink-2);margin-top:6px;font-size:13px}
.specnote{font-size:13px;color:var(--ink-2);margin:12px 2px 0;text-align:center}
.go{margin-top:16px;width:100%;border:none;border-radius:11px;background:var(--brand);color:#fff;font:700 16px var(--sans);padding:14px;cursor:pointer;transition:.15s}
.go:hover{background:var(--brand-ink)}
.go:disabled{opacity:.6;cursor:default}
:focus-visible{outline:3px solid #c3c8ff;outline-offset:2px}

.result{display:none;margin-top:18px}
.result.show{display:block}
.preview{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.preview img{width:116px;height:116px;object-fit:contain;background:var(--wash);border:1px solid var(--line);border-radius:10px}
.stats{flex:1;min-width:200px}
.srow{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px dashed var(--line);font-size:14px}
.srow:last-child{border:none}
.srow .k{color:var(--ink-2)} .srow .v{font-weight:650;font-variant-numeric:tabular-nums}
.meter{margin:14px 0 4px}
.meter .track{height:12px;border-radius:999px;background:var(--wash);border:1px solid var(--line);overflow:hidden}
.meter .fill{height:100%;width:0;background:var(--hit);transition:width .5s cubic-bezier(.2,.8,.2,1)}
.meter.over .fill{background:var(--warn)}
.meter .cap{display:flex;justify-content:space-between;margin-top:7px;font-size:12.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.badge{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:13px;padding:5px 11px;border-radius:999px;background:var(--hit-wash);color:var(--hit)}
.meter.over .badge{background:#fbe9e6;color:var(--warn)}
.actions{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap}
.dl{flex:1;text-align:center;background:var(--hit);color:#fff;border:none;border-radius:11px;padding:14px;font:700 15px var(--sans);cursor:pointer}
.dl:hover{filter:brightness(.96);text-decoration:none}
.reset{background:var(--paper);border:1px solid var(--line);border-radius:11px;padding:14px 16px;font:600 15px var(--sans);cursor:pointer;color:var(--ink)}
.err{display:none;margin-top:12px;background:#fbe9e6;color:var(--warn);border:1px solid #f2c9c3;border-radius:10px;padding:11px 13px;font-size:14px}
.err.show{display:block}
.priv{margin-top:12px;font-size:12.5px;color:var(--ink-2);text-align:center}

/* cards / grids */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:11px}
.card{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:14px;display:block;text-align:center;transition:.15s}
.card:hover{border-color:var(--brand);text-decoration:none;transform:translateY(-1px);box-shadow:var(--shadow)}
.card .t{display:block;font-weight:750;font-size:16px;color:var(--ink)}
.card .d{display:block;font-size:12.5px;color:var(--ink-2);margin-top:6px;line-height:1.45}

/* generic panel + lists (Perfect For, Mistakes, Tips, How to) */
.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:22px}
.checks{list-style:none;padding:0;margin:0;display:grid;gap:11px}
.checks li{display:flex;gap:11px;font-size:15px;color:var(--ink-2);align-items:flex-start}
.checks li::before{content:"";flex:0 0 auto;width:20px;height:20px;margin-top:1px;border-radius:6px;background:var(--brand-wash) url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="%234f46e5" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"/></svg>') center/12px no-repeat}
.checks.warns li::before{background:#fbe9e6 url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="%23d94636" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6L6 18M6 6l12 12"/></svg>') center/12px no-repeat}
.steps{counter-reset:s;list-style:none;padding:0;margin:0;display:grid;gap:13px}
.steps li{display:flex;gap:13px;font-size:15px;color:var(--ink-2)}
.steps li::before{counter-increment:s;content:counter(s);flex:0 0 auto;width:26px;height:26px;border-radius:8px;background:var(--brand);color:#fff;font-weight:700;font-size:13px;display:grid;place-items:center}

/* spec table (authoritative) */
.spec{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.spec table{width:100%;border-collapse:collapse;font-size:14.5px}
.spec th,.spec td{padding:11px 14px;text-align:left;border-bottom:1px solid var(--line-2)}
.spec thead th{background:var(--wash);font-weight:700;color:var(--ink-2);font-size:12.5px;letter-spacing:.03em;text-transform:uppercase}
.spec tr:last-child td{border-bottom:none}
.spec .src{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;padding:12px 14px;background:var(--wash);font-size:13px;color:var(--ink-2)}
.spec .src b{color:var(--ink)}

/* why-choose */
.why{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}
.why .w{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:18px;text-align:center}
.why .w svg{width:26px;height:26px;color:var(--brand);margin-bottom:8px}
.why .w b{display:block;font-size:15px;margin-bottom:4px}
.why .w span{font-size:13.5px;color:var(--ink-2)}

/* faq */
.faq details{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:2px 16px;margin-bottom:10px}
.faq summary{cursor:pointer;font-weight:650;list-style:none;padding:13px 0}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";float:right;color:var(--brand);font-weight:700}
.faq details[open] summary::after{content:"–"}
.faq p{margin:0 0 14px;color:var(--ink-2);font-size:14.5px}

/* legal prose */
.legal{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:26px}
.legal h2{text-align:left;font-size:20px;margin:20px 0 8px}
.legal h2:first-child{margin-top:0}
.legal p,.legal li{color:var(--ink-2);font-size:15px}

/* footer */
.ftr{border-top:1px solid var(--line);background:var(--paper);margin-top:26px}
.ftr .wrap{padding:26px 18px;text-align:center}
.ftr .flinks{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;font-size:14px;margin-bottom:12px}
.ftr .flinks a{color:var(--ink-2)}
.ftr small{color:var(--mut);font-size:12.5px;display:block;line-height:1.6}

@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
