/* ============================================================
   The Lake Weekend — v3 "The Lodge" design system
   Token layer -> themes -> base -> components -> sections -> print
   ============================================================ */

/* ---------- tokens: Northwoods Lake (default) ---------- */
:root{
  --bg:#f1e7cf; --surface:#fdf8ec; --surface-2:#fbf5e6;
  --ink:#33291d; --ink-soft:#6f6049;
  --line:#d9caa3; --line-soft:#e7dcbf;
  --brand:#2f5d50; --brand-dark:#234a40;
  --brand2:#2f6f8f; --brand2-dark:#1f4d63;
  --accent:#d99a3a; --accent-ink:#6e4d12; --accent-soft:#f6ecd6;
  --danger:#b5482e; --danger-soft:#f0d9d2;
  --ok-soft:#e7efe6;
  --sign-bg:linear-gradient(180deg,#5c4631,#43301f);
  --sign-border:#2f2114; --sign-ink:#f4e7c9; --sign-sub:#d8c39a; --sign-pin:#cbb588;
  --nav-bg:#43301f; --nav-border:#2f2114; --nav-ink:#d8c39a; --nav-active-bg:var(--accent); --nav-active-ink:#3a2a13;
  --bg-art:radial-gradient(circle at 12% -10%, rgba(47,93,80,.10), transparent 40%),
           radial-gradient(circle at 92% 0%, rgba(47,111,143,.10), transparent 42%);
  --font-display:Georgia,"Iowan Old Style","Times New Roman",serif;
  --r-s:10px; --r-m:14px; --r-l:18px;
  --shadow:0 2px 0 rgba(74,55,39,.06), 0 8px 22px rgba(74,55,39,.10);
  --focus:0 0 0 3px rgba(47,111,143,.45);
  --fs-xs:13px; --fs-s:14px; --fs-m:15.5px; --fs-l:17px; --fs-xl:20px; --fs-hero:30px;
}

/* ---------- theme: Classic Cabin (the dark one) ---------- */
:root[data-theme="cabin"]{
  --bg:#2b2118; --surface:#3a2c1f; --surface-2:#443628;
  --ink:#f0e4cc; --ink-soft:#c2ae8d;
  --line:#5a4630; --line-soft:#4c3b28;
  --brand:#8fb8a6; --brand-dark:#b8d6c8;
  --brand2:#8db8d1; --brand2-dark:#b3d3e6;
  --accent:#e0a33e; --accent-ink:#f6dfae; --accent-soft:#54401f;
  --danger:#e08b74; --danger-soft:#5a3226;
  --ok-soft:#3c4a3c;
  --sign-bg:linear-gradient(180deg,#241a10,#170f08);
  --sign-border:#0e0904; --sign-ink:#f4e7c9; --sign-sub:#c9b085; --sign-pin:#a88f66;
  --nav-bg:#1d150c; --nav-border:#0e0904; --nav-ink:#c9b085;
  --bg-art:radial-gradient(circle at 12% -10%, rgba(224,163,62,.08), transparent 40%),
           radial-gradient(circle at 92% 0%, rgba(141,184,209,.06), transparent 42%);
  --shadow:0 2px 0 rgba(0,0,0,.2), 0 8px 22px rgba(0,0,0,.35);
  --focus:0 0 0 3px rgba(224,163,62,.5);
}

/* ---------- theme: Lakeshore Modern ---------- */
:root[data-theme="modern"]{
  --bg:#f2f5f6; --surface:#ffffff; --surface-2:#f6f9fa;
  --ink:#22303a; --ink-soft:#5c707d;
  --line:#d7e1e6; --line-soft:#e5edf0;
  --brand:#2b7a9e; --brand-dark:#1e5c78;
  --brand2:#3a9e8f; --brand2-dark:#27746a;
  --accent:#d98f3d; --accent-ink:#8a5313; --accent-soft:#f7ead8;
  --danger:#c14f33; --danger-soft:#f5ded7;
  --ok-soft:#e2f0ed;
  --sign-bg:linear-gradient(180deg,#ffffff,#e9f2f6);
  --sign-border:#c9dbe4; --sign-ink:#1f3a4a; --sign-sub:#5c8199; --sign-pin:#7899ab;
  --nav-bg:#1f3a4a; --nav-border:#16303e; --nav-ink:#a9c4d4;
  --bg-art:radial-gradient(circle at 12% -10%, rgba(43,122,158,.08), transparent 40%),
           radial-gradient(circle at 92% 0%, rgba(58,158,143,.08), transparent 42%);
  --font-display:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --shadow:0 1px 2px rgba(31,58,74,.06), 0 8px 24px rgba(31,58,74,.08);
  --focus:0 0 0 3px rgba(43,122,158,.4);
}

/* ---------- theme: Sunset Weekend ---------- */
:root[data-theme="sunset"]{
  --bg:#f7ecdf; --surface:#fdf6ec; --surface-2:#faf0e2;
  --ink:#3a2a26; --ink-soft:#7a5f55;
  --line:#e6d3bd; --line-soft:#efdfcd;
  --brand:#b0532f; --brand-dark:#8a3d20;
  --brand2:#7a4a78; --brand2-dark:#5a3459;
  --accent:#e0973a; --accent-ink:#7c4f12; --accent-soft:#f8e9d2;
  --danger:#a83a3a; --danger-soft:#f2dad6;
  --ok-soft:#f0e4dc;
  --sign-bg:linear-gradient(180deg,#57303f,#331c2a);
  --sign-border:#241220; --sign-ink:#f9e3c4; --sign-sub:#dbb193; --sign-pin:#c39a80;
  --nav-bg:#3d2231; --nav-border:#241220; --nav-ink:#dbb193;
  --bg-art:radial-gradient(circle at 12% -10%, rgba(224,151,58,.12), transparent 40%),
           radial-gradient(circle at 92% 0%, rgba(122,74,120,.10), transparent 42%);
  --focus:0 0 0 3px rgba(224,151,58,.5);
}

/* ---------- theme: Minimal Neutral ---------- */
:root[data-theme="minimal"]{
  --bg:#fafaf8; --surface:#ffffff; --surface-2:#f5f5f1;
  --ink:#26241f; --ink-soft:#6b675e;
  --line:#e3e0d8; --line-soft:#edeae2;
  --brand:#44554c; --brand-dark:#2f3d35;
  --brand2:#4a5f6d; --brand2-dark:#35464f;
  --accent:#8a7a55; --accent-ink:#5c5138; --accent-soft:#efece2;
  --danger:#a04b38; --danger-soft:#f0dfda;
  --ok-soft:#e9ede9;
  --sign-bg:linear-gradient(180deg,#2e2c28,#1f1e1b);
  --sign-border:#141311; --sign-ink:#f2efe8; --sign-sub:#b9b3a5; --sign-pin:#948e80;
  --nav-bg:#26241f; --nav-border:#141311; --nav-ink:#b9b3a5;
  --bg-art:none;
  --font-display:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --shadow:0 1px 2px rgba(38,36,31,.05), 0 6px 18px rgba(38,36,31,.07);
  --focus:0 0 0 3px rgba(68,85,76,.4);
}

/* ============================ base ============================ */
*{box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
html,body{margin:0; padding:0;}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  color:var(--ink); background:var(--bg); background-image:var(--bg-art);
  min-height:100vh; -webkit-text-size-adjust:100%;
  font-size:var(--fs-m); line-height:1.45;
}
.serif{font-family:var(--font-display);}
button{font-family:inherit; cursor:pointer; color:inherit;}
input,select,textarea{font-family:inherit; font-size:16px; color:var(--ink); background:var(--surface);}
a{color:var(--brand2-dark);}
:focus{outline:none;}
:focus-visible{box-shadow:var(--focus); border-radius:6px;}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms!important; transition-duration:.01ms!important;}
}
.app{max-width:920px; margin:0 auto; padding:0 14px 120px;}
.visually-hidden{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0);}

/* ============================ sign hero ============================ */
.sign-wrap{padding:16px 0 8px;}
.sign{
  position:relative; border-radius:var(--r-l); padding:18px 20px;
  background:var(--sign-bg); border:3px solid var(--sign-border);
  box-shadow:inset 0 2px 6px rgba(255,235,200,.10), inset 0 -10px 24px rgba(0,0,0,.18), var(--shadow);
  color:var(--sign-ink); overflow:hidden;
}
:root[data-theme="modern"] .sign{box-shadow:var(--shadow); border-width:1.5px;}
.sign:before{
  content:""; position:absolute; inset:0; opacity:.16; pointer-events:none;
  background:repeating-linear-gradient(180deg, rgba(0,0,0,.16) 0 2px, transparent 2px 26px);
}
:root[data-theme="modern"] .sign:before, :root[data-theme="minimal"] .sign:before{display:none;}
.sign h1{margin:0; padding-right:52px; font-size:var(--fs-hero); line-height:1.05; letter-spacing:.3px; font-family:var(--font-display);
  text-shadow:0 1px 0 rgba(0,0,0,.35); overflow-wrap:break-word;}
.sign .pin:empty{display:none;}
:root[data-theme="modern"] .sign h1{text-shadow:none; font-weight:700;}
.sign .sub{margin-top:6px; font-size:var(--fs-s); color:var(--sign-sub);}
.sign .pin{margin-top:8px; font-size:var(--fs-xs); color:var(--sign-pin);}
.sign .gear{
  position:absolute; top:12px; right:12px; width:44px; height:44px; border-radius:12px;
  background:rgba(0,0,0,.22); border:1px solid rgba(255,235,200,.18); color:var(--sign-ink);
  font-size:20px; display:flex; align-items:center; justify-content:center;
}
:root[data-theme="modern"] .sign .gear{background:rgba(31,58,74,.08); border-color:var(--line); color:var(--sign-ink);}

/* ============================ day tabs ============================ */
.daystrip{display:flex; gap:8px; overflow-x:auto; padding:14px 2px 6px; scrollbar-width:none;}
.daystrip::-webkit-scrollbar{display:none;}
.daytab{
  flex:0 0 auto; min-width:84px; text-align:center; padding:9px 12px; border-radius:var(--r-m);
  background:var(--surface); border:1.5px solid var(--line); color:var(--ink-soft); box-shadow:var(--shadow);
}
.daytab b{display:block; font-size:15px; color:var(--ink);}
.daytab small{display:block; font-size:12px; margin-top:1px;}
.daytab .wx{font-size:14px; margin-top:3px; display:block;}
.daytab.active{background:var(--brand); border-color:var(--brand-dark); color:#fff;}
:root[data-theme="cabin"] .daytab.active{color:#1d2b24;}
.daytab.active b{color:inherit;}

/* ============================ bottom nav ============================ */
.nav{
  position:fixed; left:0; right:0; bottom:0; z-index:40;
  display:flex; justify-content:center; padding:8px 6px calc(8px + env(safe-area-inset-bottom));
  pointer-events:none;
}
.nav .bar{
  pointer-events:auto; display:flex; gap:4px; background:var(--nav-bg);
  border:1.5px solid var(--nav-border); border-radius:var(--r-l); padding:6px;
  box-shadow:var(--shadow); max-width:100%;
}
.navbtn{position:relative; flex:0 0 auto; border:0; background:transparent; color:var(--nav-ink); border-radius:13px; padding:7px 12px; text-align:center; min-width:64px; min-height:52px;}
.navbtn .ic{font-size:20px; display:block; line-height:1.2;}
.navbtn small{font-size:11px; display:block; margin-top:1px;}
.navbtn.active{background:var(--nav-active-bg); color:var(--nav-active-ink);}
.navbtn .dot{position:absolute; top:6px; right:10px; width:9px; height:9px; border-radius:50%; background:var(--danger); border:2px solid var(--nav-bg);}

/* ============================ cards & titles ============================ */
.section-title{font-size:13px; text-transform:uppercase; letter-spacing:1.5px; color:var(--ink-soft); margin:18px 4px 8px;}
.page-title{font-family:var(--font-display); font-size:22px; color:var(--ink); margin:18px 4px 6px;}
.card{background:var(--surface); border:1.5px solid var(--line); border-radius:var(--r-l); box-shadow:var(--shadow); padding:14px; margin:0 0 14px;}
.card.meal{border-left:6px solid var(--accent);}
.card.act{border-left:6px solid var(--brand2);}
.rowhead{display:flex; align-items:center; gap:9px; flex-wrap:wrap;}
.rowhead .ic{font-size:20px;}
.rowhead .title{font-size:var(--fs-l); font-weight:600;}
.rowhead .meta{font-size:var(--fs-xs); color:var(--ink-soft);}
.countpill{margin-left:auto; display:inline-flex; align-items:center; gap:5px; font-size:13px; padding:4px 10px; border-radius:999px; background:var(--ok-soft); color:var(--brand-dark); white-space:nowrap;}
.countpill.cap{background:var(--accent-soft); color:var(--accent-ink);}
.countpill.water{background:var(--surface-2); color:var(--brand2-dark);}
.badge{font-size:11px; padding:2px 8px; border-radius:999px; background:var(--accent-soft); color:var(--accent-ink); white-space:nowrap;}
.badge.ok{background:var(--ok-soft); color:var(--brand-dark);}
.badge.danger{background:var(--danger-soft); color:var(--danger);}
.hint{font-size:12.5px; color:var(--ink-soft); margin:2px 4px 10px;}
.empty{color:var(--ink-soft); font-size:var(--fs-s); text-align:center; padding:20px 12px;}
.empty .big{font-size:30px; display:block; margin-bottom:6px;}
.empty .btn{margin-top:10px;}

/* ============================ chips (real buttons) ============================ */
.chips{display:flex; flex-wrap:wrap; gap:7px; margin-top:11px;}
.chip{display:inline-flex; align-items:center; gap:7px; padding:6px 15px 6px 6px; border-radius:999px; border:2px solid transparent; font-size:15px; font-weight:600; user-select:none; box-shadow:0 1px 3px rgba(0,0,0,.14); background:var(--surface-2); min-height:42px;}
.chip .av{width:30px; height:30px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; font-size:12px; color:#fff; flex:0 0 auto;}
.chip .ck{font-size:13px; font-weight:800; margin-left:1px;}
.chip.out{background:var(--surface-2)!important; border:1.5px solid var(--line-soft)!important; color:var(--ink-soft)!important; opacity:.6; font-size:12px!important; font-weight:400!important; padding:2px 10px 2px 2px!important; box-shadow:none!important; min-height:32px;}
.chip.out .av{width:18px!important; height:18px!important; font-size:9px!important; background:var(--ink-soft)!important; color:var(--surface);}
.chip.out .ck{display:none;}
.chip.add{background:transparent; border:1.5px dashed var(--line); color:var(--ink-soft); padding:2px 12px; font-size:12px; font-weight:500; box-shadow:none; min-height:32px;}
.wchip{display:inline-flex; align-items:center; gap:5px; padding:3px 11px 3px 3px; border-radius:999px; border:1.5px solid transparent; font-size:13px; font-weight:600; background:var(--surface-2); min-height:30px;}
.wchip .av{width:21px; height:21px; border-radius:50%; font-size:10px; color:#fff; display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto;}
.wchip.out{background:var(--surface-2); border:1px solid var(--line-soft); color:var(--ink-soft); opacity:.55; font-weight:400; font-size:11px; padding:1px 9px 1px 1px; min-height:24px;}
.wchip.out .av{width:16px; height:16px; font-size:8px; background:var(--ink-soft); color:var(--surface);}
.who-mini{display:flex; flex-wrap:wrap; gap:5px; width:100%; margin-top:6px;}
.who-mini .lbl{font-size:12px; color:var(--ink-soft); align-self:center; margin-right:2px;}

/* ============================ buttons & fields ============================ */
.btn{display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:10px 14px; border-radius:12px; border:1.5px solid var(--line); background:var(--surface-2); color:var(--ink); font-size:15px; font-weight:600; min-height:44px;}
.btn.primary{background:var(--brand); border-color:var(--brand-dark); color:#fff;}
:root[data-theme="cabin"] .btn.primary{color:#1d2b24;}
.btn.ghost{background:transparent;}
.btn.danger{color:var(--danger); border-color:var(--danger); background:transparent;}
.btn.small{padding:6px 10px; min-height:34px; font-size:13px; border-radius:10px;}
.addbtn{display:inline-flex; align-items:center; gap:6px; margin-top:11px; padding:9px 13px; border-radius:12px; border:1.5px dashed var(--line); background:transparent; color:var(--brand-dark); font-size:14px; font-weight:600; min-height:42px;}
.addbtn.block{width:100%; justify-content:center;}
.x{margin-left:auto; border:0; background:transparent; color:var(--ink-soft); font-size:18px; padding:6px 8px; border-radius:8px; min-width:34px; min-height:34px;}
.x:hover{color:var(--danger);}
.field{display:block; margin:10px 0 0;}
.field > span{display:block; font-size:13px; color:var(--ink-soft); margin:0 0 4px;}
.tinput{border:1.5px solid var(--line); background:var(--surface); border-radius:var(--r-s); padding:10px 11px; width:100%; min-height:44px;}
textarea.note{border:1.5px solid var(--line); background:var(--surface); border-radius:var(--r-s); padding:9px 10px; width:100%; resize:vertical; min-height:44px; font-size:15px;}
.mini{border:1px solid var(--line); background:var(--surface); border-radius:9px; padding:7px 8px; font-size:14px; min-height:36px;}
.inline-edit{border:0; background:transparent; padding:4px 2px;}
.layout-toggle{display:inline-flex; background:var(--surface-2); border:1.5px solid var(--line); border-radius:12px; overflow:hidden; margin:0 0 12px;}
.layout-toggle button{border:0; background:transparent; padding:9px 14px; color:var(--ink-soft); font-weight:600; min-height:40px;}
.layout-toggle button.on{background:var(--brand2); color:#fff;}
:root[data-theme="cabin"] .layout-toggle button.on{color:#14222b;}

/* ============================ modal / dialog / sheet ============================ */
.overlay{position:fixed; inset:0; background:rgba(20,14,8,.55); z-index:60; display:flex; align-items:flex-start; justify-content:center; padding:28px 14px; overflow:auto;}
.modal{background:var(--surface); border:2px solid var(--sign-border); border-radius:var(--r-l); box-shadow:var(--shadow); width:100%; max-width:480px; padding:18px;}
.modal h2{margin:0 0 10px; font-size:21px; font-family:var(--font-display);}
.modal h3{margin:16px 0 6px; font-size:15px;}
.modal label{display:block; font-size:13px; color:var(--ink-soft); margin:10px 0 4px;}
.btnrow{display:flex; gap:8px; flex-wrap:wrap; margin-top:14px;}
.ev-row{display:flex; align-items:center; gap:8px; padding:10px; border:1.5px solid var(--line); border-radius:12px; margin-bottom:8px; background:var(--surface);}
.dlg{max-width:360px; text-align:left;}
.dlg .msg{font-size:15px; margin:2px 0 4px;}
.sheet-wrap{position:fixed; inset:0; z-index:55; background:rgba(20,14,8,.45); display:flex; align-items:flex-end; justify-content:center;}
.sheet{width:100%; max-width:560px; background:var(--surface); border:1.5px solid var(--line); border-bottom:0; border-radius:var(--r-l) var(--r-l) 0 0; box-shadow:var(--shadow); padding:14px 14px calc(18px + env(safe-area-inset-bottom));}
.sheet h2{margin:2px 4px 10px; font-size:16px; font-family:var(--font-display);}
.sheet-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:8px;}
@media (max-width:420px){ .sheet-grid{grid-template-columns:repeat(3,1fr);} }
.sheet-item{position:relative; display:flex; flex-direction:column; align-items:center; gap:4px; padding:12px 6px; border-radius:var(--r-m); border:1.5px solid var(--line-soft); background:var(--surface-2); font-size:12px; color:var(--ink); min-height:64px;}
.sheet-item .ic{font-size:22px;}
.sheet-item.hostitem{border-style:dashed; color:var(--ink-soft);}

/* ============================ toast ============================ */
.toast{
  position:fixed; left:50%; transform:translateX(-50%); bottom:calc(86px + env(safe-area-inset-bottom)); z-index:80;
  background:var(--nav-bg); color:var(--sign-ink); border:1.5px solid var(--nav-border);
  padding:10px 16px; border-radius:999px; font-size:14px; font-weight:600; box-shadow:var(--shadow);
  animation:toastin .18s ease;
}
@keyframes toastin{from{opacity:0; transform:translateX(-50%) translateY(8px);} to{opacity:1; transform:translateX(-50%) translateY(0);}}

/* ============================ home ============================ */
.countdown{display:inline-flex; align-items:center; gap:8px; background:var(--accent-soft); color:var(--accent-ink); border-radius:999px; padding:7px 14px; font-weight:700; font-size:14px; margin:10px 0 0;}
.homegrid{display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:12px;}
@media (max-width:560px){ .homegrid{grid-template-columns:1fr 1fr;} }
.glance{display:flex; flex-direction:column; gap:2px; padding:12px; border-radius:var(--r-m); border:1.5px solid var(--line); background:var(--surface); box-shadow:var(--shadow); text-align:left; min-height:72px;}
.glance .g-ic{font-size:20px;}
.glance .g-big{font-size:17px; font-weight:700; color:var(--ink);}
.glance .g-sub{font-size:12px; color:var(--ink-soft);}
.welcome{white-space:pre-wrap;}
.ann{border-left:6px solid var(--brand2); padding:11px 12px;}
.ann .ann-t{font-weight:700; font-size:15.5px;}
.ann .ann-meta{font-size:12px; color:var(--ink-soft); margin-top:2px;}
.ann .ann-b{margin-top:6px; white-space:pre-wrap; font-size:14.5px;}
.ann.pinned{border-left-color:var(--accent);}

/* ============================ crew ============================ */
.crewcard{display:flex; gap:10px; align-items:flex-start; padding:12px;}
.crewcard .cav{width:40px; height:40px; border-radius:50%; display:flex; align-items:center; justify-content:center; color:#fff; font-weight:700; font-size:14px; flex:0 0 auto;}
.crewcard .cname{font-weight:700; font-size:16px;}
.crewcard .cdates{font-size:12.5px; color:var(--ink-soft); margin-top:1px;}
.crewcard .cnote{font-size:13px; margin-top:4px; color:var(--ink);}
.statuschip{margin-left:auto; border:1.5px solid var(--line); background:var(--surface-2); border-radius:999px; padding:5px 11px; font-size:12px; font-weight:700; min-height:32px;}
.statuschip.in{background:var(--ok-soft); color:var(--brand-dark); border-color:var(--brand);}
.statuschip.maybe{background:var(--accent-soft); color:var(--accent-ink); border-color:var(--accent);}
.statuschip.out{background:var(--danger-soft); color:var(--danger); border-color:var(--danger);}
.dogrow{display:flex; align-items:center; gap:9px; padding:8px 4px; border-bottom:1px dashed var(--line-soft); font-size:15px;}
.dogrow:last-child{border-bottom:0;}

/* ============================ info ============================ */
.infocard{padding:12px 14px;}
.infocard .i-h{display:flex; align-items:center; gap:8px; font-weight:700; font-size:15.5px;}
.infocard .i-b{margin-top:6px; font-size:14.5px; white-space:pre-wrap; color:var(--ink);}
.copybtn{margin-left:auto;}

/* ============================ dishes / ingredients ============================ */
.dish-acc{border-top:1px dashed var(--line-soft);}
.dish-acc:first-of-type{border-top:0;}
.dish-row{display:flex; align-items:center; gap:10px; padding:12px 4px; cursor:pointer; width:100%; background:transparent; border:0; text-align:left; font-size:inherit;}
.dish-row .dico{font-size:16px;}
.dish-row .dnm{font-size:16.5px; font-weight:600;}
.dish-row .dsub{font-size:12px; color:var(--ink-soft); background:var(--surface-2); padding:2px 9px; border-radius:999px;}
.dish-row .chev{margin-left:auto; color:var(--accent); font-size:20px; font-weight:700;}
.dish-acc.open{background:var(--surface-2); border:1.5px solid var(--line); border-radius:13px; margin:8px 0; padding:0 11px 11px;}
.dish-acc.open .dish-row{border-bottom:1px dashed var(--line);}
.dish-edit{padding-top:11px;}
.eat-label{font-size:11.5px; text-transform:uppercase; letter-spacing:1px; color:var(--ink-soft); margin:16px 0 0;}
.ing{display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin:7px 0 0; padding:7px 8px; background:var(--surface); border:1px solid var(--line-soft); border-radius:11px;}
.ing input.iname{flex:1 1 130px; min-width:90px; border:0; background:transparent; font-size:15px; padding:6px 2px;}
.ing input.qty{width:54px; text-align:center;}
.ing input.unit{width:62px;}
.pp{font-size:12px; color:var(--ink-soft); display:inline-flex; align-items:center; gap:4px; white-space:nowrap;}

/* ============================ shop / jobs / prep / stay / pack ============================ */
.pbar{height:8px; background:var(--surface-2); border:1px solid var(--line-soft); border-radius:999px; overflow:hidden; margin-top:8px;}
.pfill{height:100%; background:var(--brand); border-radius:999px; transition:width .2s;}
.storehdr{display:flex; align-items:center; gap:8px; font-weight:700; color:var(--brand2-dark); margin:6px 2px;}
.shop2{display:flex; align-items:center; gap:12px; padding:11px 4px; border-bottom:1px dashed var(--line-soft);}
.shop2:last-child{border-bottom:0;}
.shop2.done .nm{text-decoration:line-through; color:var(--ink-soft);}
.shop-amt{color:var(--ink-soft); font-size:14px; white-space:nowrap;}
.check{width:28px; height:28px; border-radius:8px; border:2px solid var(--brand); background:var(--surface); display:inline-flex; align-items:center; justify-content:center; color:#fff; font-size:16px; flex:0 0 auto; padding:0;}
.check.on{background:var(--brand);}
:root[data-theme="cabin"] .check.on{color:#1d2b24;}
.job-grp{margin-top:11px;}
.job-lbl{font-size:12px; text-transform:uppercase; letter-spacing:.6px; color:var(--ink-soft); margin:0 0 4px;}
.job-row{display:flex; justify-content:space-between; gap:12px; padding:6px 2px; border-bottom:1px dashed var(--line-soft); font-size:15px;}
.job-row:last-child{border-bottom:0;}
.job-amt{color:var(--ink-soft); font-size:13px; white-space:nowrap; text-align:right;}
.sleepslot{display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:10px; border:1.5px solid var(--line); border-radius:12px; margin-bottom:9px; background:var(--surface-2);}
.sleepslot .spot{font-weight:700; min-width:130px;}

/* ============================ weather ============================ */
.wx-card{display:flex; align-items:center; gap:12px; padding:13px; border-radius:var(--r-m); border:1.5px solid var(--line); background:var(--surface); margin-bottom:10px; box-shadow:var(--shadow);}
.wx-emoji{font-size:30px;}
.wx-day{font-weight:700;}
.wx-temps{font-size:14px; color:var(--ink-soft);}
.verdict{margin-left:auto; text-align:right;}
.verdict .v{font-weight:700;}
.v-great{color:var(--brand);} .v-good{color:var(--brand2);} .v-iffy{color:var(--accent-ink);} .v-indoor{color:var(--danger);}
.skel{position:relative; overflow:hidden; background:var(--surface-2); border-radius:8px; color:transparent!important; min-height:14px;}
.skel::after{content:""; position:absolute; inset:0; background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent); animation:skel 1.1s infinite;}
@keyframes skel{from{transform:translateX(-100%);} to{transform:translateX(100%);}}

/* ============================ host tools ============================ */
.hostbar{display:flex; align-items:center; gap:8px; background:var(--accent-soft); border:1.5px dashed var(--accent); color:var(--accent-ink); border-radius:var(--r-m); padding:8px 12px; margin:10px 0 0; font-size:13px; font-weight:600;}
.hostbar .btn{margin-left:auto;}
.theme-grid{display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:8px;}
.theme-card{border:2px solid var(--line); border-radius:var(--r-m); padding:10px; text-align:left; background:var(--surface);}
.theme-card.on{border-color:var(--brand); box-shadow:var(--focus);}
.theme-card .t-name{font-weight:700; font-size:14px;}
.theme-card .t-sw{display:flex; gap:4px; margin-top:6px;}
.theme-card .t-sw span{width:22px; height:14px; border-radius:4px; border:1px solid rgba(0,0,0,.15);}
.secrow{display:flex; align-items:center; gap:8px; padding:9px 6px; border-bottom:1px dashed var(--line-soft);}
.secrow:last-child{border-bottom:0;}
.secrow .s-name{flex:1; font-weight:600; font-size:14.5px;}
.secrow .btn.small{min-width:36px;}
.snaprow{display:flex; align-items:center; gap:8px; padding:9px 6px; border-bottom:1px dashed var(--line-soft); font-size:14px;}
.snaprow:last-child{border-bottom:0;}

/* ============================ print ============================ */
@media print{
  body{background:#fff;}
  .nav,.daystrip,.sign .gear,.addbtn,.x,.hostbar,.toast,.chip.add{display:none!important;}
  .app{max-width:100%; padding:0;}
  .card{box-shadow:none; break-inside:avoid;}
  .sign{border:2px solid #000; background:#fff!important; color:#000;}
  .sign .sub,.sign .pin{color:#333;}
}
