:root{
  /* wall & paper — warm stone */
  --wall:#DED8CB; --wall2:#CFC8B8; --card:#FBF8F0; --sunk:#D2CBBB;
  --ink:#171A18; --ink2:#3A423C; --muted:#6D7268; --line:#C3BCAA;
  /* people — emerald & oxblood */
  --p1:#0E5C4A; --p1h:#0A4739; --p2:#7C2B3E; --p2h:#63202F;
  /* brass */
  --brass:#A98A4E; --brass2:#C9AC72; --brassline:rgba(169,138,78,.42);
  /* materials */
  --cork:#9A6634; --cork2:#6E4520; --corkdot:rgba(58,32,8,.34);
  --polaroid:#FCFAF2; --polaedge:#E0D9C6;
  --tape:rgba(226,212,164,.74); --tapeedge:rgba(184,166,116,.55);
  --n1:#F0DFA8; --n2:#BFD8C6; --n3:#EFC4C9; --n4:#BCC8DE;
  --noteink:#1E2422;
  --pin1:#7C2B3E; --pin2:#1D4F6B; --pin3:#A98A4E; --pin4:#0E5C4A;
  /* depth */
  --sh1:0 1px 2px rgba(28,22,10,.09);
  --sh2:0 2px 5px rgba(28,22,10,.10), 0 9px 20px -10px rgba(28,22,10,.32);
  --sh3:0 4px 10px rgba(28,22,10,.13), 0 24px 48px -18px rgba(28,22,10,.46);
  --pill:#FFFDF6;
  --ease:cubic-bezier(.22,.61,.36,1);
  --spring:cubic-bezier(.34,1.56,.64,1);
  --amb1:#0E5C4A; --amb2:#7C2B3E; --amb3:#A98A4E;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --wall:#0D1614; --wall2:#060C0B; --card:#15211E; --sunk:#101A18;
    --ink:#EFE9DA; --ink2:#C6C2B2; --muted:#8B9188; --line:#26332F;
    --p1:#2E9C7E; --p1h:#43B394; --p2:#C4536E; --p2h:#D66E86;
    --brass:#D4AF6A; --brass2:#E8CB93; --brassline:rgba(212,175,106,.30);
    --cork:#6B4523; --cork2:#452B12; --corkdot:rgba(12,6,0,.48);
    --polaroid:#EDE7D6; --polaedge:#C9C2AE;
    --tape:rgba(214,196,140,.30); --tapeedge:rgba(150,134,88,.38);
    --n1:#D9C482; --n2:#93BFA6; --n3:#D19AA6; --n4:#96A7C4;
    --noteink:#131A18;
    --pin1:#C4536E; --pin2:#4E9BC0; --pin3:#D4AF6A; --pin4:#2E9C7E;
    --sh1:0 1px 2px rgba(0,0,0,.5);
    --sh2:0 2px 6px rgba(0,0,0,.55), 0 12px 28px -12px rgba(0,0,0,.85);
    --sh3:0 4px 12px rgba(0,0,0,.6), 0 30px 58px -20px rgba(0,0,0,1);
    --pill:#243330;
    --amb1:#0B5B48; --amb2:#7A2A44; --amb3:#8E6E2E;
  }
}
:root[data-theme="dark"]{
  --wall:#0D1614; --wall2:#060C0B; --card:#15211E; --sunk:#101A18;
  --ink:#EFE9DA; --ink2:#C6C2B2; --muted:#8B9188; --line:#26332F;
  --p1:#2E9C7E; --p1h:#43B394; --p2:#C4536E; --p2h:#D66E86;
  --brass:#D4AF6A; --brass2:#E8CB93; --brassline:rgba(212,175,106,.30);
  --cork:#6B4523; --cork2:#452B12; --corkdot:rgba(12,6,0,.48);
  --polaroid:#EDE7D6; --polaedge:#C9C2AE;
  --tape:rgba(214,196,140,.30); --tapeedge:rgba(150,134,88,.38);
  --n1:#D9C482; --n2:#93BFA6; --n3:#D19AA6; --n4:#96A7C4;
  --noteink:#131A18;
  --pin1:#C4536E; --pin2:#4E9BC0; --pin3:#D4AF6A; --pin4:#2E9C7E;
  --sh1:0 1px 2px rgba(0,0,0,.5);
  --sh2:0 2px 6px rgba(0,0,0,.55), 0 12px 28px -12px rgba(0,0,0,.85);
  --sh3:0 4px 12px rgba(0,0,0,.6), 0 30px 58px -20px rgba(0,0,0,1);
  --pill:#243330;
  --amb1:#0B5B48; --amb2:#7A2A44; --amb3:#8E6E2E;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;color:var(--ink);position:relative;min-height:100vh;
  background:var(--wall);
  background-image:
    radial-gradient(120% 90% at 50% -10%, rgba(255,255,255,.16), transparent 60%),
    linear-gradient(180deg, var(--wall) 0%, var(--wall2) 100%);
  font-family:"Public Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;
}
/* plaster grain */
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.5;
  background-image:
    repeating-linear-gradient(102deg, rgba(0,0,0,.014) 0 1px, transparent 1px 3px),
    repeating-linear-gradient(14deg, rgba(255,255,255,.02) 0 1px, transparent 1px 4px);
}
#amb{position:fixed;inset:-12%;width:124%;height:124%;z-index:0;pointer-events:none;filter:blur(64px);opacity:.55}
.wrap{position:relative;z-index:1;max-width:1080px;margin:0 auto;padding:24px 16px 40px}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2.5px solid var(--p1);outline-offset:2px;border-radius:6px}

@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.stagger{animation:rise .55s var(--ease) backwards;animation-delay:calc(var(--i,0) * 55ms)}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;position:relative;
  cursor:pointer;border:1px solid var(--line);border-radius:11px;padding:10px 16px;
  background:linear-gradient(180deg, var(--card), color-mix(in srgb,var(--card) 88%, var(--sunk)));
  color:var(--ink);font-size:14px;font-weight:600;box-shadow:var(--sh1), inset 0 1px 0 rgba(255,255,255,.6);
  transition:transform .14s var(--ease), box-shadow .2s var(--ease), filter .2s var(--ease), border-color .2s var(--ease);
}
.btn:hover{transform:translateY(-1.5px);box-shadow:var(--sh2), inset 0 1px 0 rgba(255,255,255,.6);border-color:var(--muted)}
.btn:active{transform:translateY(1.5px) scale(.98);box-shadow:inset 0 2px 5px rgba(0,0,0,.18)}
.btn.primary{
  border-color:transparent;color:#fff;
  background:linear-gradient(180deg, color-mix(in srgb,var(--p1) 88%, #fff 12%), var(--p1));
  box-shadow:var(--sh2), inset 0 1px 0 rgba(255,255,255,.28);
}
.btn.primary:hover{filter:brightness(1.07);box-shadow:var(--sh3), inset 0 1px 0 rgba(255,255,255,.28)}
.btn.icon{padding:10px 13px}
.btn[disabled]{opacity:.4;pointer-events:none}
.btn.danger{background:linear-gradient(180deg,#A33A3A,#822C2C);border-color:transparent;color:#FBEFEF;
  box-shadow:var(--sh2), inset 0 1px 0 rgba(255,255,255,.2)}
.btn.danger:hover{filter:brightness(1.1)}
.btn.danger[hidden]{display:none}
/* ripple */
.rip{position:absolute;border-radius:50%;transform:scale(0);opacity:.45;background:currentColor;pointer-events:none;animation:rip .55s var(--ease) forwards}
@keyframes rip{to{transform:scale(2.6);opacity:0}}
.btn{overflow:hidden}

/* ---------- header ---------- */
.top{display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px;padding-bottom:16px}
.brand{margin-right:auto;display:flex;align-items:center;gap:13px}
.mark{
  width:44px;height:44px;border-radius:13px;flex:none;display:grid;place-items:center;
  background:linear-gradient(145deg,var(--p1) 0%, var(--p2) 62%, var(--brass) 100%);color:#FDF8EC;
  outline:1px solid var(--brassline);outline-offset:-1px;
  font-family:"Bricolage Grotesque",sans-serif;font-weight:800;font-size:17px;letter-spacing:-.04em;
  box-shadow:var(--sh2), inset 0 1px 0 rgba(255,255,255,.35);
  position:relative;overflow:hidden;
}
.mark::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.42) 48%,transparent 62%);
  transform:translateX(-130%);animation:sheen 5.5s var(--ease) 1.4s infinite;
}
@keyframes sheen{0%,72%{transform:translateX(-130%)}100%{transform:translateX(130%)}}
.brand h1{font-family:"Bricolage Grotesque","Public Sans",sans-serif;font-weight:800;font-size:27px;line-height:1.02;margin:0;letter-spacing:-.03em}
.brand .sub{font-size:13px;color:var(--muted);margin-top:2px}

.seg{
  display:inline-flex;align-items:center;gap:2px;padding:4px;border-radius:999px;
  background:var(--sunk);border:1px solid var(--line);box-shadow:inset 0 2px 5px rgba(0,0,0,.09);
}
.seg .lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);padding:0 8px 0 11px;font-weight:700}
.chip{
  cursor:pointer;border:0;background:transparent;color:var(--muted);
  font-size:14px;font-weight:600;padding:7px 16px;border-radius:999px;
  transition:background-color .25s var(--ease), color .25s var(--ease), transform .16s var(--spring), box-shadow .25s var(--ease);
}
.chip:hover{color:var(--ink)}
.chip:active{transform:scale(.94)}
.chip[aria-pressed="true"]{color:#fff;box-shadow:var(--sh1), inset 0 1px 0 rgba(255,255,255,.25);transform:scale(1.02)}
.chip.a[aria-pressed="true"]{background:linear-gradient(180deg,color-mix(in srgb,var(--p1) 86%,#fff),var(--p1))}
.chip.b[aria-pressed="true"]{background:linear-gradient(180deg,color-mix(in srgb,var(--p2) 86%,#fff),var(--p2))}

/* ---------- tabs ---------- */
.tabs{
  position:relative;display:flex;margin:8px 0 26px;padding:5px;
  background:var(--sunk);border:1px solid var(--line);border-radius:15px;
  box-shadow:inset 0 2px 6px rgba(0,0,0,.10);
}
.tabpill{
  position:absolute;top:5px;bottom:5px;left:0;width:0;
  background:linear-gradient(180deg,var(--pill),color-mix(in srgb,var(--pill) 90%,var(--sunk)));
  border-radius:11px;box-shadow:var(--sh2), inset 0 1px 0 rgba(255,255,255,.7);
  transition:transform .46s var(--spring), width .46s var(--spring);
  pointer-events:none;
}
.tab{
  position:relative;z-index:1;flex:1;cursor:pointer;border:0;background:transparent;
  color:var(--muted);font-weight:600;font-size:15px;padding:12px 8px;border-radius:11px;
  display:flex;align-items:center;justify-content:center;gap:8px;
  transition:color .28s var(--ease), transform .14s var(--ease);
}
.tab:hover{color:var(--ink2)}
.tab:active{transform:scale(.96)}
.tab[aria-selected="true"]{color:var(--ink)}
.tab .ti{font-size:17px;line-height:1;transition:transform .45s var(--spring)}
.tab[aria-selected="true"] .ti{transform:scale(1.18) rotate(-7deg)}
.tab .tc{
  font-size:11px;font-weight:700;padding:1px 7px;border-radius:999px;
  background:var(--line);color:var(--muted);font-variant-numeric:tabular-nums;
  transition:background-color .3s var(--ease), color .3s var(--ease);
}
.tab[aria-selected="true"] .tc{background:linear-gradient(180deg,var(--brass2),var(--brass));color:#231B08}

.panel[hidden]{display:none}
.panel{animation:rise .42s var(--ease)}

.phead{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:20px}
.phead h2{font-family:"Bricolage Grotesque",sans-serif;font-size:22px;margin:0;font-weight:800;letter-spacing:-.025em}
.phead .lede{font-size:13px;color:var(--muted);margin-right:auto}
.weeklabel{font-size:13.5px;font-weight:600;color:var(--ink2);min-width:126px;text-align:center;font-variant-numeric:tabular-nums}

/* ---------- FOOD: polaroids on the wall ---------- */
.daygroup{margin-bottom:34px}
.dayrule{
  display:flex;align-items:center;gap:13px;margin-bottom:18px;
  font-size:11.5px;text-transform:uppercase;letter-spacing:.13em;font-weight:700;color:var(--muted);
}
.dayrule{color:var(--brass)}
.dayrule::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--brassline),transparent)}
.foodgrid{display:grid;gap:26px 20px;grid-template-columns:repeat(auto-fill,minmax(178px,1fr));padding:6px 4px 10px}

.pola{
  position:relative;margin:0;padding:11px 11px 0;border-radius:3px;
  background:linear-gradient(178deg,var(--polaroid),color-mix(in srgb,var(--polaroid) 92%, var(--polaedge)));
  border:1px solid var(--polaedge);
  box-shadow:var(--sh2);
  transform:rotate(var(--rot,0deg));
  transition:transform .35s var(--spring), box-shadow .3s var(--ease), z-index 0s;
  animation:develop .9s var(--ease) backwards;
}
@keyframes develop{
  0%{opacity:0;transform:rotate(var(--rot,0deg)) translateY(16px) scale(.94)}
  100%{opacity:1;transform:rotate(var(--rot,0deg)) translateY(0) scale(1)}
}
.pola:hover{transform:rotate(0deg) translateY(-8px) scale(1.035);box-shadow:var(--sh3);z-index:5}
/* strip of tape */
.pola::before{
  content:"";position:absolute;top:-11px;left:50%;width:62px;height:22px;
  transform:translateX(-50%) rotate(var(--trot,-3deg));
  background:linear-gradient(180deg,var(--tape),color-mix(in srgb,var(--tape) 70%, transparent));
  border-left:1px solid var(--tapeedge);border-right:1px solid var(--tapeedge);
  box-shadow:0 1px 3px rgba(0,0,0,.14);
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 94%,transparent 100%);
          mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 94%,transparent 100%);
}
.pola .ph{position:relative;display:block;width:100%;aspect-ratio:1/1;background:#151515;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(0,0,0,.16), inset 0 2px 9px rgba(0,0,0,.35)}
.pola img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.pola:hover img{transform:scale(1.06)}
.pola .gloss{position:absolute;inset:0;pointer-events:none;background:linear-gradient(122deg,rgba(255,255,255,.20) 0%,transparent 34%,transparent 68%,rgba(255,255,255,.07) 100%)}
.tag{
  position:absolute;top:9px;left:9px;z-index:2;font-size:10px;font-weight:700;text-transform:uppercase;
  letter-spacing:.09em;padding:3px 9px;border-radius:999px;color:#fff;
  background:rgba(12,16,18,.58);backdrop-filter:blur(7px);border:1px solid rgba(255,255,255,.16);
}
.pola .rm{
  position:absolute;top:8px;right:8px;z-index:2;width:27px;height:27px;border-radius:9px;
  background:rgba(12,16,18,.58);backdrop-filter:blur(7px);color:#fff;border:1px solid rgba(255,255,255,.16);
  cursor:pointer;font-size:13px;display:grid;place-items:center;opacity:0;
  transition:opacity .2s var(--ease), background-color .2s var(--ease), transform .2s var(--spring);
}
.pola .rm{opacity:.9}
.pola:hover .rm,.pola:focus-within .rm{opacity:1}
.pola .rm:hover{background:#B33;transform:scale(1.12)}
.pola .ed{
  position:absolute;top:8px;right:41px;z-index:2;width:27px;height:27px;border-radius:9px;
  background:rgba(12,16,18,.58);backdrop-filter:blur(7px);color:#fff;border:1px solid rgba(255,255,255,.16);
  cursor:pointer;font-size:12px;display:grid;place-items:center;opacity:.9;
  transition:opacity .2s var(--ease), background-color .2s var(--ease), transform .2s var(--spring);
}
.pola .ed:hover{background:var(--p1);transform:scale(1.12);opacity:1}
.pola .cap{padding:13px 4px 15px;text-align:center}
.pola .t{
  font-family:"Caveat","Public Sans",cursive;font-size:22px;line-height:1.1;font-weight:600;
  color:#26302E;cursor:text;word-break:break-word;
}
.pola .d{font-size:10.5px;color:#7C857F;margin-top:4px;display:flex;gap:7px;justify-content:center;align-items:center;flex-wrap:wrap;font-weight:500}
.who-dot{width:7px;height:7px;border-radius:99px;display:inline-block;margin-right:5px;box-shadow:0 0 0 1.5px rgba(255,255,255,.5)}
.who-dot.a{background:var(--p1)} .who-dot.b{background:var(--p2)}

/* ---------- GYM: punch card ---------- */
.gymcard{
  position:relative;border-radius:4px;overflow:hidden;
  background:linear-gradient(178deg,var(--card),color-mix(in srgb,var(--card) 93%,var(--sunk)));
  border:1px solid var(--line);box-shadow:var(--sh2), inset 0 1px 0 var(--brassline);
  border-top:2px solid var(--brass);
}
/* perforated edge */
.gymcard::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:22px;z-index:2;pointer-events:none;
  background:
    radial-gradient(circle at 11px 0, transparent 4.5px, var(--wall) 5px) 0 0/22px 22px,
    linear-gradient(90deg, transparent 21px, var(--line) 21px 22px);
  opacity:.85;
}
.gymtable{width:100%;border-collapse:collapse}
.gymtable th,.gymtable td{padding:13px 16px;text-align:left;border-bottom:1px dashed var(--line)}
.gymtable th:first-child,.gymtable td:first-child{padding-left:34px}
.gymtable tbody tr:last-child th,.gymtable tbody tr:last-child td{border-bottom:0}
.gymtable thead th{font-size:10.5px;text-transform:uppercase;letter-spacing:.13em;color:var(--muted);font-weight:700;background:var(--sunk);border-bottom:1px solid var(--line)}
.gymtable td.c{text-align:center;width:106px}
.gymtable tbody tr{transition:background-color .22s var(--ease)}
.gymtable tbody tr:hover{background:color-mix(in srgb,var(--sunk) 55%,transparent)}
.gymtable tr.today{background:color-mix(in srgb,var(--p1) 9%,transparent)}
.gymtable tr.today .dn{color:var(--p1)}
.dn{font-weight:600;font-size:15px}
.dd{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.box{
  position:relative;width:34px;height:34px;border-radius:10px;padding:0;cursor:pointer;
  border:2px dashed var(--line);background:transparent;color:#fff;font-size:16px;line-height:1;
  display:inline-grid;place-items:center;
  transition:transform .18s var(--spring), background-color .25s var(--ease), border-color .25s var(--ease), box-shadow .25s var(--ease);
}
.box:hover{border-color:var(--muted);transform:scale(1.1) rotate(-3deg)}
.box:active{transform:scale(.86)}
.box.on{
  border-style:solid;box-shadow:var(--sh2), inset 0 1px 0 rgba(255,255,255,.3);
  transform:rotate(-8deg);
}
.box.on.a{background:linear-gradient(180deg,color-mix(in srgb,var(--p1) 85%,#fff),var(--p1));border-color:var(--p1)}
.box.on.b{background:linear-gradient(180deg,color-mix(in srgb,var(--p2) 85%,#fff),var(--p2));border-color:var(--p2)}
.box.stamp{animation:stamp .5s var(--spring)}
@keyframes stamp{
  0%{transform:scale(2.5) rotate(-26deg);opacity:.25}
  55%{transform:scale(.9) rotate(-4deg);opacity:1}
  75%{transform:scale(1.08) rotate(-10deg)}
  100%{transform:scale(1) rotate(-8deg)}
}
.stats{display:flex;gap:13px;flex-wrap:wrap;margin-top:16px}
.stat{
  flex:1;min-width:150px;border-radius:14px;padding:15px 17px;position:relative;overflow:hidden;
  background:linear-gradient(178deg,var(--card),color-mix(in srgb,var(--card) 92%,var(--sunk)));
  border:1px solid var(--line);box-shadow:var(--sh1), inset 0 1px 0 var(--brassline);
  transition:transform .28s var(--spring), box-shadow .28s var(--ease);
}
.stat:hover{transform:translateY(-3px);box-shadow:var(--sh2)}
.stat .n{font-family:"Bricolage Grotesque",sans-serif;font-size:31px;line-height:1.02;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.03em}
.stat.a .n{color:var(--p1)} .stat.b .n{color:var(--p2)}
.stat .l{font-size:12px;color:var(--muted);margin-top:3px}
.bar{height:6px;border-radius:99px;background:var(--sunk);margin-top:11px;overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.12)}
.bar i{display:block;height:100%;border-radius:99px;width:0;transition:width .9s var(--spring);box-shadow:inset 0 1px 0 rgba(255,255,255,.3)}
.stat.a .bar i{background:linear-gradient(90deg,color-mix(in srgb,var(--p1) 70%,#fff),var(--p1))}
.stat.b .bar i{background:linear-gradient(90deg,color-mix(in srgb,var(--p2) 70%,#fff),var(--p2))}

/* ---------- BOARD: cork ---------- */
.boardbar{
  display:flex;flex-wrap:wrap;gap:9px;align-items:center;margin-bottom:15px;padding:10px 13px;
  background:linear-gradient(180deg,var(--card),color-mix(in srgb,var(--card) 92%,var(--sunk)));
  border:1px solid var(--line);border-radius:13px;box-shadow:var(--sh1);
}
.hint{font-size:11px;text-transform:uppercase;letter-spacing:.12em;font-weight:700;color:var(--muted)}
.swatch{
  width:30px;height:30px;border-radius:8px;cursor:pointer;padding:0;
  border:1px solid rgba(0,0,0,.14);box-shadow:var(--sh1), inset 0 1px 0 rgba(255,255,255,.5);
  transition:transform .2s var(--spring), box-shadow .25s var(--ease);
}
.swatch:hover{transform:translateY(-3px) rotate(-5deg) scale(1.08);box-shadow:var(--sh2)}
.swatch[aria-pressed="true"]{box-shadow:0 0 0 2.5px var(--ink), var(--sh2);transform:scale(1.08)}
.sel{
  background:var(--card);border:1px solid var(--line);border-radius:11px;padding:9px 11px;
  font-size:14px;font-weight:500;cursor:pointer;box-shadow:var(--sh1);
  transition:border-color .2s var(--ease)
}
.sel:hover{border-color:var(--muted)}
.board{
  position:relative;height:600px;border-radius:14px;overflow:hidden;touch-action:none;
  background-color:var(--cork);
  background-image:
    radial-gradient(circle at 18% 24%, rgba(255,255,255,.08) 0 2px, transparent 3px),
    radial-gradient(circle at 62% 71%, var(--corkdot) 0 2.5px, transparent 3px),
    radial-gradient(circle at 88% 33%, var(--corkdot) 0 1.8px, transparent 3px),
    radial-gradient(circle at 33% 82%, rgba(255,255,255,.07) 0 2.2px, transparent 3px),
    radial-gradient(circle at 8% 62%, var(--corkdot) 0 2px, transparent 3px),
    radial-gradient(circle at 74% 12%, rgba(255,255,255,.06) 0 1.6px, transparent 3px),
    linear-gradient(148deg, color-mix(in srgb,var(--cork) 88%, #fff 12%), var(--cork2));
  background-size:37px 37px, 53px 53px, 29px 29px, 61px 61px, 43px 43px, 47px 47px, 100% 100%;
  border:10px solid transparent;
  border-image:linear-gradient(150deg,#8C6634,#3E2611 42%,#A98A4E 78%,#4A2E14) 1;
  box-shadow:var(--sh3), inset 0 0 60px rgba(50,28,6,.42), inset 0 2px 0 rgba(255,255,255,.1);
}
.note{
  position:absolute;width:182px;min-height:122px;padding:22px 14px 32px;border-radius:2px;
  color:var(--noteink);cursor:grab;touch-action:none;
  box-shadow:2px 5px 12px rgba(30,16,2,.42), inset 0 -14px 22px -14px rgba(0,0,0,.14);
  display:flex;flex-direction:column;transform:rotate(var(--rot,0deg));
  transition:box-shadow .25s var(--ease), transform .32s var(--spring), opacity .4s var(--ease);
  animation:drop .5s var(--spring) backwards;
}
@keyframes drop{0%{opacity:0;transform:rotate(var(--rot,0deg)) translateY(-22px) scale(1.08)}100%{opacity:1;transform:rotate(var(--rot,0deg))}}
/* curled bottom corner */
.note::after{
  content:"";position:absolute;right:0;bottom:0;width:22px;height:22px;
  background:linear-gradient(135deg,transparent 50%,rgba(0,0,0,.13) 50%);
}
/* pushpin */
.pin{
  position:absolute;top:-9px;left:50%;transform:translateX(-50%);width:17px;height:17px;border-radius:50%;
  background:radial-gradient(circle at 33% 30%, rgba(255,255,255,.85), transparent 45%), var(--pinc,#C6384F);
  box-shadow:0 3px 5px rgba(30,16,2,.55), inset 0 -2px 4px rgba(0,0,0,.35);
  z-index:3;pointer-events:none;
}
.note:hover{transform:rotate(0deg) translateY(-3px) scale(1.03);box-shadow:5px 12px 24px rgba(30,16,2,.5);z-index:20}
.note.drag{cursor:grabbing;transform:rotate(2.5deg) scale(1.07);box-shadow:14px 26px 42px rgba(20,10,0,.55);z-index:60;transition:none}
.note.swing{animation:swing .85s var(--ease)}
@keyframes swing{
  0%{transform:rotate(7deg)}25%{transform:rotate(-5deg)}50%{transform:rotate(3.4deg)}
  75%{transform:rotate(-2deg)}100%{transform:rotate(var(--rot,0deg))}
}
.note.expired{opacity:.4;filter:grayscale(.75)}
.note textarea{
  border:0;background:transparent;resize:none;width:100%;flex:1;padding:0;overflow:hidden;
  font-family:"Caveat","Public Sans",cursive;font-size:20px;line-height:1.24;font-weight:600;
  color:var(--noteink);touch-action:auto;
}
.note textarea::placeholder{color:rgba(0,0,0,.34)}
.note .foot{position:absolute;left:12px;right:10px;bottom:8px;display:flex;align-items:center;gap:5px}
.lifebtn{
  background:rgba(0,0,0,.14);border:0;border-radius:6px;padding:3px 7px;cursor:pointer;
  font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:inherit;
  white-space:nowrap;transition:background-color .2s var(--ease), transform .18s var(--spring);
}
.lifebtn:hover{background:rgba(0,0,0,.25);transform:scale(1.05)}
.nb{
  margin-left:auto;background:transparent;border:0;cursor:pointer;color:inherit;opacity:.42;
  font-size:13px;padding:3px 5px;line-height:1;border-radius:5px;
  transition:opacity .2s var(--ease), background-color .2s var(--ease);
}
.nb:hover{opacity:1;background:rgba(0,0,0,.14)}

/* ---------- SLEEP ---------- */
.sleeprow{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:18px}
.nowcard{
  flex:1;min-width:230px;position:relative;overflow:hidden;border-radius:15px;padding:16px 18px;
  background:linear-gradient(168deg,var(--card),color-mix(in srgb,var(--card) 90%,var(--sunk)));
  border:1px solid var(--line);box-shadow:var(--sh2), inset 0 1px 0 var(--brassline);
  border-top:2px solid var(--brass);
}
.nowcard .nm{display:flex;align-items:center;gap:8px;font-weight:700;font-size:14px;letter-spacing:.01em}
.nowcard .big{
  font-family:"Bricolage Grotesque",sans-serif;font-weight:800;font-size:38px;line-height:1;
  letter-spacing:-.035em;margin:9px 0 2px;font-variant-numeric:tabular-nums;
}
.nowcard.a .big{color:var(--p1)} .nowcard.b .big{color:var(--p2)}
.nowcard .cap{font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.11em;font-weight:700}
.nowcard .wk{margin-top:12px;padding-top:11px;border-top:1px dashed var(--line);font-size:12.5px;color:var(--ink2);display:flex;justify-content:space-between;gap:10px}
.nowcard .wk b{font-variant-numeric:tabular-nums;color:var(--ink)}
.asleep{position:absolute;top:14px;right:14px;font-size:10px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;
  padding:4px 9px;border-radius:999px;color:#F3EEDF;background:linear-gradient(180deg,#25415C,#16293C);
  border:1px solid rgba(212,175,106,.35);box-shadow:var(--sh1)}
.asleep i{display:inline-block;width:6px;height:6px;border-radius:99px;background:var(--brass2);margin-right:6px;animation:breathe 2.6s ease-in-out infinite}
@keyframes breathe{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}
.sact{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.sact .btn{flex:1;min-width:120px}
.btn.night{background:linear-gradient(180deg,#2A4A69,#182F45);border-color:transparent;color:#F1ECDD;
  box-shadow:var(--sh2), inset 0 1px 0 rgba(212,175,106,.25)}
.btn.night:hover{filter:brightness(1.12)}
.btn.wake{background:linear-gradient(180deg,var(--brass2),var(--brass));border-color:transparent;color:#241B08;
  box-shadow:var(--sh2), inset 0 1px 0 rgba(255,255,255,.4)}
.btn.wake:hover{filter:brightness(1.07)}

.chartcard{
  border-radius:15px;padding:18px 18px 14px;margin-bottom:18px;
  background:linear-gradient(168deg,var(--card),color-mix(in srgb,var(--card) 92%,var(--sunk)));
  border:1px solid var(--line);border-top:2px solid var(--brass);box-shadow:var(--sh2);
}
.charthead{display:flex;align-items:baseline;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.charthead h3{font-family:"Bricolage Grotesque",sans-serif;font-size:15px;margin:0;font-weight:700;letter-spacing:-.01em}
.legend{display:flex;gap:13px;margin-left:auto;font-size:11.5px;color:var(--muted);font-weight:600}
.legend span{display:flex;align-items:center;gap:6px}
.legend i{width:10px;height:10px;border-radius:3px}
.legend i.a{background:var(--p1)} .legend i.b{background:var(--p2)}
.chart{display:flex;gap:6px;align-items:flex-end;height:158px;position:relative;padding-bottom:26px}
.chart .goal{position:absolute;left:0;right:0;border-top:1px dashed var(--brassline);pointer-events:none}
.chart .goal em{position:absolute;right:0;top:-16px;font-size:9.5px;font-style:normal;color:var(--brass);font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.col{flex:1;display:flex;flex-direction:column;justify-content:flex-end;height:100%;position:relative;min-width:0}
.col .pair{display:flex;gap:3px;align-items:flex-end;height:100%}
.col .bw{flex:1;display:flex;flex-direction:column;justify-content:flex-end;height:100%}
.col .bar2{
  width:100%;border-radius:4px 4px 2px 2px;height:0;position:relative;
  transition:height .8s var(--spring);box-shadow:inset 0 1px 0 rgba(255,255,255,.28);
}
.col .bar2.a{background:linear-gradient(180deg,color-mix(in srgb,var(--p1) 62%,#fff),var(--p1))}
.col .bar2.b{background:linear-gradient(180deg,color-mix(in srgb,var(--p2) 62%,#fff),var(--p2))}
.col .bar2.zero{background:var(--sunk);height:3px!important;box-shadow:none}
.col .lab{position:absolute;bottom:-24px;left:0;right:0;text-align:center;font-size:10.5px;color:var(--muted);font-weight:700;letter-spacing:.04em}
.col.today .lab{color:var(--brass)}
.col .val{position:absolute;top:-17px;left:0;right:0;text-align:center;font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums;opacity:0;transition:opacity .2s var(--ease)}
.col:hover .val{opacity:1}

.slog{display:flex;flex-direction:column;gap:8px}
.sentry{
  display:flex;align-items:center;gap:11px;padding:11px 14px;border-radius:12px;
  background:linear-gradient(168deg,var(--card),color-mix(in srgb,var(--card) 94%,var(--sunk)));
  border:1px solid var(--line);box-shadow:var(--sh1);
  transition:transform .2s var(--ease), box-shadow .2s var(--ease);
}
.sentry:hover{transform:translateX(3px);box-shadow:var(--sh2)}
.sentry .ico{font-size:19px;flex:none;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--sunk);box-shadow:inset 0 1px 3px rgba(0,0,0,.14)}
.sentry .txt{flex:1;min-width:0}
.sentry .r1{font-size:14.5px;font-weight:600;font-variant-numeric:tabular-nums}
.sentry .r2{font-size:11.5px;color:var(--muted);margin-top:1px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.sentry .dur{font-family:"Bricolage Grotesque",sans-serif;font-weight:800;font-size:17px;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.sentry.a .dur{color:var(--p1)} .sentry.b .dur{color:var(--p2)}
.sentry .x{background:transparent;border:0;color:var(--muted);cursor:pointer;font-size:14px;padding:4px 6px;border-radius:7px;opacity:.55;transition:opacity .2s,background-color .2s}
.sentry .x:hover{opacity:1;background:var(--sunk)}
.sentry .e{background:transparent;border:0;color:var(--muted);cursor:pointer;font-size:13px;padding:4px 6px;border-radius:7px;opacity:.55;transition:opacity .2s,background-color .2s}
.sentry .e:hover{opacity:1;background:var(--sunk)}
.manual{
  display:flex;flex-wrap:wrap;gap:9px;align-items:flex-end;padding:14px;border-radius:13px;margin-bottom:18px;
  background:color-mix(in srgb,var(--card) 70%,transparent);border:1px dashed var(--line);
}
.manual .f{display:flex;flex-direction:column;gap:5px;flex:1;min-width:158px}
.manual label{font-size:10px;text-transform:uppercase;letter-spacing:.12em;font-weight:700;color:var(--muted)}
.manual input[type=datetime-local]{
  padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:var(--wall);
  font-size:13.5px;font-variant-numeric:tabular-nums;
}
.manual input:focus{border-color:var(--p1);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--p1) 16%,transparent)}
.kinds.sm .kind{padding:7px 12px;font-size:12.5px}


/* ---------- FOOD: split by person ---------- */
.whofilter{display:flex;align-items:center;gap:3px;padding:4px;border-radius:999px;
  background:var(--sunk);border:1px solid var(--line);box-shadow:inset 0 2px 5px rgba(0,0,0,.09)}
.whofilter button{
  cursor:pointer;border:0;background:transparent;color:var(--muted);
  font-size:13px;font-weight:700;padding:6px 14px;border-radius:999px;
  transition:background-color .25s var(--ease),color .25s var(--ease),transform .16s var(--spring);
}
.whofilter button:active{transform:scale(.95)}
.whofilter button[aria-pressed="true"]{color:#fff;box-shadow:var(--sh1)}
.whofilter button.all[aria-pressed="true"]{background:var(--ink);color:var(--wall)}
.whofilter button.a[aria-pressed="true"]{background:linear-gradient(180deg,color-mix(in srgb,var(--p1) 86%,#fff),var(--p1))}
.whofilter button.b[aria-pressed="true"]{background:linear-gradient(180deg,color-mix(in srgb,var(--p2) 86%,#fff),var(--p2))}

.lane{margin-bottom:20px}
.lanehead{
  display:flex;align-items:center;gap:9px;margin:0 2px 11px;
  font-size:12.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
}
.lanehead .cnt{font-size:11px;font-weight:700;padding:1px 8px;border-radius:999px;
  background:var(--sunk);color:var(--muted);font-variant-numeric:tabular-nums}
.lanehead::after{content:"";flex:1;height:1px;background:var(--line)}
.lane.a .lanehead{color:var(--p1)}
.lane.b .lanehead{color:var(--p2)}
.lane .none{font-size:13px;color:var(--muted);font-style:italic;padding:4px 2px 8px}
.daysplit{display:grid;gap:18px;grid-template-columns:1fr}
@media (min-width:860px){ .daysplit{grid-template-columns:1fr 1fr;gap:26px} }

/* ---------- CALENDAR ---------- */
.calbar{display:flex;flex-wrap:wrap;gap:9px;align-items:center;margin-bottom:16px}
.caldays{display:flex;flex-direction:column;gap:11px}
.day{
  position:relative;border-radius:14px;overflow:hidden;display:flex;
  background:linear-gradient(178deg,var(--card),color-mix(in srgb,var(--card) 93%,var(--sunk)));
  border:1px solid var(--line);box-shadow:var(--sh1);
  transition:box-shadow .25s var(--ease),transform .25s var(--ease);
}
.day:hover{box-shadow:var(--sh2)}
.day.today{border-color:var(--brass);box-shadow:var(--sh2), inset 0 0 0 1px var(--brassline)}
.day.past{opacity:.62}
.daycol{
  flex:none;width:78px;padding:14px 10px;text-align:center;
  background:var(--sunk);border-right:1px solid var(--line);
  display:flex;flex-direction:column;justify-content:flex-start;gap:2px;
}
.daycol .dw{font-size:10.5px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:var(--muted)}
.daycol .dnum{
  font-family:"Bricolage Grotesque",sans-serif;font-size:27px;font-weight:800;line-height:1;
  letter-spacing:-.035em;font-variant-numeric:tabular-nums;
}
.day.today .daycol{background:linear-gradient(180deg,color-mix(in srgb,var(--brass) 26%,var(--sunk)),var(--sunk))}
.day.today .daycol .dnum,.day.today .daycol .dw{color:var(--brass)}
.daybody{flex:1;min-width:0;padding:11px 12px;display:flex;flex-direction:column;gap:7px}
.day .quiet{font-size:13px;color:var(--muted);font-style:italic;padding:3px 2px}

.ev{
  position:relative;display:flex;align-items:flex-start;gap:10px;padding:9px 11px 9px 14px;
  border-radius:10px;background:var(--wall);border:1px solid var(--line);
  cursor:pointer;overflow:hidden;
  transition:transform .18s var(--ease),box-shadow .2s var(--ease),border-color .2s var(--ease);
}
.ev::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--evc,var(--muted))}
.ev:hover{transform:translateX(3px);box-shadow:var(--sh1);border-color:var(--muted)}
.ev .when{
  flex:none;width:60px;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;
  color:var(--ink2);line-height:1.3;
}
.ev .when small{display:block;font-size:10.5px;font-weight:600;color:var(--muted)}
.ev .what{flex:1;min-width:0}
.ev .ttl{font-size:14.5px;font-weight:600;line-height:1.25;word-break:break-word}
.ev .sub{font-size:11.5px;color:var(--muted);margin-top:2px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.ev .rep{font-size:9.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;
  padding:1px 6px;border-radius:5px;background:var(--sunk);color:var(--muted)}
.ev .kindchip{font-size:9.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;
  padding:1px 6px;border-radius:5px;color:#fff;background:var(--evc,var(--muted))}
.ev.allday .when{color:var(--muted);font-size:10.5px;letter-spacing:.07em;text-transform:uppercase}

.wkdays{display:flex;gap:5px;flex-wrap:wrap}
.wkday{
  width:38px;height:38px;border-radius:11px;cursor:pointer;border:1px solid var(--line);
  background:var(--wall);color:var(--muted);font-size:12px;font-weight:800;
  transition:all .2s var(--ease);
}
.wkday:hover{border-color:var(--muted);color:var(--ink)}
.wkday[aria-pressed="true"]{background:var(--p1);border-color:transparent;color:#fff;transform:scale(1.06)}
.timerow{display:flex;gap:9px;flex-wrap:wrap}
.timerow .f{flex:1;min-width:120px;display:flex;flex-direction:column;gap:5px}
.timerow input[type=time],.field input[type=date]{
  padding:11px 12px;border:1px solid var(--line);border-radius:11px;background:var(--wall);
  font-size:15px;font-variant-numeric:tabular-nums;width:100%;
}
.timerow input:focus,.field input[type=date]:focus{border-color:var(--p1);outline:none;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--p1) 16%,transparent)}
.switch{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600;cursor:pointer;
  padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:var(--wall)}
.switch input{width:19px;height:19px;accent-color:var(--p1)}

@media (max-width:640px){
  .daycol{width:62px;padding:12px 6px}
  .daycol .dnum{font-size:23px}
  .daybody{padding:10px}
  .ev{padding:9px 10px 9px 13px;gap:8px}
  .ev .when{width:52px;font-size:11.5px}
  .ev .ttl{font-size:14px}
  .whofilter{width:100%;justify-content:space-between}
  .whofilter button{flex:1;padding:9px 8px;font-size:12.5px}
  #addev{width:100%;margin-left:0!important;padding:13px}
  .calbar{gap:10px}
  .wkday{width:36px;height:36px}
}


/* ---------- PRAYER ---------- */
.nextcard{
  position:relative;overflow:hidden;border-radius:17px;padding:22px 22px 20px;margin-bottom:16px;
  background:
    radial-gradient(120% 130% at 12% -20%, color-mix(in srgb,var(--p1) 34%, transparent), transparent 62%),
    linear-gradient(168deg,var(--card),color-mix(in srgb,var(--card) 88%,var(--sunk)));
  border:1px solid var(--line);border-top:2px solid var(--brass);box-shadow:var(--sh2);
}
/* a faint arch, drawn in brass */
.nextcard::after{
  content:"";position:absolute;right:-42px;top:-30px;width:210px;height:210px;pointer-events:none;
  border:1.5px solid var(--brassline);border-radius:50% 50% 4px 4px;opacity:.32;
}
.nextcard .lbl{font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--brass)}
.nextcard .nm{
  font-family:"Bricolage Grotesque",sans-serif;font-weight:800;font-size:38px;line-height:1.02;
  letter-spacing:-.035em;margin:6px 0 2px;
}
.nextcard .at{font-size:16px;font-weight:600;color:var(--ink2);font-variant-numeric:tabular-nums}
.nextcard .cd{
  margin-top:14px;font-family:"Bricolage Grotesque",sans-serif;font-weight:800;
  font-size:31px;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--p1);line-height:1;
}
.nextcard .cdl{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:5px}
.nextcard .where{
  margin-top:15px;padding-top:13px;border-top:1px dashed var(--line);
  display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:12.5px;color:var(--muted);
}
.nextcard .where b{color:var(--ink2);font-weight:600}

.ptimes{
  border-radius:15px;overflow:hidden;border:1px solid var(--line);box-shadow:var(--sh1);
  background:linear-gradient(178deg,var(--card),color-mix(in srgb,var(--card) 93%,var(--sunk)));
}
.prow{
  display:flex;align-items:center;gap:13px;padding:14px 17px;border-bottom:1px solid var(--line);
  transition:background-color .25s var(--ease);
}
.prow:last-child{border-bottom:0}
.prow .pi{font-size:17px;width:24px;text-align:center;flex:none;opacity:.85}
.prow .pn{flex:1;font-size:15.5px;font-weight:600}
.prow .pt{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.01em}
.prow.done{opacity:.44}
.prow.now{
  background:color-mix(in srgb,var(--p1) 11%,transparent);
  box-shadow:inset 3px 0 0 var(--p1);
}
.prow.now .pn,.prow.now .pt{color:var(--p1)}
.prow.sun{background:color-mix(in srgb,var(--brass) 7%,transparent)}
.prow.sun .pn,.prow.sun .pt{color:var(--muted);font-weight:600;font-size:14.5px}
.prow .tag2{
  font-size:9.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;
  padding:2px 7px;border-radius:5px;background:var(--p1);color:#fff;
}

.pcity{
  display:flex;flex-wrap:wrap;gap:9px;align-items:flex-end;padding:14px;border-radius:13px;margin-top:16px;
  background:color-mix(in srgb,var(--card) 70%,transparent);border:1px dashed var(--line);
}
.pcity .f{display:flex;flex-direction:column;gap:5px;flex:1;min-width:150px}
.pcity label{font-size:10px;text-transform:uppercase;letter-spacing:.12em;font-weight:700;color:var(--muted)}
.pcity input,.pcity select{
  padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--wall);font-size:14.5px;
}
.pcity input:focus,.pcity select:focus{border-color:var(--p1);outline:none;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--p1) 16%,transparent)}
.quickcities{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:13px}

@media (max-width:640px){
  .nextcard{padding:18px 17px 17px}
  .nextcard .nm{font-size:32px}
  .nextcard .cd{font-size:27px}
  .nextcard::after{width:160px;right:-46px}
  .prow{padding:13px 14px;gap:11px}
  .pcity .f{min-width:calc(50% - 5px)}
}

/* ---------- modal ---------- */
.scrim{
  position:fixed;inset:0;background:rgba(10,14,13,.6);backdrop-filter:blur(6px);
  display:grid;place-items:center;padding:18px;z-index:200;animation:fadein .25s var(--ease);
}
@keyframes fadein{from{opacity:0}to{opacity:1}}
.scrim[hidden]{display:none}
.modal{
  width:min(430px,100%);max-height:92vh;overflow:auto;padding:21px;border-radius:18px;
  background:linear-gradient(178deg,var(--card),color-mix(in srgb,var(--card) 93%,var(--sunk)));
  border:1px solid var(--line);border-top:2px solid var(--brass);
  box-shadow:var(--sh3);animation:pop .42s var(--spring);
}
@keyframes pop{from{opacity:0;transform:translateY(20px) scale(.94)}to{opacity:1;transform:none}}
.modal h3{font-family:"Bricolage Grotesque",sans-serif;font-size:20px;margin:0 0 3px;font-weight:800;letter-spacing:-.025em}
.modal .mh{font-size:13px;color:var(--muted);margin-bottom:15px}
.preview{
  width:100%;aspect-ratio:1/1;border-radius:4px;overflow:hidden;margin-bottom:15px;
  background:#151515;display:grid;place-items:center;position:relative;
  box-shadow:inset 0 0 0 11px var(--polaroid), inset 0 0 0 12px var(--polaedge), var(--sh1);
}
.preview img{width:100%;height:100%;object-fit:cover;display:block;animation:developIn 1.1s var(--ease)}
@keyframes developIn{0%{filter:brightness(2.4) contrast(.25) saturate(.2);opacity:.35}100%{filter:none;opacity:1}}
.preview .ps{color:#9AA29C;font-size:14px;text-align:center;padding:24px}
.field{margin-bottom:14px}
.field label{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;font-weight:700;color:var(--muted);margin-bottom:6px}
.field input[type=text]{
  width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:11px;
  background:var(--wall);font-family:"Caveat","Public Sans",cursive;font-size:21px;font-weight:600;
  transition:border-color .2s var(--ease), background-color .2s var(--ease), box-shadow .2s var(--ease);
}
.field input[type=text]:focus{border-color:var(--p1);background:var(--card);box-shadow:0 0 0 3px color-mix(in srgb,var(--p1) 18%,transparent)}
.kinds{display:flex;gap:7px;flex-wrap:wrap}
.kind{
  cursor:pointer;border:1px solid var(--line);background:var(--wall);border-radius:999px;
  padding:8px 14px;font-size:13px;font-weight:600;color:var(--muted);
  transition:all .22s var(--ease);
}
.kind:hover{border-color:var(--muted);color:var(--ink);transform:translateY(-1px)}
.kind[aria-pressed="true"]{background:var(--ink);color:var(--wall);border-color:transparent;transform:scale(1.04)}
.mact{display:flex;gap:8px;margin-top:19px}
.mact .btn{flex:1}
.warn{
  font-size:12.5px;color:var(--ink2);background:color-mix(in srgb,var(--amb3) 16%, var(--wall));
  border:1px solid var(--line);border-radius:11px;padding:10px 12px;margin-bottom:14px;line-height:1.4;
}

.empty{
  padding:48px 22px;color:var(--muted);font-size:14.5px;text-align:center;
  border:1.5px dashed var(--line);border-radius:16px;background:color-mix(in srgb,var(--card) 55%,transparent);
}
.empty b{display:block;color:var(--ink2);font-size:17px;margin-bottom:5px;font-weight:700;font-family:"Bricolage Grotesque",sans-serif}
.toast{
  position:fixed;left:50%;bottom:24px;transform:translate(-50%,16px);
  background:var(--ink);color:var(--wall);font-size:13px;font-weight:600;
  padding:10px 20px;border-radius:999px;opacity:0;pointer-events:none;box-shadow:var(--sh3);z-index:300;
  transition:opacity .3s var(--ease), transform .35s var(--spring);
}
.toast.on{opacity:.97;transform:translate(-50%,0)}
.toast{display:flex;align-items:center;gap:12px}
.toast button{
  background:var(--brass2);color:#241B08;border:0;border-radius:999px;padding:4px 12px;
  font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;
  pointer-events:auto;transition:filter .2s var(--ease)
}
.toast button:hover{filter:brightness(1.1)}
.toast.on{pointer-events:auto}
.banner{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 15px;font-size:14px;color:var(--muted);margin-bottom:16px;box-shadow:var(--sh1)}

/* ---------- touch ---------- */
@media (hover:none){
  .btn:hover,.stat:hover,.swatch:hover,.box:hover,.kind:hover{transform:none;box-shadow:var(--sh1)}
  .btn.primary:hover{filter:none;box-shadow:var(--sh2), inset 0 1px 0 rgba(255,255,255,.28)}
  .pola:hover{transform:rotate(var(--rot,0deg));box-shadow:var(--sh2)}
  .pola:hover img{transform:none}
  .note:hover{transform:rotate(var(--rot,0deg));box-shadow:2px 5px 12px rgba(30,16,2,.42)}
  .gymtable tbody tr:hover{background:transparent}
  .gymtable tr.today:hover{background:color-mix(in srgb,var(--p1) 9%,transparent)}
  .pola .rm{opacity:1}
  .tab:hover{color:var(--muted)}
  .tab[aria-selected="true"]:hover{color:var(--ink)}
  .swatch[aria-pressed="true"]{transform:scale(1.08)}
}

/* ---------- phones ---------- */
@media (max-width:640px){
  .wrap{padding:16px 12px 34px}
  .top{gap:12px;padding-bottom:12px}
  .brand{width:100%}
  .brand h1{font-size:23px}
  .brand .sub{font-size:12px}
  .mark{width:38px;height:38px;border-radius:12px;font-size:15px}
  .seg{width:100%;justify-content:space-between}
  .chip{flex:1;padding:10px 8px}
  .tabs{position:sticky;top:6px;z-index:100;margin:6px 0 20px;box-shadow:var(--sh2), inset 0 2px 6px rgba(0,0,0,.10)}
  .tab{padding:13px 4px;font-size:13.5px;gap:5px}
  .tab .tc{font-size:10px;padding:1px 5px}
  .phead{gap:8px;margin-bottom:15px}
  .phead h2{font-size:20px;width:100%}
  .phead .lede{display:none}
  #snap{width:100%;padding:14px;font-size:15px}
  .weeklabel{flex:1;min-width:0}
  .foodgrid{grid-template-columns:1fr 1fr;gap:22px 14px}
  .pola{padding:8px 8px 0}
  .pola .t{font-size:19px}
  .pola .cap{padding:10px 2px 12px}
  .pola::before{width:50px;height:18px;top:-9px}
  .gymtable th,.gymtable td{padding:13px 8px}
  .gymtable th:first-child,.gymtable td:first-child{padding-left:30px}
  .gymtable td.c{width:62px}
  .box{width:34px;height:34px}
  .stat{min-width:0;padding:13px}
  .stat .n{font-size:26px}
  .boardbar .hint{width:100%}
  .swatch{width:34px;height:34px}
  .sel{flex:1;min-width:132px;padding:11px}
  #addnote{width:100%;padding:13px}
  .board{height:min(72vh,560px);min-height:430px;border-width:8px}
  .note{width:158px;min-height:112px;padding:20px 12px 30px}
  .note textarea{font-size:18px}
  .nowcard{min-width:0;padding:14px 15px}
  .nowcard .big{font-size:32px}
  .sleeprow{gap:9px}
  .sact .btn{min-width:0;padding:12px 8px;font-size:13px}
  .chartcard{padding:15px 13px 12px}
  .chart{height:138px;gap:4px}
  .col .lab{font-size:9.5px}
  .manual .f{min-width:calc(50% - 5px)}
  .sentry{padding:10px 11px;gap:9px}
  .sentry .r1{font-size:13.5px}
  .modal{padding:18px}
  .mact{flex-wrap:wrap}
  .mact .btn{padding:13px;min-height:47px}
  .mact #msave{flex:1 0 100%;order:-1}
}
/* four tabs will not fit with words on a narrow phone — icons carry it */
@media (max-width:560px){
  .tab .tl{display:none}
  .tab .ti{font-size:20px}
  .tab{padding:14px 4px;gap:7px}
  .tab .tc{font-size:10.5px}
}

@media (prefers-reduced-motion:reduce){
  *{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
  #amb{display:none}
}

/* ---------- standalone app additions ---------- */
:root{ --safe-t:env(safe-area-inset-top,0px); --safe-b:env(safe-area-inset-bottom,0px); }
body{padding-top:var(--safe-t);padding-bottom:var(--safe-b)}

/* login gate */
.gate{position:fixed;inset:0;z-index:400;display:grid;place-items:center;padding:22px;
  background:var(--wall);
  background-image:radial-gradient(120% 90% at 50% -10%, rgba(255,255,255,.16), transparent 60%),
                   linear-gradient(180deg, var(--wall) 0%, var(--wall2) 100%);}
.gate[hidden]{display:none}
.gatecard{width:min(390px,100%);padding:26px;border-radius:20px;text-align:center;
  background:linear-gradient(178deg,var(--card),color-mix(in srgb,var(--card) 92%,var(--sunk)));
  border:1px solid var(--line);border-top:2px solid var(--brass);box-shadow:var(--sh3)}
.gatecard .mark{margin:0 auto 16px;width:62px;height:62px;border-radius:19px;font-size:0}
.gatecard .mark img{width:100%;height:100%;display:block;border-radius:19px}
.gatecard h1{font-family:"Bricolage Grotesque",sans-serif;font-size:27px;margin:0 0 4px;font-weight:800;letter-spacing:-.03em}
.gatecard p{font-size:13.5px;color:var(--muted);margin:0 0 20px}
.gatecard .field{text-align:left}
.gatecard input{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:11px;
  background:var(--wall);font-size:16px;font-family:inherit;font-weight:500}
.gatecard input:focus{border-color:var(--p1);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--p1) 18%,transparent)}
.gatecard .btn{width:100%;padding:13px;font-size:15px;margin-top:6px}
.gateerr{font-size:13px;color:#B5453F;margin-top:12px;min-height:18px;font-weight:600}
.signout{font-size:12px;color:var(--muted);background:none;border:0;cursor:pointer;text-decoration:underline;padding:4px}

/* connection pill */
.conn{position:fixed;right:12px;bottom:calc(14px + var(--safe-b));z-index:150;display:flex;align-items:center;gap:7px;
  padding:6px 12px;border-radius:999px;font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  background:var(--card);border:1px solid var(--line);box-shadow:var(--sh2);color:var(--muted);
  opacity:0;transform:translateY(8px);transition:opacity .3s var(--ease),transform .3s var(--ease);pointer-events:none}
.conn.show{opacity:1;transform:none}
.conn i{width:7px;height:7px;border-radius:99px;background:var(--muted)}
.conn.live i{background:#3E9B6B;box-shadow:0 0 0 3px rgba(62,155,107,.22)}
.conn.off i{background:#B5453F;box-shadow:0 0 0 3px rgba(181,69,63,.22)}
.conn.sync i{background:var(--brass);animation:breathe 1.2s ease-in-out infinite}

.booting{position:fixed;inset:0;z-index:390;display:grid;place-items:center;background:var(--wall);color:var(--muted);font-size:14px}
.booting[hidden]{display:none}
