:root{
    --paper:#E9E7D9;
    --paper-raised:#F4F2E7;
    --ink:#211E16;
    --ink-soft:#57543F;
    --green-900:#24402F;
    --green-700:#3C6349;
    --green-050:#DDE6DC;
    --ochre:#A9772A;
    --ochre-text:#7A5419;
    --ochre-soft:#EFE1C4;
    --rust:#9C3B2A;
    --rust-soft:#F3DCD4;
    --warn-bg:#F9E39A;
    --line:#C7C0A7;
    --line-strong:#A79F84;
    --focus:#3C6349;
    --shadow: 0 1px 2px rgba(33,30,22,.06);
  }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      --paper:#181B15;
      --paper-raised:#20241C;
      --ink:#ECE7D6;
      --ink-soft:#AFA98F;
      --green-900:#8FBB9E;
      --green-700:#6FA383;
      --green-050:#26332A;
      --ochre:#D9AC5C;
      --ochre-text:#D9AC5C;
      --ochre-soft:#3A311E;
      --rust:#E08066;
      --rust-soft:#3A2420;
      --warn-bg:#4A3B12;
      --line:#3A3E30;
      --line-strong:#4C5140;
      --focus:#8FBB9E;
      --shadow: 0 1px 2px rgba(0,0,0,.3);
    }
  }
  :root[data-theme="dark"]{
    --paper:#181B15;
    --paper-raised:#20241C;
    --ink:#ECE7D6;
    --ink-soft:#AFA98F;
    --green-900:#8FBB9E;
    --green-700:#6FA383;
    --green-050:#26332A;
    --ochre:#D9AC5C;
    --ochre-soft:#3A311E;
    --rust:#E08066;
    --rust-soft:#3A2420;
    --line:#3A3E30;
    --line-strong:#4C5140;
    --focus:#8FBB9E;
    --shadow: 0 1px 2px rgba(0,0,0,.3);
  }

  *{box-sizing:border-box;}
  /* Scoped to our own wrapper, not the real <body> — a theme's own body
     background/color rules would otherwise win the cascade and leave our
     content sitting on white with the wrong text colors. */
  .cea-et-root{
    display:block;
    background:var(--paper);
    color:var(--ink);
    font-family:"IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;
    font-size:15px;
    line-height:1.5;
  }
  /* The theme's own h1/h2/h3 rules have equal selector specificity and load
     after ours, so without an explicit color here the theme wins the
     cascade by source order — headings render in the theme's fixed grey
     regardless of light/dark mode, unreadable against our dark surfaces. */
  h1,h2,h3{
    font-family:"Fraunces", Georgia, serif;
    font-weight:500;
    text-wrap:balance;
    margin:0;
    color:var(--ink);
  }
  input[type="text"], input[type="number"], .num{
    font-variant-numeric: tabular-nums;
  }
  .money-input{
    font-family:"IBM Plex Mono", ui-monospace, monospace;
  }

  /* ---------- shell ---------- */
  /* Single column — the two-column layout with a sticky summary rail made
     the form's own left-hand column hard to read at a glance, so the
     summary moved into the pre-submit confirmation modal (see
     dialog#confirm-modal) instead of living beside the form. */
  .shell{
    max-width:760px;
    margin:0 auto;
    padding:40px 28px 120px;
  }
  @media (max-width: 860px){
    .shell{ padding-bottom:200px; }
  }

  .doc-head{
    margin-bottom:34px;
    padding-bottom:26px;
    border-bottom:1px solid var(--line-strong);
  }
  .doc-head .kicker{
    color:var(--ink-soft);
    font-size:13px;
    margin-bottom:6px;
  }
  .doc-head h1{
    font-size:30px;
    letter-spacing:-.01em;
  }
  .doc-head p{
    margin:10px 0 0;
    color:var(--ink-soft);
    font-size:14.5px;
  }

  /* ---------- sections ---------- */
  .section{
    padding:28px 0;
    border-bottom:1px solid var(--line);
  }
  .section:first-of-type{ padding-top:0; }
  .section-head{
    display:flex;
    align-items:baseline;
    gap:12px;
    margin-bottom:18px;
  }
  .section-num{
    font-family:"IBM Plex Mono", monospace;
    font-size:13px;
    color:var(--green-700);
    border:1px solid var(--green-700);
    border-radius:50%;
    width:24px;
    height:24px;
    display:flex;
    align-items:center;
    justify-content:center;
    flex-shrink:0;
  }
  .section-head h2{
    font-size:19px;
  }
  .section-note{
    color:var(--ink-soft);
    font-size:13.5px;
    margin:-8px 0 18px 36px;
  }
  .section-body{ margin-left:36px; }

  /* Plain informational note (not a warning) — green like the site's
     positive/neutral accents, vs. the ochre legal notice below it. */
  .info-notice{
    display:flex;
    gap:14px;
    align-items:center;
    margin-top:22px;
    padding:14px 18px;
    background:var(--green-050);
    border:1px solid var(--green-700);
    border-radius:4px;
  }
  .info-notice .icon{
    width:26px; height:26px; flex-shrink:0;
    border-radius:50%;
    background:var(--paper-raised);
    color:var(--green-700);
    border:1px solid var(--green-700);
    display:flex; align-items:center; justify-content:center;
    font-family:"Fraunces", serif;
    font-size:15px;
    font-style:italic;
  }
  .info-notice p{ margin:0; font-size:14.5px; line-height:1.5; color:var(--ink); }
  .info-notice strong{ font-weight:500; }

  .legal-notice{
    display:flex;
    gap:14px;
    align-items:flex-start;
    margin-top:22px;
    padding:16px 18px;
    background:var(--ochre-soft);
    border:1px solid var(--ochre);
    border-radius:4px;
  }
  .legal-notice .icon{
    width:26px; height:26px; flex-shrink:0;
    border-radius:50%;
    background:var(--paper-raised);
    color:var(--ochre);
    border:1px solid var(--ochre);
    display:flex; align-items:center; justify-content:center;
    font-family:"Fraunces", serif;
    font-size:14px;
  }
  .legal-notice p{ margin:0; font-size:13.5px; line-height:1.55; color:var(--ink-soft); }
  .legal-notice strong{ color:var(--ink); font-weight:500; }
  .legal-notice a{ color:var(--ochre-text); text-decoration-thickness:1px; }

  .contact-note{
    margin:12px 0 18px 36px;
    padding:10px 14px;
    background:var(--paper-raised);
    border-left:2px solid var(--ochre);
    border-radius:2px;
    font-size:13px;
    color:var(--ink-soft);
  }
  .contact-note a{ color:var(--ochre-text); }

  /* ---------- field basics ---------- */
  label{
    display:block;
    font-size:13px;
    color:var(--ink-soft);
    margin-bottom:6px;
  }
  .req{ color:var(--rust); }
  .field{ display:flex; flex-direction:column; }
  input[type="text"], input[type="date"], input[type="month"], input[type="number"], input[type="email"], input[type="tel"], select{
    font:inherit;
    color:var(--ink);
    background:var(--paper-raised);
    border:1px solid var(--line-strong);
    border-radius:3px;
    padding:9px 11px;
    width:100%;
  }
  input:focus-visible, select:focus-visible, button:focus-visible, .upload:focus-within{
    outline:2px solid var(--focus);
    outline-offset:1px;
  }
  input.invalid-flag{
    background:var(--warn-bg);
    border-color:var(--rust);
    color:var(--ink);
  }
  .field-error-note{
    display:none;
    align-items:center;
    gap:5px;
    margin-top:6px;
    font-size:12px;
    font-weight:500;
    color:var(--rust);
  }
  .field-error-note.show{ display:flex; }
  .field-error-note::before{
    content:"!";
    display:flex;
    align-items:center;
    justify-content:center;
    width:14px; height:14px;
    border-radius:50%;
    background:var(--rust);
    color:var(--warn-bg);
    font-size:10px;
    font-weight:600;
    flex-shrink:0;
  }
  input[type="number"]::-webkit-outer-spin-button,
  input[type="number"]::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
  input[type="number"]{ -moz-appearance:textfield; }

  .lic-input{
    display:flex;
    align-items:stretch;
    border:1px solid var(--line-strong);
    border-radius:3px;
    background:var(--paper-raised);
    overflow:hidden;
  }
  .lic-prefix{
    display:flex;
    align-items:center;
    padding:0 8px;
    font-family:"IBM Plex Mono", monospace;
    font-size:14px;
    color:var(--ink-soft);
    white-space:nowrap;
    background:var(--green-050);
    border-right:1px solid var(--line-strong);
  }
  .lic-input input{
    border:none;
    border-radius:0;
    background:transparent;
    font-family:"IBM Plex Mono", monospace;
    letter-spacing:.02em;
    min-width:0;
  }
  .lic-input input:focus-visible{ outline-offset:-2px; }
  /* The year is a fixed 2-digit slot; the suffix takes whatever's left. */
  .lic-input .lic-year{ flex:0 0 3em; text-align:center; }
  .lic-input #cealic-suffix{ flex:1 1 auto; }
  .lic-note{
    display:block;
    font-size:12px;
    margin-top:6px;
    min-height:15px;
    color:var(--green-700);
  }
  .lic-note.warn{ color:var(--rust); }

  .row2{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
  @media (max-width:560px){ .row2{ grid-template-columns:1fr; } }

  /* line-item rows (ledger table) */
  .ledger{ width:100%; border-collapse:collapse; }
  .ledger th{
    text-align:left;
    font-weight:500;
    font-size:12px;
    color:var(--ink-soft);
    padding-bottom:8px;
    border-bottom:1px solid var(--line-strong);
  }
  .ledger th.amt, .ledger td.amt{ text-align:right; width:170px; }
  .ledger td{
    padding:12px 0;
    border-bottom:1px solid var(--line);
    vertical-align:middle;
  }
  .ledger .lnum{
    font-family:"IBM Plex Mono", monospace;
    color:var(--ink-soft);
    font-size:12.5px;
    width:28px;
  }
  .ledger .desc{ font-size:14px; }
  .ledger .desc small{ display:block; color:var(--ink-soft); font-size:12px; margin-top:2px; }
  .amt-input-wrap{
    position:relative;
    display:flex;
    justify-content:flex-end;
  }
  .amt-input-wrap .cur{
    position:absolute;
    left:11px; top:50%; transform:translateY(-50%);
    color:var(--ink-soft);
    font-family:"IBM Plex Mono", monospace;
    font-size:14px;
  }
  .amt-input-wrap input{
    text-align:right;
    padding-left:24px;
    max-width:150px;
  }
  .ledger tr.total td{
    border-bottom:none;
    padding-top:14px;
    font-weight:600;
  }
  .ledger tr.total .desc{ font-family:"Fraunces", serif; font-size:15px; }
  .computed{
    font-family:"IBM Plex Mono", monospace;
    text-align:right;
    display:block;
  }
  .computed.big{ font-size:16px; }

  /* penalty tier chips */
  .tier-note{
    display:flex;
    gap:6px;
    flex-wrap:wrap;
    margin-top:10px;
  }
  .tier-chip{
    font-family:"IBM Plex Mono", monospace;
    font-size:11px;
    padding:3px 8px;
    border-radius:20px;
    border:1px solid var(--line-strong);
    color:var(--ink-soft);
  }
  .tier-chip.active{
    border-color:var(--ochre);
    color:var(--ochre-text);
    background:var(--ochre-soft);
  }

  /* total due banner */
  .total-due-section{ padding-top:6px; padding-bottom:6px; }
  .total-due-banner{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:20px;
    flex-wrap:wrap;
    padding:20px 24px;
    background:var(--green-050);
    border:1px solid var(--green-700);
    border-radius:6px;
  }
  .tdb-label{
    display:flex;
    align-items:center;
    gap:12px;
    font-family:"Fraunces", serif;
    font-weight:500;
    font-size:17px;
  }
  .tdb-label .lnum{
    font-family:"IBM Plex Mono", monospace;
    font-size:13px;
    font-weight:400;
    color:var(--green-700);
    border:1px solid var(--green-700);
    border-radius:50%;
    width:24px;
    height:24px;
    display:flex;
    align-items:center;
    justify-content:center;
    flex-shrink:0;
  }
  .tdb-amount{
    font-family:"IBM Plex Mono", monospace;
    font-size:28px;
    font-weight:600;
    color:var(--green-700);
  }

  /* payment method */
  .paymethod-group{ display:flex; flex-direction:column; gap:10px; }
  .paymethod-option{
    display:flex;
    align-items:flex-start;
    gap:12px;
    padding:13px 15px;
    border:1px solid var(--line-strong);
    border-radius:4px;
    background:var(--paper-raised);
    cursor:pointer;
  }
  .paymethod-option:has(input:checked){
    border-color:var(--green-700);
    background:var(--green-050);
  }
  .paymethod-option input[type="radio"]{
    margin-top:3px;
    accent-color:var(--green-700);
    width:15px; height:15px;
    flex-shrink:0;
  }
  .paymethod-option .pm-body{ display:block; flex:1; }
  .paymethod-option .pm-title{ display:block; font-size:14px; font-weight:500; }
  .paymethod-option .pm-sub{ display:block; font-size:12.5px; color:var(--ink-soft); margin-top:2px; }
  .paymethod-option .pm-detail{
    display:none;
    margin-top:10px;
    padding-top:10px;
    border-top:1px solid var(--line);
    font-size:12.5px;
    line-height:1.6;
    color:var(--ink-soft);
  }
  .paymethod-option .pm-detail strong{ color:var(--ink); font-weight:500; }
  .paymethod-option:has(input:checked) .pm-detail{ display:block; }
  .pm-detail .bank-warn{
    display:block;
    color:var(--ink-soft);
    font-size:12.5px;
    line-height:1.6;
  }
  .pm-detail .bank-warn a{ color:var(--ochre-text); }

  /* certification */
  .upload{
    border:1px dashed var(--line-strong);
    border-radius:4px;
    padding:16px;
    display:flex;
    align-items:center;
    gap:12px;
    background:var(--paper-raised);
    cursor:pointer;
  }
  .upload input{ display:none; }
  .upload .icon{
    width:34px; height:34px; flex-shrink:0;
    border-radius:50%;
    background:var(--green-050);
    color:var(--green-700);
    display:flex; align-items:center; justify-content:center;
  }
  .upload .txt{ font-size:13.5px; }
  .upload .txt strong{ display:block; font-weight:500; color:var(--ink); }
  .upload .txt span{ color:var(--ink-soft); font-size:12.5px; }
  .file-list{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin-top:10px;
  }
  .file-chip{
    display:inline-flex;
    align-items:center;
    gap:8px;
    padding:6px 8px 6px 12px;
    border-radius:100px;
    background:var(--green-050);
    border:1px solid var(--green-700);
    font-size:12.5px;
    color:var(--green-700);
    max-width:100%;
  }
  .file-chip-name{
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    max-width:260px;
  }
  .file-chip-remove{
    flex-shrink:0;
    width:18px; height:18px;
    border-radius:50%;
    border:none;
    background:transparent;
    color:inherit;
    font-size:15px;
    line-height:1;
    display:flex;
    align-items:center;
    justify-content:center;
    cursor:pointer;
  }
  .file-chip-remove:hover, .file-chip-remove:focus-visible{
    background:var(--rust);
    color:#fff;
  }

  .esign-note{
    display:block;
    margin-top:10px;
    font-size:12px;
    line-height:1.6;
    color:var(--ink-soft);
  }

  /* signature trigger + preview */
  .sign-trigger{
    font:inherit;
    width:100%;
    min-height:64px;
    display:flex;
    align-items:center;
    justify-content:flex-start;
    padding:10px 14px;
    background:var(--paper-raised);
    border:1px dashed var(--line-strong);
    border-radius:4px;
    cursor:pointer;
    color:var(--ink);
    text-align:left;
  }
  .sign-trigger:hover{ border-color:var(--green-700); }
  #sign-trigger-empty{ display:flex; align-items:center; gap:10px; color:var(--ink-soft); font-size:13.5px; }
  #sign-trigger-empty .icon{
    width:26px; height:26px; border-radius:50%;
    background:var(--green-050); color:var(--green-700);
    display:flex; align-items:center; justify-content:center; font-size:13px;
  }
  #sign-trigger-filled{ display:flex; align-items:center; gap:14px; width:100%; }
  .sign-preview-script{ font-family:"Sacramento", cursive; font-size:30px; color:var(--ink); line-height:1; }
  .sign-preview-image{ max-height:44px; max-width:180px; }
  .sign-preview-name{ font-size:12px; color:var(--ink-soft); margin-left:auto; }
  .sig-date-note{ font-size:12.5px; color:var(--ink-soft); margin-top:6px; }
  .sig-date-note strong{ color:var(--ink); font-weight:600; }

  /* signature modal */
  dialog#sign-modal{
    border:none;
    border-radius:6px;
    padding:0;
    width:min(460px, 92vw);
    background:var(--paper-raised);
    color:var(--ink);
    box-shadow:0 12px 36px rgba(0,0,0,.28);
  }
  dialog#sign-modal::backdrop{ background:rgba(20,18,12,.5); }
  .sm-head{
    display:flex; align-items:center; justify-content:space-between;
    padding:16px 18px;
    border-bottom:1px solid var(--line);
  }
  .sm-head h3{ font-size:17px; }
  .sm-close{
    font:inherit; font-size:20px; line-height:1;
    background:none; border:none; color:var(--ink-soft); cursor:pointer; padding:4px;
  }
  .sm-tabs{ display:flex; gap:6px; padding:14px 18px 0; }
  .sm-tab{
    font:inherit; font-size:13px;
    padding:7px 14px;
    border:1px solid var(--line-strong);
    background:var(--paper);
    color:var(--ink-soft);
    border-radius:20px;
    cursor:pointer;
  }
  .sm-tab.active{ background:var(--green-900); border-color:var(--green-900); color:var(--paper-raised); }
  :root[data-theme="dark"] .sm-tab.active{ color:#0F140F; }
  @media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .sm-tab.active{ color:#0F140F; } }
  .sm-body{ padding:18px; }
  .sm-panel label{ margin-bottom:6px; }
  .sm-panel input[type="text"]{ margin-bottom:4px; }
  .sm-type-preview{
    margin-top:14px;
    min-height:64px;
    display:flex; align-items:center;
    padding:10px 14px;
    border:1px solid var(--line);
    border-radius:4px;
    background:var(--paper);
    font-family:"Sacramento", cursive;
    font-size:32px;
    color:var(--ink-soft);
  }
  .sm-type-preview.filled{ color:var(--ink); }
  #sm-canvas{
    width:100%;
    height:150px;
    border:1px dashed var(--line-strong);
    border-radius:4px;
    background:var(--paper);
    touch-action:none;
    cursor:crosshair;
    display:block;
  }
  .sm-clear{
    font:inherit; font-size:12px;
    margin-top:8px;
    background:none;
    border:1px solid var(--line-strong);
    border-radius:3px;
    padding:5px 10px;
    color:var(--ink-soft);
    cursor:pointer;
  }
  .sm-foot{
    display:flex; justify-content:flex-end; gap:10px;
    padding:14px 18px;
    border-top:1px solid var(--line);
  }
  .sm-cancel{
    font:inherit; font-size:14px;
    background:none;
    border:none;
    color:var(--ink-soft);
    cursor:pointer;
    padding:10px 14px;
  }

  /* post-submit download popup — same dialog chrome as the signature modal */
  dialog#download-modal, dialog#nosales-modal{
    border:none;
    border-radius:6px;
    padding:0;
    width:min(420px, 92vw);
    background:var(--paper-raised);
    color:var(--ink);
    box-shadow:0 12px 36px rgba(0,0,0,.28);
  }
  dialog#download-modal::backdrop, dialog#nosales-modal::backdrop{ background:rgba(20,18,12,.5); }
  .dm-body{ padding:18px; }
  .dm-body p{ margin:0; font-size:14px; line-height:1.6; color:var(--ink); }

  /* Submitting overlay: a non-dismissable dialog shown for the whole
     file-upload + Airtable round trip, since the small inline
     "submit-hint" text alone was easy to miss and filers weren't sure
     the click had registered. */
  dialog#submitting-modal{
    border:none;
    border-radius:6px;
    padding:0;
    width:min(360px, 92vw);
    background:var(--paper-raised);
    color:var(--ink);
    box-shadow:0 12px 36px rgba(0,0,0,.28);
  }
  dialog#submitting-modal::backdrop{ background:rgba(20,18,12,.5); }
  .submitting-body{ padding:28px 22px; text-align:center; }
  .submitting-body h3{ margin:16px 0 8px; font-size:17px; }
  .submitting-body p{ margin:0; font-size:13.5px; line-height:1.6; color:var(--ink-soft); }
  .submitting-spinner{
    width:38px; height:38px; margin:0 auto; border-radius:50%;
    border:4px solid var(--line); border-top-color:var(--green-700);
    animation:submitting-spin 0.8s linear infinite;
  }
  @media (prefers-reduced-motion: reduce){ .submitting-spinner{ animation-duration:2.4s; } }
  @keyframes submitting-spin{ to{ transform:rotate(360deg); } }

  .certify{
    display:flex;
    gap:12px;
    align-items:flex-start;
    margin-top:22px;
    padding:16px;
    background:var(--paper-raised);
    border:1px solid var(--line);
    border-radius:4px;
  }
  .certify input{ margin-top:3px; width:16px; height:16px; accent-color:var(--green-700); flex-shrink:0; }
  .certify p{ margin:0; font-size:13px; color:var(--ink-soft); }
  .certify strong{ color:var(--ink); font-weight:500; }

  .submit-row{
    margin-top:26px;
    display:flex;
    align-items:center;
    gap:16px;
  }
  button.primary{
    font:inherit;
    font-weight:500;
    background:var(--green-900);
    color:var(--paper-raised);
    border:none;
    border-radius:3px;
    padding:12px 22px;
    cursor:pointer;
  }
  @media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) button.primary{ color:#0F140F; } }
  :root[data-theme="dark"] button.primary{ color:#0F140F; }
  button.primary:disabled, button.primary[aria-disabled="true"]{ opacity:.55; }
  button.primary:not(:disabled):not([aria-disabled="true"]):hover{ background:var(--green-700); }
  .submit-hint{ font-size:12.5px; color:var(--ink-soft); }

  /* Full-page confirmation: after filing, the entire form (et-form-view)
     hides and this replaces it, so there's no ambiguity about whether the
     return went through — matches the pattern used on the agent card form. */
  .et-success-view{
    max-width:520px;
    margin:0 auto;
    padding:72px 28px 100px;
    text-align:center;
    display:flex;
    flex-direction:column;
    align-items:center;
  }
  .et-success-view[hidden]{ display:none; }
  .et-success-icon{
    display:flex;
    align-items:center;
    justify-content:center;
    width:56px; height:56px;
    flex-shrink:0;
    border-radius:50%;
    background:var(--green-700);
    color:var(--paper-raised);
    font-size:26px;
    line-height:1;
    margin-bottom:20px;
  }
  .et-success-view h2{
    font-size:24px;
    margin-bottom:12px;
  }
  #submit-success-msg{
    margin:0 0 26px;
    font-size:15px;
    line-height:1.55;
    color:var(--ink-soft);
  }
  .download-pdf-btn{
    display:inline-flex;
    align-items:center;
    gap:6px;
    padding:10px 18px;
    border:1px solid var(--green-700);
    border-radius:4px;
    font-size:13.5px;
    font-weight:500;
    color:var(--green-700);
    text-decoration:none;
    background:transparent;
  }
  .download-pdf-btn:hover, .download-pdf-btn:focus-visible{
    background:var(--green-700);
    color:var(--paper-raised);
  }
  .download-pdf-btn[hidden]{ display:none; }

  .validation-summary{
    margin-top:16px;
    padding:14px 18px;
    background:var(--rust-soft);
    border:1px solid var(--rust);
    border-radius:4px;
  }
  .validation-summary strong{ color:var(--ink); font-size:13.5px; }
  .validation-summary ul{ margin:8px 0 0; padding-left:20px; }
  .validation-summary li{ font-size:13px; color:var(--ink-soft); margin-top:4px; }

  /* ---------- pre-submit review modal ---------- */
  dialog#confirm-modal{
    border:none;
    border-radius:6px;
    padding:0;
    width:min(440px, 92vw);
    background:var(--paper-raised);
    color:var(--ink);
    box-shadow:0 12px 36px rgba(0,0,0,.28);
  }
  dialog#confirm-modal::backdrop{ background:rgba(20,18,12,.5); }
  .rail-head{
    padding:16px 18px;
    background:var(--green-900);
    color:var(--paper-raised);
  }
  @media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .rail-head{ color:#0F140F; } }
  :root[data-theme="dark"] .rail-head{ color:#0F140F; }
  .rail-head .month{ font-family:"Fraunces", serif; font-size:16px; font-weight:500; }
  .rail-head .biz{ font-size:12px; opacity:.85; margin-top:2px; }
  .rail-body{ padding:16px 18px; }
  .rail-line{
    display:flex;
    justify-content:space-between;
    align-items:baseline;
    padding:7px 0;
    font-size:13px;
  }
  .rail-line .l{ color:var(--ink-soft); }
  .rail-line .v{ font-family:"IBM Plex Mono", monospace; }
  .rail-line.sub{ padding-left:10px; font-size:12px; }
  .rail-line.sub .l{ color:var(--ink-soft); }
  .rail-div{ border-top:1px solid var(--line); margin:6px 0; }
  .rail-line.due{
    margin-top:6px;
    padding-top:14px;
    border-top:1px solid var(--line-strong);
    font-size:15px;
  }
  .rail-line.due .l{ color:var(--ink); font-family:"Fraunces", serif; font-weight:500; }
  .rail-line.due .v{ font-size:19px; font-weight:600; color:var(--green-700); }

  /* mobile sticky summary */
  .mobile-bar{ display:none; }
  .mobile-bar[hidden]{ display:none; }
  @media (max-width:860px){
    .mobile-bar:not([hidden]){
      display:flex;
      position:fixed;
      left:0; right:0; bottom:0;
      background:var(--paper-raised);
      border-top:1px solid var(--line-strong);
      padding:12px 18px;
      align-items:center;
      justify-content:space-between;
      gap:14px;
      box-shadow:0 -2px 8px rgba(0,0,0,.08);
    }
    .mobile-bar .due{ font-family:"IBM Plex Mono", monospace; }
    .mobile-bar .due .l{ font-size:11px; color:var(--ink-soft); display:block; }
    .mobile-bar .due .v{ font-size:18px; font-weight:600; color:var(--green-700); }
  }

  @media (prefers-reduced-motion: no-preference){
    button.primary{ transition: background .15s ease; }
  }
