:root{--green:#083D2B;--green-2:#0E4A35;--paper:#F5F1E8;--paper-2:#ECE6D8;--card:#FBF8F2;--ink:#1B211E;--muted:#5B635E;
  --amber:#B8741F;--amber-ink:#8E5712;--gold:#E0B06A;--line:rgba(8,61,43,.16);--warn:#9A3A1E;
  --serif:"Fraunces",Georgia,serif;--sans:"Instrument Sans",system-ui,-apple-system,"Segoe UI",sans-serif;--r:14px}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font:400 16px/1.55 var(--sans);-webkit-font-smoothing:antialiased}
a{color:var(--green);text-underline-offset:3px}
h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.1;letter-spacing:-.015em;color:var(--green);margin:0 0 .4em}
.wrap{max-width:860px;margin:0 auto;padding:0 18px}
.is-admin .wrap{max-width:1080px}
.skip{position:absolute;left:-999px}.skip:focus{left:12px;top:12px;z-index:9;background:#fff;padding:8px}
.top{background:var(--paper);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.top__in{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:60px;flex-wrap:wrap}
.brand{font:600 24px/1 var(--serif);color:var(--green);text-decoration:none;display:flex;align-items:baseline;gap:10px}
.brand small{font:600 11px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--amber-ink)}
.top__nav{display:flex;gap:16px;flex-wrap:wrap}
.top__nav a{font-weight:500;font-size:15px;text-decoration:none}
.top__nav a:hover{text-decoration:underline}
main{padding:24px 18px 40px}
.foot{padding:24px 18px 48px;color:var(--muted);font-size:14px}
.eyebrow{font:600 12px/1.2 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--amber-ink);margin:0 0 10px}
.eyebrow--light{color:var(--gold)}
.h1,.hello h1,.weekhead h1{font-size:clamp(28px,6vw,40px)}
.h2{font-size:22px;margin-top:6px}
.lede{color:var(--muted);font-size:17px;max-width:60ch}
.muted{color:var(--muted)}.small{font-size:13.5px}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 22px;border-radius:999px;border:0;background:var(--amber);color:#fff;font:600 15px/1 var(--sans);text-decoration:none;cursor:pointer}
.btn:hover{background:var(--amber-ink)}
.btn--small{min-height:40px;padding:0 16px;font-size:14px}
.btn--ghost{background:transparent;color:var(--green);box-shadow:inset 0 0 0 1.5px var(--green)}
.btn--ghost:hover{background:var(--green);color:var(--paper)}
.linkbtn{background:none;border:0;padding:4px 0;color:var(--warn);font:600 14px var(--sans);text-decoration:underline;cursor:pointer}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.flash{padding:12px 16px;border-radius:10px;font-weight:600;margin:0 0 18px}
.flash--ok{background:#E3EEDF;color:#1F5A3A}.flash--err{background:#F7E3DC;color:var(--warn)}
.tag{display:inline-block;padding:2px 9px;border-radius:999px;background:var(--paper-2);color:var(--green);font:600 12px/1.6 var(--sans);vertical-align:1px}
.tag--warn{background:#F7E3DC;color:var(--warn)}.tag--period{background:#EFE7F5;color:#4A1F63}
.chip{font:600 12.5px var(--sans);padding:4px 10px;border-radius:999px;background:var(--paper-2);color:var(--muted);white-space:nowrap}
.chip--open{background:#E3EEDF;color:#1F5A3A}.chip--warn{background:#F7E3DC;color:var(--warn)}
.callout{background:var(--paper-2);border-radius:12px;padding:14px 16px;margin:0 0 14px;font-size:15.5px}
.callout--quiet{background:transparent;border:1px solid var(--line)}
/* balance */
.balance{background:var(--green);color:var(--paper);border-radius:var(--r);padding:22px 20px;margin-bottom:22px}
.balance--admin{margin-top:8px}
.balance__nums{display:flex;gap:28px;align-items:flex-end;flex-wrap:wrap}
.big{margin:0;display:flex;align-items:baseline;gap:10px}
.big strong{font:600 64px/.9 var(--serif);letter-spacing:-.03em;font-variation-settings:"opsz" 144}
.big span{font-size:15px;color:rgba(245,241,232,.82)}
.big--small strong{font-size:34px}
.balance__note{margin:14px 0 0;font-size:14.5px;color:rgba(245,241,232,.85)}
.balance__note--warn{color:#F6D7A3;font-weight:600}
.balance__links{margin:14px 0 0;font-size:14px;display:flex;gap:6px 14px;flex-wrap:wrap;color:rgba(245,241,232,.75)}
.balance__links a{color:var(--gold);font-weight:600}
.life{display:flex;gap:8px;margin:18px 0 0}
.life__zone{min-width:0;flex:1 1 0}
.life__cells{list-style:none;margin:0;padding:0;display:flex;gap:2px}
.life__cells li{flex:1 1 0;height:26px;border-radius:3px;background:var(--gold)}
.life__cells li.is-past{background:rgba(224,176,106,.35)}
.life__cells li.is-today{box-shadow:0 0 0 2px var(--paper)}
.life__f{position:relative;background:transparent!important;box-shadow:inset 0 0 0 1px rgba(224,176,106,.5)}
.life__f::after{content:"";position:absolute;inset:0;border-radius:3px;background:var(--gold);opacity:calc(.55 - var(--i) * .1)}
.life__cap{display:flex;justify-content:space-between;gap:6px;margin:7px 0 0;font:600 11.5px/1.3 var(--sans);color:rgba(245,241,232,.75)}
/* weeks + days */
.weeks{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px}
.weeks a{padding:9px 16px;border-radius:999px;box-shadow:inset 0 0 0 1.5px var(--line);text-decoration:none;font-weight:600;font-size:14.5px;background:var(--card)}
.weeks a[aria-current]{background:var(--green);color:var(--paper);box-shadow:none}
.menu{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px 0;margin:0 0 18px}
.menu summary{cursor:pointer;font:600 17px var(--serif);color:var(--green)}
.menu__list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:18px}
.menu__list h3{font-size:19px;margin:0 0 4px}
.menu__list p{margin:0 0 8px;color:var(--muted);font-size:14.5px}
.macros{width:100%;border-collapse:collapse;font-size:13.5px;font-variant-numeric:tabular-nums}
.macros th,.macros td{padding:5px 4px;text-align:right;border-top:1px solid var(--line)}
.macros thead th{border:0;font:600 10.5px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.macros tbody th{text-align:left}.macros small{color:var(--muted);font-weight:400}
.macros .allergen td{text-align:left;border:0;padding-top:0;color:var(--muted);font-size:12.5px}
.day{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 16px 14px;margin:0 0 14px;scroll-margin-top:80px}
.day__head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.day__head h2{font-size:22px;margin:0}
.meals{list-style:none;margin:12px 0 0;padding:0}
.meals li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line);font-size:15px}
.meals form{margin:0}
.add{margin-top:10px}
.add summary{cursor:pointer;font-weight:600;color:var(--green);padding:6px 0;list-style:none}
.add summary::-webkit-details-marker{display:none}
.add__form{display:grid;gap:12px;margin-top:8px}
label{display:grid;gap:6px;font-weight:600;font-size:14.5px}
label small{font-weight:400;color:var(--muted)}
input:not([type=checkbox]):not([type=radio]),select,textarea{width:100%;min-height:46px;padding:10px 12px;font:inherit;font-size:16px;color:var(--ink);background:#fff;border:1.5px solid rgba(8,61,43,.25);border-radius:10px}
textarea{min-height:70px}
.check{display:flex;align-items:flex-start;gap:10px;font-weight:500}
.check input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--green);flex:none}
.check.is-off{opacity:.55}
[hidden]{display:none!important}
.empty,.hello{padding:30px 0}
/* admin */
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;margin:0 0 18px}
.panel--warn{border-color:rgba(154,58,30,.35);background:#FCF1EC}
.banner{background:#F6ECD9;border-radius:12px;padding:14px 16px;margin:0 0 18px;display:grid;gap:8px}
.banner p{margin:0}
.inline{display:inline-flex;gap:12px;align-items:center;flex-wrap:wrap;margin:0}
.stack{display:grid;gap:14px}.narrow{max-width:460px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.grid2{display:grid;gap:18px}
.table{width:100%;border-collapse:collapse;font-size:14.5px}
.table th,.table td{padding:9px 8px;border-top:1px solid var(--line);text-align:left;vertical-align:top}
.table thead th{border-top:0;font:600 11px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.table .num{text-align:right;font-variant-numeric:tabular-nums}
.table tfoot th{border-top:2px solid var(--green)}
.table--grid .extra td{background:var(--paper-2)}
.scroll{overflow-x:auto}
.list{padding-left:18px}.list li{margin:6px 0}
.todo{list-style:none;padding:0;margin:0}.todo li{padding:9px 0;border-top:1px solid var(--line)}
.days{list-style:none;margin:0;padding:0}
.days a{display:grid;grid-template-columns:110px 1fr 70px 70px;gap:10px;align-items:center;padding:7px 0;text-decoration:none;color:var(--ink);font-size:14.5px}
.days__bar{height:10px;background:var(--paper-2);border-radius:999px;overflow:hidden}
.days__bar span{display:block;height:100%;background:var(--green)}
.days__n{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.msg{border-top:1px solid var(--line);padding:12px 0}
.msg h3{font-size:17px;margin:0 0 6px}
.msg pre{white-space:pre-wrap;font:14px/1.5 var(--sans);background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px;margin:0 0 10px}
code{font-size:13px;word-break:break-all;background:var(--paper-2);padding:2px 6px;border-radius:6px}
.mini summary{cursor:pointer;color:var(--warn);font-weight:600;font-size:14px}
.choices{border:0;padding:0;margin:0;display:grid;gap:8px}
.choices legend{font-weight:600;font-size:14.5px;margin-bottom:6px}
.pill{display:flex;align-items:center;gap:10px;font-weight:500;padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;background:#fff}
.pill input{accent-color:var(--green)}
.menuform__bar{position:sticky;top:60px;z-index:3;display:flex;gap:14px;align-items:center;flex-wrap:wrap;background:var(--paper);padding:10px 0;border-bottom:1px solid var(--line);margin-bottom:12px}
.menuform__bar p{margin:0}
.dishgroup{border:0;padding:0;margin:0 0 18px}
.dishgroup legend{font:600 18px var(--serif);color:var(--green);margin-bottom:8px}
.dishpick{display:flex;gap:10px;align-items:flex-start;padding:9px 10px;border-radius:10px;font-weight:500;cursor:pointer}
.dishpick:hover{background:var(--paper-2)}
.dishpick input{width:18px;height:18px;margin-top:3px;accent-color:var(--green);flex:none}
.dishpick span{display:grid}.dishpick small{color:var(--muted);font-size:13px}
.pager{display:flex;justify-content:space-between;gap:10px;margin-bottom:12px;font-weight:600;font-size:14.5px}
.tickets{display:grid;gap:12px}
.ticket{background:#fff;border:1.5px dashed rgba(8,61,43,.35);border-radius:10px;padding:14px;break-inside:avoid}
.ticket header{display:flex;justify-content:space-between;font-size:17px;margin-bottom:4px}
.ticket ol{margin:8px 0 0;padding-left:20px}.ticket li{margin:6px 0}
.ticket__note{background:#FFF6E0;padding:6px 8px;border-radius:6px;font-weight:600;font-size:14px;margin:6px 0}
@media (min-width:760px){
  .grid2{grid-template-columns:1fr 1fr}
  .tickets{grid-template-columns:1fr 1fr}
  .add__form{grid-template-columns:2fr 1fr;align-items:end}
  .add__form label:first-of-type{grid-column:1/-1}
  .add__form .btn{justify-self:start}
}
@media (max-width:520px){.days a{grid-template-columns:90px 1fr 60px}.days a .muted{display:none}.big strong{font-size:56px}}
@media print{
  .top,.foot,.noprint,.flash{display:none!important}
  body{background:#fff}.panel{border:0;padding:0}
  .tickets{grid-template-columns:1fr 1fr}
}
