/* 40 Acre Conservation League Billing Portal.
   Brand palette taken from 40acreleague.org theme (40acres-landing/style.css): deep green #1f3f2d, gold #c9a84c,
   Cormorant Garamond for headings. Everything else derives from these variables; use only the variables below. */
:root{
  --primary:#1f3f2d;          /* deep forest green: header, headings, primary buttons */
  --primary-soft:#2f5a42;     /* hover / secondary structure */
  --secondary:#e4ebe6;        /* pale green: table heads, badges */
  --accent:#c9a84c;           /* gold: dividers, highlights, call-to-action */
  --accent-soft:#f3ead2;
  --background:#f6f4ee;       /* warm cream page */
  --surface:#ffffff;
  --text:#1c1f1d;
  --muted:#5f6b64;
  --line:#dfe3df;
  --success:#1b6b3a; --success-bg:#e6f3ea;
  --warning:#8a5d00; --warning-bg:#fff4d6;
  --error:#a3261a;   --error-bg:#fbe9e7;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Arial,sans-serif;background:var(--background);color:var(--text);font-size:15px;line-height:1.45}
a{color:var(--primary-soft)}
h1,h2,h3,.bare-title{font-family:"Cormorant Garamond",Georgia,serif;color:var(--primary);font-weight:600;letter-spacing:-.01em}
h1{font-size:30px;margin:0 0 4px}
h2{font-size:22px;margin:0 0 12px}
h3{font-size:18px;margin:0 0 8px}
.sub{color:var(--muted);margin:0 0 20px}
code{font-family:var(--mono);font-size:13px;background:var(--secondary);padding:1px 5px;border-radius:4px}
/* header */
.topbar{background:var(--surface);border-bottom:3px solid var(--accent);display:flex;align-items:center;gap:18px;padding:8px 24px;flex-wrap:wrap}
.topbar .brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--primary)}
.topbar .brand img{height:52px;width:auto}
.topbar .brandname{font-family:"Cormorant Garamond",Georgia,serif;font-size:22px;font-weight:600;letter-spacing:.02em}
.topbar nav{display:flex;gap:2px;flex:1;flex-wrap:wrap;align-items:center}
.topbar nav a{color:var(--primary);text-decoration:none;padding:7px 11px;white-space:nowrap;border-radius:6px;font-size:14px;font-weight:600}
.topbar nav a:hover,.topbar nav a.active{background:var(--secondary)}
.topbar .who{font-size:13px;display:flex;align-items:center;gap:10px;color:var(--muted)}
.topbar .who a{color:var(--primary);font-weight:600}
.foot{text-align:center;color:var(--muted);font-size:12px;padding:20px}
.wrap{max-width:1150px;margin:0 auto;padding:24px 16px}
/* cards, tables, forms */
.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:20px;margin-bottom:18px}
.card.warncard{border-color:var(--warning);background:var(--warning-bg)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media(max-width:800px){.two{grid-template-columns:1fr}}
.flash{padding:10px 14px;border-radius:8px;margin-bottom:12px;font-size:14px;word-break:break-word}
.flash.ok{background:var(--success-bg);color:var(--success)}.flash.err{background:var(--error-bg);color:var(--error)}.flash.info{background:var(--warning-bg);color:var(--warning)}
label{display:block;font-size:13px;color:var(--muted);margin:0 0 4px}
input[type=text],input[type=email],input[type=password],input[type=date],input[type=number],select,textarea{width:100%;padding:9px 11px;border:1px solid #c9d0cb;border-radius:8px;font-size:15px;background:#fff;font-family:inherit}
input:focus,select:focus,textarea:focus{outline:2px solid rgba(201,168,76,.45);border-color:var(--accent)}
.field{margin-bottom:14px}
.btn{display:inline-block;background:var(--primary);color:#fff;border:1px solid var(--primary);padding:9px 16px;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;text-decoration:none}
.btn:hover{background:var(--primary-soft)}
.btn.secondary{background:#fff;color:var(--primary);border-color:#c9d0cb}.btn.secondary:hover{background:var(--secondary)}
.btn.accent{background:var(--accent);border-color:var(--accent);color:#1c1a12}
.btn.small{padding:5px 10px;font-size:13px}
.btn.danger{background:#fff;color:var(--error);border-color:#e3b3af}
td select,td input[type=date],td input[type=text]{width:auto;padding:6px 8px;font-size:14px}
.rolerow{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.rolerow input[type=text]{max-width:160px}
table{width:100%;border-collapse:collapse;font-size:14px}
th{text-align:left;font-size:12px;color:var(--primary);font-weight:700;padding:8px 10px;border-bottom:2px solid var(--secondary);white-space:nowrap;background:#fbfbf8}
td{padding:9px 10px;border-bottom:1px solid #eef0ee;vertical-align:top}
tr:last-child td{border-bottom:none}
.table-scroll{overflow-x:auto}
.num{text-align:right;white-space:nowrap}
.money{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:14px}
.nowrap{white-space:nowrap}
.badge{display:inline-block;font-size:12px;padding:2px 9px;border-radius:20px;background:var(--secondary);color:var(--primary);font-weight:600}
.badge.off{background:#eee;color:#777}.badge.warn{background:var(--warning-bg);color:var(--warning)}.badge.ok{background:var(--success-bg);color:var(--success)}.badge.alert{background:var(--error);color:#fff}
.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;align-items:end;margin-bottom:14px}
.inline{display:inline}
.diff div{font-size:13px}.diff .old{color:var(--error);text-decoration:line-through}.diff .new{color:var(--success)}
.muted{color:var(--muted)}
.hint{font-size:12px;color:var(--muted)}
.pager{display:flex;gap:8px;align-items:center;justify-content:center;margin-top:14px}
/* dashboard tiles */
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin:0 0 20px}
.tile{display:flex;flex-direction:column;gap:6px;padding:20px 16px;background:var(--surface);border:1px solid var(--line);border-radius:14px;text-decoration:none;color:var(--primary)}
.tile strong{font-family:"Cormorant Garamond",Georgia,serif;font-size:22px}
.tile span{font-size:13px;color:var(--muted)}
.tile:hover{border-color:var(--accent)}
.tile.primary{background:var(--primary);border-color:var(--primary);color:#fff}.tile.primary span{color:#d9e3dc}
.tile.disabled{opacity:.6;cursor:not-allowed}
/* login */
body.bare{background:var(--background)}
.bare-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px 16px}
.bare-card{background:var(--surface);border:1px solid var(--line);border-top:4px solid var(--accent);border-radius:14px;padding:28px;width:100%;max-width:420px}
.bare-card .logo{display:block;margin:0 auto 6px;height:110px;width:auto;max-width:100%}
.bare-title{text-align:center;font-size:20px;margin-bottom:14px;letter-spacing:.06em;text-transform:uppercase;font-size:14px;color:var(--muted)}
.bare-card h1{text-align:center;margin-bottom:16px}
.bare-card .btn{width:100%;text-align:center}
/* toasts */
.toasts{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:50;display:flex;flex-direction:column;gap:8px;width:min(680px,calc(100% - 24px));pointer-events:none}
.toast{pointer-events:auto;display:flex;gap:10px;align-items:flex-start;padding:13px 14px;border-radius:12px;color:#fff;font-size:15px;line-height:1.35;box-shadow:0 8px 24px rgba(0,0,0,.28);animation:toastin .25s ease-out;transition:opacity .35s,transform .35s}
.toast.ok{background:var(--success)}.toast.err{background:var(--error)}.toast.info{background:var(--primary-soft)}
.toast .toast-icon{font-size:20px;line-height:1.1;font-weight:700}.toast .toast-msg{flex:1;word-break:break-word}
.toast .toast-x{background:rgba(255,255,255,.2);border:0;color:#fff;border-radius:6px;width:28px;height:28px;font-size:20px;line-height:1;cursor:pointer}
.toast.gone{opacity:0;transform:translateY(8px)}
@keyframes toastin{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@media(max-width:700px){.topbar{padding:8px 12px}.topbar .brandname{display:none}.topbar nav{order:3;flex-basis:100%}.wrap{padding:14px 16px}h1{font-size:26px}}
@media print{.toasts,.topbar nav,.who{display:none}}
/* phase 2 */
.actions{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px}
tr.tot td{background:var(--secondary);border-top:2px solid var(--primary-soft);font-weight:600}
.row-warn td{background:#fff8e6}
.row-next td{background:#f3f7f4}
td.bad,.money.bad{color:var(--error);font-weight:700}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
table.entry input{width:100%;min-width:90px}
.sticky{position:sticky;top:8px;align-self:start}
.pdf-frame{width:100%;height:80vh;border:1px solid var(--line);border-radius:8px;background:#f5f5f5}
.note{padding:8px 10px;border-radius:8px;background:var(--background);margin:0 0 8px}.note.flag{border-left:4px solid var(--accent)}
textarea{font-family:inherit}
@media(max-width:1000px){.sticky{position:static}.pdf-frame{height:60vh}}
/* phase 3 */
.resolve-inline{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.resolve-inline input[type=text]{min-width:220px;flex:1}
.resolvebar{display:flex;align-items:center;gap:10px;border-left:4px solid var(--accent)}
td.notecell{max-width:260px;font-size:13px}
.topbar .navcta{background:var(--accent);color:#1c1a12;font-weight:700;font-size:14px;text-decoration:none;padding:7px 14px;border-radius:8px;white-space:nowrap}
.topbar .navcta:hover{filter:brightness(1.05)}
.tile em.stat{font-style:normal;font-weight:700;font-size:20px;color:var(--success)}.tile em.stat.bad{color:var(--error)}
/* grouped menus */
details.navmenu{position:relative}
details.navmenu>summary{list-style:none;cursor:pointer;color:var(--primary);padding:7px 11px;border-radius:6px;font-size:14px;font-weight:600;white-space:nowrap}
details.navmenu>summary::-webkit-details-marker{display:none}
details.navmenu[open]>summary,details.navmenu.active>summary,details.navmenu>summary:hover{background:var(--secondary)}
.navpanel{position:absolute;top:100%;left:0;z-index:20;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.14);min-width:210px;padding:4px;display:flex;flex-direction:column}
.navpanel a{color:var(--text)!important;padding:8px 12px;border-radius:6px;text-decoration:none;font-size:14px;font-weight:500}.navpanel a:hover{background:var(--secondary)}
.topbar .who .hint{display:none}
@media(max-width:1100px){.topbar .brandname{display:none}}
.pager-top{display:flex;gap:10px;align-items:center;justify-content:space-between;margin:0 0 10px}
.btn.disabled{opacity:.45;pointer-events:none}
.plainlist{margin:6px 0 0 18px;padding:0}.plainlist li{margin:4px 0}
.warnmark{color:var(--error);font-size:1em}
.issuebox{border:1px solid var(--line);border-left:4px solid var(--line);border-radius:10px;padding:10px 14px;margin:0 0 10px;background:#fff}
.issuebox.open{border-left-color:var(--error);background:#fffaf5}.issuebox.done{border-left-color:var(--success)}
.issuehead{font-size:14px;margin-bottom:6px}.issuebody p{margin:4px 0;font-size:14px}
ol.steps{margin:6px 0 0 22px;padding:0}ol.steps li{margin:8px 0;line-height:1.5}ol.steps li.done{color:var(--muted)}ol.steps li.done strong{text-decoration:line-through}
.todo{border-left:5px solid var(--accent)}.todo .btn.small{margin-left:6px}
.howto{background:#fbfbf8}
.presets{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
/* fit: grid columns may never grow past their share; wide tables scroll inside their card */
.two{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.two>*{min-width:0}
.card{min-width:0;overflow-x:auto}
.wrap{overflow-x:hidden}
.card table{max-width:100%}
.tiles .tile{min-width:0}
.sub{line-height:1.5}
h1{line-height:1.2;overflow-wrap:anywhere}
td,th{overflow-wrap:anywhere}
td.nowrap,th.nowrap,td.num,th.num,td.id{overflow-wrap:normal}
.hint{overflow-wrap:anywhere}
.issuebox{overflow-x:auto}
.filters>div{min-width:0}
/* upload drop zone */
.dropzone{border:2px dashed #9fb3a7;border-radius:14px;background:#fff;min-height:300px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:28px 20px;color:var(--primary);cursor:pointer;transition:background .15s,border-color .15s}
.dropzone:hover,.dropzone:focus{border-color:var(--accent);background:#fbfaf5;outline:none}
.dropzone.over{border-color:var(--accent);border-style:solid;background:#f3ead2}
.dropzone svg{color:var(--primary-soft)}.dropzone .dz-title{font-family:"Cormorant Garamond",Georgia,serif;font-size:26px;font-weight:600}.dropzone .dz-sub{font-size:14px;color:var(--muted)}
.dropzone .dz-pick{margin-top:6px;font-size:16px;padding:12px 26px}
.dz-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}
.dz-list{list-style:none;margin:8px 0 0;padding:0;max-width:560px;width:100%;text-align:left;font-size:14px}.dz-list li{padding:5px 10px;border-radius:6px;background:var(--background);margin:3px 0}.dz-list li.bad{background:var(--error-bg);color:var(--error)}
.dropzone.has-files{border-style:solid;border-color:var(--accent)}
.dz-warn{margin-top:6px;padding:8px 12px;border-radius:8px;background:var(--error-bg);color:var(--error);max-width:560px;font-size:14px}.dz-warn[hidden]{display:none}
.dz-actions{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin-top:12px}.dz-go{font-size:16px;padding:12px 26px}.dz-go:disabled{opacity:.45;cursor:not-allowed}
.formgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
table.entry input{width:100%;min-width:90px}
.calc td{background:#fbfbf8}
.tabs{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:0 0 14px}.tabs a{padding:8px 14px;border-radius:8px;border:1px solid var(--line);background:#fff;text-decoration:none;color:var(--primary)}.tabs a.active{background:var(--primary);color:#fff;border-color:var(--primary)}.tabs .btn{margin-left:auto}
table.kv th{text-align:left;font-weight:600;width:42%;color:var(--muted)}table.kv td.money{text-align:left}
table.compact td{padding:5px 8px}table.compact tr.tot td,table tr.tot td{font-weight:700;border-top:2px solid var(--primary)}
.radios{display:flex;gap:18px;flex-wrap:wrap;margin:10px 0}.radios label{display:flex;gap:6px;align-items:center}
.stack{margin-top:12px}.stack .field{margin-bottom:8px}
.infocard{border-left:4px solid var(--accent)}.warncard{border-left:4px solid var(--error)}
.calcgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.calcgrid .tile{text-align:left}
@media print{.topbar,.foot,.actions,.pager-top,.toasts{display:none!important}.wrap{max-width:none;padding:0}.card{box-shadow:none;border:none}}
.printsheet{font-family:Arial,Helvetica,sans-serif;font-size:12px;color:#000;max-width:980px;margin:0 auto;padding:20px}.printsheet h1{font-family:Arial,Helvetica,sans-serif;font-size:18px;text-align:center;margin:0 0 4px}.printsheet h2{font-size:13px;margin:16px 0 6px;text-transform:uppercase}.printsheet table{width:100%;border-collapse:collapse}.printsheet th,.printsheet td{border:1px solid #000;padding:4px 6px}.printsheet th{background:#e8e8e8;text-align:center}.printsheet td.num{text-align:right}.printsheet .boxes{display:grid;grid-template-columns:1fr 1fr;gap:16px}.printsheet .sig{margin-top:30px;display:grid;grid-template-columns:1fr 1fr;gap:30px}.printsheet .sig div{border-top:1px solid #000;padding-top:4px}
table.entry td:first-child{min-width:170px}table.entry td:first-child .muted{white-space:normal}
table.entry input.money{min-width:110px;text-align:right}
.pdf-frame.short{height:60vh}
/* batch review fact sheets */
.factsheet{border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin:10px 0;background:#fff}
.factsheet.warn{border-left:4px solid var(--error);background:#fffaf5}
.factsheet h3{margin:0 0 8px;font-size:17px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
dl.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px 16px;margin:0}
dl.facts div{min-width:0}dl.facts dt{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}dl.facts dd{margin:2px 0 0;font-size:16px;font-weight:600;overflow-wrap:anywhere}
.facts-title{margin:16px 0 6px}
.invlist li{margin:4px 0}
.issue-what{margin:0 0 8px;font-size:15px}dl.facts dd.plain{font-weight:500}
/* tables are always shown as stacked fact-sheet cards (labels from thead via tables.js); no width switch */
table.stack{display:block;border-collapse:separate}
table.stack thead{display:none}
table.stack tbody,table.stack tfoot{display:block}
table.stack tr{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px 16px;border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin:10px 0;background:#fff;align-items:start}
table.stack tr.row-warn{background:#fffaf5;border-left:4px solid var(--error)}
table.stack tr.tot{background:var(--background);border-color:var(--primary)}
table.stack td,table.stack th{display:block;border:0;padding:0;text-align:left;min-width:0;overflow-wrap:anywhere}
table.stack td.num{text-align:left}
table.stack td::before{content:attr(data-label);display:block;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin-bottom:2px}
table.stack td.span{grid-column:1/-1}
table.stack td.blank{display:none}
table.stack td:not([data-label])::before{content:none}
.table-scroll{overflow:visible}
@media (max-width: 900px){.two{grid-template-columns:minmax(0,1fr)}}
