:root{
    --paper:#F1E9D8;
    --paper-stripe:#E8DDC4;
    --ink:#1E2A22;
    --ink-soft:#4B5A4F;
    --green:#1F4735;
    --green-deep:#163227;
    --red:#B23A2E;
    --gold:#B08D3E;
    --line:#C9BC9C;
    --paper-rgb:241,233,216;
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    background:var(--paper);
    color:var(--ink);
    font-family:'Inter',sans-serif;
    -webkit-font-smoothing:antialiased;
  }
  ::selection{background:var(--gold);color:var(--paper);}

  /* subtle paper texture via layered gradients */
  body{
    background-image:
      repeating-linear-gradient(180deg, rgba(0,0,0,0.015) 0px, rgba(0,0,0,0.015) 1px, transparent 1px, transparent 34px),
      radial-gradient(1200px 600px at 10% -10%, rgba(255,255,255,0.4), transparent 60%);
  }

  a{color:inherit;}
  .wrap{max-width:1180px;margin:0 auto;padding:0 28px;}

  /* ---------- Header / cover ---------- */
  header.cover{
    background:var(--green);
    color:var(--paper);
    position:relative;
    padding:56px 0 70px;
    overflow:hidden;
  }
  header.cover::after{
    content:"";
    position:absolute; left:0; right:0; bottom:0;
    height:6px;
    background:repeating-linear-gradient(90deg, var(--red) 0 26px, transparent 26px 34px);
    opacity:0.9;
  }
  .eyebrow{
    font-family:'IBM Plex Mono',monospace;
    font-size:12px;
    letter-spacing:0.18em;
    text-transform:uppercase;
    color:#CBD9C9;
    margin:0 0 18px;
  }
  h1.title{
    font-family:'Fraunces',serif;
    font-weight:500;
    font-size:clamp(40px,6vw,68px);
    line-height:1.02;
    margin:0 0 14px;
    letter-spacing:-0.01em;
  }
  h1.title em{
    font-style:italic;
    color:var(--gold);
  }
  .cover-sub{
    max-width:560px;
    font-size:17px;
    line-height:1.55;
    color:#D9E3D6;
    margin:0;
  }
  .ledger-number{
    position:absolute;
    top:48px; right:28px;
    font-family:'IBM Plex Mono',monospace;
    font-size:12px;
    color:#9FB3A0;
    text-align:right;
    letter-spacing:0.06em;
  }

  /* ---------- Main layout ---------- */
  main{padding:54px 0 90px;}
  .grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:0;
    border:1px solid var(--line);
    background:var(--paper);
  }
  @media (max-width:860px){ .grid{grid-template-columns:1fr;} }

  .panel{padding:42px;}
  .panel.entries{border-right:1px solid var(--line);}
  @media (max-width:860px){ .panel.entries{border-right:none; border-bottom:1px solid var(--line);} }

  .panel-label{
    font-family:'IBM Plex Mono',monospace;
    font-size:11px;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:var(--ink-soft);
    margin:0 0 26px;
    display:flex; align-items:center; gap:10px;
  }
  .panel-label::before{
    content:"";
    width:16px;height:1px;background:var(--red);
    display:inline-block;
  }

  .field{
    margin-bottom:26px;
  }
  .field label{
    display:block;
    font-size:13px;
    color:var(--ink-soft);
    margin-bottom:8px;
    font-weight:500;
  }
  .field-row{display:flex; align-items:baseline; gap:10px;}
  .field-row .prefix, .field-row .suffix{
    font-family:'IBM Plex Mono',monospace;
    font-size:20px;
    color:var(--ink-soft);
  }
  .field input[type="text"],
  .field input[type="number"],
  .field input[type="date"]{
    width:100%;
    border:none;
    border-bottom:1.5px solid var(--ink);
    background:transparent;
    font-family:'IBM Plex Mono',monospace;
    font-size:22px;
    color:var(--ink);
    padding:4px 2px 8px;
    outline:none;
    transition:border-color .15s ease;
  }
  .field input:focus{border-bottom-color:var(--red);}
  .field input::-webkit-outer-spin-button,
  .field input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
  .field-hint{
    font-size:12px;
    color:#8C8367;
    margin-top:6px;
  }

  /* ---------- Summary / stamped panel ---------- */
  .panel.summary{
    background:
      radial-gradient(700px 300px at 100% 0%, rgba(31,71,53,0.05), transparent 60%);
  }
  .stamp{
    display:inline-block;
    border:1.5px solid var(--red);
    color:var(--red);
    font-family:'IBM Plex Mono',monospace;
    font-size:11px;
    letter-spacing:0.1em;
    text-transform:uppercase;
    padding:4px 10px;
    border-radius:2px;
    transform:rotate(-2deg);
    margin-bottom:22px;
  }
  .headline-figure{
    font-family:'Fraunces',serif;
    font-weight:500;
    font-size:clamp(46px,5vw,64px);
    line-height:1;
    margin:0 0 6px;
    color:var(--green-deep);
  }
  .headline-caption{
    font-size:13px;
    color:var(--ink-soft);
    margin:0 0 34px;
  }
  .subfigures{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:22px 18px;
    padding-top:24px;
    border-top:1px dashed var(--line);
  }
  .subfigure dt{
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:0.08em;
    color:var(--ink-soft);
    margin:0 0 6px;
  }
  .subfigure dd{
    margin:0;
    font-family:'IBM Plex Mono',monospace;
    font-size:20px;
    color:var(--ink);
  }
  .subfigure dd.red{color:var(--red);}
  .subfigure dd.green{color:var(--green);}

  .extra-toggle{
    margin-top:30px;
    padding-top:24px;
    border-top:1px dashed var(--line);
  }

  /* ---------- Chart section ---------- */
  section.chart-section{
    border:1px solid var(--line);
    border-top:none;
    padding:44px 42px 30px;
    background:var(--paper);
  }
  .chart-head{
    display:flex; justify-content:space-between; align-items:flex-end; flex-wrap:wrap; gap:16px;
    margin-bottom:8px;
  }
  .chart-head h2{
    font-family:'Fraunces',serif;
    font-weight:500;
    font-size:26px;
    margin:0;
  }
  .chart-note{
    font-family:'IBM Plex Mono',monospace;
    font-size:12px;
    color:var(--ink-soft);
    max-width:320px;
    text-align:right;
    line-height:1.5;
  }
  .legend{display:flex; gap:22px; margin:18px 0 10px; flex-wrap:wrap;}
  .legend-item{display:flex; align-items:center; gap:8px; font-size:12px; color:var(--ink-soft); font-family:'IBM Plex Mono',monospace;}
  .swatch{width:14px;height:3px; display:inline-block;}

  /* ---------- Table ---------- */
  section.table-section{
    border:1px solid var(--line);
    border-top:none;
    background:var(--paper);
  }
  .table-head{
    padding:34px 42px 10px;
    display:flex; justify-content:space-between; align-items:flex-end; flex-wrap:wrap; gap:14px;
  }
  .table-head h2{
    font-family:'Fraunces',serif;
    font-weight:500;
    font-size:26px;
    margin:0;
  }
  .table-controls{display:flex; gap:10px; align-items:center;}
  .table-controls select{
    font-family:'IBM Plex Mono',monospace;
    font-size:12px;
    border:1px solid var(--line);
    background:var(--paper);
    color:var(--ink);
    padding:8px 10px;
    border-radius:2px;
  }
  .table-scroll{
    max-height:520px;
    overflow-y:auto;
    margin:18px 0 0;
    border-top:1px solid var(--ink);
  }
  table{
    width:100%;
    border-collapse:collapse;
    font-family:'IBM Plex Mono',monospace;
    font-size:13px;
  }
  thead th{
    position:sticky; top:0;
    background:var(--green);
    color:var(--paper);
    text-align:right;
    padding:12px 16px;
    font-weight:500;
    letter-spacing:0.03em;
    font-size:11px;
    text-transform:uppercase;
    z-index:2;
  }
  thead th:first-child, tbody td:first-child{text-align:left;}
  tbody td{
    padding:9px 16px;
    text-align:right;
    border-bottom:1px solid rgba(0,0,0,0.05);
    white-space:nowrap;
  }
  tbody tr:nth-child(odd){background:var(--paper-stripe);}
  tbody tr.crossover-row td{
    background:rgba(178,58,46,0.1);
    font-weight:600;
  }
  tbody td.extra{color:var(--green);}

  tbody tr.year-header{
    cursor:pointer;
    background:rgba(31,71,53,0.11);
    user-select:none;
  }
  tbody tr.year-header:hover{background:rgba(31,71,53,0.17);}
  tbody tr.year-header td{
    font-weight:600;
    color:var(--green-deep);
    border-bottom:1px solid var(--green);
    padding-top:11px;
    padding-bottom:11px;
  }
  tbody tr.year-header td:first-child{
    display:flex;
    align-items:center;
    gap:8px;
  }
  .chevron{
    display:inline-block;
    font-size:10px;
    color:var(--red);
    transition:transform .15s ease;
    transform:rotate(90deg);
  }
  tbody tr.year-header.collapsed .chevron{transform:rotate(0deg);}
  tbody tr.month-row td:first-child{padding-left:30px; font-weight:400; color:var(--ink-soft);}
  tbody tr.month-row.hidden-row{display:none;}

  .extra-cell{display:flex; align-items:center; gap:3px; justify-content:flex-end;}
  .extra-cell .dollar-sign{color:#8C8367; font-size:12px;}
  input.extra-input{
    width:78px;
    text-align:right;
    border:none;
    border-bottom:1px dashed var(--line);
    background:transparent;
    font-family:'IBM Plex Mono',monospace;
    font-size:13px;
    color:var(--green);
    padding:3px 2px;
    outline:none;
  }
  input.extra-input::placeholder{color:#B7AE94;}
  input.extra-input:focus{border-bottom:1px solid var(--red); border-bottom-style:solid;}
  input.extra-input.has-value{border-bottom-color:var(--green);}

  .table-note{
    padding:0 42px;
    margin:2px 0 0;
    font-size:12.5px;
    color:var(--ink-soft);
    line-height:1.5;
    max-width:640px;
  }
  .table-btn{
    font-family:'IBM Plex Mono',monospace;
    font-size:11px;
    letter-spacing:0.04em;
    text-transform:uppercase;
    border:1px solid var(--line);
    background:transparent;
    color:var(--ink-soft);
    padding:8px 12px;
    border-radius:2px;
    cursor:pointer;
    transition:border-color .15s ease, color .15s ease;
  }
  .table-btn:hover{border-color:var(--green); color:var(--green-deep);}
  .table-btn.warn:hover{border-color:var(--red); color:var(--red);}

  footer{
    padding:40px 0 60px;
    text-align:center;
    font-size:12px;
    color:var(--ink-soft);
    font-family:'IBM Plex Mono',monospace;
  }

  /* focus visibility */
  a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible{
    outline:2px solid var(--red);
    outline-offset:2px;
  }

  @media (prefers-reduced-motion:reduce){
    html{scroll-behavior:auto;}
  }
/* ---------- Site nav ---------- */
.sitenav{
  background:var(--paper);
  border-bottom:1px solid var(--line);
  padding:16px 0;
}
.navwrap{display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:12px;}
.navmark{
  font-family:'Fraunces',serif;
  font-weight:600;
  font-size:17px;
  color:var(--green-deep);
  text-decoration:none;
  letter-spacing:-0.01em;
}
.navlinks{display:flex; gap:26px; flex-wrap:wrap;}
.navlinks a{
  font-family:'IBM Plex Mono',monospace;
  font-size:12px;
  letter-spacing:0.06em;
  text-transform:uppercase;
  color:var(--ink-soft);
  text-decoration:none;
  padding-bottom:3px;
  border-bottom:1px solid transparent;
  transition:color .15s ease, border-color .15s ease;
}
.navlinks a:hover, .navlinks a.active{
  color:var(--green-deep);
  border-bottom-color:var(--red);
}

/* ---------- Ad slots ---------- */
.ad-slot{
  border:1px dashed var(--line);
  background:rgba(31,71,53,0.03);
  color:#9C9578;
  font-family:'IBM Plex Mono',monospace;
  font-size:11px;
  letter-spacing:0.06em;
  text-transform:uppercase;
  text-align:center;
  padding:22px 20px;
  margin:36px 0;
  border-radius:2px;
}
.wrap .ad-slot{margin:36px 0;}

/* ---------- How it works / FAQ ---------- */
section.info-section{
  border:1px solid var(--line);
  border-top:none;
  background:var(--paper);
  padding:44px 42px 50px;
}
section.info-section h2{
  font-family:'Fraunces',serif;
  font-weight:500;
  font-size:28px;
  margin:0 0 18px;
}
section.info-section p{
  font-size:15px;
  line-height:1.7;
  color:var(--ink);
  max-width:760px;
  margin:0 0 18px;
}
section.info-section .disclaimer{
  font-size:12.5px;
  color:var(--ink-soft);
  border-top:1px dashed var(--line);
  padding-top:18px;
  margin-top:26px;
  max-width:760px;
}
.faq-item{
  padding:20px 0;
  border-top:1px dashed var(--line);
}
.faq-item:first-of-type{border-top:none;}
.faq-item h3{
  font-family:'Inter',sans-serif;
  font-weight:600;
  font-size:15.5px;
  margin:0 0 8px;
  color:var(--green-deep);
}
.faq-item p{
  font-size:14px;
  line-height:1.65;
  color:var(--ink);
  margin:0;
  max-width:720px;
}

/* ---------- Simple content pages (About / Privacy) ---------- */
main.page{padding:54px 0 90px;}
.page-panel{
  border:1px solid var(--line);
  background:var(--paper);
  padding:46px 48px;
}
.page-panel h1{
  font-family:'Fraunces',serif;
  font-weight:500;
  font-size:clamp(32px,4vw,42px);
  margin:0 0 8px;
  color:var(--green-deep);
}
.page-panel .updated{
  font-family:'IBM Plex Mono',monospace;
  font-size:12px;
  color:var(--ink-soft);
  margin:0 0 30px;
}
.page-panel h2{
  font-family:'Fraunces',serif;
  font-weight:500;
  font-size:21px;
  margin:34px 0 12px;
  color:var(--green-deep);
}
.page-panel p{
  font-size:15px;
  line-height:1.7;
  color:var(--ink);
  max-width:720px;
  margin:0 0 16px;
}
.page-panel ul{
  margin:0 0 16px;
  padding-left:22px;
  max-width:720px;
}
.page-panel li{
  font-size:15px;
  line-height:1.7;
  color:var(--ink);
  margin-bottom:6px;
}
.page-panel a.inline-link{
  color:var(--green-deep);
  text-decoration:underline;
  text-decoration-color:var(--line);
}
.contact-box{
  margin-top:36px;
  padding-top:26px;
  border-top:1px dashed var(--line);
}
.contact-box .stamp{margin-bottom:14px;}
