:root, [data-theme="light"] {
  --font-body: 'Satoshi', Inter, sans-serif;
  --font-display: 'Satoshi', Inter, sans-serif;
  --text-xs: clamp(0.75rem, 0.7rem + 0.25vw, 0.875rem);
  --text-sm: clamp(0.875rem, 0.8rem + 0.35vw, 1rem);
  --text-base: clamp(1rem, 0.95rem + 0.25vw, 1.125rem);
  --text-lg: clamp(1.125rem, 1rem + 0.75vw, 1.5rem);
  --text-xl: clamp(1.5rem, 1.2rem + 1.25vw, 2.25rem);
  --space-1: .25rem; --space-2: .5rem; --space-3: .75rem; --space-4: 1rem; --space-5: 1.25rem; --space-6: 1.5rem; --space-8: 2rem; --space-10: 2.5rem; --space-12: 3rem;
  --color-bg:#f7f6f2; --color-surface:#f9f8f5; --color-surface-2:#fbfbf9; --color-surface-offset:#f3f0ec; --color-border:#d4d1ca; --color-divider:#dcd9d5;
  --color-text:#28251d; --color-text-muted:#66645f; --color-text-faint:#92908b; --color-text-inverse:#f9f8f4;
  --color-primary:#01696f; --color-primary-hover:#0c4e54; --color-primary-highlight:#cedcd8; --color-success:#437a22; --color-warning:#964219; --color-critical:#a11f1f;
  /* Concrete colors (no color-mix) so html2canvas can parse them for PDF export */
  --card-border:rgba(40,37,29,.10); --hero-top:#eef4f4; --callout-bg:#eef4f4; --callout-border:#b9cfcf;
  --disclaimer-bg:#f6ede6; --disclaimer-border:#d8b49b; --critical-bg:#f8ecec;
  --radius-sm:.375rem; --radius-md:.5rem; --radius-lg:.75rem; --radius-xl:1rem;
  --shadow-sm:0 1px 2px rgba(0,0,0,.05); --shadow-md:0 10px 25px rgba(0,0,0,.08);
}
[data-theme="dark"] {
  --color-bg:#171614; --color-surface:#1c1b19; --color-surface-2:#201f1d; --color-surface-offset:#22211f; --color-border:#393836; --color-divider:#262523;
  --color-text:#e4e2dd; --color-text-muted:#b5b2ab; --color-text-faint:#807d77; --color-text-inverse:#171614;
  --color-primary:#4f98a3; --color-primary-hover:#66aebb; --color-primary-highlight:#313b3b; --color-success:#87c55b; --color-warning:#d08b5e; --color-critical:#e07a7a;
  --card-border:rgba(228,226,221,.10); --hero-top:#1f2726; --callout-bg:#1f2a2b; --callout-border:#33484b;
  --disclaimer-bg:#2a231e; --disclaimer-border:#5a4636; --critical-bg:#2b1f1f;
  --shadow-sm:0 1px 2px rgba(0,0,0,.2); --shadow-md:0 10px 25px rgba(0,0,0,.28);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{min-height:100%}
body{font-family:var(--font-body);font-size:var(--text-base);line-height:1.6;background:var(--color-bg);color:var(--color-text)}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer;border:none}
.app{max-width:1320px;margin:0 auto;padding:var(--space-6)}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);margin-bottom:var(--space-6)}
.brand{display:flex;align-items:center;gap:var(--space-3)}
.logo{width:34px;height:34px;color:var(--color-primary)}
.title{font-size:var(--text-xl);font-weight:700;letter-spacing:-.03em}
.subtitle{font-size:var(--text-sm);color:var(--color-text-muted)}
.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:999px;background:var(--color-surface);border:1px solid var(--color-border)}
.layout{display:grid;grid-template-columns:minmax(320px,420px) 1fr;gap:var(--space-6)}
.panel,.hero,.metric,.results-card,.table-wrap{background:var(--color-surface);border:1px solid var(--card-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm)}
.panel{padding:var(--space-6);position:sticky;top:var(--space-4);align-self:start}
.hero{padding:var(--space-6);margin-bottom:var(--space-6);background:linear-gradient(180deg,var(--hero-top) 0%, var(--color-surface) 100%)}
.hero p{color:var(--color-text-muted);max-width:68ch;margin-top:var(--space-3)}
.section-title{font-size:var(--text-lg);font-weight:700;margin-bottom:var(--space-4);letter-spacing:-.02em}
.field-grid{display:grid;gap:var(--space-4)}
.field-group{display:grid;gap:var(--space-4);grid-template-columns:1fr 1fr}
.field{display:grid;gap:var(--space-2)}
.field.full{grid-column:1 / -1}
.field label{font-size:var(--text-sm);font-weight:600}
.field small{font-size:var(--text-xs);color:var(--color-text-muted)}
input,select{width:100%;padding:.85rem 1rem;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface-2)}
input:focus,select:focus{outline:2px solid var(--color-primary);outline-offset:2px}
details.advanced{margin-top:var(--space-2);border-top:1px solid var(--color-divider);padding-top:var(--space-4)}
details.advanced summary{font-size:var(--text-sm);font-weight:700;cursor:pointer;margin-bottom:var(--space-4)}
.actions{display:flex;gap:var(--space-3);margin-top:var(--space-5);flex-wrap:wrap}
.btn{padding:.9rem 1rem;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:700;min-height:44px}
.btn-primary{background:var(--color-primary);color:var(--color-text-inverse)}
.btn-secondary{background:var(--color-surface-offset);border:1px solid var(--color-border)}
.results{display:grid;gap:var(--space-6)}
.metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:var(--space-4)}
.metric{padding:var(--space-5)}
.metric .label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);margin-bottom:var(--space-2)}
.metric .value{font-size:clamp(1.4rem,1rem + 1vw,2rem);font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.metric .hint{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:var(--space-2)}
.cards{display:grid;grid-template-columns:1.2fr .9fr;gap:var(--space-6)}
.results-card{padding:var(--space-6)}
.compare{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);margin-top:var(--space-4)}
.compare-box{padding:var(--space-4);border-radius:var(--radius-lg);background:var(--color-surface-2);border:1px solid var(--color-border)}
.compare-box h3{font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:var(--space-2)}
.compare-box strong{font-size:var(--text-lg);display:block;font-variant-numeric:tabular-nums}
canvas{max-height:340px}
.table-wrap{overflow:auto}
table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}
th,td{padding:.9rem 1rem;text-align:left;border-bottom:1px solid var(--color-divider);font-variant-numeric:tabular-nums}
th{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted)}
.callout{padding:var(--space-4);border-radius:var(--radius-lg);background:var(--callout-bg);border:1px solid var(--callout-border);margin-top:var(--space-4)}
.callout p{color:var(--color-text-muted)}
.footer-note{font-size:var(--text-xs);color:var(--color-text-muted)}
.pdf-status{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-3);min-height:1.2em}
.pdf-exporting .panel, .pdf-exporting .topbar{position:static !important}
.pdf-exporting .theme-toggle, .pdf-exporting #pdfBtn{display:none !important}

/* Mandatory disclaimer — always visible, survives failed CDN/font loads */
.disclaimer{margin-top:var(--space-4);padding:var(--space-4);border-radius:var(--radius-lg);
  background:var(--disclaimer-bg);
  border:1px solid var(--disclaimer-border);
  font-size:var(--text-xs);color:var(--color-text)}
.disclaimer strong{display:block;margin-bottom:var(--space-1)}
.disclaimer p{margin:0}
.disclaimer p + p{margin-top:.4rem}

/* Assumptions & limitations (warnings) */
.warnings{list-style:none;display:grid;gap:var(--space-2)}
.warnings li{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);
  border-left:4px solid var(--color-border);background:var(--color-surface-2)}
.warnings li.info{border-left-color:var(--color-text-faint)}
.warnings li.caution{border-left-color:var(--color-warning)}
.warnings li.critical{border-left-color:var(--color-critical);background:var(--critical-bg)}
.warnings .sev{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--color-text-muted);margin-right:var(--space-2)}

@media (max-width: 980px){.layout,.cards,.metric-grid{grid-template-columns:1fr}.panel{position:static}.compare{grid-template-columns:1fr}.field-group{grid-template-columns:1fr}}

/* ===== Multi-page PDF report (rendered off-screen, exported via html2pdf) ===== */
#reportWrap{position:absolute;left:-99999px;top:0;width:816px}
.report-doc{width:816px;background:#fff;color:#28251d;font-family:var(--font-body)}
.report-page{width:816px;min-height:1056px;padding:64px 60px;background:#fff;page-break-after:always;position:relative;display:flex;flex-direction:column}
.report-page:last-child{page-break-after:auto}
.report-page p{font-size:14.5px;line-height:1.6;margin-bottom:10px;color:#3a372f}
.report-cover{background:#01696f;color:#f4f1ea;justify-content:flex-end}
.report-cover .rlogo{width:56px;height:56px;color:#cedcd8;position:absolute;top:60px;left:60px}
.rcover-body h1{font-size:56px;line-height:1.05;font-weight:400;letter-spacing:-.03em}
.rcover-body h1 strong{font-weight:800}
.report-cover .rcover-sub{margin-top:20px;font-size:20px;color:#eaf3f1;max-width:26ch}
.report-cover .rcover-for{margin-top:36px;font-size:18px;font-weight:700;color:#ffffff}
.report-cover .rcover-date{font-size:15px;color:#d3e3e0;margin-top:4px}
.report-cover .rcover-disc{position:absolute;bottom:48px;left:60px;font-size:12px;color:#c3d8d4}
.rhead{background:#22211f;color:#f4f1ea;margin:-64px -60px 28px;padding:26px 60px}
.rhead-title{font-size:22px;font-weight:800;letter-spacing:-.02em}
.rhead-sub{font-size:13px;color:#b5b2ab;margin-top:2px}
.rh2{font-size:27px;font-weight:800;letter-spacing:-.02em;margin-bottom:14px}
.rh3{font-size:17px;font-weight:700;color:#01696f;margin:20px 0 8px}
.rlist{list-style:none;margin:8px 0 12px;padding:0;display:grid;gap:8px}
.rlist li{font-size:14px;line-height:1.55;padding-left:20px;position:relative;color:#3a372f}
.rlist li::before{content:"";position:absolute;left:0;top:8px;width:8px;height:8px;border-radius:2px;background:#01696f}
.rlimits li::before{background:#964219}
.rquote{border-left:4px solid #01696f;background:#eef4f4;padding:12px 18px;border-radius:0 8px 8px 0;font-weight:600;font-size:16px;margin:6px 0 12px;color:#28251d}
.rnote{font-size:12.5px;color:#66645f;background:#f3f0ec;border-radius:8px;padding:12px 16px;margin-top:14px}
.rcols{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.rrow{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #e4e0d9;padding:8px 0;font-size:14px}
.rlab{color:#66645f}
.rval{font-weight:700;text-align:right}
.rinsight{display:flex;gap:14px;align-items:flex-start;background:#eef4f4;border:1px solid #cedcd8;border-radius:12px;padding:18px 20px;margin-bottom:18px}
.rbulb{color:#01696f;font-size:22px;line-height:1}
.rinsight p{margin:0;font-size:15px;color:#28251d}
.rstats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.rstat{border:1px solid #e4e0d9;border-radius:10px;padding:12px}
.rstat-lab{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#66645f}
.rstat-val{font-size:21px;font-weight:800;color:#01696f;letter-spacing:-.02em;margin-top:4px}
.rchart-wrap{margin:6px 0 16px}
.rcompare{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:8px}
.rcompare-box{border:1px solid #e4e0d9;border-radius:10px;padding:14px}
.rcompare-box.hl{background:#eef4f4;border-color:#cedcd8}
.rcompare-lab{font-size:12px;color:#66645f}
.rcompare-val{font-size:22px;font-weight:800;margin-top:4px}
.rversion{font-size:11px;color:#92908b;margin-top:auto;padding-top:12px}
