/* 一桌同源 · 产品结构预览 · 方向 C 水牌（奶油白）产品壳
 * 2026-10-18 r3：把 C 的招牌找回来——顶部暖灯、竖排柚木水牌横向挂一排、米纸签 + 印章、
 * 进场摆动 / 翻牌换菜 / 印章逐枚盖下 / 点家人亮一排印。仅移动端。
 * r4：牌高随屏高 clamp，短屏（≤700px 高）收紧灯下页眉，整排挂牌首屏露全；校验页「采用 / 撤销」进底部操作栏。 */
@font-face{font-family:"MaShan";src:url(../fonts/c-mashan.woff2?v=20261018r4) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"NotoSerifSC-C";src:url(../fonts/c-notoserif.woff2) format("woff2");font-weight:200 900;font-display:swap}
:root{
  --cream:#F7F1E6; --cream-2:#F1E8D8; --cream-3:#E8DCC8;
  --ink:#2A1D13; --ink-2:#5E4B3A; --ink-3:#7A6450;
  --line:rgba(42,29,19,.14); --line-2:rgba(42,29,19,.08);
  --wood-1:#6E4729; --wood-2:#5A391F; --wood-3:#7C5433; --wood-edge:rgba(0,0,0,.35);
  --beam:#3B281A; --string:rgba(90,57,31,.45); --wood-ink:#F3E6CF;
  --lamp:#C9893A; --lamp-soft:#E8B56A; --lamp-glow:rgba(232,181,106,.35); --lamp-ink:#22160C;
  --rice:#FBF7EE; --rice-ink:#2A1D13; --rice-ink-2:#5E4B3A;
  --avoid:#BF3A2A; --caution:#9C540F; --good:#2F7D4A; --unknown:#6F675E;
  --on-seal:#FFF4E6; --hl:rgba(201,137,58,.14); --rice-hl:#F3D9A8;
  --shadow-tag:0 14px 28px -12px rgba(42,29,19,.35),0 2px 4px rgba(42,29,19,.18);
  --outline-img:rgba(0,0,0,.22);
  --brush:"MaShan","Ma Shan Zheng","Kaiti SC","STKaiti",serif;
  --serif:"NotoSerifSC-C","Noto Serif SC","Songti SC",serif;
  --sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC","Noto Sans CJK SC",sans-serif;
  --ease:cubic-bezier(.16,1,.3,1);
  --safe-t:env(safe-area-inset-top,0px); --safe-b:env(safe-area-inset-bottom,0px);
  --tab-h:58px;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%;overflow:hidden;background:var(--cream)}
body{color:var(--ink);font:400 16px/1.7 var(--sans);-webkit-font-smoothing:antialiased}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
img{display:block;max-width:100%;height:auto}
:focus-visible{outline:2px solid var(--lamp);outline-offset:2px;border-radius:4px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* —— phone shell (mobile only) —— */
.phone{position:relative;width:100%;height:100%;overflow:hidden;overflow:clip;display:flex;flex-direction:column;
  background:radial-gradient(90% 40% at 50% -8%,var(--lamp-glow),transparent 70%),
    linear-gradient(180deg,var(--cream) 0%,#F5EDE0 55%,var(--cream-2) 100%)}
.phone::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.045;z-index:40;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
/* the warm lamp — same light as direction C */
.lamp{position:absolute;left:50%;top:-30%;width:120%;height:62%;translate:-50% 0;pointer-events:none;z-index:0;
  background:radial-gradient(closest-side,rgba(232,181,106,.46),rgba(232,181,106,.14) 45%,transparent 72%)}
.status{position:relative;flex:none;height:calc(28px + var(--safe-t));padding:var(--safe-t) 22px 0;display:flex;justify-content:space-between;align-items:center;
  font-size:13px;font-weight:600;color:var(--ink);z-index:5}
.status .dots i{width:16px;height:9px;border:1.5px solid currentColor;border-radius:2px;display:block;position:relative;opacity:.7}
.status .dots i::after{content:"";position:absolute;right:-3.5px;top:2px;width:2px;height:3px;background:currentColor}

#stage{flex:1;position:relative;min-height:0;overflow:hidden;overflow:clip;z-index:1}
.view{position:absolute;inset:0;display:flex;flex-direction:column;overflow:hidden;overflow:clip}
.view-body{flex:1;min-height:0;overflow-y:auto;overflow-x:clip;padding:0 16px 20px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.view-body::-webkit-scrollbar{width:0}
.phone:not(.is-stack) .view{padding-bottom:calc(var(--tab-h) + var(--safe-b))}
.phone.is-stack .tabbar{transform:translateY(110%)}

/* —— header —— */
.app-hdr{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:52px;padding:6px 0 4px}
.brand{display:flex;align-items:baseline;gap:10px}
.brand b{font-family:var(--brush);font-weight:400;font-size:30px;color:var(--wood-2);letter-spacing:.04em;line-height:1}
.brand span{font-size:14px;color:var(--ink-3)}
.app-hdr .back{display:inline-flex;align-items:center;gap:2px;min-height:44px;min-width:64px;font-size:16px;color:var(--ink-2);font-weight:500}
.app-hdr .back svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.app-hdr h1{font-family:var(--serif);font-size:20px;font-weight:600;flex:1;text-align:center}
.app-hdr .spacer{min-width:64px}
.hdr-date{display:none;font-size:14px;color:var(--ink-3);white-space:nowrap}

/* —— tabbar —— */
.tabbar{position:absolute;left:0;right:0;bottom:0;z-index:10;height:calc(var(--tab-h) + var(--safe-b));padding-bottom:var(--safe-b);
  display:grid;grid-template-columns:repeat(5,1fr);background:rgba(251,247,238,.95);backdrop-filter:blur(14px);
  border-top:1px solid var(--line);transition:transform .28s var(--ease)}
.tabbar::before{content:"";position:absolute;left:0;right:0;top:-1px;height:3px;background:linear-gradient(180deg,rgba(59,40,26,.10),transparent)}
.tabbar button{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-height:48px;font-size:12px;color:var(--ink-3);font-weight:500}
.tabbar svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.tabbar button[aria-current="page"]{color:var(--wood-2);font-weight:700}
.tabbar button[aria-current="page"] svg{stroke-width:2}
.tabbar button[aria-current="page"]::before{content:"";position:absolute;top:0;left:50%;width:22px;height:3px;margin-left:-11px;border-radius:0 0 2px 2px;background:linear-gradient(180deg,var(--wood-3),var(--beam))}

/* —— type —— */
.hello{padding:2px 0 6px}
.hello h2{font-family:var(--serif);font-size:27px;line-height:1.35;font-weight:600}
.hello p{margin-top:2px;font-size:16px;color:var(--ink-2)}
.sec{display:flex;justify-content:space-between;align-items:baseline;margin:22px 0 10px}
.sec h3{font-family:var(--serif);font-size:20px;font-weight:600;display:flex;align-items:center;gap:10px}
.sec h3::before{content:"";width:9px;height:9px;background:var(--avoid);rotate:45deg;flex:none}
.sec small{font-size:14px;color:var(--ink-3)}

/* —— family chips (from C) —— */
.who{display:flex;gap:8px;margin:12px -16px 2px;padding:0 16px 4px;overflow-x:auto;scrollbar-width:none}
.who::-webkit-scrollbar{display:none}
.who button,.who .away{flex:none;display:flex;align-items:center;gap:8px;min-height:50px;padding:4px 14px 4px 5px;border-radius:999px;border:1px solid var(--line);
  background:rgba(255,252,245,.92);transition:background-color .2s var(--ease),border-color .2s}
.who button:active{scale:.96}
.who i{font-style:normal;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-family:var(--brush);font-size:21px;color:var(--lamp);box-shadow:inset 0 0 0 1.5px var(--lamp)}
.who span{display:flex;flex-direction:column;line-height:1.25;text-align:left}
.who b{font-weight:600;font-size:16px}
.who small{font-size:13px;color:var(--ink-3)}
.who button[aria-pressed="true"]{background:var(--rice-hl);border-color:var(--lamp)}
.who button[aria-pressed="true"] i{background:var(--lamp);color:var(--lamp-ink)}
.who .away{opacity:.78}
.who .away i{color:var(--ink-2);box-shadow:inset 0 0 0 1.5px var(--ink-3)}

/* —— tally —— */
.wall-h{display:flex;justify-content:space-between;align-items:baseline;margin:20px 0 4px}
.wall-h h3{font-family:var(--serif);font-size:21px;font-weight:600}
.wall-h small{font-size:14px;color:var(--ink-3)}
.tally{display:flex;flex-wrap:wrap;gap:2px 16px;font-size:15px;color:var(--ink-2);margin:0 0 4px}
.tally span{display:inline-flex;align-items:baseline;gap:5px}
.tally b{font-family:var(--serif);font-weight:700;font-size:23px;font-variant-numeric:tabular-nums;display:inline-block;min-width:.7em;text-align:center}
.t-avoid b{color:var(--avoid)} .t-caution b{color:var(--caution)} .t-good b{color:var(--good)} .t-unknown b{color:var(--unknown)}

/* —— seals (四态印) —— */
.s{display:inline-grid;place-items:center;font-family:var(--serif);font-weight:700;font-size:14px;line-height:1;white-space:nowrap}
.s-avoid{min-width:46px;height:30px;padding:0 4px;background:var(--avoid);color:var(--on-seal);border-radius:3px;rotate:-6deg;box-shadow:inset 0 0 0 2px var(--avoid),inset 0 0 0 3px rgba(255,244,230,.55)}
.s-caution{min-width:46px;height:30px;padding:0 4px;color:var(--caution);box-shadow:inset 0 0 0 2px var(--caution);border-radius:3px;rotate:3deg}
.s-good{width:32px;height:32px;border-radius:50%;background:var(--good);color:var(--on-seal);font-size:16px}
.s-unknown{height:28px;padding:0 4px;color:var(--unknown);border:1.5px dashed var(--unknown);border-radius:3px;font-weight:600;font-size:13px}
.s-none{width:6px;height:6px;border-radius:50%;background:var(--rice-ink-2);opacity:.5}
.s-sm.s-avoid,.s-sm.s-caution{min-width:40px;height:26px;font-size:13px}
.s-sm.s-good{width:28px;height:28px;font-size:15px}
.s-sm.s-unknown{height:26px;font-size:12px}
.none-t{font-family:var(--serif);font-size:14px;font-weight:600;color:var(--ink-3);line-height:30px}

/* —— hanging wall (shared by 今日 / 校验) —— */
.wall-scroll{margin:0 -16px;padding:0 16px 6px;overflow-x:auto;overflow-y:visible;scrollbar-width:none;overscroll-behavior-x:contain}
.wall-scroll::-webkit-scrollbar{display:none}
.wall{position:relative;display:grid;column-gap:8px;padding-top:28px;min-width:100%;width:max-content}
.wall.is-fit{width:auto}
.beam{position:absolute;left:var(--beam-l,0);right:-6px;top:4px;height:13px;border-radius:3px;background:linear-gradient(180deg,var(--wood-3),var(--beam));box-shadow:0 6px 12px -4px rgba(42,29,19,.35)}
.beam::before,.beam::after{content:"";position:absolute;top:3px;width:7px;height:7px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#C9A271,#5A391F)}
.beam::before{left:8px} .beam::after{right:8px}
.tag-slot{perspective:700px;min-width:0}
.tag{position:relative;display:grid;grid-template-rows:var(--rows);transform-origin:50% -18px;border-radius:4px;
  background:repeating-linear-gradient(92deg,rgba(0,0,0,.06) 0 2px,transparent 2px 7px),linear-gradient(180deg,var(--wood-3),var(--wood-1) 40%,var(--wood-2));
  box-shadow:var(--shadow-tag),inset 0 0 0 1px var(--wood-edge);backface-visibility:hidden;color:var(--wood-ink);text-align:center}
.tag::before,.tag::after{content:"";position:absolute;top:-24px;width:1.5px;height:26px;background:var(--string)}
.tag::before{left:28%;rotate:12deg}
.tag::after{right:28%;rotate:-12deg}
.tag .ph{padding:6px 6px 0}
.tag .ph img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:2px;outline:1px solid var(--outline-img);outline-offset:-1px}
.tag .nm{display:flex;justify-content:center;padding:12px 0 8px;overflow:hidden}
.tag .nm span{writing-mode:vertical-rl;font-family:var(--brush);font-size:24px;line-height:1;letter-spacing:.06em;color:var(--wood-ink);text-shadow:0 1px 0 rgba(0,0,0,.35)}
.tag .nm.long span{font-size:20px}
.cap{display:block;margin-top:8px;font-size:14px;line-height:1.35;color:var(--ink-2);text-align:center;word-break:keep-all}

/* 今日：plaque + hanging rice-paper verdict tag */
.today-wall{grid-template-columns:repeat(var(--n),var(--col,minmax(0,1fr)));column-gap:10px}
.today-wall .tag{grid-template-rows:auto 1fr;min-height:clamp(212px,30vh,250px)}
.hang{display:block;width:100%;text-align:center;transform-origin:50% -18px}
.hang .tag{width:100%}
.rtag{position:relative;margin:16px auto 0;width:78%;min-height:62px;padding:12px 4px 8px;display:flex;flex-direction:column;align-items:center;gap:6px;
  background:var(--rice);border-radius:2px 2px 6px 6px;box-shadow:0 6px 14px -8px rgba(42,29,19,.35),inset 0 0 0 1px var(--line-2)}
.rtag::before{content:"";position:absolute;top:-17px;left:50%;width:1.5px;height:17px;background:var(--string)}
.rtag::after{content:"";position:absolute;top:5px;left:50%;width:6px;height:6px;margin-left:-3px;border-radius:50%;box-shadow:inset 0 0 0 1.5px rgba(90,57,31,.5)}
.rtag em{font-style:normal;font-size:14px;line-height:1.2;color:var(--ink-2);font-weight:500}
.rtag.is-hl{background:var(--rice-hl)}
.hang:active .tag{filter:brightness(1.06)}

/* 校验：plaque columns with member seal rows (C wall) */
.rv-wall{grid-template-columns:32px repeat(var(--n),var(--col,minmax(0,1fr)))}
.rv-wall .beam{--beam-l:32px}
.rail{display:grid;grid-template-rows:var(--rows);position:sticky;left:0;z-index:2}
.wall.is-scroll .rail{background:linear-gradient(90deg,var(--cream) 78%,rgba(247,241,230,0))}
.rail button{color:var(--ink-2);font-family:var(--brush);font-size:22px;display:grid;place-items:center;min-height:44px;border-radius:6px;transition:color .2s,background-color .2s}
.rail button[aria-pressed="true"]{color:var(--lamp-ink);background:var(--lamp-soft)}
.cell{display:grid;place-items:center;padding:0 2px;margin:0 5px;background:var(--rice);transition:background-color .25s var(--ease)}
.cell.c0{border-radius:3px 3px 0 0;margin-top:4px}
.cell.cl{border-radius:0 0 3px 3px;margin-bottom:6px}
.cell.hl{background:var(--rice-hl)}
.sbtn{width:100%;min-height:46px;display:grid;place-items:center;border-radius:4px}
.sbtn[aria-current="true"]{box-shadow:0 0 0 2px var(--lamp)}

.why{margin:14px 0 0;padding:12px 14px;border-left:3px solid var(--lamp);background:rgba(255,252,245,.88);box-shadow:inset 0 0 0 1px var(--line-2);
  font-size:16px;line-height:1.7;min-height:4.6em}
.why b{font-family:var(--serif);font-weight:700;display:block}
.why small{display:block;color:var(--ink-3);font-size:14px;margin-top:2px}

/* 后厨小条 */
.ticket{position:relative;margin:22px 2px 0;padding:20px 16px 18px;background:var(--rice);color:var(--rice-ink);rotate:-.6deg;box-shadow:0 8px 20px -12px rgba(42,29,19,.28);
  -webkit-mask:radial-gradient(circle 5px at 50% 0,transparent 98%,#000) 0 0/14px 51% repeat-x,radial-gradient(circle 5px at 50% 100%,transparent 98%,#000) 0 100%/14px 51% repeat-x;
  mask:radial-gradient(circle 5px at 50% 0,transparent 98%,#000) 0 0/14px 51% repeat-x,radial-gradient(circle 5px at 50% 100%,transparent 98%,#000) 0 100%/14px 51% repeat-x}
.ticket .k{font-size:14px;color:var(--rice-ink-2);display:flex;justify-content:space-between;gap:8px}
.ticket p{margin:6px 0 14px;font-family:var(--serif);font-weight:500;font-size:17px;line-height:1.75}
.ticket p b{font-weight:700}
.ticket .from{text-decoration:line-through;text-decoration-color:var(--avoid);text-decoration-thickness:2px}
.acts{display:flex;flex-wrap:wrap;gap:8px}

/* 今日 notes */
.notes{margin:18px 0 0;list-style:none}
.notes li{display:grid;grid-template-columns:56px 1fr;gap:10px;align-items:start;padding:12px 0;border-top:1px dashed var(--line)}
.notes li:first-child{border-top:0}
.notes .s{justify-self:center;margin-top:2px}
.notes b{font-family:var(--serif);font-weight:700;font-size:17px;display:block;line-height:1.5}
.notes p{font-size:16px;color:var(--ink-2);line-height:1.65}
.he{display:flex;gap:12px;align-items:flex-start;margin:18px 0 0;padding-top:16px;border-top:1px solid var(--line)}
.he i{flex:none;font-style:normal;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-family:var(--brush);font-size:21px;color:var(--lamp);box-shadow:inset 0 0 0 1.5px var(--lamp)}
.he p{font-size:16px;line-height:1.6}
.he small{display:block;font-size:14px;color:var(--ink-3)}
.safety{margin:18px 0 4px;font-size:14px;line-height:1.7;color:var(--ink-3)}
.safety b{color:var(--caution);font-weight:600}
.verdict{display:flex;align-items:center;gap:12px;margin:4px 0 0;font-family:var(--serif);font-size:18px;font-weight:600;line-height:1.5}
.verdict small{display:block;font-family:var(--sans);font-weight:400;font-size:15px;color:var(--ink-2)}

/* —— buttons —— */
.btn{min-height:48px;padding:0 16px;border-radius:6px;font-size:16px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;transition:scale .12s,filter .2s,background-color .2s,opacity .2s}
.btn:active{scale:.96}
.btn-dark{background:var(--wood-2);color:var(--wood-ink)}
.btn-line{background:transparent;color:var(--rice-ink);box-shadow:inset 0 0 0 1.5px var(--rice-ink-2)}
.btn-text{color:var(--wood-1);min-height:44px;padding:0 4px;font-weight:600;font-size:16px}
.btn-block{width:100%}
.cta{width:100%;min-height:54px;border-radius:8px;background:var(--lamp);color:var(--lamp-ink);font-family:var(--serif);font-weight:700;font-size:17px;box-shadow:0 10px 22px -10px rgba(42,29,19,.35);transition:scale .12s,filter .2s,opacity .2s,box-shadow .2s}
.cta:active{scale:.98}
.cta.is-disabled{background:var(--cream-3);color:var(--ink-3);box-shadow:inset 0 0 0 1.5px rgba(42,29,19,.18);cursor:not-allowed}
.cta.is-disabled:active{scale:1}
.cta-bar{flex:none;z-index:3;padding:10px 16px 12px;background:linear-gradient(180deg,rgba(247,241,230,.0),var(--cream) 26%);display:flex;gap:8px}
.cta-bar .cta{flex:1}
.cta-bar .btn-line{min-height:54px}
.phone.is-stack .cta-bar{padding-bottom:calc(12px + var(--safe-b))}
.cta-bar .btn-line{flex:none;padding:0 14px;background:rgba(251,247,238,.9)}
.cta-bar[aria-busy="true"] button{opacity:.55;pointer-events:none}

/* —— 菜谱：一周水牌单 —— */
.week{list-style:none;margin-top:8px}
.day{display:grid;grid-template-columns:44px 1fr;gap:14px;padding:14px 0;border-top:1px solid var(--line)}
.day:first-child{border-top:0}
.dplq{position:relative;height:66px;margin-top:10px;border-radius:3px;display:grid;place-items:center;
  background:repeating-linear-gradient(92deg,rgba(0,0,0,.06) 0 2px,transparent 2px 7px),linear-gradient(180deg,var(--wood-3),var(--wood-1) 45%,var(--wood-2));
  box-shadow:0 8px 14px -8px rgba(42,29,19,.45),inset 0 0 0 1px var(--wood-edge);font-family:var(--brush);font-size:26px;color:var(--wood-ink)}
.dplq::before,.dplq::after{content:"";position:absolute;top:-11px;width:1.5px;height:12px;background:var(--string)}
.dplq::before{left:30%;rotate:12deg} .dplq::after{right:30%;rotate:-12deg}
.day.is-today .dplq{box-shadow:0 0 0 2px var(--lamp),0 8px 14px -8px rgba(42,29,19,.45)}
.day-h{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:32px}
.day-h b{font-family:var(--serif);font-size:18px;font-weight:600}
.meal span,.kin .kg{word-break:keep-all;overflow-wrap:anywhere}
.meal{display:grid;grid-template-columns:26px 1fr;gap:6px;padding:4px 0;font-size:16px;line-height:1.6;color:var(--ink)}
.meal em{font-style:normal;font-family:var(--serif);font-weight:700;color:var(--wood-1)}
.meal.is-empty{color:var(--ink-3)}
.meal .btn-text{min-height:36px;margin-left:6px}

/* —— 采买：米纸采买单 —— */
.slip{margin:12px 2px 0;padding:22px 16px 18px;background:var(--rice);rotate:.3deg;box-shadow:0 10px 22px -14px rgba(42,29,19,.35);
  -webkit-mask:radial-gradient(circle 5px at 50% 0,transparent 98%,#000) 0 0/14px 51% repeat-x,radial-gradient(circle 5px at 50% 100%,transparent 98%,#000) 0 100%/14px 51% repeat-x;
  mask:radial-gradient(circle 5px at 50% 0,transparent 98%,#000) 0 0/14px 51% repeat-x,radial-gradient(circle 5px at 50% 100%,transparent 98%,#000) 0 100%/14px 51% repeat-x}
.slip h4{font-family:var(--serif);font-size:17px;font-weight:700;margin:16px 0 2px;display:flex;align-items:center;gap:8px;color:var(--wood-2)}
.slip h4:first-child{margin-top:0}
.slip h4::before{content:"";width:7px;height:7px;background:var(--avoid);rotate:45deg}
.item{display:flex;align-items:center;gap:12px;min-height:54px;padding:6px 0;border-bottom:1px dashed var(--line);cursor:pointer}
.item input{appearance:none;-webkit-appearance:none;flex:none;width:24px;height:24px;border-radius:3px;border:2px solid var(--ink-3);background:transparent;position:relative;cursor:pointer}
.item input:checked{border-color:var(--wood-2);background:var(--wood-2)}
.item input:checked::after{content:"";position:absolute;left:6.5px;top:2px;width:6px;height:12px;border:solid var(--wood-ink);border-width:0 2.5px 2.5px 0;rotate:45deg}
.item .info{flex:1;min-width:0}
.item .info b{display:block;font-weight:600;font-size:17px;line-height:1.4}
.item .info small{font-size:14px;color:var(--ink-3)}
.item:has(input:checked) .info b{text-decoration:line-through;text-decoration-color:var(--avoid);text-decoration-thickness:2px;color:var(--ink-3)}
.item.is-have .info b{color:var(--ink-3)}
.slip-foot{margin-top:14px;font-size:14px;color:var(--ink-3)}

/* —— 家人：印章名册 —— */
.kin-list{list-style:none;margin-top:6px}
.kin{display:flex;gap:14px;align-items:flex-start;width:100%;padding:16px 0;text-align:left;border-top:1px solid var(--line)}
.kin-list li:first-child .kin{border-top:0}
.kseal{flex:none;width:54px;height:54px;display:grid;place-items:center;border-radius:4px;background:var(--rice);rotate:-3deg;
  box-shadow:inset 0 0 0 2px var(--avoid),inset 0 0 0 4px var(--rice),inset 0 0 0 5px rgba(191,58,42,.5);font-family:var(--brush);font-size:30px;color:var(--avoid)}
.kin.is-away .kseal{box-shadow:none;border:1.5px dashed var(--unknown);color:var(--unknown);rotate:2deg}
.kin .kb{flex:1;min-width:0}
.kin .kt{display:flex;align-items:baseline;gap:10px}
.kin .kt b{font-family:var(--serif);font-size:19px;font-weight:700}
.kin .kt span{font-size:14px;color:var(--good);font-weight:600}
.kin.is-away .kt span{color:var(--ink-3)}
.kin .km{font-size:15px;color:var(--ink-3)}
.kin .kg{font-size:16px;color:var(--ink-2);margin-top:2px}
.chev{flex:none;width:20px;height:20px;margin-top:16px;stroke:var(--ink-3);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ways{list-style:none}
.way{display:flex;align-items:center;gap:14px;width:100%;min-height:68px;padding:10px 0;text-align:left;border-top:1px dashed var(--line)}
.ways li:first-child .way{border-top:0}
.way .ico{flex:none;width:44px;height:44px;border-radius:4px;display:grid;place-items:center;
  background:repeating-linear-gradient(92deg,rgba(0,0,0,.06) 0 2px,transparent 2px 7px),linear-gradient(180deg,var(--wood-3),var(--wood-2));box-shadow:inset 0 0 0 1px var(--wood-edge)}
.way .ico svg{width:22px;height:22px;stroke:var(--wood-ink);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.way b{display:block;font-family:var(--serif);font-weight:700;font-size:17px}
.way small{font-size:15px;color:var(--ink-3)}
.say{margin-top:16px;padding:12px 14px;border-left:3px solid var(--lamp);background:rgba(255,252,245,.88);font-size:16px;color:var(--ink-2)}

/* —— 我的 —— */
.rows{list-style:none;margin-top:6px}
.row{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:58px;padding:10px 0;border-top:1px solid var(--line);font-size:17px;text-align:left}
.rows li:first-child .row{border-top:0}
.row small{font-size:15px;color:var(--ink-3)}
.row select{font:inherit;font-size:16px;border:0;border-bottom:1.5px solid var(--ink-3);border-radius:0;padding:4px 2px;background:transparent;color:var(--ink)}
.toggle{position:relative;flex:none;width:52px;height:30px;border-radius:999px;background:var(--cream-3);box-shadow:inset 0 0 0 1px var(--line);transition:background .2s}
.toggle::after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:var(--rice);box-shadow:0 1px 3px rgba(42,29,19,.3);transition:transform .2s var(--ease)}
.toggle[aria-checked="true"]{background:var(--wood-2)}
.toggle[aria-checked="true"]::after{transform:translateX(22px)}
.prose{margin-top:6px;font-size:16px;line-height:1.8;color:var(--ink-2)}
.prose h4{font-family:var(--serif);font-size:18px;color:var(--ink);margin:18px 0 4px}
.prose h4:first-child{margin-top:0}

/* —— 知情同意 —— */
.ob{padding:6px 2px 8px}
.ob-top{display:flex;align-items:flex-start;gap:18px;padding-top:26px}
.ob-plq{position:relative;flex:none;width:58px;height:128px;border-radius:4px;display:grid;place-items:center;transform-origin:50% -20px;
  background:repeating-linear-gradient(92deg,rgba(0,0,0,.06) 0 2px,transparent 2px 7px),linear-gradient(180deg,var(--wood-3),var(--wood-1) 40%,var(--wood-2));box-shadow:var(--shadow-tag),inset 0 0 0 1px var(--wood-edge)}
.ob-plq::before,.ob-plq::after{content:"";position:absolute;top:-22px;width:1.5px;height:24px;background:var(--string)}
.ob-plq::before{left:26%;rotate:12deg} .ob-plq::after{right:26%;rotate:-12deg}
.ob-plq span{writing-mode:vertical-rl;font-family:var(--brush);font-size:36px;line-height:1;color:var(--wood-ink);text-shadow:0 1px 0 rgba(0,0,0,.35)}
.ob-top h2{font-family:var(--serif);font-size:26px;font-weight:600;line-height:1.4;margin-top:6px}
.ob-top p{font-size:16px;color:var(--ink-2);margin-top:6px}
.ob-blk{margin-top:18px;font-size:16px;line-height:1.7;color:var(--ink-2)}
.ob-blk h4{font-family:var(--serif);font-size:17px;color:var(--ink);font-weight:700;display:flex;align-items:center;gap:8px}
.ob-blk h4::before{content:"";width:7px;height:7px;background:var(--avoid);rotate:45deg}
.check{display:flex;gap:12px;align-items:flex-start;margin:12px 0 0;padding:12px;font-size:16px;line-height:1.55;color:var(--ink);
  background:var(--rice);border:1.5px solid var(--line);border-radius:4px;cursor:pointer;transition:border-color .2s,background .2s}
.check:has(input:checked){border-color:var(--wood-1);background:#F6EBD6}
.check input{appearance:none;-webkit-appearance:none;flex:none;margin-top:1px;width:24px;height:24px;border-radius:3px;border:2px solid var(--ink-3);background:#fff;position:relative;cursor:pointer}
.check input:checked{border-color:var(--wood-2);background:var(--wood-2)}
.check input:checked::after{content:"";position:absolute;left:6.5px;top:2px;width:6px;height:12px;border:solid var(--wood-ink);border-width:0 2.5px 2.5px 0;rotate:45deg}
.check.is-miss{border-color:var(--avoid);animation:nudge .32s}
@keyframes nudge{25%{translate:-4px 0}75%{translate:4px 0}}
.consent-hint{min-height:24px;margin:6px 0 0;font-size:15px;line-height:1.4;color:var(--avoid);font-weight:600;opacity:0;transition:opacity .2s}
.consent-hint.is-on{opacity:1}
.ob-skip{display:block;width:100%;min-height:48px;margin-top:4px;font-size:16px;color:var(--wood-1);font-weight:600}

/* —— toast —— */
/* toast drops from the top so it never covers the 小条 buttons or CTA */
.toast{position:absolute;left:50%;top:calc(40px + var(--safe-t));translate:-50% 0;z-index:30;padding:10px 18px;border-radius:4px;
  background:var(--wood-2);color:var(--wood-ink);font-size:15px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;transform:translateY(-8px);box-shadow:var(--shadow-tag)}
.toast.is-on{opacity:1;transform:none}

/* short phones (e.g. 375×667): tighten the lamp-lit header so the whole plaque row + rice tags sit above the CTA */
@media (max-height:700px){
  .app-hdr{min-height:42px;padding:2px 0 0}
  .brand b{font-size:28px}
  #view-today .hdr-date{display:block}
  #view-today .hello p{display:none}
  .hello{padding:0 0 2px}
  .hello h2{font-size:22px;line-height:1.25}
  .who{margin-top:6px}
  .who button,.who .away{min-height:44px}
  .who i{width:32px;height:32px;font-size:18px}
  .wall-h{margin-top:6px}
  .wall-h h3{font-size:19px;line-height:1.35}
  .tally{line-height:1.3}
  .tally b{font-size:20px}
  .today-wall{padding-top:22px}
  .today-wall .tag::before,.today-wall .tag::after{top:-20px;height:22px}
  .today-wall .tag .nm{padding:6px 0 4px}
  .today-wall .tag .nm.long span{font-size:18px}
  .rtag{margin-top:10px;min-height:54px;padding:8px 4px 5px;gap:3px}
  .rtag::before{top:-11px;height:11px}
  #view-today .cta-bar{padding:8px 16px 8px}
  #view-today .cta{min-height:50px}
  /* 校验页：压一点牌高，翻牌后逐枚盖印时三排印都在首屏 */
  .rv-wall,.rv-wall .rail{--rows:72px 138px 48px 48px 54px!important}
  .rv-wall{padding-top:22px}
  .rv-wall .tag::before,.rv-wall .tag::after{top:-20px;height:22px}
  #view-review .who{margin-top:4px}
  .rv-wall .tag .nm{padding:6px 0 4px}
  .rv-wall .tag .nm.long span{font-size:17px}
  #view-review .verdict{font-size:17px;line-height:1.4}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
