/* Layout: single mobile column, fixed bottom tab bar; cards only for the main working blocks */
:root{
  --bg:#F2F5F4; --surface:#FFFFFF; --ink:#1C2B2A; --muted:#5B6D6B; --line:#DCE4E2;
  --accent:#2C6E68; --accent-ink:#FFFFFF; --accent-soft:#E0EEEC;
  --done:#2C6E68; --partial:#C08A2E; --missed:#B5596A; --track:#E6ECEA;
  --display:"Avenir Next", "Segoe UI Variable Display", "Segoe UI", system-ui, sans-serif;
  --body:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#111816; --surface:#19221F; --ink:#E4ECEA; --muted:#93A6A2; --line:#2A3633;
  --accent:#6FB8AF; --accent-ink:#0D1513; --accent-soft:#1F3532;
  --done:#6FB8AF; --partial:#D9A851; --missed:#D58594; --track:#26302D; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#111816; --surface:#19221F; --ink:#E4ECEA; --muted:#93A6A2; --line:#2A3633;
  --accent:#6FB8AF; --accent-ink:#0D1513; --accent-soft:#1F3532;
  --done:#6FB8AF; --partial:#D9A851; --missed:#D58594; --track:#26302D; color-scheme:dark}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 var(--body)}
.wrap{max-width:640px;margin:0 auto;padding-block:18px 110px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));display:flex;flex-direction:column;gap:18px}
.wrap.no-nav{padding-bottom:32px}
.view{display:flex;flex-direction:column;gap:18px}
h1,h2,h3{font-family:var(--display);font-weight:650;margin:0;text-wrap:balance;letter-spacing:-.01em}
h1{font-size:1.6rem}
h2{font-size:1.15rem}
h3{font-size:1rem}
p{margin:0}
.label{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}
.muted{color:var(--muted)}
.small{font-size:.85rem}
.tiny{font-size:.8rem}
.mono{font-family:ui-monospace,"Cascadia Mono",Consolas,monospace;letter-spacing:.04em}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:12px}
.stack{display:flex;flex-direction:column;gap:8px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.grow{flex:1 1 auto;min-width:0}
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.btn{background:var(--accent);color:var(--accent-ink);border:0;border-radius:10px;padding:10px 16px;font-weight:600}
.btn:disabled,.ghost:disabled{opacity:.5;cursor:default}
.ghost{background:transparent;border:1px solid var(--line);border-radius:10px;padding:8px 12px;color:var(--ink)}
.ghost.danger{color:var(--missed);border-color:color-mix(in srgb,var(--missed) 45%,var(--line))}
.link{background:none;border:0;color:var(--accent);padding:0;font-weight:600}
.link.quiet{color:var(--muted);font-weight:500}
.link.danger{color:var(--missed)}
input[type=text],input[type=email],textarea,select{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:9px 11px}
input.code{font-family:ui-monospace,"Cascadia Mono",Consolas,monospace;letter-spacing:.12em;text-transform:uppercase;font-size:1.05rem}
textarea{min-height:64px;resize:vertical}
.head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.head > div{min-width:0}
.datenav{display:flex;align-items:center;gap:6px}
.datenav button{width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:var(--surface)}
.datenav button:disabled{opacity:.4;cursor:default}
.hint{font-size:.8rem;color:var(--muted)}
/* meals */
.meal{display:grid;grid-template-columns:1fr auto;gap:8px 10px;align-items:center;padding-block:10px;border-top:1px solid var(--line)}
.meal:first-of-type{border-top:0;padding-top:0}
.meal .name{font-weight:600;min-width:0}
.meal .by{font-size:.78rem;color:var(--muted);font-weight:400}
.meal .mnote{grid-column:1/-1;font-size:.88rem}
.seg{display:flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.seg button{border:0;background:transparent;padding:7px 9px;font-size:.82rem;color:var(--muted)}
.seg button:disabled{cursor:default}
.seg button+button{border-left:1px solid var(--line)}
.seg button[aria-pressed=true][data-s=done]{background:var(--done);color:var(--accent-ink)}
.seg button[aria-pressed=true][data-s=partial]{background:var(--partial);color:#fff}
.seg button[aria-pressed=true][data-s=missed]{background:var(--missed);color:#fff}
.meal input{font-size:.88rem;padding:7px 10px}
.meal .mmore{grid-column:1/-1;display:flex;flex-direction:column;gap:6px}
.msum,.lmeal{display:flex;flex-direction:column;gap:3px;font-size:.88rem}
.lmeal{padding-left:10px;border-left:2px solid var(--line)}
.mtime{font-size:.8rem;color:var(--muted);font-variant-numeric:tabular-nums}
.mfoods{white-space:pre-wrap;overflow-wrap:anywhere}
.mgroups{display:flex;flex-wrap:wrap;gap:4px}
.gtag{font-size:.72rem;padding:1px 7px;border-radius:999px;background:var(--accent-soft);color:var(--ink)}
.mdetail{display:flex;flex-direction:column;gap:10px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--bg)}
.mdetail input[type=time]{width:auto;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:7px 9px}
.mdetail textarea,.mdetail input[type=text]{background:var(--surface)}
.mdetail .chip{background:var(--surface)}
.mdetail .hint{margin:0}
.mitems{margin:0;padding-left:1.1em}
.items{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.item{display:grid;grid-template-columns:1fr 7.5em auto;gap:8px;align-items:center;padding:6px 8px;border-top:1px solid var(--line)}
.item:first-child{border-top:0}
.item .ifood{overflow-wrap:anywhere}
.item input{padding:5px 8px}
.compose{display:grid;grid-template-columns:1fr 7.5em auto;gap:6px}
.compose input{background:var(--surface)}
.chip .muted{font-size:.78rem}
/* chips & scales */
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{border:1px solid var(--line);background:var(--bg);border-radius:999px;padding:6px 12px;font-size:.86rem}
.chip[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--ink);font-weight:600}
.scale{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.scale button{border:1px solid var(--line);background:var(--bg);border-radius:10px;padding:8px 2px;font-size:.78rem;line-height:1.2}
.scale button b{display:block;font-family:var(--display);font-size:1.1rem}
.scale button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.field{display:flex;flex-direction:column;gap:6px}
.kinds{display:flex;gap:6px;flex-wrap:wrap}
/* entries */
.entries{display:flex;flex-direction:column}
.entry{padding-block:10px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:4px}
.entry:first-child{border-top:0}
.entry .meta{display:flex;gap:8px;align-items:center;font-size:.8rem;color:var(--muted);flex-wrap:wrap}
.tag{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;font-weight:600;padding:2px 7px;border-radius:6px;background:var(--accent-soft);color:var(--ink)}
.tag.q{background:color-mix(in srgb,var(--partial) 22%,transparent)}
.tag.win{background:color-mix(in srgb,var(--done) 22%,transparent)}
.entry .text{white-space:pre-wrap;overflow-wrap:anywhere}
.entry .del{margin-left:auto}
.daygroup{display:flex;flex-direction:column;gap:6px}
.daylist{display:flex;flex-direction:column;gap:18px}
.empty{padding:14px;border:1px dashed var(--line);border-radius:12px;color:var(--muted);font-size:.9rem}
/* summary */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.stat{display:flex;flex-direction:column;gap:2px;min-width:0}
.stat b{font-family:var(--display);font-size:1.5rem;font-variant-numeric:tabular-nums}
.chart{overflow-x:auto}
.chart svg{display:block;width:100%;height:auto;min-width:300px}
.chart text{fill:var(--muted);font-family:var(--body)}
.chart .grid{stroke:var(--line)}
.f-done{fill:var(--done)} .f-partial{fill:var(--partial)} .f-missed{fill:var(--missed)} .f-unlogged{fill:var(--track)}
.mood-line{fill:none;stroke:var(--accent);stroke-width:2}
.mood-dot{fill:var(--accent)}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:.8rem;color:var(--muted)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.legend .k-done{background:var(--done)} .legend .k-partial{background:var(--partial)} .legend .k-missed{background:var(--missed)} .legend .k-unlogged{background:var(--track)}
.mt{margin-top:6px}
table{width:100%;border-collapse:collapse;font-size:.9rem}
td{padding:6px 0;border-top:1px solid var(--line)}
td:last-child{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.notice{font-size:.85rem;background:var(--accent-soft);border-radius:10px;padding:10px 12px}
/* team */
.member{display:flex;flex-direction:column;gap:4px;padding-block:10px;border-top:1px solid var(--line)}
.member:first-child{border-top:0;padding-top:0}
.member .who{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.member .acts{display:flex;gap:14px;flex-wrap:wrap;font-size:.85rem}
.badge{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;font-weight:600;padding:2px 7px;border-radius:6px;border:1px solid var(--line);color:var(--muted)}
.invite{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding-block:8px;border-top:1px solid var(--line)}
.invite:first-child{border-top:0}
.invite .mono{font-size:1.05rem;font-weight:600}
/* today: meal buttons and action buttons */
.mgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
@media (min-width:520px){.mgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.mbtn{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center;text-align:left;
  border:1px solid var(--line);background:var(--bg);border-radius:12px;padding:10px 12px;min-height:58px}
.mbtn .micon{grid-row:1/3}
.mbtn .mname{font-weight:600;line-height:1.25;overflow-wrap:anywhere}
.mbtn .msub{font-size:.78rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.micon{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;font-size:.95rem;font-weight:700;line-height:1}
.micon.m-empty{border:2px dashed var(--line)}
.micon.m-done{background:var(--done);color:var(--accent-ink)}
.micon.m-partial{background:var(--partial);color:#fff}
.micon.m-missed{background:var(--missed);color:#fff}
.micon.m-info{border:2px solid var(--accent);color:var(--accent)}
.actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.abtn{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;border:1px solid var(--line);background:var(--surface);
  border-radius:14px;padding:12px 14px}
.abtn b{font-family:var(--display);font-size:1.05rem}
.abtn span{font-size:.78rem;color:var(--muted)}
/* bottom sheets */
dialog.sheet{width:min(640px,100%);max-width:100%;max-height:92dvh;margin:auto auto 0;border:1px solid var(--line);border-bottom:0;
  border-radius:18px 18px 0 0;padding:0 16px calc(16px + env(safe-area-inset-bottom,0px));background:var(--surface);color:var(--ink);overflow:auto;overscroll-behavior:contain}
dialog.sheet[open]{display:flex;flex-direction:column;gap:14px}
dialog.sheet::backdrop{background:rgb(0 0 0 / .4)}
dialog.sheet > .head{position:sticky;top:0;z-index:1;background:var(--surface);padding-block:14px 6px}
@media (min-width:700px){dialog.sheet{margin:auto;border-radius:18px;border-bottom:1px solid var(--line);padding-bottom:16px}}
#meals .meal{display:flex;flex-direction:column;gap:12px;padding:0;border:0}
#meals .mdetail{padding:0;border:0;background:none}
.seg-wide button{flex:1;padding:10px 6px;font-size:.9rem}
.icon-btn{display:inline-grid;place-items:center;width:36px;height:36px;padding:0;border:0;border-radius:8px;background:none;color:var(--muted)}
.icon-btn:hover{color:var(--missed);background:color-mix(in srgb,var(--missed) 10%,transparent)}
.entry .meta .icon-btn{width:30px;height:30px}
#mealDialog .head .ghost{padding:5px 10px;font-size:.85rem}
.trow{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.trow .ghost{padding:6px 10px;font-size:.85rem}
/* meal guide */
.guide{width:min(560px,calc(100% - 24px));max-height:calc(100% - 48px);border:1px solid var(--line);border-radius:16px;padding:18px;background:var(--surface);color:var(--ink)}
.guide::backdrop{background:rgb(0 0 0 / .4)}
.gmeal{border-top:1px solid var(--line);padding-top:8px}
.gmeal p{font-size:.92rem}
.gexamples{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 12px;font-size:.9rem}
.gexamples dt{font-weight:600}
.gexamples dd{margin:0;color:var(--muted)}
@media (max-width:420px){.gexamples{grid-template-columns:1fr}.gexamples dd{margin-bottom:6px}}
/* week sheet */
.wform{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:.9rem}
.wscroll{overflow-x:auto}
.wtable{min-width:760px;table-layout:fixed;font-size:.8rem;border:1px solid var(--line)}
.wtable th,.wtable td{border:1px solid var(--line);padding:6px;vertical-align:top;text-align:left;font-weight:400}
.wtable td:last-child{text-align:left;font-weight:400}
.wtable thead th{font-weight:600}
.wtable thead th span{display:block;color:var(--muted);font-size:.75rem}
.wtable tbody th{font-weight:600;width:96px}
.wtable td{display:table-cell}
.wtable td .msum,.wtable td .mfoods,.wtable .mitems{font-size:.8rem}
.wtable .mitems{padding-left:0;list-style:none}
.wtable .gtag{font-size:.65rem}
.wstatus{display:block;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px}
.wstatus.s-done{color:var(--done)} .wstatus.s-partial{color:var(--partial)} .wstatus.s-missed{color:var(--missed)}
/* switcher */
.switch{max-width:46vw;width:auto;padding:6px 10px;font-size:.85rem;background:var(--surface)}
/* sign-in */
.brand{display:flex;align-items:center;gap:10px}
.brand img{width:36px;height:36px}
/* nav */
nav{position:fixed;left:0;right:0;bottom:0;background:var(--surface);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0px);padding-left:max(8px,env(safe-area-inset-left,0px));padding-right:max(8px,env(safe-area-inset-right,0px));z-index:5}
nav .in{max-width:640px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr)}
nav button{background:none;border:0;padding:12px 4px;font-size:.82rem;font-weight:600;color:var(--muted);border-top:2px solid transparent}
nav button[aria-current=page]{color:var(--accent);border-top-color:var(--accent)}
.toast{position:fixed;inset:auto;margin:0;border:0;left:50%;transform:translateX(-50%);bottom:calc(70px + env(safe-area-inset-bottom,0px));background:var(--ink);color:var(--bg);padding:8px 14px;border-radius:10px;font-size:.88rem;z-index:6;max-width:calc(100% - 32px)}
.foot{font-size:.8rem;color:var(--muted)}
@media (max-width:380px){
  .seg button{padding:7px 6px;font-size:.78rem}
  .stats{grid-template-columns:1fr 1fr}
}
@media (prefers-reduced-motion: reduce){*{transition:none!important}}
@media print{
  @page{size:landscape;margin:10mm}
  :root,:root[data-theme],:root:not([data-theme="light"]){--bg:#fff;--surface:#fff;--ink:#000;--muted:#444;--line:#888;--accent-soft:#eee;--done:#000;--partial:#000;--missed:#000;color-scheme:light}
  nav,#appHead,.foot,.no-print,.toast,dialog{display:none!important}
  .wrap{max-width:none;padding:0}
  .card{border:0;padding:0}
  .wscroll{overflow:visible}
  .wtable{min-width:0;width:100%}
}
