:root{
  --paper:#f3ead9;
  --paper-deep:#ebdfc8;
  --card:#fbf6ec;
  --ink:#29311f;
  --ink-soft:#4c543e;
  --moss:#3f5a36;
  --moss-deep:#2c4226;
  --yolk:#e0a429;
  --yolk-soft:#f3cd6e;
  --terracotta:#bd6238;
  --line:#d8c9ab;
  --line-strong:#c4b48f;
  --display:'Fraunces',Georgia,serif;
  --body:'Hanken Grotesk',system-ui,sans-serif;

  /* you enter (straw) */
  --straw:#f3cd6e;
  --straw-edge:#e0a429;
  --straw-tint:#f9e9bf;
  /* calculated (sage) */
  --sage:#cdddb6;
  --sage-edge:#7d9a63;
  --sage-tint:#e3ebd6;
  --leaf:#2c4226;
  --brick:#bd6238;
}
*{box-sizing:border-box;margin:0;padding:0}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--body);
  line-height:1.45;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
/* subtle paper grain — matches the main site */
body::before{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:1;opacity:0.5;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
  mix-blend-mode:multiply;
}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px 80px;position:relative;z-index:2}

/* ---- nav (matches site) ---- */
nav{
  position:sticky;top:0;z-index:50;
  background:rgba(243,234,217,0.85);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.nav-inner{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 24px;max-width:1180px;margin:0 auto;
}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}
.brand svg{width:34px;height:34px;flex-shrink:0}
.brand-text{font-family:var(--display);font-weight:600;font-size:1.05rem;letter-spacing:-.01em;line-height:1.1}
.nav-loc{font-size:.72rem;color:var(--ink-soft);letter-spacing:.08em;text-transform:uppercase}
.nav-cta{
  text-decoration:none;font-weight:600;font-size:.85rem;color:var(--card);
  background:var(--moss);padding:9px 18px;border-radius:999px;transition:background .2s,transform .2s;
}
.nav-cta:hover{background:var(--moss-deep);transform:translateY(-1px)}

/* ---- header ---- */
header.masthead{
  border-bottom:1px solid var(--line);
  padding:40px 0 24px;margin-bottom:6px;
  display:flex;flex-wrap:wrap;align-items:flex-end;gap:18px 28px;
}
.title-block{flex:1 1 320px;min-width:280px}
.eyebrow{
  font-size:.78rem;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--terracotta);margin:0 0 12px;
}
h1{
  font-family:var(--display);font-weight:600;font-size:clamp(2rem,6vw,3rem);
  line-height:1.04;letter-spacing:-.02em;color:var(--moss-deep);margin:0;
}
.sub{margin:14px 0 0;color:var(--ink-soft);max-width:56ch;font-size:1.05rem}

.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.cur{
  display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-soft);
}
.cur input{
  width:42px;text-align:center;font-family:var(--body);font-size:14px;
  border:1px solid var(--line-strong);border-radius:8px;padding:5px 4px;background:var(--card);
}
button.btn{
  font-family:var(--body);font-weight:600;font-size:13px;
  border:1.5px solid var(--moss);background:var(--moss);color:var(--card);
  padding:9px 18px;border-radius:999px;cursor:pointer;transition:transform .2s,background .2s;
}
button.btn.ghost{background:transparent;color:var(--moss)}
button.btn:hover{transform:translateY(-1px);background:var(--moss-deep);color:var(--card);border-color:var(--moss-deep)}
button.btn:active{transform:translateY(0)}
button.btn:focus-visible,input:focus-visible{outline:3px solid var(--yolk);outline-offset:1px}

/* ---- legend ---- */
.legend{
  display:flex;flex-wrap:wrap;gap:16px;align-items:center;
  font-size:12.5px;color:var(--ink-soft);margin:16px 0 18px;
}
.swatch{display:inline-flex;align-items:center;gap:7px}
.chip{width:15px;height:15px;border-radius:4px;border:1px solid var(--line-strong)}
.chip.in{background:var(--straw);border-color:var(--straw-edge)}
.chip.out{background:var(--sage);border-color:var(--sage-edge)}

/* ---- table ---- */
.scroller{overflow-x:auto;border:1px solid var(--line);border-radius:18px;background:var(--card)}
table{border-collapse:separate;border-spacing:0;width:100%;min-width:520px}
col.labelcol{width:300px}
th,td{padding:0}
thead th{
  position:sticky;top:0;z-index:3;background:var(--moss-deep);color:var(--paper);
  font-family:var(--display);font-weight:600;font-size:14px;text-align:left;
  padding:13px 14px;vertical-align:bottom;
}
thead th.labelhead{z-index:5;left:0}
th.scenhead{min-width:178px}
.scenname{
  width:100%;background:transparent;border:none;color:var(--paper);
  font-family:var(--display);font-weight:600;font-size:15px;padding:0 0 3px;
  border-bottom:1px dashed rgba(243,234,217,.4);
}
.scenname:focus{outline:none;border-bottom-color:var(--yolk-soft)}
.scenmeta{display:flex;justify-content:space-between;align-items:center;margin-top:6px}
.scenmeta small{font-weight:400;font-size:11px;opacity:.8}
.rm{
  background:transparent;border:1px solid rgba(243,234,217,.45);color:var(--paper);
  border-radius:6px;width:22px;height:22px;line-height:1;cursor:pointer;font-size:14px;
}
.rm:hover{background:var(--brick);border-color:var(--brick)}

/* left labels sticky */
td.label,th.labelhead{
  position:sticky;left:0;z-index:2;background:var(--card);
  border-right:1px solid var(--line);
}
td.label{
  padding:9px 14px;font-size:13.5px;color:var(--ink);
  border-bottom:1px solid var(--line);
}
td.label .hint{display:block;font-size:11px;color:var(--ink-soft)}

/* section header rows */
tr.section td{
  background:var(--paper-deep);border-top:1px solid var(--line-strong);
  border-bottom:1px solid var(--line-strong);
  font-size:11px;letter-spacing:.14em;font-weight:700;
  text-transform:uppercase;color:var(--terracotta);padding:8px 14px;
}
tr.section td.label{position:sticky;left:0;z-index:2;background:var(--paper-deep)}

/* value cells */
td.cell{
  border-bottom:1px solid var(--line);border-left:1px solid var(--line);
  padding:0;text-align:right;vertical-align:middle;
}
td.cell.calc{background:var(--sage-tint)}
td.cell .out{
  display:block;padding:9px 14px;
  font-size:14px;font-variant-numeric:tabular-nums;font-weight:600;
}
td.cell.calc.strong .out{font-weight:700;font-size:15px}
td.cell.calc.strong{background:var(--sage)}
td.cell input.num{
  width:100%;height:100%;border:none;background:var(--straw-tint);
  padding:9px 14px;text-align:right;font-family:var(--body);
  font-size:14px;font-variant-numeric:tabular-nums;color:var(--ink);font-weight:600;
}
td.cell input.num:focus{outline:none;background:var(--straw);box-shadow:inset 0 0 0 2px var(--straw-edge)}
.unit{color:var(--ink-soft);font-size:11px;margin-left:3px;font-weight:400}

/* result band */
tr.result td.label{font-family:var(--display);font-weight:600;font-size:13.5px}
tr.result td.cell{background:var(--paper-deep)}
tr.result td.cell .out{font-weight:700}
tr.yearstamp td{border-top:1px solid var(--line-strong)}
tr.yearstamp td.label{font-family:var(--display);font-weight:600;font-size:14px}
tr.yearstamp td.cell{background:var(--paper-deep)}
.stamp{
  display:inline-block;padding:6px 12px;border:2px solid var(--leaf);color:var(--leaf);
  border-radius:999px;font-family:var(--display);font-weight:700;font-size:15px;
  transform:rotate(-1.2deg);font-variant-numeric:tabular-nums;background:rgba(63,90,54,.08);
}
.stamp.neg{border-color:var(--brick);color:var(--brick);background:rgba(189,98,56,.08)}
tr.yearstamp td.cell .out{padding:11px 14px;text-align:right}

footer.note{
  margin-top:22px;font-size:12px;color:var(--ink-soft);
  line-height:1.7;border-top:1px solid var(--line);padding-top:14px;
}
footer.note b{color:var(--ink);font-weight:600}

@media (max-width:560px){
  .wrap{padding:0 12px 70px}
  col.labelcol{width:190px}
  td.label{font-size:12.5px;padding:8px 10px}
}
@media (prefers-reduced-motion:reduce){
  button.btn:hover{transform:none}
  .stamp{transform:none}
}
