/* 菜单笺（白天）· 漆器（夜间）：一个底色、一种墨色、一枚朱印。层级靠字号、字距、细线和留白，不靠色块。
   颜色只用下面这些变量；旧的「暖帘 / 抹茶 / 姜黄」变量保留名字，但都收成同一套中性色，只做细节，不再大面积铺色。 */
@font-face{font-family:"Notoserif";src:url("/fonts/NotoSerifSC-sub.woff2") format("woff2");font-weight:300 600;font-style:normal;font-display:swap}
:root {
  --paper:#F5F3EE; --surface:#EEEBE3; --ink:#1B1A17; --body:#3D3A34; --muted:#6B675F; --faint:#9C978C; --hairline:#DEDAD0;
  --accent:#B0352B; --accent-pressed:#8E2A22; --accent-text:#A8322A; --on-accent:#F7F5F0; --indigo:#3D3A34;
  --gold:#1B1A17; /* 日期、大数字：白天用墨色，夜间用旧金 */
  --washi:#FBFAF6; --noren:#2A2925; --indigo-soft:#ECE9E2;
  --matcha:#6B675F; --matcha-ink:#45423C; --matcha-soft:#ECE9E2; --turmeric:#8C7A55; --turmeric-ink:#6A5B3C; --turmeric-soft:#F1EDE4; --accent-soft:#F4E6E2;
  --font-serif:"Notoserif","Songti SC","STSong",serif;
  --font-sans:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;
  --text-xs:.75rem; --text-sm:.8125rem; --text-base:.9375rem; --text-md:1.0625rem; --text-lg:1.1875rem; --text-xl:1.5rem; --text-display:4.25rem;
  --space-1:.25rem; --space-2:.5rem; --space-3:.75rem; --space-4:1rem; --space-5:1.5rem; --space-6:2rem; --space-7:3rem;
  --radius:2px; --stroke:1.4; --tap-size:44px; --gutter:max(1.25rem,env(safe-area-inset-left)); --gutter-end:max(1.25rem,env(safe-area-inset-right));
  --frame:#DEDAD0; --primary:#1B1A17; --on-primary:#F5F3EE; --overlay:#0008; --column:640px; --content-width:1100px; --stamp-size:58px; --tracking-label:.28em;
}
@media (prefers-color-scheme:dark) {
  :root { --paper:#0F0D0B; --surface:#171411; --ink:#ECE5D6; --body:#CDC4B4; --muted:#A1988A; --faint:#6F6758; --hairline:#2C2620;
    --accent:#A93A2A; --accent-pressed:#8A2F22; --accent-text:#D47A64; --on-accent:#F5EEE2; --indigo:#C9AE78; --gold:#C9AE78; --frame:#5A4A2C; --primary:#C9AE78; --on-primary:#0F0D0B;
    --washi:#15120F; --noren:#1C1814; --indigo-soft:#1A1714;
    --matcha:#A1988A; --matcha-ink:#CDC4B4; --matcha-soft:#1A1714; --turmeric:#C9AE78; --turmeric-ink:#D9C08E; --turmeric-soft:#1E1912; --accent-soft:#24150F; }
}

/* 基础 */
*{box-sizing:border-box}
[hidden]{display:none!important}
html{color-scheme:light dark;scroll-padding-top:var(--space-4);-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--body);font:var(--text-base)/1.7 var(--font-sans);overflow-wrap:anywhere}
h1,h2,h3,p{margin:0 0 var(--space-3)}
h1,h2,h3{font-family:var(--font-serif);color:var(--ink);font-weight:600;line-height:1.35}
h1{font-size:var(--text-xl);letter-spacing:3px}
h2{font-size:var(--text-lg);letter-spacing:2px}
h3{font-size:var(--text-md);letter-spacing:1px}
a{color:var(--ink);text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}
button,input,select,summary{min-height:var(--tap-size)}
button,a,summary{touch-action:manipulation}
button{cursor:pointer}
button:disabled{opacity:.55;cursor:wait}
:focus-visible{outline:2px solid var(--accent-text);outline-offset:3px}
img{display:block;max-width:100%;height:auto}
small{font-size:inherit}
.icon{width:22px;height:22px;flex:none;fill:none;stroke:currentColor;stroke-width:var(--stroke);stroke-linecap:round;stroke-linejoin:round}

/* 表单 */
input,select,textarea{width:100%;padding:var(--space-3);border:1px solid var(--hairline);border-radius:var(--radius);background:var(--surface);color:var(--ink);font-size:16px}
textarea{resize:vertical;min-height:7rem}
label{display:block;color:var(--ink);font-size:var(--text-sm);letter-spacing:1px;margin-bottom:var(--space-1)}
input[type=checkbox]{width:var(--tap-size);height:var(--tap-size)}
fieldset{min-width:0;border:1px solid var(--hairline);border-radius:var(--radius);padding:var(--space-4);margin:0}
legend{padding:0 var(--space-2);font-family:var(--font-serif);color:var(--ink);letter-spacing:2px}
progress{display:block;width:100%;height:4px;accent-color:var(--accent);margin-block:var(--space-2)}

/* 顶栏与文字导航 */
.app-header{display:flex;align-items:center;gap:var(--space-2);max-width:calc(var(--column) + 2.5rem);margin:0 auto;padding:calc(var(--space-2) + env(safe-area-inset-top)) var(--gutter-end) var(--space-1) var(--gutter)}
.brand{display:flex;align-items:center;gap:var(--space-3);min-height:var(--tap-size);margin-right:auto;color:var(--ink)}
.seal{display:grid;place-items:center;width:24px;height:24px;border-radius:var(--radius);background:var(--accent);color:var(--on-accent);font:600 14px/1 var(--font-serif)}
.brand-name{font:600 var(--text-md)/1 var(--font-serif);letter-spacing:5px}
.icon-button{display:grid;place-items:center;width:var(--tap-size);height:var(--tap-size);padding:0;border:0;background:none;color:var(--ink)}
.back-button{margin-left:calc(var(--space-3) * -1)}
.section-nav{border-bottom:1px solid var(--hairline);overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.section-nav::-webkit-scrollbar{display:none}
.section-nav-list{display:flex;gap:var(--space-6);margin:0 auto;padding:0 var(--gutter-end) 0 var(--gutter);list-style:none;min-width:max-content;max-width:calc(var(--column) + 2.5rem)}
.section-link{position:relative;display:flex;align-items:center;min-height:var(--tap-size);padding-bottom:var(--space-2);color:var(--faint);font:400 var(--text-base)/1 var(--font-serif);letter-spacing:.3em}
.section-link[aria-current=page]{color:var(--ink)}
.section-link[aria-current=page]::after{content:"";position:absolute;left:calc(50% - 4px);bottom:6px;width:4px;height:4px;border-radius:50%;background:var(--accent)}

.app-main{max-width:var(--content-width);margin:auto;padding:var(--space-5) var(--gutter-end) calc(var(--stamp-size) + env(safe-area-inset-bottom) + var(--space-7)) var(--gutter)}
.app-main:focus{outline:0}

/* 共用：照片淡入、菜名、状态与信息行、来源方印、热量 */

.fade-in{opacity:0}
.fade-in.is-loaded{opacity:1}
@media (prefers-reduced-motion:no-preference){.fade-in{transition:opacity .45s ease}}

.photo-empty{display:grid;place-items:center;height:100%;color:var(--muted);font-size:var(--text-sm);background:var(--surface)}

.dish-name{display:inline-block}
.meal-status{margin-bottom:var(--space-3);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.meal-status{color:var(--muted);font-size:var(--text-sm)}
.meal-status.is-review::before,.meal-status.is-failed::before{content:"";display:inline-block;width:5px;height:5px;margin:0 6px 1px 0;border-radius:50%;background:var(--accent-text);vertical-align:middle}
.meal-meta{display:flex;align-items:center;gap:var(--space-3);margin:0;color:var(--muted);font-size:var(--text-sm)}
.meal-meta .kcal{margin-left:auto}

.source-seal{display:inline-grid;place-items:center;flex:none;width:20px;height:20px;border:1px solid currentColor;border-radius:var(--radius);color:var(--ink);font:12px/1 var(--font-serif)}
.source-seal[data-source=dining_out]{color:var(--accent-text)}
.source-seal[data-source=takeaway]{color:var(--indigo)}
.kcal{display:inline-flex;align-items:baseline;gap:3px;color:var(--muted);font-size:var(--text-xs);white-space:nowrap}
.kcal b{color:var(--ink);font:400 var(--text-lg)/1 var(--font-serif);letter-spacing:.5px}
.kcal.is-unknown{font-size:var(--text-sm)}

.list-more{display:flex;justify-content:center;padding-top:var(--space-6)}
.quiet-button{min-height:var(--tap-size);padding:0 var(--space-5);border:1px solid var(--hairline);border-radius:var(--radius);background:none;color:var(--body);font-size:var(--text-sm);letter-spacing:2px}
.journal-footer{display:grid;justify-items:center;gap:var(--space-2);margin-top:var(--space-7);padding-top:var(--space-5);border-top:1px solid var(--hairline);text-align:center}
.journal-footer .small{margin:0}
.backup-status{width:100%;color:var(--muted);font-size:var(--text-sm)}
.backup-status summary{color:var(--muted);list-style:none}
.backup-status summary::-webkit-details-marker{display:none}
.logout-button{color:var(--muted);font-size:var(--text-sm)}

/* 记录印章：全站唯一的实心醒目元素 */
.record-stamp{position:fixed;z-index:10;right:calc(var(--gutter-end) + 4px);bottom:calc(env(safe-area-inset-bottom) + var(--space-5));display:grid;place-items:center;width:var(--stamp-size);height:var(--stamp-size);border-radius:3px;background:var(--accent);color:var(--on-accent);box-shadow:0 6px 18px -8px #0008;font:500 1.45rem/1 var(--font-serif)}
.keyboard-open .record-stamp{display:none}

/* 通用组件（详情、记录、查一查等页面会逐页重做，先统一到同一套颜色与形状） */
.stack{display:grid;gap:var(--space-4)}
.row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-3)}
.row-between{justify-content:space-between}
.field-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:var(--space-4)}
.page-heading{margin-bottom:var(--space-5)}
.page-heading h1{margin:0}
.muted,.small{color:var(--muted)}
.small{font-size:var(--text-sm)}
.error{color:var(--accent-text)}
.empty{margin-top:var(--space-6);padding:var(--space-6) var(--space-4);text-align:center;border:1px dashed var(--hairline);border-radius:var(--radius)}
.empty p{color:var(--muted)}
.card{border:1px solid var(--hairline);border-radius:var(--radius);padding:var(--space-4);background:transparent;min-width:0}
.meal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,290px),1fr));gap:var(--space-4)}
.badge{display:inline-flex;align-items:center;min-height:1.6rem;padding:0 var(--space-2);border:1px solid var(--hairline);border-radius:var(--radius);color:var(--muted);font-size:var(--text-xs);letter-spacing:1px}
.badge-warning,.badge-error{border-color:var(--accent-text);color:var(--accent-text)}
.review-notice{padding:var(--space-4);border:1px solid var(--accent-text);border-radius:var(--radius);color:var(--body)}
.review-notice strong{color:var(--accent-text);font-weight:600}
.needs-review{outline:1px solid var(--accent-text);outline-offset:2px}
.primary-button,.secondary-button,.danger-button,.text-button,.button-link{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--tap-size);padding:var(--space-2) var(--space-4);border:1px solid var(--hairline);border-radius:var(--radius);background:transparent;color:var(--ink);text-align:center;letter-spacing:1px}
.primary-button{background:var(--primary);border-color:var(--primary);color:var(--on-primary);letter-spacing:.2em}
.primary-button:active{opacity:.85}
.secondary-button,.button-link{color:var(--ink)}
.text-button{border-color:transparent}
.danger-button{color:var(--accent-text)}
.actions{display:flex;flex-wrap:wrap;gap:var(--space-3);padding-block:var(--space-3)}
.actions>*{flex:1 1 auto}
.nutrition{display:grid;grid-template-columns:repeat(auto-fit,minmax(115px,1fr));gap:var(--space-3);margin:0}
.nutrition div{padding:var(--space-3);background:var(--surface);border-radius:var(--radius)}
dt{font-size:var(--text-sm);color:var(--muted)}
dd{margin:0;color:var(--ink)}
.calorie{color:var(--ink);font-family:var(--font-serif)}
.reference{display:inline;margin-left:var(--space-2);font-family:var(--font-sans);font-size:var(--text-xs);color:var(--muted)}
.estimation-note{display:block;font-size:var(--text-sm);color:var(--muted);margin-top:var(--space-2);white-space:pre-wrap}
.photo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:var(--space-4)}
.photo-detail{width:100%;max-height:55vh;object-fit:contain;border-radius:var(--radius);background:var(--surface)}
.wall-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(115px,1fr));gap:var(--space-2)}
.wall-grid .empty{grid-column:1/-1}
.wall-photo{color:var(--ink);min-height:var(--tap-size)}
.wall-photo img{aspect-ratio:1;object-fit:cover;width:100%;border-radius:var(--radius);background:var(--surface)}
.wall-photo span{display:block;font-size:var(--text-sm);padding:var(--space-2)}
.upload-list{display:grid;gap:var(--space-4)}
.upload-preview{width:100%;max-height:180px;object-fit:contain;background:var(--surface);border-radius:var(--radius)}
.file-picker{position:relative;overflow:hidden}
.file-picker input{position:absolute;inset:0;opacity:0;cursor:pointer}
.file-picker:focus-within{outline:2px solid var(--accent-text);outline-offset:3px}
.advice-list{margin:0;padding-left:var(--space-5)}
.advice-list li+li{margin-top:var(--space-2)}
.menu-notice{padding:var(--space-3);border-left:2px solid var(--indigo);background:var(--surface);color:var(--body)}
summary{cursor:pointer;padding-block:var(--space-3);color:var(--ink)}
.history-entry{margin-block:var(--space-4)}
.history-dishes{display:grid;gap:var(--space-3)}
.comparison-table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}
.comparison-table th,.comparison-table td{padding:var(--space-3);border:1px solid var(--hairline);vertical-align:top;white-space:pre-wrap}
.table-scroll{overflow-x:auto}
.form-note{white-space:pre-wrap}
.busy-label{font-size:var(--text-sm);color:var(--muted)}

/* 状态提示与登录 */
.network-status,.message{margin:0;padding:var(--space-3) var(--gutter-end) var(--space-3) var(--gutter);border-bottom:1px solid var(--hairline);background:var(--surface);color:var(--ink);font-size:var(--text-sm)}
.message{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}
.message .text-button{flex-shrink:0;white-space:nowrap}
.login-dialog{width:min(92vw,400px);max-height:90dvh;overflow:auto;background:var(--paper);color:var(--body);padding:var(--space-6) var(--space-5);border:1px solid var(--hairline);border-radius:var(--radius)}
.login-dialog::backdrop{background:var(--paper);opacity:.97}
.skip-link{position:fixed;top:-100px;left:var(--space-4);z-index:100;background:var(--paper);padding:var(--space-3)}
.skip-link:focus{top:var(--space-3)}

@media (min-width:760px){.app-main{padding-top:var(--space-6)}}
@media (prefers-reduced-motion:no-preference){button,a{transition:background-color .15s ease,transform .1s ease}}

/* ───────── 共用小件：照片上的文字色、小标题行、引文、栏目标题（nx- 前缀沿用自早期预览） ───────── */
:root{--on-photo:#F6F1E8;--on-photo-soft:rgba(246,241,232,.84);--scrim:16,13,10}

.nx-kicker{display:flex;align-items:center;gap:var(--space-2);margin:0;color:var(--muted);font-size:var(--text-xs);letter-spacing:3px}
.nx-kicker .meal-status{margin:0;letter-spacing:0;font-size:inherit}

.nx-cover-status{margin:0 0 var(--space-3);color:var(--on-photo-soft);font-size:var(--text-sm)}
.nx-cover-status::before{content:"";display:inline-block;width:5px;height:5px;margin:0 6px 1px 0;border-radius:50%;background:#E07A6C;vertical-align:middle}

/* 引文：一句点评，宋体，朱红开引号 */
.nx-quote{position:relative;margin:var(--space-6) 0 0;padding-left:1.75rem}
.nx-quote::before{content:"「";position:absolute;left:-.2rem;top:-.35rem;color:var(--accent-text);font:1.75rem/1 var(--font-serif)}
.nx-quote p{margin:0;color:var(--ink);font:var(--text-md)/1.95 var(--font-serif);letter-spacing:1px}

/* 「下一个」箭头：把返回箭头水平翻转 */
.nx-next .icon{transform:scaleX(-1)}

/* 栏目标题（后接一条细线）与信息行 */
.nx-section-title{display:flex;align-items:center;gap:var(--space-3);margin:0;font-size:var(--text-md);letter-spacing:5px}
.nx-section-title::after{content:"";flex:1;border-top:1px solid var(--hairline)}

.nx-meal-meta{display:flex;align-items:center;gap:var(--space-3);margin:0;color:var(--muted);font-size:var(--text-sm)}
.nx-meal-meta .kcal{margin-left:auto}

/* ───────── 日记「日历本」（#/diary）：一天一页的撕页日历 ───────── */
:root{--desk:#E6E2D8;--sheet-shadow:rgba(40,34,24,.22)}
@media (prefers-color-scheme:dark){:root{--desk:#0B0A09;--sheet-shadow:rgba(0,0,0,.7)}}
body.on-diary{background:var(--desk)}
body.on-diary .section-nav{border-bottom-color:transparent}
/* 印章微微倾斜，像真的盖上去 */
.record-stamp{transform:rotate(-3deg)}
.record-stamp:active{background:var(--accent-pressed);transform:rotate(-3deg) scale(.94)}

.pg{max-width:28rem;margin:0 auto}
.pg-pad{position:relative;padding-top:var(--space-1)}
.pg-pad::before,.pg-pad::after{content:"";position:absolute;inset:calc(var(--space-1) + 10px) 9px -7px;border-radius:3px;background:var(--paper);box-shadow:0 1px 3px rgba(0,0,0,.08);opacity:.75;transform:rotate(-.7deg)}
.pg-pad::after{inset:calc(var(--space-1) + 18px) 18px -13px;opacity:.5;transform:rotate(.9deg)}
.pg-sheet{position:relative;z-index:1;padding:var(--space-6) var(--space-5) var(--space-6);border-radius:3px;background:var(--paper);box-shadow:0 24px 44px -26px var(--sheet-shadow),0 1px 2px rgba(0,0,0,.1);touch-action:pan-y;-webkit-user-select:none;user-select:none;transition:transform .32s cubic-bezier(.2,.7,.2,1),opacity .32s ease}
.pg-sheet::before{content:"";position:absolute;left:14px;right:14px;top:12px;height:8px;background:radial-gradient(circle at 4px 4px,var(--desk) 2.6px,transparent 3.2px) 0 0/15px 8px repeat-x}
.pg-sheet.is-dragging{transition:none}
.pg-sheet.is-entering-old{transform:translateY(12px) scale(.97);opacity:0}
.pg-sheet.is-entering-new{transform:translateX(-48px) rotate(-3deg);opacity:0}
.pg-head{display:flex;justify-content:space-between;padding-top:var(--space-3);color:var(--muted);font:var(--text-xs)/1 var(--font-serif);letter-spacing:3px}
.pg-num{margin:var(--space-5) 0 0;color:var(--gold);font:500 clamp(7rem,40vw,10rem)/.82 var(--font-serif);letter-spacing:-4px;text-align:center}
.pg-sheet.is-weekend .pg-num{color:var(--accent-text)}
.pg-week{margin:var(--space-4) 0 0;color:var(--ink);font:var(--text-md)/1.4 var(--font-serif);letter-spacing:8px;text-align:center}
.pg-almanac{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:var(--space-4);margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--hairline)}
.pg-term{display:grid;gap:2px;margin:0}
.pg-term b{color:var(--accent-text);font:600 var(--text-lg)/1.3 var(--font-serif);letter-spacing:4px}
.pg-term span{color:var(--muted);font-size:var(--text-sm)}
.pg-term.is-quiet span{font:var(--text-sm) var(--font-serif);letter-spacing:2px}
.pg-yi{display:flex;align-items:center;gap:var(--space-2);margin:0;color:var(--body);font:var(--text-sm)/1 var(--font-serif);letter-spacing:2px}
.pg-yi b{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--accent);color:var(--on-accent);font-weight:400;letter-spacing:0}
.pg-tear{height:12px;margin:var(--space-5) calc(var(--space-5) * -1);background:radial-gradient(circle,var(--hairline) 1.3px,transparent 1.8px) 0 50%/10px 12px repeat-x}
.pg-meals{display:grid;gap:var(--space-5)}
.pg-meal{display:grid;gap:6px;align-content:start;color:inherit}
.pg-photo{aspect-ratio:1;overflow:hidden;border-radius:2px;background:var(--surface)}
.pg-meal.is-big .pg-photo{aspect-ratio:4/3;margin-bottom:var(--space-2)}
.pg-photo img{width:100%;height:100%;object-fit:cover;-webkit-user-drag:none;pointer-events:none}
.pg-dishes{margin:0;font-size:var(--text-md);letter-spacing:1px}
.pg-meal.is-big .pg-dishes{font-size:1.3rem;letter-spacing:2px}
.pg-quote{margin:0;color:var(--body);font:var(--text-sm)/1.85 var(--font-serif)}
.pg-more{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5) var(--space-4);padding-top:var(--space-5);border-top:1px dashed var(--hairline)}
.pg-more .pg-dishes{font-size:var(--text-base);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pg-blank{display:grid;justify-items:center;gap:var(--space-4);padding:var(--space-5) 0 var(--space-3);color:var(--muted);font:var(--text-md) var(--font-serif);letter-spacing:3px}
.pg-blank p{margin:0}
.pg-strip{display:flex;align-items:center;gap:var(--space-1);margin-top:var(--space-6)}
.pg-strip ol{position:relative;display:flex;flex:1;gap:2px;margin:0;padding:0;list-style:none;overflow-x:auto;scrollbar-width:none}
.pg-strip ol::-webkit-scrollbar{display:none}
.pg-day{display:grid;justify-items:center;gap:3px;min-width:40px;min-height:var(--tap-size);padding:7px 0 6px;border:0;border-radius:20px;background:none;color:var(--muted);font-size:10px}
.pg-day b{color:var(--body);font:var(--text-base)/1 var(--font-serif)}
.pg-day i{width:4px;height:4px;border-radius:50%}

.pg-day.is-current{background:var(--ink);color:var(--paper)}
.pg-day.is-current b{color:var(--paper)}
.pg-day.is-current i{background:var(--paper)}
.pg-strip .icon-button{width:36px;flex:none;color:var(--muted)}
.pg-strip .icon-button:disabled{opacity:.3;cursor:default}
.pg-next .icon{transform:scaleX(-1)}

/* ───────── 主页「便当盒」（#/） ───────── */
.span-2{grid-column:span 2}.span-3{grid-column:span 3}.span-4{grid-column:1/-1}.tall{min-height:136px}


/* ───────── 用餐详情 .dt ───────── */
.dt,.rv-page{max-width:var(--column);margin:0 auto}
.text-link{display:inline-flex;align-items:center;min-height:var(--tap-size);color:var(--ink);font-size:var(--text-sm);letter-spacing:.08em;text-decoration:underline;text-decoration-color:var(--hairline);text-decoration-thickness:1px;text-underline-offset:5px}
.text-button.is-danger,.is-danger{color:var(--accent-text)}
.dt-gallery{position:relative;margin:calc(var(--space-5) * -1) calc(var(--gutter-end) * -1) 0 calc(var(--gutter) * -1);background:var(--surface)}
.dt-gallery.is-empty{display:grid;place-items:center;height:9rem;margin-top:0;border:1px dashed var(--hairline);background:none;color:var(--muted);font-size:var(--text-sm)}
.dt-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}
.dt-track::-webkit-scrollbar{display:none}
.dt-shot{flex:0 0 100%;margin:0;scroll-snap-align:center;display:flex;align-items:center;justify-content:center;overflow:hidden}
.dt-shot img{display:block;width:100%;height:auto;max-height:70vh;object-fit:contain;cursor:zoom-in}
.dt-gallery.is-expanded .dt-shot img{max-height:none;cursor:zoom-out}
.dt-dots{position:absolute;left:0;right:0;bottom:10px;display:flex;justify-content:center;gap:5px}
.dt-dots span{width:6px;height:3px;background:rgba(246,241,232,.55)}
.dt-dots span.is-on{width:14px;background:var(--on-photo)}
@media (min-width:700px){.dt-gallery{margin:0;border-radius:var(--radius);overflow:hidden}}
.dt-head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-4);padding:var(--space-5) 0 var(--space-4);border-bottom:1px solid var(--hairline)}
.dt-title{display:grid;gap:4px;margin:0 0 var(--space-3);font-size:var(--text-xl);letter-spacing:3px}
.dt-title small{color:var(--muted);font:var(--text-sm) var(--font-sans);letter-spacing:3px}
.dt-total{display:grid;justify-items:end;gap:4px;text-align:right}
.dt-total .kcal b{font-size:2rem;font-weight:300}
.dt-per{color:var(--muted);font-size:var(--text-xs);letter-spacing:1px}
.dt-note{margin:var(--space-3) 0 0;color:var(--muted);font-size:var(--text-sm);line-height:1.7}
.dt-note.is-alert{color:var(--accent-text)}
.dt-note .text-button{min-height:auto;padding:0 0 0 var(--space-2);color:var(--accent-text);text-decoration:underline;text-underline-offset:3px}
.dt-quote{margin-top:var(--space-5)}
.menu-notice{margin-top:var(--space-4)}
.dt-review{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:var(--space-4);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);border:1px solid var(--accent-text);border-radius:var(--radius);color:var(--accent-text);font-size:var(--text-sm)}
.dt-review span::before{content:"";display:inline-block;width:5px;height:5px;margin:0 8px 2px 0;border-radius:50%;background:var(--accent-text);vertical-align:middle}
.dt-review b{flex:none;padding:6px 14px;border-radius:var(--radius);background:var(--accent);color:var(--on-accent);font-weight:400;letter-spacing:3px}
.dt-menu{margin-top:var(--space-6)}
.dt-dish{border-bottom:1px dashed var(--hairline)}
.dt-dish summary{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-3);padding:var(--space-4) 0 var(--space-2);list-style:none}
.dt-dish summary::-webkit-details-marker{display:none}
.dt-dish-name{color:var(--ink);font:var(--text-md)/1.4 var(--font-serif);letter-spacing:1px}
.dt-flag{display:inline-block;width:6px;height:6px;margin:0 0 3px 6px;border-radius:50%;background:var(--accent-text);vertical-align:middle}
.dt-dish-comment{margin:0 0 var(--space-3);color:var(--body);font-size:var(--text-sm);line-height:1.7}
.dt-dish:not([open]) .dt-dish-comment{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.dt-dish-more{display:grid;gap:2px;padding-bottom:var(--space-3);color:var(--muted);font-size:var(--text-sm)}
.dt-dish-more p{margin:0}
.dt-advice{margin-top:var(--space-6);padding:var(--space-4);border:1px solid var(--hairline);border-radius:var(--radius)}
.dt-advice h2{margin:0 0 var(--space-2);color:var(--indigo);font:var(--text-sm) var(--font-sans);letter-spacing:3px}
.dt-advice ul{margin:0;padding-left:1.1em;color:var(--body);font-size:var(--text-sm);line-height:1.8}
.dt-notes{margin-top:var(--space-4);color:var(--body);font-size:var(--text-sm)}
.dt-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:var(--space-6);border-block:1px solid var(--hairline)}
.dt-action{display:grid;place-items:center;min-height:52px;padding:0;border:0;background:none;color:var(--ink);font:var(--text-sm) var(--font-serif);letter-spacing:2px}
.dt-action+.dt-action{border-left:1px solid var(--hairline)}
.dt-picker{padding:var(--space-4) 0;border-bottom:1px solid var(--hairline)}
.dt-picker .dt-note{margin-top:0}
.dt-picker-list{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}
.dt-ai{display:inline-flex;align-items:baseline;gap:6px;padding:0 var(--space-4);border:1px solid var(--hairline);border-radius:var(--radius);background:none;color:var(--ink)}
.dt-ai b{font:400 var(--text-base) var(--font-serif);letter-spacing:1px}
.dt-ai small{color:var(--accent-text);font-size:var(--text-xs)}
.dt-picker-photos{display:flex;gap:var(--space-2);margin-bottom:var(--space-3)}
.dt-picker-photos button{width:52px;height:52px;padding:0;border:2px solid transparent;border-radius:var(--radius);overflow:hidden;background:none}
.dt-picker-photos button[aria-pressed=true]{border-color:var(--accent-text)}
.dt-picker-photos img{width:100%;height:100%;object-fit:cover}
.dt-links{display:flex;flex-wrap:wrap;gap:var(--space-4);margin:var(--space-2) 0 0}
.dt-more{margin-top:var(--space-2);color:var(--muted)}
.dt-more summary{color:var(--muted);font-size:var(--text-sm)}
.dt-more-list{display:grid;justify-items:start}
.dt-more-list .text-button{padding-inline:0;font-size:var(--text-sm)}
.dt-danger{display:flex;justify-content:center;margin-top:var(--space-6);padding-top:var(--space-5);border-top:1px solid var(--hairline)}

/* ───────── 对照 .rv ───────── */
.rv{display:grid;gap:var(--space-4)}
.rv-photo{margin:0;aspect-ratio:16/9;overflow:hidden;border-radius:var(--radius);background:var(--surface);cursor:zoom-in}
.rv-photo img{width:100%;height:100%;object-fit:cover}
.rv-photo.is-whole{aspect-ratio:auto}
.rv-photo.is-whole img{height:auto;object-fit:contain}
.rv .dt-note{margin:0}
.rv-all{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.rv-group{display:grid;gap:6px;padding:var(--space-4) 0 0;border:0;border-top:1px dashed var(--hairline);border-radius:0}
.rv-group legend{padding:0 0 var(--space-2);color:var(--muted);font:var(--text-xs) var(--font-sans);letter-spacing:2px}
.rv-option{display:grid;grid-template-columns:4.5rem minmax(0,1fr) auto;align-items:center;gap:var(--space-3);width:100%;min-height:52px;padding:var(--space-2) var(--space-3);border:1px solid var(--hairline);border-radius:var(--radius);background:none;color:var(--ink);text-align:left}
.rv-option b{font:400 var(--text-md)/1.4 var(--font-serif);letter-spacing:1px}
.rv-ai{color:var(--muted);font-size:var(--text-xs);letter-spacing:1px}
.rv-option[aria-pressed=true]{border-color:var(--accent-text);box-shadow:inset 0 0 0 1px var(--accent-text)}
.rv-option[aria-pressed=true] .rv-ai{color:var(--accent-text)}
.rv-add{color:var(--muted);font-size:var(--text-xs)}
.rv-option[aria-pressed=true] .rv-add{color:var(--accent-text)}
.rv-tools{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-2);align-items:center}
.rv-tools input{min-height:var(--tap-size);padding:var(--space-2) var(--space-3);font-size:16px}
.rv-tools .text-button{font-size:var(--text-sm);color:var(--muted)}
.rv-tools .text-button.is-danger{color:var(--accent-text)}
.rv-submit{position:sticky;bottom:0;padding:var(--space-3) 0 calc(var(--space-3) + env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid var(--hairline)}
.rv-submit .primary-button{width:100%}
.check-row{display:flex;align-items:center;gap:var(--space-2);color:var(--body);font-size:var(--text-sm);letter-spacing:0}
.check-row input{flex:none;width:22px;height:22px;min-height:0;accent-color:var(--accent)}
.dt-picker-names{display:grid;justify-items:start;gap:var(--space-2);margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px dashed var(--hairline)}
.dt-picker-names .dt-note{margin:0}

/* ───────── 记一顿饭 / 用餐信息表单 ───────── */
/* iPhone 的日期框有固有最小宽度，会撑出所在栏压到旁边；统一去掉原生外观并允许收缩。 */
input[type=date]{display:block;min-width:0;-webkit-appearance:none;appearance:none;text-align:left}
input[type=date]::-webkit-date-and-time-value{text-align:left}
.record-page{max-width:var(--column);margin:0 auto}
.record-form{display:grid;gap:var(--space-6)}
.field-hint{margin:0;color:var(--muted);font-size:var(--text-xs);line-height:1.7}
.photo-section{display:grid;gap:var(--space-3)}
.photo-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}
.photo-tile{display:grid;place-items:center;align-content:center;gap:var(--space-2);aspect-ratio:4/3;border:1px dashed var(--hairline);border-radius:var(--radius);background:var(--surface);color:var(--ink);font:var(--text-base) var(--font-serif);letter-spacing:4px;cursor:pointer}
.photo-tile .icon{width:30px;height:30px;color:var(--accent-text)}
.photo-tile:active{background:var(--hairline)}
.photo-section.has-files .photo-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
.photo-section.has-files .photo-tile{aspect-ratio:auto;min-height:56px;grid-auto-flow:column;font-size:var(--text-sm);letter-spacing:2px}
.photo-section.has-files .photo-tile .icon{width:20px;height:20px}
.upload-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:var(--space-3)}
.upload-card{display:grid;gap:4px;min-width:0}
.upload-thumb{position:relative;aspect-ratio:1;overflow:hidden;border-radius:var(--radius);background:var(--surface)}
.upload-thumb img{width:100%;height:100%;object-fit:cover}
.upload-remove{position:absolute;top:4px;right:4px;display:grid;place-items:center;width:30px;height:30px;min-height:0;padding:0;border:0;border-radius:50%;background:rgba(16,13,10,.6);color:#fff;font-size:18px;line-height:1}
.upload-card progress{margin:0;height:3px}
.upload-status{margin:0;color:var(--muted);font-size:var(--text-xs)}
.upload-status.is-alert{color:var(--accent-text)}
.upload-hints summary{min-height:32px;padding:0;color:var(--muted);font-size:var(--text-xs)}
.upload-hints label{margin-top:var(--space-2);font-size:var(--text-xs)}
.upload-hints input{padding:var(--space-2);font-size:16px}
.meal-fields{display:grid;gap:var(--space-5)}
.choice-group{margin:0;padding:0;border:0;border-radius:0}
.choice-group legend,.date-field label,.stepper-field label{margin-bottom:var(--space-2);padding:0;color:var(--muted);font:var(--text-xs) var(--font-sans);letter-spacing:2px}
.choice-row{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.choice{position:relative;display:inline-flex;align-items:center;gap:var(--space-2);min-height:var(--tap-size);margin:0;padding:0 var(--space-4);border:1px solid var(--hairline);border-radius:var(--radius);color:var(--body);font:var(--text-base) var(--font-serif);letter-spacing:2px;cursor:pointer}
.choice input{position:absolute;inset:0;width:100%;height:100%;min-height:0;margin:0;opacity:0;cursor:pointer}
.choice:has(input:checked){border-color:var(--accent-text);color:var(--ink);box-shadow:inset 0 0 0 1px var(--accent-text)}
.choice:has(input:focus-visible){outline:2px solid var(--accent-text);outline-offset:2px}
.is-seals .choice-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.is-seals .choice{flex-direction:column;justify-content:center;gap:6px;min-height:84px;padding:var(--space-3) var(--space-2);font-size:var(--text-sm)}
.is-seals .source-seal{width:34px;height:34px;font-size:18px}
.is-seals .choice:not(:has(input:checked)) .source-seal{opacity:.55}
.field-pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-4)}
.date-field,.stepper-field{min-width:0}
.date-field label,.stepper-field label{display:block}
.date-field input{min-height:var(--tap-size)}
.stepper{display:grid;grid-template-columns:var(--tap-size) minmax(0,1fr) var(--tap-size);border:1px solid var(--hairline);border-radius:var(--radius);background:var(--surface)}
.stepper button{min-height:var(--tap-size);padding:0;border:0;background:none;color:var(--ink);font-size:1.25rem}
.stepper input{min-width:0;padding:0;border:0;background:none;text-align:center;font:var(--text-md) var(--font-serif);-moz-appearance:textfield}
.stepper input::-webkit-inner-spin-button,.stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.record-submit{position:sticky;bottom:0;z-index:5;display:grid;justify-items:center;gap:var(--space-1);padding:var(--space-3) 0 calc(var(--space-3) + env(safe-area-inset-bottom));border-top:1px solid var(--hairline);background:var(--paper)}
.record-submit .primary-button{width:100%;min-height:52px}
.keyboard-open .record-submit{position:static}

/* ───────── 登录：只有方印、标题和密码框 ───────── */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.login-dialog{width:min(88vw,340px);max-width:none;padding:var(--space-7) var(--space-5) var(--space-6);border:0;background:var(--paper);overflow:visible}
.login-dialog::backdrop{background:var(--paper);opacity:1}
.login-form{display:grid;justify-items:center;gap:var(--space-4);text-align:center}
.login-seal{display:grid;place-items:center;width:64px;height:64px;border-radius:var(--radius);background:var(--accent);color:var(--on-accent);box-shadow:inset 0 0 0 3px var(--accent),inset 0 0 0 4px var(--on-accent);font:600 2.1rem/1 var(--font-serif);transform:rotate(-4deg)}
.login-form h1{margin:var(--space-2) 0 0;font-size:var(--text-xl);letter-spacing:8px}
.login-message{margin:0 0 var(--space-4);color:var(--muted);font:var(--text-sm) var(--font-serif);letter-spacing:4px}
.login-form input{text-align:center;letter-spacing:2px}
.login-form .primary-button{width:100%;min-height:50px;letter-spacing:8px}
.login-form .error{margin:0;font-size:var(--text-sm)}

/* ───────── 相册 ───────── */
.wall{max-width:var(--column);margin:0 auto}
.wall-head{display:flex;align-items:center;gap:var(--space-1);margin-bottom:var(--space-4)}
.wall-head .icon-button{width:40px;color:var(--muted)}
.wall-head .icon-button:disabled{opacity:.3;cursor:default}
.wall-title{position:relative;display:flex;align-items:baseline;gap:4px;margin:0;color:var(--ink);letter-spacing:2px;cursor:pointer}
.wall-title b{font:300 3rem/1 var(--font-serif);letter-spacing:0}
.wall-title span{font:var(--text-md) var(--font-serif)}
.wall-title small{margin-left:var(--space-2);color:var(--muted);font-size:var(--text-sm)}
.wall-month-input{position:absolute;inset:0;width:100%;height:100%;min-height:0;padding:0;border:0;opacity:0;cursor:pointer}
.wall-count{margin-left:auto;color:var(--muted);font-size:var(--text-sm);letter-spacing:1px}
.wall-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;margin-inline:calc(var(--gutter) * -1) calc(var(--gutter-end) * -1)}
@media (min-width:700px){.wall-grid{margin-inline:0;grid-template-columns:repeat(4,minmax(0,1fr))}}
.wall-photo{display:block;aspect-ratio:1;min-height:0;overflow:hidden;background:var(--surface)}
.wall-photo img{width:100%;height:100%;aspect-ratio:auto;border-radius:0;object-fit:cover}
.wall-photo:active img{opacity:.8}
.wall-grid .empty{grid-column:1/-1;margin:var(--space-4) var(--gutter-end) 0 var(--gutter)}

/* ───────── 查一查 ───────── */
.lookup-intro{font-size:var(--text-sm);color:var(--body)}
.lookup-fields{margin:0;padding:0;border:0;border-radius:0;min-width:0}
.lookup-fields:disabled{opacity:.6}
.lookup-preview{display:grid;gap:4px}
.lookup-preview:empty{display:none}
.lookup-preview img{width:100%;max-height:50vh;object-fit:contain;border-radius:var(--radius);background:var(--surface)}
.lookup-preview progress{margin:0;height:3px}
.lookup-kind{padding:2px 8px;border:1px solid var(--hairline);border-radius:var(--radius);color:var(--body);font-size:var(--text-xs);letter-spacing:1px}
.lookup-kind.is-menu{border-color:var(--indigo);color:var(--indigo)}
.lookup-actions{display:grid;justify-items:center;gap:var(--space-2);margin-top:var(--space-6)}
.lookup-actions .primary-button{width:100%;min-height:52px}
.lookup-save{display:grid;gap:var(--space-5);margin-top:var(--space-6)}
/* 浏览器自动填充密码时不要换成系统蓝底，保持纸色。 */
input:-webkit-autofill,input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 100px var(--surface) inset;-webkit-text-fill-color:var(--ink);caret-color:var(--ink)}

/* ───────── 纹样：用遮罩把细线纹样染成当前文字色，深浅模式自动跟随 ───────── */
.pat-seigaiha,.pat-shippo{position:relative;isolation:isolate}
.pat-seigaiha::before,.pat-shippo::before{content:"";position:absolute;inset:0;z-index:-1;background:currentColor;opacity:.16;pointer-events:none}
.pat-seigaiha::before{-webkit-mask:url("/patterns/seigaiha.svg") 0 0/36px 18px;mask:url("/patterns/seigaiha.svg") 0 0/36px 18px}
.pat-shippo::before{-webkit-mask:url("/patterns/shippo.svg") 0 0/22px 22px;mask:url("/patterns/shippo.svg") 0 0/22px 22px}

/* ───────── 主页装饰 ───────── */
/* 「明日菜单」格：和纸便笺，顶上一条靛蓝暖帘，左边一枚竖排朱红小签 */
.mn-progress-bar{flex:1;height:5px;border-radius:3px;background:var(--hairline);overflow:hidden}
.mn-progress-bar span{display:block;height:100%;border-radius:3px;background:var(--accent)}

/* ───────── 明日菜单页（#/menu） ───────── */
.mn{max-width:var(--column);margin:0 auto}
.mn-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}
.mn-date{display:flex;align-items:flex-end;gap:var(--space-3)}
.mn-date b{color:var(--ink);font:300 3.4rem/.8 var(--font-serif);letter-spacing:-1px}
.mn-date span{display:grid;color:var(--ink);font:var(--text-base)/1.5 var(--font-serif);letter-spacing:3px}
.mn-date small{color:var(--accent-text);font:var(--text-xs) var(--font-sans);letter-spacing:1px}
.mn-days{display:flex;gap:6px}
.mn-day{display:grid;place-items:center;min-width:3.2rem;min-height:36px;padding:0 var(--space-3);border:1px solid var(--hairline);border-radius:var(--radius);color:var(--body);font:var(--text-sm) var(--font-serif);letter-spacing:2px}
.mn-day[aria-current]{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}
.mn-mode{display:grid;grid-template-columns:1fr 1fr;margin:var(--space-5) 0 0;border-bottom:1px solid var(--hairline)}
.mn-mode button{position:relative;min-height:46px;border:0;background:none;color:var(--muted);font:var(--text-md) var(--font-serif);letter-spacing:6px}
.mn-mode button[aria-pressed=true]{color:var(--ink)}
.mn-mode button[aria-pressed=true]::after{content:"";position:absolute;left:30%;right:30%;bottom:-1px;height:2px;background:var(--accent)}
.mn-body{display:grid;gap:var(--space-5);padding-top:var(--space-5)}
.mn-card{overflow:hidden;border:1px solid var(--hairline);border-radius:var(--radius);background:var(--washi)}
.mn-card.is-done{border-color:var(--accent-text)}
.mn-noren{position:relative;isolation:isolate;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);background:var(--noren);color:#F4F0E8}
.mn-noren::before{content:"";position:absolute;inset:0;z-index:-1;background:#F4F0E8;opacity:.1;-webkit-mask:url("/patterns/seigaiha.svg") 0 0/36px 18px;mask:url("/patterns/seigaiha.svg") 0 0/36px 18px}
.mn-noren h2{margin:0;color:#F4F0E8;font-size:var(--text-md);letter-spacing:8px}
.mn-done{padding:0 6px;border:1.5px solid #F4F0E8;color:#F4F0E8;font:var(--text-xs)/1.6 var(--font-serif);letter-spacing:2px;transform:rotate(-6deg)}
.mn-diners{display:flex;align-items:center;margin-left:auto;border:1px solid rgba(244,240,232,.35);border-radius:var(--radius)}
.mn-diners button{width:32px;min-height:32px;padding:0;border:0;background:none;color:#F4F0E8}
.mn-diners span{min-width:2.8em;text-align:center;font-size:var(--text-sm)}
.mn-noren .mn-x{color:rgba(244,240,232,.75)}
.mn-x{width:var(--tap-size);min-height:var(--tap-size);padding:0;border:0;background:none;color:var(--muted);font-size:1.1rem}
.mn-dishes{margin:0;padding:0 var(--space-4);list-style:none}
.mn-dishes li+li{border-top:1px dashed var(--hairline)}
.mn-dish-row{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:var(--space-3);min-height:68px;padding:var(--space-2) 0;color:inherit}
.mn-dish-row:active{opacity:.75}
.mn-thumb{width:48px;height:48px;margin:0;overflow:hidden;border-radius:var(--radius);background:var(--surface)}
.mn-thumb img{width:100%;height:100%;object-fit:cover}
.mn-thumb.is-drawn{display:grid;place-items:center;border:1px solid var(--hairline);background:var(--paper)}
.mn-thumb .mn-cover-seal{width:28px;height:28px;font-size:16px}
.mn-cover-seal{display:grid;place-items:center;width:84px;height:84px;border-radius:var(--radius);background:var(--accent);color:var(--on-accent);box-shadow:inset 0 0 0 3px var(--accent),inset 0 0 0 4px var(--on-accent);font:600 2.6rem/1 var(--font-serif);transform:rotate(-5deg)}
.mn-add,.mn-links a{min-height:var(--tap-size)}
.mn-dish-text{display:grid;gap:2px;min-width:0}
.mn-dish-text b{color:var(--ink);font:400 var(--text-md)/1.4 var(--font-serif);letter-spacing:2px}
.mn-dish-text small{color:var(--muted);font-size:var(--text-xs);letter-spacing:1px}
.mn-dish-text small.is-empty{color:var(--accent-text)}
.mn-chevron{color:var(--muted);font-size:1.3rem}
.mn-input{min-height:42px;padding:var(--space-2) var(--space-3);font-size:16px}
.mn-new-dish{display:block;width:calc(100% - 2 * var(--space-4));margin:0 var(--space-4) var(--space-4);border-style:dashed;background:none}
.mn-card-new{padding:var(--space-4);border-style:dashed;background:none}
.mn-card-new .mn-input{margin-top:var(--space-3)}
.mn-hint{margin:var(--space-2) 0 0;color:var(--muted);font-size:var(--text-xs);line-height:1.7}
.mn-center{text-align:center}
.mn-slots{display:flex;gap:var(--space-2);margin-top:var(--space-3)}
.mn-slot{min-height:38px;padding:0 var(--space-4);border:1px solid var(--hairline);border-radius:var(--radius);background:none;color:var(--body);font:var(--text-sm) var(--font-serif);letter-spacing:3px}
.mn-slot[aria-pressed=true]{border-color:var(--accent-text);color:var(--ink);box-shadow:inset 0 0 0 1px var(--accent-text)}
.mn-basket{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:var(--space-3);width:100%;min-height:56px;padding:0 var(--space-4);border:1px solid var(--hairline);border-radius:var(--radius);background:var(--surface);color:var(--ink);text-align:left}
.mn-basket-label{font:var(--text-base) var(--font-serif);letter-spacing:3px}
.mn-basket small{color:var(--muted);font-size:var(--text-xs)}
/* 去买菜 */
.mn-handwrite{display:grid;gap:var(--space-2)}
.mn-handwrite .mn-input{border-color:var(--accent-text);background:var(--washi)}
.mn-handwrite.is-split{grid-template-columns:minmax(0,1fr) auto auto;margin-top:var(--space-3)}
.mn-add{min-height:42px;padding:0 var(--space-3);border:1px solid var(--hairline);border-radius:var(--radius);background:none;color:var(--body);font-size:var(--text-sm)}
.mn-add.is-buy{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}
.mn-progress{margin:0;color:var(--body);font:var(--text-base) var(--font-serif);letter-spacing:2px}
.mn-progress b{color:var(--accent-text);font:300 2rem/1 var(--font-serif);margin-right:4px}
.mn-group h3{display:flex;align-items:center;gap:var(--space-2);margin:0 0 var(--space-1);color:var(--muted);font:var(--text-xs) var(--font-sans);letter-spacing:3px}
.mn-group h3 i{width:8px;height:8px;border-radius:2px;background:var(--muted)}
.mn-group[data-tone=matcha] h3 i{background:var(--matcha)}
.mn-group[data-tone=accent] h3 i{background:var(--accent)}
.mn-group[data-tone=indigo] h3 i{background:var(--indigo)}
.mn-group[data-tone=turmeric] h3 i{background:var(--turmeric)}
.mn-row{position:relative;display:grid;grid-template-columns:26px minmax(0,1fr) auto;align-items:center;gap:var(--space-2);min-height:50px;margin:0;border-bottom:1px dashed var(--hairline);color:var(--ink);font-size:var(--text-base);letter-spacing:0;cursor:pointer}
.mn-row input{position:absolute;opacity:0;width:1px;height:1px;min-height:0}
.mn-check{width:20px;height:20px;border:1.5px solid var(--muted);border-radius:var(--radius)}
.mn-row input:checked+.mn-check{border-color:var(--accent);background:var(--accent) url("/patterns/shippo.svg") center/16px no-repeat}
.mn-row input:focus-visible+.mn-check{outline:2px solid var(--accent-text);outline-offset:2px}
.mn-row-name small{margin-left:var(--space-2);color:var(--muted);font-size:var(--text-sm)}
.mn-row-meta{display:grid;justify-items:end;gap:2px;font-size:var(--text-xs);color:var(--muted)}
.mn-tags{color:var(--indigo)}
.mn-row.is-checked .mn-row-name{color:var(--muted)}
.mn-row-name em{display:block;margin-top:2px;color:var(--muted);font:normal var(--text-xs)/1.5 var(--font-sans)}
.mn-summary{margin:0;padding:var(--space-3) var(--space-4);border-left:3px solid var(--matcha);background:var(--matcha-soft);color:var(--matcha-ink);font-size:var(--text-sm);line-height:1.7}
.mn-shop-actions{display:flex;gap:var(--space-2)}
.mn-apps{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}
.mn-app{display:flex;align-items:baseline;justify-content:center;gap:4px;min-height:52px;padding-top:15px;border:1px solid var(--accent);border-radius:var(--radius);background:var(--washi);color:var(--accent-text);font:var(--text-md) var(--font-serif);letter-spacing:2px}
.mn-app small{color:var(--muted);font:var(--text-xs) var(--font-sans);letter-spacing:0}
/* 这道菜页 */
.mn-dish-head{display:grid;gap:var(--space-2)}
.mn-dish-head h1{margin:0;font-size:1.8rem;letter-spacing:8px}
.mn-meta{display:flex;align-items:center;gap:var(--space-3);margin:0;color:var(--muted);font-size:var(--text-sm)}
.mn-level{padding:0 8px;border:1px solid var(--matcha);border-radius:999px;color:var(--matcha-ink);font-size:var(--text-xs)}
.mn-level[data-level=中等]{border-color:var(--turmeric);color:var(--turmeric-ink)}
.mn-level[data-level=费功夫]{border-color:var(--accent-text);color:var(--accent-text)}
.mn-links{margin:0;color:var(--muted);font-size:var(--text-xs);letter-spacing:1px}
.mn-links a{display:inline-flex;align-items:center;min-height:32px;margin-left:var(--space-3);color:var(--accent-text);border-bottom:1px solid currentColor;line-height:1.2}
.mn-steps{display:grid;gap:var(--space-3);margin:0;padding:0;list-style:none}
.mn-steps>li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--space-3);align-items:start}
.mn-step-no{display:grid;place-items:center;min-width:26px;height:26px;padding:0 4px;border:1px solid var(--accent-text);border-radius:13px;color:var(--accent-text);font:var(--text-sm)/1 var(--font-serif)}
.mn-steps p{margin:0;color:var(--body);font-size:var(--text-base);line-height:1.85}
.mn-tips{margin-top:var(--space-3);padding:var(--space-4);border-left:3px solid var(--matcha);background:var(--matcha-soft)}
.mn-tips h3{margin:0 0 var(--space-2);color:var(--matcha-ink);font-size:var(--text-sm);letter-spacing:3px}
.mn-tips ul{margin:0;padding-left:1.1em;color:var(--matcha-ink);font-size:var(--text-sm);line-height:1.8}
.mn-regen{justify-self:start;color:var(--muted);font-size:var(--text-xs)}

/* 菜单操作沿用全站触控尺寸；行内食材亦可直接点按。 */

/* 菜品页：先食材、后做法；做法与补充建议默认收起，底部停一个去买菜清单的入口。 */
.mn-dish-page{display:grid;gap:var(--space-5)}
.mn-dish-hero{display:grid;grid-template-columns:minmax(0,1fr) 96px;align-items:start;gap:var(--space-4)}
.mn-dish-head{display:grid;gap:var(--space-2)}
.mn-dish-head h1{margin:0;font-size:1.6rem;letter-spacing:6px}
.mn-dish-sum{margin:0;color:var(--body);font:var(--text-base)/1.7 var(--font-serif)}
.mn-hero-cover{position:relative;width:96px;height:96px;margin:0;overflow:hidden;border:1px solid var(--hairline);border-radius:var(--radius);background:var(--surface)}
.mn-hero-cover img{width:100%;height:100%;object-fit:cover}
.mn-hero-cover.is-drawn{display:grid;place-items:center;isolation:isolate;background:var(--washi);color:var(--noren)}
.mn-hero-cover.is-drawn::before{content:"";position:absolute;inset:0;z-index:-1;background:currentColor;opacity:.12;-webkit-mask:url("/patterns/seigaiha.svg") 0 0/28px 14px;mask:url("/patterns/seigaiha.svg") 0 0/28px 14px}
.mn-hero-cover .mn-cover-seal{width:52px;height:52px;font-size:26px}
.mn-ing-box,.mn-recipe-box{border:1px solid var(--hairline);border-radius:var(--radius);background:var(--washi)}
.mn-ing-box{display:grid;gap:var(--space-3);padding:var(--space-4) var(--space-4) var(--space-2)}
.mn-box-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}
.mn-box-head h2,.mn-recipe-box.is-empty h2{margin:0;color:var(--ink);font:var(--text-md) var(--font-serif);letter-spacing:4px}
.mn-box-head small{color:var(--muted);font-size:var(--text-xs)}
.mn-handwrite.is-split{margin:0}
.mn-group-box h3{display:flex;align-items:baseline;gap:var(--space-2);margin:0 calc(var(--space-4) * -1);padding:6px var(--space-4);background:var(--accent-soft);color:var(--accent-text);font:var(--text-sm) var(--font-serif);letter-spacing:3px}
.mn-group-box[data-tone=have] h3{background:var(--matcha-soft);color:var(--matcha-ink)}
.mn-group-box h3 b{font-weight:400;letter-spacing:0}
.mn-group-box .mn-hint{margin:var(--space-2) 0}
.mn-items{margin:0;padding:0;list-style:none}
.mn-item{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:var(--space-2);min-height:50px;border-bottom:1px dashed var(--hairline)}
.mn-item:last-child{border-bottom:0}
.mn-item-name{min-width:0;color:var(--ink);font-size:var(--text-base);overflow-wrap:anywhere}
.mn-item-name small{margin-left:var(--space-2);color:var(--muted);font-size:var(--text-sm)}
.mn-item-name em{display:inline-block;margin-left:var(--space-2);padding:0 4px;border:1px solid var(--hairline);color:var(--muted);font:normal var(--text-xs)/1.5 var(--font-sans)}
.mn-item.is-checked .mn-item-name,.mn-item.is-checked .mn-item-label{color:var(--muted)}
.mn-item-name .mn-from{border-color:transparent;padding:0;color:var(--matcha-ink)}
.mn-move{width:4.8em;padding:0;border:1px solid var(--hairline);border-radius:var(--radius);background:var(--paper);color:var(--body);font-size:var(--text-sm)}
.mn-move.is-buy{border-color:var(--accent-text);color:var(--accent-text)}
.mn-item .mn-x{width:var(--tap-size)}
.mn-fold>summary{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);list-style:none;cursor:pointer}
.mn-fold>summary::-webkit-details-marker{display:none}
.mn-fold-title{color:var(--ink);font:var(--text-md) var(--font-serif);letter-spacing:3px}
.mn-fold>summary small{color:var(--muted);font-size:var(--text-xs)}
.mn-fold-cue{margin-left:auto;color:var(--accent-text);font-size:var(--text-sm)}
.mn-fold-cue::after{content:"展开 ▾"}
.mn-fold[open]>summary .mn-fold-cue::after{content:"收起 ▴"}
.mn-suggest-box{margin:0 calc(var(--space-4) * -1);padding:0 var(--space-4);border-top:1px solid var(--hairline)}
.mn-suggest-box>summary .mn-fold-title{font-size:var(--text-base)}
.mn-suggest-box[open]{padding-bottom:var(--space-2)}
.mn-suggest-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-top:var(--space-2)}
.mn-suggest-foot .mn-ask{margin-left:auto}
.mn-recipe-box{padding:var(--space-2) var(--space-4)}
.mn-recipe-box[open]{padding-bottom:var(--space-4)}
.mn-recipe-box.is-empty{display:grid;justify-items:start;gap:var(--space-3);padding:var(--space-4)}
.mn-recipe-box.is-empty p{margin:0;color:var(--body);font:var(--text-base)/1.8 var(--font-serif)}
.mn-servings{flex-basis:100%;margin:0 0 var(--space-2);padding:var(--space-2) var(--space-3);border-left:3px solid var(--turmeric);background:var(--turmeric-soft);color:var(--turmeric-ink);font-size:var(--text-sm);line-height:1.6}
.mn-recipe-box .mn-steps{margin-top:var(--space-3)}
.mn-recipe-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2);margin-top:var(--space-3);padding-top:var(--space-2);border-top:1px dashed var(--hairline)}
.mn-remove{margin:0;text-align:center}
.mn-dock{position:sticky;bottom:calc(env(safe-area-inset-bottom) + var(--space-3));z-index:5}
.mn-dock-link{display:flex;align-items:center;justify-content:center;min-height:50px;border:1px solid var(--accent);border-radius:var(--radius);background:var(--paper);color:var(--accent-text);font:var(--text-base) var(--font-serif);letter-spacing:4px;text-decoration:none}
/* 页内二次确认：第一次点后按钮变成提示，再点才执行。 */
.is-armed{color:var(--accent-text);text-decoration:underline;text-underline-offset:3px}
.mn-x.is-armed{width:auto;padding:0 var(--space-2);border:1px solid currentColor;border-radius:var(--radius);font-size:var(--text-sm);text-decoration:none}
.mn-noren .mn-x.is-armed{color:#F4F0E8}
/* 菜品页食材编辑：灰色细线，聚焦时才强调；朱红只留给保存和填写错误。 */
button.mn-item-name{display:block;min-height:var(--tap-size);padding:0;border:0;background:none;text-align:left;font:inherit;color:var(--ink);cursor:pointer}
.mn-item-label{border-bottom:1px dotted var(--muted)}
.mn-item.is-editing{display:block;padding:var(--space-2) 0}
.mn-edit{display:grid;gap:var(--space-2);padding:var(--space-3);border:1px solid var(--hairline);border-radius:var(--radius);background:var(--paper)}
.mn-edit label{display:grid;gap:4px}
.mn-edit label span{color:var(--muted);font-size:var(--text-xs);letter-spacing:2px}
.mn-edit .mn-input{border:1px solid var(--hairline);background:var(--washi)}
.mn-edit .mn-input:focus{border-color:var(--ink);outline:none;box-shadow:0 0 0 1px var(--ink)}
.mn-edit .mn-input.is-invalid{border-color:var(--accent-text);box-shadow:0 0 0 1px var(--accent-text)}
.mn-edit-error{margin:0;color:var(--accent-text);font-size:var(--text-xs)}
.mn-edit-note{margin:0;padding:var(--space-2) var(--space-3);border-left:3px solid var(--turmeric);background:var(--turmeric-soft);color:var(--turmeric-ink);font-size:var(--text-sm);line-height:1.6}
.mn-edit-actions{display:flex;justify-content:flex-end;gap:var(--space-2)}
.mn-edit-actions .primary-button{min-width:6em}
/* 买菜清单：已买好收起；复制兜底文本。 */
.mn-bought{padding-top:var(--space-2);border-top:1px solid var(--hairline)}
.mn-bought .mn-row{opacity:.85}
.mn-shop-actions{flex-wrap:wrap;align-items:center}
.mn-shop-actions .primary-button{flex:1 1 12em}
.mn-copy-fallback textarea{width:100%;padding:var(--space-3);border:1px solid var(--hairline);border-radius:var(--radius);background:var(--washi);color:var(--ink);font:var(--text-sm)/1.7 var(--font-sans);resize:vertical}
/* 问问 AI：默认收起；提问靠右浅底，回答左侧抹茶细线；AI 笔记同色系。 */
.ai-chat{border:1px solid var(--hairline);border-radius:var(--radius);background:var(--washi)}
.mn-card .ai-chat{margin:0 var(--space-4) var(--space-4)}
.ai-toggle{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);width:100%;padding:0 var(--space-4);border:0;background:none;color:var(--ink);text-align:left;cursor:pointer}
.ai-toggle-title{font:var(--text-md) var(--font-serif);letter-spacing:3px}
.ai-toggle small{color:var(--muted);font-size:var(--text-xs)}
.ai-chat.is-open .ai-toggle .mn-fold-cue::after{content:"收起 ▴"}
.ai-chat:not(.is-open) .ai-toggle .mn-fold-cue::after{content:"展开 ▾"}
.ai-chat>:not(.ai-toggle){margin-inline:var(--space-4)}
.ai-chat>:last-child{margin-bottom:var(--space-4)}
.ai-hint,.ai-meta,.ai-thinking{margin:0;color:var(--muted);font-size:var(--text-xs);line-height:1.6}
.ai-log{display:grid;gap:var(--space-3);margin-block:var(--space-3)}
.ai-q{justify-self:end;max-width:85%;margin:0;padding:var(--space-2) var(--space-3);background:var(--surface);border-radius:var(--radius);color:var(--ink);font-size:var(--text-base);line-height:1.6;white-space:pre-wrap}
.ai-q.is-pending{opacity:.7}
.ai-a{display:grid;gap:4px;padding-left:var(--space-3);border-left:3px solid var(--matcha)}
.ai-a>p:first-child{margin:0;color:var(--body);font-size:var(--text-base);line-height:1.8;white-space:pre-wrap}
.ai-meta .text-link{min-height:var(--tap-size);padding:0;border:0;background:none;color:var(--accent-text);font:inherit;text-decoration:underline;text-underline-offset:3px}
.ai-samples{display:flex;flex-wrap:wrap;gap:6px;margin-block:var(--space-2)}
.ai-sample{min-height:36px;padding:0 var(--space-3);border:1px dashed var(--hairline);border-radius:var(--radius);background:none;color:var(--body);font-size:var(--text-sm)}
.ai-compose{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-2);align-items:end;margin-top:var(--space-2)}
.ai-compose .primary-button{min-width:4.5em;padding-inline:var(--space-3)}
.ai-text{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--hairline);border-radius:var(--radius);background:var(--paper);color:var(--ink);font:16px/1.6 var(--font-sans);resize:vertical}
.ai-text:focus{border-color:var(--ink);outline:none;box-shadow:0 0 0 1px var(--ink)}
.ai-save,.ai-note.is-editing,.comment.is-editing{display:grid;gap:var(--space-2);padding:var(--space-3);border:1px solid var(--hairline);border-radius:var(--radius);background:var(--paper)}
.ai-row-actions{display:flex;justify-content:flex-end;gap:var(--space-2)}
.ai-notes{display:grid;gap:var(--space-2);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px dashed var(--hairline)}
.ai-notes h3{margin:0;color:var(--matcha-ink);font:var(--text-sm) var(--font-serif);letter-spacing:4px}
.ai-note{padding:var(--space-2) var(--space-3);border-left:3px solid var(--matcha);background:var(--matcha-soft)}
.ai-note>p:first-child{margin:0 0 4px;color:var(--ink);font-size:var(--text-sm);line-height:1.75;white-space:pre-wrap}
.dt .ai-chat{margin-block:var(--space-2)}
/* 五枚「味」印：左半枚 1 分、整枚 2 分，按 0.5 枚显示；透明点击层覆盖在印章上。 */
.seal-row{position:relative;display:flex;gap:8px;align-items:center;height:44px}
.taste{display:grid;place-items:center;width:36px;height:36px;border:1.5px solid var(--hairline);border-radius:3px;color:var(--muted);font:20px/1 var(--font-serif)}
.taste:nth-child(odd){transform:rotate(-3deg)}.taste:nth-child(even){transform:rotate(2deg)}
.taste i{font-style:normal}
.taste.is-full{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}
.taste.is-half{border-color:var(--accent);background:linear-gradient(90deg,var(--accent) 50%,transparent 50%)}
.taste.is-half i{background:linear-gradient(90deg,var(--on-accent) 50%,var(--accent-text) 50%);-webkit-background-clip:text;background-clip:text;color:transparent}
.seal-row.is-editable{height:auto;min-height:44px;flex-wrap:wrap}
.rating-picker{display:flex;align-items:center;gap:var(--space-2);flex-basis:100%;font-size:var(--text-sm);margin-top:var(--space-2)}
.rating-picker select{min-width:104px;min-height:44px}
.dt-rate,.dt-comments{display:grid;gap:var(--space-3)}
.rate-row{display:grid;gap:2px;padding-bottom:var(--space-3);border-bottom:1px dashed var(--hairline)}
.rate-who{display:flex;align-items:baseline;justify-content:space-between;margin:0;color:var(--ink)}
.rate-score b{margin-right:6px;color:var(--accent-text);font:300 1.6rem/1 var(--font-serif)}
.rate-score small{color:var(--body);font:var(--text-sm) var(--font-serif);letter-spacing:3px}
.rate-none{color:var(--muted);font-size:var(--text-xs)}
.rate-hint{margin:0;color:var(--muted);font-size:var(--text-xs)}
.comment{padding-bottom:var(--space-2);border-bottom:1px dashed var(--hairline)}
.comment>p:first-child{margin:0 0 4px;color:var(--ink);font-size:var(--text-base);line-height:1.7;white-space:pre-wrap}
.record-social{display:grid;gap:var(--space-2)}
.record-seals{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}

/* 家庭菜谱本：沿用站内色彩和字号变量，操作按钮至少var(--tap-size)。 */
.rc-page { max-width: 860px; margin-inline: auto; padding-bottom: calc(32px + env(safe-area-inset-bottom)); }
.rc-page button, .rc-page select, .rc-page input:not([type=checkbox]), .rc-dialog button { min-height: var(--tap-size); }
.rc-field { display: grid; gap: var(--space-2); margin-block: var(--space-3); }
.rc-field input, .rc-field textarea, .rc-field select, .rc-notes textarea { width: 100%; font: inherit; }
.rc-filters { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-block: var(--space-4); }
.rc-filters input { flex: 1 1 220px; min-width: 0; }
.rc-list { display: grid; gap: var(--space-3); }
.rc-card { display: flex; align-items: center; gap: var(--space-4); padding-block: var(--space-4); border-bottom: 1px solid var(--hairline); }
.rc-card img, .rc-text-cover { width: 88px; height: 108px; object-fit: cover; flex-shrink: 0; }
.rc-text-cover { display: grid; place-items: center; border: 1px solid currentColor; opacity: .6; }
.rc-card-title { font-size: var(--text-lg); font-weight: 600; text-decoration: none; }
.rc-card p { margin-block: 6px; }
.rc-row { padding-block: var(--space-4); border-bottom: 1px solid var(--hairline); overflow-wrap: anywhere; }
.rc-row h3 { font-size: var(--text-md); margin-bottom: 8px; }
.rc-row button { margin-right: 10px; }
.rc-issues, .rc-warning, .rc-message { border-left: 3px solid currentColor; padding: 12px 12px 12px 24px; }
.rc-warning, .rc-issues { color: var(--accent-text); }
.rc-rows, .rc-notes, .rc-pending { margin-block: 28px; }
.rc-dialog { width: min(92vw, 760px); max-height: 85dvh; overflow: auto; color: inherit; background: var(--paper); padding: var(--space-5); border: 1px solid var(--hairline); border-radius: var(--radius); }
.rc-dialog::backdrop { background: var(--overlay); }
.rc-dialog input, .rc-dialog textarea, .rc-dialog select { width: 100%; min-height: var(--tap-size); font: inherit; }
.rc-dialog input[type=checkbox], .rc-choices input { width: 24px; min-height: 24px; margin-right: 12px; }
.rc-evidence { margin-block: 24px; }
.rc-evidence pre, .rc-dialog pre { white-space: pre-wrap; overflow-wrap: anywhere; max-height: 60vh; overflow: auto; font: inherit; }
.rc-image-scroll { overflow: auto; max-height: 65vh; }
.rc-image-scroll img { width: 100%; height: auto; display: block; }
.rc-choices label { display: flex; align-items: center; min-height: var(--tap-size); }
.rc-material-list li { margin-block: var(--space-3); }
.rc-material-list span { display: block; overflow-wrap: anywhere; }
.rc-material-list input[type=file] { max-width: 100%; }
/* 家庭菜谱本：我们的收藏 / 家常菜谱库 两页签；菜谱库是菜单牌式列表 */
.rc-tabs { display: flex; gap: var(--space-5); border-bottom: 1px solid var(--hairline); margin-bottom: var(--space-2); font-family: var(--font-serif); letter-spacing: 2px; }
.rc-tabs a { display: inline-flex; align-items: center; min-height: var(--tap-size); color: var(--muted); text-decoration: none; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.rc-tabs a[aria-current] { color: var(--ink); border-bottom-color: var(--ink); }
.rc-chips { display: flex; gap: var(--space-2); overflow-x: auto; padding-block: var(--space-2); scrollbar-width: none; }
.rc-chips::-webkit-scrollbar { display: none; }
.rc-page .rc-chip { flex: none; min-height: 36px; padding: 0 var(--space-3); border: 1px solid var(--hairline); border-radius: var(--radius); background: none; color: var(--body); font: var(--text-sm) var(--font-serif); letter-spacing: 1px; }
.rc-chip[aria-pressed=true] { border-color: var(--ink); background: var(--ink); color: var(--paper); }
.lib-season { border-left: 3px solid var(--accent); padding: var(--space-1) 0 var(--space-1) var(--space-3); margin-block: var(--space-3); }
.lib-season p { margin: 0; }
.lib-season-head { color: var(--muted); font-size: var(--text-sm); }
.lib-season-head b { color: var(--accent-text); font-family: var(--font-serif); letter-spacing: 2px; }
.lib-season-dishes { display: flex; flex-wrap: wrap; column-gap: var(--space-4); }
.lib-season-link { display: inline-flex; align-items: center; min-height: 40px; color: var(--ink); font-family: var(--font-serif); text-decoration: underline; text-decoration-color: var(--hairline); text-underline-offset: 4px; }
.lib-count { margin-block: var(--space-2) 0; }
.lib-list { list-style: none; margin: 0; padding: 0; }
.lib-row { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); min-height: 56px; padding-block: var(--space-2); border-bottom: 1px dashed var(--hairline); color: var(--ink); text-decoration: none; }
.lib-row-text { display: grid; min-width: 0; }
.lib-row b { font: 600 var(--text-md) var(--font-serif); letter-spacing: 1px; }
.lib-row small { color: var(--muted); font-size: var(--text-xs); }
.lib-stars { flex: none; color: var(--turmeric-ink); font-size: var(--text-sm); letter-spacing: 1px; }
.lib-credit { margin-top: var(--space-5); }
.lib-detail .page-heading { margin-block: var(--space-3) var(--space-3); }
.lib-intro { color: var(--body); }
.lib-servings { display: flex; align-items: center; gap: var(--space-3); margin-block: var(--space-4); font-family: var(--font-serif); letter-spacing: 1px; }
.lib-servings b { min-width: 2ch; text-align: center; font-size: var(--text-lg); }
.rc-page .lib-step { min-width: var(--tap-size); padding: 0; font-size: var(--text-lg); }
.lib-lines { list-style: none; margin: 0; padding: 0; }
.lib-lines li { display: flex; justify-content: space-between; gap: var(--space-4); padding-block: var(--space-2); border-bottom: 1px dashed var(--hairline); }
.lib-lines li span:last-child { text-align: right; color: var(--body); overflow-wrap: anywhere; }
.lib-lines .is-scaled { color: var(--accent-text); }
.lib-fold { margin-block: var(--space-3); }
.lib-fold summary { min-height: var(--tap-size); display: flex; align-items: center; color: var(--accent-text); font-size: var(--text-sm); cursor: pointer; }
.lib-steps { list-style: none; margin: 0; padding: 0; }
.lib-steps > li { display: flex; gap: var(--space-3); margin-block: var(--space-3); }
.lib-steps p { margin: 0; }
.lib-step-no { flex: none; width: 2.2em; color: var(--accent-text); font-family: var(--font-serif); }
.lib-sub, .mn-substeps { margin: var(--space-2) 0 0; padding-left: 1.2em; color: var(--body); }
.lib-sub li, .mn-substeps li { margin-block: var(--space-1); }
.lib-raw { display: block; color: var(--muted); font-size: var(--text-xs); }
.lib-resize { display: flex; align-items: center; gap: var(--space-2); min-height: var(--tap-size); }
.lib-actions { position: sticky; bottom: 0; padding-block: var(--space-3) calc(var(--space-3) + env(safe-area-inset-bottom)); background: var(--paper); border-top: 1px solid var(--hairline); }
.lib-actions .primary-button { width: 100%; }
@media (max-width: 600px) { .rc-card { gap: var(--space-3); } .rc-dialog { padding: var(--space-4); } }

/* 家庭菜谱本 · 按菜：菜牌、家印、我们家的版本、并排对比、收一道菜 */
@media (hover:hover){.cb-card:hover{transform:translateY(-2px);box-shadow:0 6px 18px -10px #0006}}
.cb-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.cb-tag{padding:0 6px;border:1px solid var(--hairline);border-radius:var(--radius);color:var(--muted);font-size:var(--text-xs);line-height:1.6}
.cb-tag.is-todo{border-color:var(--accent-text);color:var(--accent-text)}
.cb-seal{position:absolute;top:8px;right:8px;display:grid;place-items:center;align-content:center;width:46px;height:46px;border-radius:50%;background:var(--accent);color:var(--on-accent);box-shadow:0 0 0 3px var(--washi),0 0 0 4px var(--accent);transform:rotate(-9deg);font-family:var(--font-serif);line-height:1}
.cb-seal b{font-size:1.25rem;font-weight:600}
.cb-seal small{font-size:.55rem;letter-spacing:1px;margin-top:2px;opacity:.9}
.cb-seal.is-large{top:var(--space-4);right:var(--space-4);width:64px;height:64px}
.cb-seal.is-large b{font-size:1.75rem}
.cb-seal.is-large small{font-size:.65rem}
.cb-empty{grid-column:1/-1;padding:var(--space-6) var(--space-4);border:1px dashed var(--hairline);border-radius:var(--radius);color:var(--muted);text-align:center;line-height:2}
.cb-pending{margin:var(--space-2) 0;padding:var(--space-2) var(--space-3);border-left:3px solid var(--turmeric);background:var(--turmeric-soft)}
.cb-pending-head{margin:0;color:var(--turmeric-ink);font-size:var(--text-sm)}
.cb-pending ul{margin:0;padding:0;list-style:none}
.cb-pending .text-link{min-height:36px}
.cb-eyebrow{margin:0 0 var(--space-1);color:var(--accent-text);font:600 var(--text-xs)/1.4 var(--font-sans);letter-spacing:3px}

/* 这道菜 */
.cb-dish{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-5);margin-top:var(--space-2)}
.cb-dish>*,.cb-panel,.cb-sources{min-width:0}
.cb-home{position:relative;padding:var(--space-5) var(--space-4) var(--space-4);border:1px solid var(--hairline);border-top:4px solid var(--accent);border-radius:var(--radius);background:var(--washi)}
.cb-home h2{margin-right:72px;font-size:var(--text-xl);letter-spacing:4px}
.cb-home.is-empty{border-style:dashed;border-top:1px dashed var(--accent)}
.cb-home.is-empty h2{margin-right:0;font-size:var(--text-lg)}
.cb-base-pick{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}
.cb-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);margin-top:var(--space-4)}
.cb-actions .primary-button{flex:1 1 180px}
.cb-actions.is-sticky{position:sticky;bottom:0;z-index:2;padding-block:var(--space-3) calc(var(--space-3) + env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid var(--hairline)}
.cb-step-text{white-space:pre-line}
.cb-history{margin-top:var(--space-4);border-top:1px dashed var(--hairline);padding-top:var(--space-2)}
.cb-history summary{display:flex;align-items:center;color:var(--accent-text);font-size:var(--text-sm);letter-spacing:1px;cursor:pointer}
.cb-history>ol{margin:var(--space-2) 0 0;padding:0 0 0 var(--space-4);list-style:none;border-left:1px solid var(--hairline)}
.cb-history>ol>li{position:relative;margin-bottom:var(--space-4)}
.cb-history>ol>li::before{content:"";position:absolute;left:calc(var(--space-4) * -1 - 4px);top:.55em;width:7px;height:7px;border-radius:50%;background:var(--accent)}
.cb-history-head{margin:0;font-size:var(--text-sm);color:var(--muted)}
.cb-history-head b{color:var(--ink);font-family:var(--font-serif)}
.cb-history blockquote{margin:var(--space-1) 0;padding:0;color:var(--ink);font-family:var(--font-serif)}
.cb-history blockquote::before{content:"「"}.cb-history blockquote::after{content:"」"}
.cb-change-list{display:flex;flex-wrap:wrap;gap:6px;margin:var(--space-1) 0 0;padding:0;list-style:none}
.cb-change{padding:2px 8px;border-radius:var(--radius);background:var(--accent-soft);color:var(--ink);font-size:var(--text-sm)}
.cb-change.is-add{background:var(--matcha-soft);color:var(--matcha-ink)}
.cb-change.is-remove{background:var(--surface);color:var(--muted);text-decoration:line-through}
.cb-change.is-step,.cb-change.is-servings{background:var(--indigo-soft);color:var(--ink)}
.cb-segment{display:flex;gap:var(--space-1);overflow-x:auto;margin:0 calc(var(--space-1) * -1) var(--space-3);padding:2px var(--space-1);scrollbar-width:none}
.cb-segment::-webkit-scrollbar{display:none}
.cb-segment button{flex:none;min-height:38px;padding:0 var(--space-3);border:1px solid var(--hairline);border-radius:19px;background:var(--washi);color:var(--body);font-size:var(--text-sm);white-space:nowrap}
.cb-segment button[aria-selected=true]{border-color:var(--noren);background:var(--noren);color:#F4F0E8}
.cb-segment button.is-compare{border-style:dashed;border-color:var(--accent);color:var(--accent-text)}
.cb-segment button.is-compare[aria-selected=true]{border-style:solid;background:var(--accent);color:var(--on-accent)}
.cb-panel{padding:var(--space-4);border:1px solid var(--hairline);border-radius:var(--radius);background:var(--washi)}
.cb-panel-links{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-4);margin:var(--space-3) 0 0}
.cb-panel-links .text-button{padding:0;min-height:var(--tap-size);border:0;background:none;color:var(--accent-text);font-size:var(--text-sm)}
.cb-panel-links .is-danger{color:var(--muted)}
.cb-compare-wrap{overflow-x:auto;margin:0 calc(var(--space-4) * -1);padding:0 var(--space-4)}
.cb-compare{width:100%;min-width:max-content;border-collapse:collapse;font-size:var(--text-sm)}
.cb-compare th,.cb-compare td{padding:8px 10px;border-bottom:1px dashed var(--hairline);text-align:left;vertical-align:top;white-space:nowrap}
.cb-compare thead th{font:600 var(--text-xs)/1.4 var(--font-sans);letter-spacing:1px;color:var(--muted);border-bottom:1px solid var(--ink)}
.cb-compare tbody th{position:sticky;left:calc(var(--space-4) * -1);background:var(--washi);color:var(--ink);font-weight:600;font-family:var(--font-serif)}
.cb-compare tr.is-diff td{background:var(--turmeric-soft)}
.cb-compare .is-home{color:var(--accent-text);font-weight:600}
.cb-compare thead .is-home{color:var(--accent-text)}
.cb-compare td.is-missing{color:var(--hairline)}
.cb-compare-title{margin:var(--space-5) 0 var(--space-2)}
.cb-steps-compare{display:grid;grid-auto-flow:column;grid-auto-columns:min(80%,300px);gap:var(--space-3);overflow-x:auto;scroll-snap-type:x mandatory;margin:0 calc(var(--space-4) * -1);padding:0 var(--space-4) var(--space-2)}
.cb-steps-compare section{scroll-snap-align:start;padding:var(--space-3);border:1px solid var(--hairline);border-radius:var(--radius);background:var(--paper)}
.cb-steps-compare section.is-home{border-color:var(--accent)}
.cb-steps-compare h4{margin:0 0 var(--space-2);font:600 var(--text-sm) var(--font-serif);color:var(--ink);letter-spacing:1px}
.cb-steps-compare h4 small{color:var(--muted);font-family:var(--font-sans);font-weight:400}
.cb-steps-compare ol{margin:0;padding-left:1.3em;font-size:var(--text-sm);line-height:1.7}
.cb-steps-compare li{margin-bottom:6px;white-space:pre-line}
.cb-notes{display:grid;gap:var(--space-3)}
.cb-notes h2{margin:0}
.cb-note-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-2);align-items:end}
.cb-note-form textarea{min-height:3.2rem}
.cb-note-list{margin:0;padding:0;list-style:none}
.cb-note-list>li{padding:var(--space-3) 0;border-bottom:1px dashed var(--hairline)}
.cb-note-list>li>p:first-child{margin:0;color:var(--ink);font-family:var(--font-serif);white-space:pre-line}
.cb-note-list .small{margin:2px 0 0}
.cb-dish-link{margin:0 0 var(--space-3)}
.cb-save-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-4);margin:var(--space-4) 0 0}
.cb-saved{color:var(--matcha-ink);font-size:var(--text-sm)}
.cb-saved::before{content:"✓ "}
.mn-recipe-box.is-home{border-top:3px solid var(--accent)}

/* 改良版编辑 */
.cb-editor{display:grid;gap:var(--space-3)}
.cb-editor h2{margin:var(--space-3) 0 0}
.cb-edit-lines,.cb-edit-steps{display:grid;gap:var(--space-2);margin:0;padding:0;list-style:none}
.cb-edit-lines li{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto;gap:var(--space-2);align-items:center}
.cb-edit-steps li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--space-2);align-items:start}
.cb-edit-steps textarea{min-height:3.4rem}
.cb-edit-steps .lib-step-no{padding-top:10px}
.cb-step-tools{display:grid}
.cb-editor .text-button{justify-self:start;padding:0 var(--space-2);border:0;background:none;color:var(--accent-text)}
.cb-x{min-width:var(--tap-size);color:var(--muted)!important;font-size:1.25rem}
.cb-preview{padding:var(--space-3);border:1px dashed var(--accent);border-radius:var(--radius);background:var(--washi)}

/* 收一道菜 */
.cb-lead{color:var(--body);margin-bottom:var(--space-4)}
.cb-collect{display:grid;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--hairline);border-top:4px solid var(--noren);border-radius:var(--radius);background:var(--washi)}
.cb-collect textarea{min-height:8.5rem;border-style:dashed;background:var(--paper);font-size:16px;line-height:1.7}
.cb-collect textarea:focus{border-style:solid;border-color:var(--noren)}
.cb-detect{min-height:1.7em;margin:0;color:var(--muted);font-size:var(--text-sm)}
.cb-detect b{display:inline-block;margin-right:4px;padding:0 8px;border-radius:var(--radius);background:var(--noren);color:#F4F0E8;font-weight:600;letter-spacing:1px}
.cb-detect.is-text b{background:var(--matcha)}
.cb-detect.is-blocked b{background:var(--muted)}
.cb-image-box{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3)}
.cb-image-box:empty{display:none}
.cb-image-box img{width:72px;height:96px;object-fit:cover;border:1px solid var(--hairline)}
.cb-image-box span{flex:1;min-width:0;color:var(--muted);font-size:var(--text-sm)}
.cb-alt{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-top:var(--space-4)}
.cb-alt-tile{position:relative;isolation:isolate;display:grid;gap:2px;margin:0;padding:var(--space-4) var(--space-3);border:1px solid var(--hairline);border-radius:var(--radius);background:var(--washi);color:var(--noren);cursor:pointer;overflow:hidden}
.cb-alt-tile::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--noren);opacity:.07;-webkit-mask:url("/patterns/shippo.svg") 0 0/22px 22px;mask:url("/patterns/shippo.svg") 0 0/22px 22px}
.cb-alt-tile b{font:600 var(--text-md) var(--font-serif);letter-spacing:3px;color:var(--ink)}
.cb-alt-tile small{color:var(--muted);font-size:var(--text-xs);letter-spacing:0}
.cb-alt-tile:active{transform:scale(.98)}
.cb-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.cb-alt-tile:focus-within{outline:2px solid var(--accent-text);outline-offset:2px}
.cb-recent{margin-top:var(--space-6)}
.cb-recent-list{margin:0;padding:0;list-style:none}
.cb-recent-list li{border-bottom:1px dashed var(--hairline)}
.cb-recent-list small{color:var(--muted)}
.cb-import{display:grid;gap:var(--space-2);margin-top:var(--space-3);padding:var(--space-5) var(--space-4);border:1px solid var(--hairline);border-top:4px solid var(--noren);border-radius:var(--radius);background:var(--washi)}
.cb-import h1{margin:0}
.cb-url{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cb-progress{margin:var(--space-3) 0;padding:0;list-style:none}
.cb-progress li{position:relative;display:flex;align-items:center;gap:var(--space-3);min-height:44px;padding-left:2px;color:var(--muted)}
.cb-progress li span{width:14px;height:14px;flex:none;border:2px solid var(--hairline);border-radius:50%;background:var(--paper)}
.cb-progress li:not(:last-child)::after{content:"";position:absolute;left:8px;top:32px;height:24px;border-left:2px solid var(--hairline)}
.cb-progress li.is-done{color:var(--ink)}
.cb-progress li.is-done span{border-color:var(--matcha);background:var(--matcha)}
.cb-progress li.is-now{color:var(--ink);font-weight:600}
.cb-progress li.is-now span{border-color:var(--accent);background:var(--accent);animation:cb-pulse 1.3s ease-in-out infinite}
.cb-progress li.is-failed span{border-color:var(--muted);background:var(--muted)}
@keyframes cb-pulse{0%,100%{box-shadow:0 0 0 0 var(--accent-soft)}50%{box-shadow:0 0 0 7px var(--accent-soft)}}
@media (prefers-reduced-motion:reduce){.cb-progress li.is-now span{animation:none}.cb-card{transition:none}}
.dt-dishnote{margin-top:var(--space-6)}
.dt-dishnote textarea{min-height:3.4rem}

/* 菜谱页：对照视频原画面 */
.rc-row-frames{margin-top:var(--space-2)}
.rc-row-frames .small{margin:0 0 var(--space-1)}
.rc-row-frames,.rc-frame-grid{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:flex-start}
.rc-row-frames .small{flex-basis:100%}
.rc-frame{position:relative;width:88px;padding:0;border:1px solid var(--hairline);border-radius:var(--radius);background:var(--washi);overflow:hidden;cursor:zoom-in}
.rc-frame .rc-frame-media{display:block;aspect-ratio:9/16;background:var(--washi)}
.rc-frame img{display:block;width:100%;aspect-ratio:9/16;object-fit:cover}
.rc-frame-media{display:block}
.rc-frame-retry{display:flex;align-items:center;justify-content:center;width:100%;min-height:var(--tap-size);height:100%;padding:var(--space-2);border:0;background:var(--washi);color:var(--accent-text);font-size:var(--text-xs);text-align:center;cursor:pointer}
.rc-dialog .rc-frame-media{background:#000;min-height:40dvh}
.rc-frame .rc-frame-time{position:absolute;left:4px;bottom:4px;padding:0 4px;border-radius:2px;background:#000a;color:#fff;font-size:var(--text-xs);font-variant-numeric:tabular-nums}
.rc-frames-all{margin-block:var(--space-4)}
.rc-frames-all summary{min-height:var(--tap-size);display:flex;align-items:center;color:var(--accent-text);cursor:pointer}
.rc-frame-large{display:block;width:100%;max-height:70dvh;object-fit:contain;background:#000}

/* 核对：分两档（用量和数字逐个看；AI 补的说法一键确认） */
.rv-banner{display:grid;gap:var(--space-3);margin-block:var(--space-4);padding:var(--space-4);border:1px solid var(--turmeric);background:var(--washi)}
.rv-banner h2{margin:0;font-size:var(--text-md)}
.rv-banner>.small{margin:0}
.rv-group{display:grid;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--hairline)}
.rv-group h3{margin:0;font-size:var(--text-base)}
.rv-group .small{margin:0}
.rv-list{list-style:none;margin:0;padding:0;display:grid}
.rv-list li{padding:var(--space-1) 0;border-bottom:1px solid var(--hairline);font-size:var(--text-sm);color:var(--body);min-width:0;overflow-wrap:anywhere}
.rv-list .rv-more{color:var(--muted);border-bottom:0}
.rv-group>.primary-button{justify-self:start}
.rv-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}
.rv-sheet{display:grid;gap:var(--space-2);min-width:0}
.rv-progress{margin:0;color:var(--muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums}
.rv-k{margin:var(--space-2) 0 0;color:var(--muted);font-size:var(--text-xs);letter-spacing:.08em}
.rv-value{margin:0;font:600 var(--text-md)/1.5 var(--font-serif);color:var(--ink);overflow-wrap:anywhere}
.rv-stage{margin:0;display:grid;gap:var(--space-1)}
.rv-stage .rc-frame-media{background:#000;min-height:30dvh}
.rv-frame{display:block;width:100%;max-height:42dvh;object-fit:contain;background:#000}
.rv-thumbs{display:flex;gap:var(--space-2);flex-wrap:wrap}
.rv-quotes blockquote{margin:var(--space-1) 0 0;padding-left:var(--space-2);border-left:3px solid var(--hairline);font-size:var(--text-sm);color:var(--body);overflow-wrap:anywhere}
.rv-candidates{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.rv-sheet .rv-actions{margin-top:var(--space-2)}
.rv-sheet .rv-actions .primary-button{flex:1 1 auto}
.rv-sticky{position:sticky;bottom:calc(-1 * var(--space-5));margin-inline:calc(-1 * var(--space-5));padding:var(--space-3) var(--space-5) var(--space-5);background:var(--paper);border-top:1px solid var(--hairline)}
@media (max-width:600px){.rv-sticky{bottom:calc(-1 * var(--space-4));margin-inline:calc(-1 * var(--space-4));padding:var(--space-3) var(--space-4) var(--space-4)}}
.rv-done{margin:var(--space-4) 0;font:600 var(--text-md)/1.5 var(--font-serif);color:var(--ink)}
.cb-review-link{margin:var(--space-2) 0}
.rc-screen-check{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:flex-start;margin-top:var(--space-2)}
.rc-screen-check>.small{flex-basis:100%;margin:0;color:var(--muted)}

/* ============ 主页「今日」：菜单笺 / 漆器 ============ */
.hm{max-width:var(--column);margin:0 auto;padding-bottom:calc(var(--stamp-size) + var(--space-6))}
.hm-mast{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-4);padding:var(--space-4) 0;border-bottom:1px solid var(--hairline)}
.hm-date{display:flex;align-items:flex-end;gap:var(--space-3)}
.hm-date b{font:300 4rem/.8 var(--font-serif);color:var(--gold);letter-spacing:-.02em}
.hm-date span{font-size:var(--text-xs);line-height:1.55;letter-spacing:.16em;color:var(--muted)}
.hm-term{display:grid;justify-items:end;gap:2px;text-align:right;min-width:0}
.hm-term b{font:400 1.25rem/1.2 var(--font-serif);letter-spacing:.32em;margin-right:-.32em;color:var(--ink)}
.hm-term small{font-size:var(--text-xs);letter-spacing:.12em;color:var(--faint)}
.hm-label{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-3);margin:0 0 var(--space-2);font-size:11px;letter-spacing:var(--tracking-label);color:var(--faint)}
.hm-label.hm-center{justify-content:center}
.hm-menu{margin-top:var(--space-5);padding:var(--space-4) var(--space-4) var(--space-2);border:1px solid var(--frame);background:var(--washi)}
.hm-menu+.hm-menu{margin-top:var(--space-3)}
.hm-dishes{list-style:none;margin:0;padding:0;display:grid}
.hm-dishes a{display:flex;align-items:baseline;gap:var(--space-2);min-height:var(--tap-size);padding-top:var(--space-2);color:var(--ink);font:400 1.3rem/1.4 var(--font-serif);letter-spacing:.08em}
.hm-dishes span{min-width:0}
.hm-dishes i{flex:1;min-width:var(--space-4);border-bottom:1px dotted var(--faint);transform:translateY(-.3em)}
.hm-dishes em{flex:none;font-style:normal;font-size:var(--text-xs);letter-spacing:.06em;color:var(--muted)}
.hm-dishes em.is-need{color:var(--accent-text)}
.hm-acts{display:flex;flex-wrap:wrap;justify-content:center;gap:0 var(--space-5);margin-top:var(--space-1)}
.hm-act{display:inline-flex;align-items:center;min-height:var(--tap-size);color:var(--ink);font-size:var(--text-sm);letter-spacing:.12em;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}
.hm-act.is-soft{color:var(--muted);text-decoration-color:var(--hairline)}
.hm-empty{margin:0;color:var(--muted);font-size:var(--text-sm)}
.hm-menu.is-empty .hm-empty{margin:var(--space-2) 0 0;text-align:center;color:var(--ink);font:400 var(--text-md)/1.5 var(--font-serif);letter-spacing:.12em}
.hm-sec{margin-top:var(--space-6)}
.hm-list{list-style:none;margin:0;padding:0}
.hm-list li{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);border-bottom:1px solid var(--hairline)}
.hm-list li:last-child{border-bottom:0}
.hm-list a{display:flex;align-items:center;min-height:var(--tap-size);min-width:0;color:var(--ink);font:400 var(--text-md)/1.4 var(--font-serif);letter-spacing:.08em}
.hm-list small{flex:none;font-size:var(--text-xs);color:var(--faint);letter-spacing:.06em}
.hm-list a.hm-plan{flex:none;font:var(--text-xs)/1 var(--font-sans);color:var(--muted);letter-spacing:.12em}
.hm-more{color:var(--muted);font-size:11px;letter-spacing:.12em}
.hm-inline{color:var(--ink);text-decoration:underline;text-decoration-color:var(--hairline);text-decoration-thickness:1px;text-underline-offset:4px}
.hm-book{display:flex;align-items:baseline;gap:var(--space-2);min-height:var(--tap-size);color:var(--ink)}
.hm-book b{font:300 2.25rem/1 var(--font-serif);color:var(--gold)}
.hm-book span{color:var(--muted);font-size:var(--text-sm);letter-spacing:.1em}
.hm-book em{margin-left:auto;font-style:normal;font-size:var(--text-xs);color:var(--accent-text);letter-spacing:.08em}
.hm-season{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-1) var(--space-3);margin:var(--space-2) 0 0;color:var(--faint);font-size:var(--text-xs);letter-spacing:.06em}
.hm-season .hm-inline{color:var(--muted)}
.hm-foot{display:grid;justify-items:center;gap:var(--space-2);margin-top:var(--space-7);padding-top:var(--space-5);border-top:1px solid var(--hairline);text-align:center}
.hm-foot .small{margin:0}
.hm-tools{display:flex;gap:var(--space-5);font-size:var(--text-sm)}
@media (prefers-color-scheme:dark){.hm-menu{background:none;border-left:0;border-right:0;padding-left:0;padding-right:0}}

/* 「排进哪一顿」：四个常用选项一点即选，「别的日子」展开日期和餐次 */
.mp{margin:0;padding:0;border:0;display:grid;gap:var(--space-2);min-width:0}
.mp legend{padding:0;margin-bottom:var(--space-2);color:var(--faint);font-size:11px;letter-spacing:var(--tracking-label)}
.mp-chips{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}
.mp-chip{min-height:var(--tap-size);padding:0 var(--space-3);border:1px solid var(--hairline);border-radius:var(--radius);background:none;color:var(--ink);font:400 var(--text-base)/1 var(--font-serif);letter-spacing:.12em}
.mp-chip[aria-pressed=true]{border-color:var(--ink);background:var(--ink);color:var(--paper)}
.mp-chip:last-child{grid-column:1/-1;color:var(--muted);font-family:var(--font-sans);font-size:var(--text-sm);letter-spacing:.08em}
.mp-chip:last-child[aria-pressed=true]{color:var(--paper)}
.mp-other{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-2)}
.mp-other input,.mp-other select{min-height:var(--tap-size);padding:0 var(--space-2);border:1px solid var(--hairline);border-radius:var(--radius);background:var(--washi);min-width:0}

/* 这道菜：顶部「排进菜单 / 想做」 */
.cb-top-acts{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:var(--space-4) 0 var(--space-2)}
.cb-top-acts .primary-button{flex:1 1 auto}
.cb-top-acts .secondary-button[aria-pressed=true]{border-color:var(--ink);color:var(--ink)}
input[type=checkbox],input[type=radio]{accent-color:var(--ink)}

/* ============ 菜谱本：目录 ============ */
.cb-index{list-style:none;margin:var(--space-2) 0 0;padding:0;border-top:1px solid var(--hairline)}
.cb-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px var(--space-3);align-items:center;min-height:calc(var(--tap-size) + var(--space-4));padding:var(--space-3) 0;border-bottom:1px solid var(--hairline);color:var(--ink)}
.cb-row:active{background:var(--surface)}
.cb-row-name{font:400 1.25rem/1.35 var(--font-serif);letter-spacing:.1em}
.cb-row-meta{grid-column:1;color:var(--muted);font-size:var(--text-xs);letter-spacing:.04em;line-height:1.5}
.cb-row-tag{grid-row:1/3;grid-column:2;font-style:normal;font-size:var(--text-xs);letter-spacing:.1em;color:var(--faint)}
.cb-row-tag.is-todo{color:var(--accent-text)}
.cb-row-tag.is-want{color:var(--ink)}
/* 这道菜：纯文字的标题 */
.cb-head{padding:var(--space-4) 0 var(--space-3);border-bottom:1px solid var(--hairline)}
.cb-head-eyebrow{margin:0 0 var(--space-2);color:var(--faint);font-size:11px;letter-spacing:var(--tracking-label)}
.cb-head h1{margin:0;font:400 2.1rem/1.25 var(--font-serif);letter-spacing:.14em;color:var(--ink)}
.cb-head-meta{margin:var(--space-2) 0 0;color:var(--muted);font-size:var(--text-xs);letter-spacing:.08em}

/* ============ 日记：按天翻 / 照片墙 / 月历 ============ */
.pg-modes{display:flex;align-items:center;gap:var(--space-5);max-width:28rem;margin:0 auto var(--space-3);font-size:var(--text-sm);letter-spacing:.2em}
.pg-modes a,.pg-modes span,.pg-modes button{display:inline-flex;align-items:center;min-height:var(--tap-size);color:var(--muted)}
.pg-modes [aria-current]{color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}
.pg-cal-button{margin-left:auto;padding:0;border:0;background:none;letter-spacing:.2em}
.cal-dialog{width:min(92vw,380px);padding:var(--space-4);border:1px solid var(--hairline);border-radius:var(--radius);background:var(--paper);color:var(--body)}
.cal-dialog::backdrop{background:var(--overlay)}
.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}
.cal-head h2{display:flex;align-items:baseline;gap:4px;margin:0;font-weight:400;letter-spacing:.2em}
.cal-head h2 b{font:300 2rem/1 var(--font-serif);color:var(--gold);letter-spacing:0}
.cal-head h2 small{margin-left:var(--space-2);color:var(--faint);font-size:var(--text-xs);letter-spacing:.1em}
.cal-next svg{transform:scaleX(-1)}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;margin:0;padding:0;list-style:none}
.cal-week{padding-bottom:var(--space-2);text-align:center;color:var(--faint);font-size:11px}
.cal-day{position:relative;display:grid;place-items:center;align-content:center;gap:1px;width:100%;aspect-ratio:1;min-height:40px;padding:0;border:1px solid transparent;border-radius:var(--radius);background:none;color:var(--muted)}
.cal-day b{font:400 var(--text-md)/1 var(--font-serif)}
.cal-day small{font-size:9px;line-height:1;color:var(--accent-text);letter-spacing:0}
.cal-day i{width:4px;height:4px;border-radius:50%;background:var(--ink)}
.cal-day.has-meals{color:var(--ink)}
.cal-day.is-today{border-color:var(--hairline)}
.cal-day.is-current{border-color:var(--ink)}
.cal-day:disabled{opacity:.35;cursor:default}
.cal-foot{display:flex;align-items:center;justify-content:space-between;margin-top:var(--space-3);color:var(--faint);font-size:var(--text-xs)}
.cal-foot span{display:inline-flex;align-items:center;gap:6px}
.cal-foot i{width:4px;height:4px;border-radius:50%;background:var(--ink)}

/* ============ 菜单 / 买菜：收成墨色（红色只留给「还没买」这类提醒） ============ */
.mn-date small{color:var(--muted)}
.mn-day[aria-current]{border-color:var(--ink);background:var(--ink);color:var(--paper)}
.mn-mode button[aria-pressed=true]::after{background:var(--ink)}
.mn-card.is-done{border-color:var(--frame)}
.mn-noren{padding:var(--space-3) 0 var(--space-2) var(--space-4);background:none;color:var(--ink);border-bottom:1px solid var(--frame)}
.mn-noren::before{display:none}
.mn-noren h2{color:var(--ink);letter-spacing:.32em;font-weight:400}
.mn-done{border-color:var(--ink);color:var(--ink)}
.mn-diners{border-color:var(--hairline)}
.mn-diners button{color:var(--ink)}
.mn-noren .mn-x{color:var(--muted)}
.mn-noren .mn-x.is-armed{color:var(--accent-text)}
.mn-cover-seal{background:var(--washi);color:var(--faint);box-shadow:none;border:1px solid var(--hairline)}
.mn-slot[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.mn-handwrite .mn-input{border-color:var(--hairline)}
.mn-add.is-buy{border-color:var(--ink);background:var(--ink);color:var(--paper)}
.mn-row input:checked+.mn-check{border-color:var(--ink);background-color:var(--ink)}
.mn-tags{color:var(--muted)}
.mn-app{border-color:var(--hairline)}
.mn-links a{color:var(--ink);border-bottom-color:var(--hairline)}
.mn-step-no{border-color:var(--hairline);color:var(--ink)}
.mn-group-box h3{background:var(--surface);color:var(--ink)}
.mn-fold-cue{color:var(--muted)}
.mn-dock-link{border-color:var(--ink);color:var(--ink)}
.mn-move.is-buy{border-color:var(--ink);color:var(--ink)}
.mn-group[data-tone] h3 i{background:var(--faint)}
.mn-pick{margin:0 var(--space-4)}
.mn-nutrition{margin:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--hairline)}
.mn-nutrition>button{min-height:44px}
.mn-nutrition-hint{margin:var(--space-2) 0 0;color:var(--muted);font-size:var(--text-xs);line-height:1.7}
.mn-nutrition-answer{margin-top:var(--space-3);line-height:1.8}
.mn-nutrition-answer>p{margin:0 0 var(--space-2);white-space:pre-wrap}
.mn-nutrition-stale{margin:var(--space-2) 0;color:var(--accent-text);font-size:var(--text-sm);line-height:1.7}
button.hm-act{padding:0;border:0;background:none;font-family:inherit}

/* Optional skin. Everything outside the selector keeps the original layout. */
.green-art,.green-diary-date{display:none}
.section-link>.icon{display:none}
:root[data-skin=green]{--paper:#f8f9f3;--surface:#edf0e2;--ink:#19392d;--body:#35463c;--muted:#6c766d;--faint:#818c7c;--hairline:#e3e8db;--accent:#a85b3d;--accent-text:#a85b3d;--accent-pressed:#8b4a34;--on-accent:#fffaf3;--primary:#284e37;--on-primary:#fffef7;--gold:#284e37;--washi:#fffefa;--indigo:#284e37;--indigo-soft:#edf0e2;--matcha:#416445;--matcha-ink:#284e37;--matcha-soft:#edf0e2;--turmeric:#a85b3d;--turmeric-ink:#905034;--turmeric-soft:#fff0e1;--accent-soft:#fff0e1;--frame:#e3e8db;--desk:#f8f9f3;--radius:12px;--tracking-label:.04em;--content-width:680px;--skin-nav:calc(68px + env(safe-area-inset-bottom,0px))}
@media(prefers-color-scheme:dark){:root[data-skin=green]{--paper:#101c16;--surface:#203426;--ink:#e2ecdb;--body:#c7d5c6;--muted:#a1b49e;--faint:#8b9c85;--hairline:#304433;--accent:#efa87f;--accent-text:#efa87f;--accent-pressed:#da9973;--on-accent:#16271c;--primary:#b0c99d;--on-primary:#102317;--gold:#b0c99d;--washi:#17271e;--indigo:#b0c99d;--indigo-soft:#203426;--matcha:#b0c99d;--matcha-ink:#d7e5ce;--matcha-soft:#203426;--turmeric:#efa87f;--turmeric-ink:#efa87f;--turmeric-soft:#3c3022;--accent-soft:#3c3022;--frame:#304433;--desk:#101c16}}
:root[data-skin=green] body{background:var(--paper);font-size:15px}
:root[data-skin=green] h1,:root[data-skin=green] h2,:root[data-skin=green] h3{letter-spacing:.03em}
:root[data-skin=green] h1{font-size:24px}
:root[data-skin=green] h2{font-size:18px}
:root[data-skin=green] h3{font-size:16px}
:root[data-skin=green] button,:root[data-skin=green] label,:root[data-skin=green] legend,:root[data-skin=green] input,:root[data-skin=green] select,:root[data-skin=green] textarea{font-family:var(--font-sans);letter-spacing:0}
:root[data-skin=green] .app-header{max-width:680px;padding:12px 20px 0;min-height:56px}
:root[data-skin=green] .brand-name{letter-spacing:.04em;font-size:19px}
:root[data-skin=green] .seal{background:none;color:var(--muted);width:17px;font-size:13px}
:root[data-skin=green] .brand{gap:5px}
:root[data-skin=green] .app-main{max-width:680px;padding:20px 20px 30px}
:root[data-skin=green] .section-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);z-index:15;width:100%;max-width:680px;height:var(--skin-nav);overflow:visible;background:var(--paper);border-top:1px solid var(--hairline);border-bottom:0;padding-bottom:env(safe-area-inset-bottom,0px)}
:root[data-skin=green] .section-nav-list{display:flex;justify-content:space-around;gap:0;padding:4px 10px 0;min-width:0;max-width:none;height:64px}
:root[data-skin=green] .section-nav-list li{flex:1;min-width:0}
:root[data-skin=green] .section-link{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:56px;padding:0;font:12px/1.4 var(--font-sans);letter-spacing:0;color:var(--muted)}
:root[data-skin=green] .section-link>.icon{display:block;width:22px;height:22px}
:root[data-skin=green] .section-link[aria-current]{color:var(--primary);font-weight:500}
:root[data-skin=green] .section-link[aria-current]::after{display:none}
:root[data-skin=green] .primary-button{background:var(--primary);color:var(--on-primary);border:0;border-radius:10px;letter-spacing:0;font-family:var(--font-sans);min-height:44px}
:root[data-skin=green] .secondary-button,:root[data-skin=green] .quiet-button{border-radius:10px;font-family:var(--font-sans);letter-spacing:0}
:root[data-skin=green] .text-link,:root[data-skin=green] .text-button,:root[data-skin=green] .small{letter-spacing:0}
:root[data-skin=green] .page-heading{margin-bottom:18px}
:root[data-skin=green] .green-art{display:block}
:root[data-skin=green] .cb-index{border-top:0;margin-top:10px}
:root[data-skin=green] .cb-row{grid-template-columns:64px minmax(0,1fr) auto;gap:3px 12px;min-height:88px;padding:12px 0;border-bottom-color:var(--hairline)}
:root[data-skin=green] .cb-row-art{grid-column:1;grid-row:1/3;width:64px;height:64px;object-fit:contain;border-radius:12px;background:#f7f8f2}
:root[data-skin=green] .cb-row-name{grid-column:2;grid-row:1;font-size:18px;letter-spacing:.02em;line-height:1.5}
:root[data-skin=green] .cb-row-meta{grid-column:2;grid-row:2;font-size:12px;letter-spacing:0}
:root[data-skin=green] .cb-row-tag{grid-column:3;grid-row:1/3;font-size:11px;letter-spacing:0}
:root[data-skin=green] .rc-tabs{border:0;margin:8px 0 12px;gap:16px}
:root[data-skin=green] .rc-tab{font:14px/1.6 var(--font-sans);letter-spacing:0}
:root[data-skin=green] .rc-filters{margin-bottom:12px}
:root[data-skin=green] .rc-filters input{min-height:44px;border:0;background:var(--surface);border-radius:12px}
:root[data-skin=green] .rc-chips{gap:7px}
:root[data-skin=green] .rc-chip{border:0;border-radius:20px;background:var(--surface);font-size:12px;padding:7px 12px}
:root[data-skin=green] .rc-chip[aria-pressed=true]{background:var(--primary);color:var(--on-primary)}
:root[data-skin=green] .cb-head{position:relative;padding:8px 90px 12px 0;border:0;min-height:95px}
:root[data-skin=green] .cb-head h1{font-size:25px;letter-spacing:.03em;line-height:1.5}
:root[data-skin=green] .cb-head-eyebrow{display:none}
:root[data-skin=green] .cb-head-meta{font-size:12px;letter-spacing:0}
:root[data-skin=green] .cb-head-art{position:absolute;right:0;top:8px;width:80px;height:80px;object-fit:contain;border-radius:14px;background:#f7f8f2}
:root[data-skin=green] .cb-top-acts{margin:10px 0 16px;gap:10px}
:root[data-skin=green] .cb-top-acts .primary-button{flex:initial;width:auto;padding:10px 18px}
:root[data-skin=green] .cb-home{padding:16px;background:var(--surface);border:0;border-radius:14px;margin:16px 0}
:root[data-skin=green] .cb-home.is-empty{padding:0;background:none}
:root[data-skin=green] .cb-home.is-empty>h2,:root[data-skin=green] .cb-home.is-empty>p{display:none}
:root[data-skin=green] .cb-base-pick{gap:6px;margin:0}
:root[data-skin=green] .cb-base-pick button{font-size:12px;padding:7px 9px;min-height:36px}
:root[data-skin=green] .cb-panel,:root[data-skin=green] .cb-sources{border:0;padding:0}
:root[data-skin=green] .cb-segment{border:0;background:var(--surface);padding:4px;border-radius:12px;margin-bottom:15px;gap:4px}
:root[data-skin=green] .cb-segment button{border:0;border-radius:9px;font:13px/1.5 var(--font-sans);letter-spacing:0;padding:8px}
:root[data-skin=green] .cb-segment button[aria-selected=true]{background:var(--washi);color:var(--ink)}
:root[data-skin=green] .lib-lines li{padding:8px 0;font-size:15px}
:root[data-skin=green] .lib-steps{font-size:15px}
:root[data-skin=green] .pg{max-width:640px}
:root[data-skin=green] .pg-modes{max-width:none;font:13px/1.5 var(--font-sans);letter-spacing:0;margin-bottom:12px}
:root[data-skin=green] .pg-pad::before,:root[data-skin=green] .pg-pad::after,:root[data-skin=green] .pg-sheet::before{display:none}
:root[data-skin=green] .pg-sheet{padding:0;background:transparent;box-shadow:none;border:0;border-radius:0}
:root[data-skin=green] .pg-head,:root[data-skin=green] .pg-num,:root[data-skin=green] .pg-week,:root[data-skin=green] .pg-almanac,:root[data-skin=green] .pg-tear{display:none}
:root[data-skin=green] .green-diary-date{display:block;font:16px/1.7 var(--font-sans);letter-spacing:0;color:var(--muted);margin:0 0 16px}
:root[data-skin=green] .pg-meals{gap:18px}
:root[data-skin=green] .pg-meal{padding:14px;background:var(--washi);border-radius:15px;gap:8px}
:root[data-skin=green] .pg-meal.is-big .pg-photo{aspect-ratio:4/3;border-radius:10px;margin:0 0 4px;width:100%;max-width:none}
:root[data-skin=green] .pg-dishes,:root[data-skin=green] .pg-meal.is-big .pg-dishes{font:500 18px/1.8 var(--font-serif);letter-spacing:.02em}
:root[data-skin=green] .pg-more{grid-template-columns:1fr;gap:15px;border:0;padding:0}
:root[data-skin=green] .pg-more .pg-photo{aspect-ratio:4/3}
:root[data-skin=green] .pg-quote{font:13px/1.8 var(--font-sans)}
:root[data-skin=green] .pg-blank{font:15px/1.7 var(--font-sans);letter-spacing:0;padding:24px 0}
:root[data-skin=green] .pg-strip{margin-top:20px}
:root[data-skin=green] .journal-footer{margin-top:20px;border:0;padding-top:8px}
:root[data-skin=green] .mn-dock,:root[data-skin=green] .lib-actions,:root[data-skin=green] .record-submit{bottom:var(--skin-nav)}
.gs-home{max-width:640px;margin:auto}.gs-home .green-page-heading h1{font:600 31px/1.4 var(--font-serif);letter-spacing:.02em;margin:0}.gs-subtitle{font-size:14px;color:var(--muted);margin:6px 0 18px}.gs-card{position:relative;padding:18px;background:var(--surface);border-radius:18px;overflow:hidden}.gs-card-label{display:flex;justify-content:space-between;align-items:center;gap:10px;font:14px/1.6 var(--font-sans);color:var(--ink);margin:0 0 12px}.gs-card-label small{font-size:12px;color:var(--muted)}.gs-hero-art{position:absolute;right:3px;top:52px;width:148px;height:150px;object-fit:contain;pointer-events:none}.gs-dishes{list-style:none;padding:0 115px 0 0;margin:0 0 18px;position:relative}.gs-dishes li{margin:0 0 10px}.gs-dish-name{font:500 18px/1.6 var(--font-serif);letter-spacing:.02em;color:var(--ink)}.gs-version,.gs-need{font-size:11px;color:var(--muted);line-height:1.65;margin:2px 0 0}.gs-need.is-need{color:var(--accent-text)}.gs-main-action{position:relative;display:inline-flex!important;align-items:center;justify-content:center;width:100%;padding:12px!important;min-height:46px!important;font-size:15px!important}.gs-empty-copy{position:relative;max-width:calc(100% - 100px);min-height:120px;display:flex;flex-direction:column;justify-content:center}.gs-empty-copy h2{font:500 19px/1.6 var(--font-serif);margin:0 0 5px}.gs-empty-actions{display:flex;gap:10px;position:relative}.gs-empty-actions a{flex:1;text-align:center;font-size:13px;padding:9px 6px}.gs-shopping{display:flex;align-items:center;justify-content:space-between;min-height:65px;background:var(--turmeric-soft);color:var(--turmeric-ink);border-radius:14px;padding:14px 16px;margin-top:14px;font-size:14px}.gs-section{margin-top:24px}.gs-section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}.gs-section-heading h2{font:500 18px/1.6 var(--font-sans);margin:0}.gs-section-heading .text-link{font-size:12px;text-decoration:none}.gs-wants{list-style:none;padding:0;margin:0}.gs-wants li{display:flex;align-items:center;gap:12px;padding:11px 0}.gs-wants li+li{border-top:1px solid var(--hairline)}.gs-small-art{width:52px;height:52px;object-fit:contain;flex:none;border-radius:10px;background:#f7f8f2}.gs-wants li>div{flex:1;min-width:0}.gs-want-name{font:500 17px/1.6 var(--font-serif);color:var(--ink)}.gs-wants .small{font-size:12px;margin:3px 0 0}.gs-plus{display:grid;place-items:center;width:42px;height:42px;border:1px solid var(--hairline);border-radius:50%;font-size:22px;flex:none}.gs-tomorrow{font-size:14px;line-height:1.8}.gs-home .hm-foot{margin-top:24px}.gs-home .hm-tools{font-family:var(--font-sans);letter-spacing:0}
@media(max-width:350px){:root[data-skin=green] .app-main{padding-left:16px;padding-right:16px}.gs-hero-art{width:120px;right:0}.gs-dishes{padding-right:90px}.gs-dish-name{font-size:17px}:root[data-skin=green] .cb-row{grid-template-columns:54px minmax(0,1fr) auto;gap:3px 9px}:root[data-skin=green] .cb-row-art{width:54px;height:54px}:root[data-skin=green] .cb-row-name{font-size:17px}}

.gs-record-menu{display:inline-block;margin-top:14px;font-size:13px}

/* Full-page footer stays below content, including short diary and loading pages. */
body{display:flex;flex-direction:column;min-height:100vh;min-height:100svh}
.app-header{width:100%;flex:none}
.section-nav{flex:none}
.app-main{width:100%;flex:1 0 auto;margin:0 auto}
.cb-base-details summary{font:14px/1.7 var(--font-sans);color:var(--muted);cursor:pointer;padding:10px 0;letter-spacing:0}
.cb-base-details[open] summary{color:var(--ink)}
:root[data-skin=green] .cb-home.is-empty{margin:18px 0 8px}
:root[data-skin=green] .cb-base-details .cb-base-pick{display:flex;flex-direction:column;align-items:flex-start;padding:4px 0 8px}
:root[data-skin=green] .cb-base-details button{background:none;border:0;border-radius:0;color:var(--body);padding:8px 0;min-height:44px;text-align:left}
:root[data-skin=green] .cb-segment button{min-height:44px;background:none;color:var(--body)}
:root[data-skin=green] .cb-segment button[aria-selected=true]{background:var(--primary);color:var(--on-primary);font-weight:600}
.gs-next .small{margin-bottom:0}
.gs-season-list{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px 18px}
.gs-season-link{display:inline-flex;align-items:center;min-height:44px;font-size:14px;text-decoration:underline;text-decoration-color:var(--hairline);text-underline-offset:5px}
.page-loading{max-width:640px;margin:auto}
.page-loading-title{font:600 24px/1.4 var(--font-serif);color:var(--ink);margin:0 0 8px}
.loading-card,.loading-row{border-radius:14px;background:var(--surface);animation:loading-breathe 1.6s ease-in-out infinite}
.loading-card{min-height:196px;padding:24px;margin-top:22px;display:flex;flex-direction:column;gap:18px}
.loading-card span{display:block;height:13px;max-width:75%;background:var(--hairline);border-radius:8px}
.loading-card span:nth-child(2){max-width:52%}.loading-card span:nth-child(3){max-width:62%;margin-top:30px}
.loading-row{height:52px;margin-top:18px}
@keyframes loading-breathe{50%{opacity:.55}}
@media(prefers-reduced-motion:reduce){.loading-card,.loading-row{animation:none}}

/* Green recording actions are in normal flow; the paper stamp stays unchanged. */
.green-page-heading{display:none}
:root[data-skin=green] .record-stamp{display:none}
:root[data-skin=green] .green-page-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 8px}
:root[data-skin=green] .green-page-heading h1{min-width:0;margin:0;flex:1}
:root[data-skin=green] .inline-record-link{display:inline-flex;align-items:center;justify-content:center;flex:none;min-height:44px;padding:8px 12px;border:1px solid var(--hairline);border-radius:23px;color:var(--ink);font:14px/1.5 var(--font-sans);white-space:nowrap}
:root[data-skin=green] .pg>.green-page-heading{margin-bottom:12px}
@media(max-width:350px){:root[data-skin=green] .gs-home .green-page-heading h1{font-size:24px}:root[data-skin=green] .inline-record-link{padding:8px 10px}}

/* v58: one menu overview, quiet next steps, the same palette on every page. */
.gs-home .green-page-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.gs-day{margin:26px 0 0}.gs-day.is-today{margin-top:22px}.gs-day .gs-card{padding:15px 16px;margin:10px 0;border-radius:12px;overflow:visible;background:var(--surface)}
.gs-day.is-today>.gs-card:first-of-type{border-top:3px double var(--matcha);padding-top:14px}
.gs-day .gs-card-label{margin:0 0 8px;font-size:13px}.gs-day .gs-dishes{padding:0;margin:0;position:static}
.gs-day .gs-dishes li{display:flex;align-items:center;gap:12px;margin:0;padding:8px 0}
.gs-day .gs-dishes li>div{flex:1;min-width:0}.gs-day .gs-dish-name{font-size:18px;overflow-wrap:anywhere;text-decoration:none}
.gs-day .gs-dishes .text-link{flex:none;font-size:12px;min-height:44px;display:flex;align-items:center}
.gs-menu-art{width:54px;height:54px;object-fit:contain;flex:none;border-radius:10px;background:#f7f8f2}
.gs-day .gs-version{font-size:11px;margin:3px 0 0;line-height:1.6}.gs-card-actions{display:flex;justify-content:flex-end;padding-top:3px}.gs-card-actions a{min-height:40px;display:flex;align-items:center;font-size:13px}
.gs-missing{display:flex;gap:4px 16px;flex-wrap:wrap;margin:5px 0}.gs-missing a{min-height:44px;display:flex;align-items:center;font-size:13px}
.gs-day-empty{padding:13px 0}.gs-day-empty>p{margin:0 0 12px}.gs-day .gs-empty-actions{align-items:center;gap:18px;flex-wrap:wrap}.gs-day .gs-empty-actions a{flex:none;padding:9px 14px}.gs-day .gs-empty-actions .text-link{padding:9px 0}
.gs-day .gs-shopping{margin-top:8px;min-height:52px;padding:12px 14px;border-radius:10px}
.gs-want-fold{display:flex;align-items:center;min-height:56px;margin-top:24px;border-top:1px solid var(--hairline);color:var(--body);font-size:14px;text-decoration:none}
.gs-onboarding{padding:20px 0 24px;text-align:center;max-width:340px;margin:auto}.gs-welcome-art{width:140px;height:140px;object-fit:contain;margin-bottom:15px}.gs-onboarding h2{font:500 23px/1.5 var(--font-serif)}.gs-onboarding>p{color:var(--muted);font:14px/1.8 var(--font-sans);margin:12px 0 24px}.gs-onboarding>.primary-button{display:inline-flex;padding:11px 28px;min-height:46px}.gs-onboarding-links{display:flex;justify-content:center;gap:26px;margin-top:16px}.gs-onboarding-links a{display:flex;align-items:center;min-height:44px;font-size:13px}
.mn-thumb.is-drawn img,.mn-hero-cover.is-drawn img{width:100%;height:100%;object-fit:contain}.mn-book-hint{font:12px/1.7 var(--font-sans);color:var(--muted);margin:0 0 10px 68px}.mn-book-hint a{display:inline-flex;align-items:center;min-height:40px;margin-left:5px}.mn-next-recipes{margin:24px 0}.mn-next-recipes h2{font-size:17px}.mn-next-recipes>a{display:block;min-height:44px;padding:10px 0}.mn-dish-page>.mn-recipe-box{margin-top:10px;margin-bottom:24px}.mn-dish-page>.mn-ing-box{padding:14px 0;border-top:1px solid var(--hairline)}.mn-ing-box>summary{display:flex;gap:14px;align-items:center;min-height:48px;cursor:pointer}.mn-ing-box>summary small{color:var(--muted);font-size:12px}.mn-ing-box>summary::after{content:'＋';margin-left:auto;color:var(--muted)}.mn-ing-box[open]>summary::after{content:'−'}.mn-dish-page>.mn-recipe-box h2{font-size:19px}
.mn-bought .mn-row-name{text-decoration-line:line-through;text-decoration-thickness:1px;text-decoration-color:var(--muted)}
.mn-body:has(.mn-shop-actions){position:relative;padding-bottom:24px}.mn-body:has(.mn-shop-actions)::after{content:'';display:block;height:6px;background:linear-gradient(135deg,var(--paper) 25%,transparent 25%) -3px 0/12px 12px,linear-gradient(225deg,var(--paper) 25%,var(--hairline) 25%) -3px 0/12px 12px;opacity:.5;margin-top:24px}
.pg-photo{position:relative;border:6px solid var(--washi);box-shadow:none}.pg-photo::after{content:'';display:none}.dt-ai-description{margin:18px 0;color:var(--muted);font:13px/1.8 var(--font-sans)}.dt-ai-description summary{cursor:pointer;min-height:40px;display:flex;align-items:center;gap:8px}.dt-ai-description summary::after{content:'＋';font-size:13px}.dt-ai-description[open] summary::after{content:'−'}.dt-ai-description>p{margin:6px 0 0}.ai-label{display:block;color:var(--muted);font:11px/1.6 var(--font-sans);letter-spacing:0;margin-bottom:2px}.pg-quote::before,.pg-quote::after{content:none}
:root[data-skin=green] .green-diary-date.is-term-day{color:var(--accent-text)}.green-diary-date.is-term-day::after{content:'节';display:inline-flex;align-items:center;justify-content:center;border:1px solid currentColor;border-radius:3px;width:21px;height:21px;margin-left:8px;font:12px/1 var(--font-serif)}
.bowl-rating{display:flex;align-items:center;gap:4px;min-height:48px;flex-wrap:wrap}.rating-bowl{position:relative;width:44px;height:44px;display:inline-block;color:var(--matcha);flex:none}.bowl-shape{position:absolute;left:5px;right:5px;top:12px;height:20px;border:1.4px solid currentColor;border-radius:2px 2px 18px 18px;overflow:hidden;opacity:.55}.bowl-shape::before{content:'';position:absolute;inset:0;background:var(--matcha);transform:translateX(-100%);opacity:.65}.rating-bowl.is-half .bowl-shape::before{transform:translateX(-50%)}.rating-bowl.is-full .bowl-shape::before{transform:none}.rating-bowl.is-half .bowl-shape,.rating-bowl.is-full .bowl-shape{opacity:1}.bowl-shape::after{content:'';position:absolute;left:9px;right:9px;bottom:0;border-bottom:2px solid currentColor}.bowl-pick{position:absolute;top:0;bottom:0;width:50%;padding:0;min-height:44px;border:0;border-radius:4px;background:none!important;color:inherit;z-index:1}.bowl-pick.half-1{left:0}.bowl-pick.half-2{right:0}.bowl-pick:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.bowl-clear{font-size:12px;min-height:44px;margin-left:8px}.dt-recorded{background:var(--surface);padding:15px 16px;border-radius:12px;margin-bottom:20px}.dt-recorded>b{font:500 17px/1.5 var(--font-serif)}.dt-recorded p{font-size:13px;color:var(--muted);line-height:1.7}.dt-recorded .row{gap:20px}
.cb-added{animation:planned-in .3s ease-out}@keyframes planned-in{from{opacity:.4;transform:translateY(7px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.cb-added{animation:none}}
@media(max-width:350px){.gs-menu-art{width:44px;height:44px}.gs-day .gs-dishes li{gap:9px}.gs-day .gs-dish-name{font-size:17px}.bowl-rating{gap:0}.rating-bowl{width:42px}.bowl-clear{margin-left:3px}}
/* v58 cookbook flow: uses the existing day/night palette. */
.cb-home-tag{display:inline-block;margin:4px 0 0 8px;padding:2px 6px;border:1px solid var(--hairline);border-radius:5px;color:var(--muted);font:11px/1.5 var(--font-sans);vertical-align:middle;letter-spacing:0}
.cb-discovery{display:flex;align-items:center;min-height:48px;padding:12px 0;border-top:1px solid var(--hairline);margin-top:16px}
.cb-review-notice{font:14px/1.7 var(--font-sans);padding:11px 13px;background:var(--surface);border-radius:10px;margin:12px 0}
.cb-collected{padding:15px 16px;background:var(--surface);border-radius:14px;margin:0 0 18px}
.cb-collected .cb-saved{font:500 14px/1.7 var(--font-sans);margin:0 0 10px;color:var(--ink)}
.cb-collected .cb-actions{display:flex;align-items:center;gap:18px;margin:0;flex-wrap:wrap}
.cb-concise .cb-head{margin:15px 0}.cb-concise .cb-head h1{overflow-wrap:anywhere}
.cb-cooking{margin:24px 0}.cb-cooking h2{font:500 19px/1.6 var(--font-serif);margin-bottom:12px}
.cb-concise .cb-review-link{margin:15px 0}.cb-concise .cb-panel-links{display:flex;gap:18px;flex-wrap:wrap;margin:20px 0}
.cb-processing{margin:18px 0;padding:16px;border:1px solid var(--hairline);border-radius:12px}.cb-processing button:disabled{opacity:.5;cursor:wait}
.cb-seasoning-fold{grid-column:1/-1;min-width:0;width:100%;border-top:1px solid var(--hairline);margin-top:7px;padding-top:7px}
.cb-seasoning-fold summary{cursor:pointer;font:13px/1.7 var(--font-sans);padding:9px 0;color:var(--muted)}
.cb-seasoning-fold label{display:flex;align-items:center;gap:8px;min-height:42px}.cb-choice-state{color:var(--muted);font-size:12px;white-space:nowrap}
.cb-added{padding:22px 0}.cb-added h1{font:500 25px/1.5 var(--font-serif)}.cb-added .cb-actions{display:flex;gap:12px;flex-wrap:wrap;margin:22px 0}
.cb-choice-preserved{color:var(--muted)}.cb-choice-preserved input{opacity:.45}
@media(max-width:480px){.cb-home-tag{display:table;margin-left:0}.cb-collected .primary-button{min-width:125px}.cb-added .primary-button{width:100%;text-align:center}.cb-choice-state{margin-left:auto}}
.photo-date{position:absolute;right:8px;bottom:6px;padding:2px 5px;color:#3d4237;background:#fffdf2;font:12px/1.5 var(--font-serif);letter-spacing:.06em;pointer-events:none;margin:0;border-radius:2px}.dt-shot{position:relative;border:6px solid var(--washi)}.dt-shot .photo-date{right:7px;bottom:6px}.diary-empty-art{display:block;width:110px;height:110px;object-fit:contain;margin:0 auto 15px}
.gs-welcome-art{margin-left:auto;margin-right:auto}
.mn-dish-page>.mn-recipe-box{border:0;border-radius:0;background:none;padding:0}.mn-dish-page>.mn-ing-box{border-left:0;border-right:0;border-bottom:0;border-radius:0;background:none;padding-bottom:0}.mn-hero-cover.is-drawn,.mn-thumb.is-drawn{background:transparent}
.pg-photo,.dt-shot{border-color:#f5f1e7}

/* Current build, below content and clear of the bottom navigation. */
.app-version{width:100%;flex:none;max-width:680px;margin:0 auto;padding:18px 20px calc(var(--skin-nav,0px) + 28px);border-top:1px solid var(--hairline);text-align:center;color:var(--muted);font:12px/1.5 var(--font-sans);letter-spacing:.02em}
/* A shopping entry remains available before any meal has been planned. */
.gs-shopping.is-quiet{background:var(--surface);color:var(--body)}.gs-first>.gs-shopping{margin-bottom:8px}.mn-shopping-title{margin:0 0 20px!important;font:600 26px/1.5 var(--font-serif)!important}.mn-shop-add{display:flex;align-items:center;gap:10px}.mn-shop-add .mn-input{flex:1;min-width:0}.mn-shop-add>button{flex:none;min-height:44px;font-size:14px;padding:8px 14px}.mn-shopping-line{display:flex;align-items:center;gap:6px}.mn-shopping-line>.mn-row{flex:1;min-width:0}.mn-extra-remove{flex:none;width:44px;min-height:44px;color:var(--muted)}.mn-extra-remove.is-armed{width:auto;font-size:13px;color:var(--accent-text)}.mn-shopping-plan{display:inline-flex;align-items:center;min-height:44px;margin-top:16px;font-size:13px}
/* Recipe planning success stays above the source instructions. */
.rc-page > .cb-added{padding:14px 16px;margin:0 0 18px;border-radius:14px;background:var(--surface);border:1px solid var(--hairline)}
.rc-page > .cb-added .cb-eyebrow{margin:0 0 4px}
.rc-page > .cb-added h2{font:500 19px/1.5 var(--font-serif);margin:0}
.rc-page > .cb-added .cb-actions{margin:12px 0 8px;gap:8px}
@media(max-width:480px){.rc-page > .cb-added .primary-button{width:auto;min-width:0}}
/* Keep tap targets on the label rather than enlarging the checkbox itself. */
.rc-rows label{display:grid;grid-template-columns:20px minmax(0,1fr);align-items:start;gap:5px 10px;min-height:44px;padding:8px 0}.rc-rows label>small{grid-column:2;line-height:1.6}.rc-rows input[type=checkbox],.rc-dialog input[type=checkbox],.rc-choices input[type=checkbox]{width:20px;height:20px;min-height:20px;flex:none;margin:3px 0}
.mn-extra-remove[data-armed="1"]{width:auto;font:13px/1.5 var(--font-sans);color:var(--accent-text)}.mn-extra-cancel{font-size:12px;min-height:44px;flex:none}
.bowl-shape{left:4px;right:4px;top:6px;height:32px;border:0;border-radius:0;overflow:visible}.bowl-shape::before,.bowl-shape::after{display:none}.bowl-shape>.icon,.bowl-fill>.icon{width:100%;height:100%}.bowl-fill{display:none;position:absolute;inset:0;opacity:.5}.bowl-fill path{fill:currentColor}.rating-bowl.is-full .bowl-fill{display:block}.rating-bowl.is-half .bowl-fill{display:block;clip-path:inset(0 50% 0 0)}
.dt-plan-conflict{margin:18px 0;padding:16px;background:var(--turmeric-soft);border-radius:12px}.dt-plan-conflict h2{font:500 18px/1.5 var(--font-serif);margin:0 0 10px}.dt-plan-conflict p{font:14px/1.8 var(--font-sans);margin:5px 0}.dt-plan-conflict .row{gap:12px;flex-wrap:wrap;margin-top:12px}

/* ---------- v59 · Claude 细节打磨（只动展示层，不改布局框架） ---------- */
/* 弹窗：「关闭」回到标题右上角；勾选框和文字之间留出空隙 */
.rc-dialog>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:nowrap}
.rc-dialog>header h2{flex:1;min-width:0;margin:0}
.rc-dialog>header .text-button{flex:none;min-height:36px;padding:2px 0 2px 8px;font-size:14px;color:var(--muted)}
.rc-choices label{gap:10px}
/* 首页日期行：小字日期 + 节气；节气当天节气名用一枚小红印 */
.gs-dateline{display:flex;align-items:center;gap:10px;margin:0 0 2px;font:13px/1.6 var(--font-sans);color:var(--muted);letter-spacing:.04em}
.gs-term{font-family:var(--font-serif);color:var(--body)}
.gs-term::before{content:"";display:inline-block;width:3px;height:3px;margin:0 10px 3px 0;border-radius:50%;background:var(--faint);vertical-align:middle}
.gs-term.is-today{padding:1px 7px;border:1px solid var(--accent-text);border-radius:3px;color:var(--accent-text);transform:rotate(-2deg)}
.gs-term.is-today::before{display:none}
/* 小标题后面一根细线，把「标题 —— 写菜单 ›」连成一行 */
.gs-section-heading{display:flex;align-items:center;gap:12px}
.gs-section-heading h2{flex:none;margin:0}
.gs-section-heading::after{content:"";order:1;flex:1;height:1px;background:var(--hairline)}
.gs-section-heading>a{order:2;flex:none}
/* 已经记下的一顿：退成描边卡片，还没做的那顿更显眼 */
.gs-day .gs-card.is-done{background:transparent;box-shadow:inset 0 0 0 1px var(--hairline)}
.gs-day.is-today>.gs-card.is-done:first-of-type{border-top-color:var(--hairline)}
.gs-card.is-done .gs-dish-name{color:var(--body)}
.gs-card.is-done .gs-menu-art{opacity:.82}
.gs-done-mark{display:inline-flex;align-items:center;gap:4px;color:var(--primary)!important}
.gs-done-mark::before{content:"";width:9px;height:5px;margin-bottom:3px;border-left:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg)}
/* 菜品小图：一圈很淡的描边，像盛在小碟里 */
.gs-menu-art{box-shadow:inset 0 0 0 1px var(--hairline)}
/* 买齐了：前面加一个小勾 */
.gs-shopping-check{display:inline-block;flex:none;width:10px;height:5px;margin:0 9px 4px 2px;border-left:1.5px solid var(--primary);border-bottom:1.5px solid var(--primary);transform:rotate(-45deg)}
/* 底部导航：当前页的图标下面衬一块浅色胶囊 */
:root[data-skin=green] .section-link>.icon{box-sizing:content-box;padding:3px 14px;border-radius:999px;transition:background .2s}
:root[data-skin=green] .section-link[aria-current]>.icon{background:var(--surface)}
/* 按下去的手感 */
.gs-card a:active,.gs-shopping:active,.gs-want-fold:active,.primary-button:active,.secondary-button:active{transform:scale(.98);transition:transform .08s}
@media(prefers-reduced-motion:reduce){:root[data-skin=green] .section-link>.icon{transition:none}.gs-card a:active,.gs-shopping:active,.gs-want-fold:active,.primary-button:active,.secondary-button:active{transform:none}}
.gs-shopping.is-quiet{justify-content:flex-start}
/* 菜谱本「N 道菜等你确认」：整条可点，前面一个小红点，不再是一大块空底色 */
.cb-review-notice{padding:0;background:transparent;box-shadow:inset 0 0 0 1px var(--hairline)}
.cb-review-notice a{display:flex;align-items:center;gap:10px;min-height:46px;padding:10px 14px;color:var(--ink);text-decoration:none}
.cb-review-notice a::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:var(--accent-text)}
/* 勾选框用主色，夜间不再是灰底方块 */
:root[data-skin=green] input[type=checkbox]{accent-color:var(--primary)}

/* ---------- v59.1 · 古风小纹样（只在绿皮肤；纹样都用 mask 着色，白天夜间自动跟色） ---------- */
:root[data-skin=green]{
 --orn:color-mix(in srgb,var(--primary) 42%,transparent);
 --orn-soft:color-mix(in srgb,var(--primary) 22%,transparent);
 /* 云头：小小一朵卷云，用作分隔中心 */
 --yuntou:url(/patterns/yuntou.svg);
}
/* 3. 小标题前一枚小菱形 */
:root[data-skin=green] .gs-section-heading h2::before,:root[data-skin=green] .cb-cooking h2::before{content:"";display:inline-block;width:6px;height:6px;margin:0 10px 4px 1px;border:1px solid var(--primary);transform:rotate(45deg);vertical-align:middle}
/* 4. 页脚：云头分隔，代替一根平线 */
:root[data-skin=green] .app-version{border-top:0;position:relative;padding-top:34px}
:root[data-skin=green] .app-version::before{content:"";position:absolute;left:50%;top:8px;width:160px;height:12px;transform:translateX(-50%);background:var(--orn);-webkit-mask:var(--yuntou) no-repeat center/28px 12px,linear-gradient(#000,#000) no-repeat left 10px/58px 1px,linear-gradient(#000,#000) no-repeat right 10px/58px 1px;mask:var(--yuntou) no-repeat center/28px 12px,linear-gradient(#000,#000) no-repeat left 10px/58px 1px,linear-gradient(#000,#000) no-repeat right 10px/58px 1px}
/* 5. 做法序号：一二三 放进细框小方印 */
:root[data-skin=green] .lib-step-no{display:inline-grid;place-items:center;width:24px;height:24px;padding:0;margin-top:2px;border:1px solid currentColor;border-radius:3px;font-size:13px;line-height:1}
:root[data-skin=green] .lib-steps li{gap:12px}
/* 6. 日记照片：四个相角，像贴在相册里 */
:root[data-skin=green] .pg-photo::after,:root[data-skin=green] .dt-shot::after{content:"";display:block;position:absolute;inset:0;pointer-events:none;z-index:1;
 --k:color-mix(in srgb,var(--primary) 80%,transparent);
 background:
  linear-gradient(135deg,var(--k) 0 12px,transparent 12.5px) top left/18px 18px no-repeat,
  linear-gradient(225deg,var(--k) 0 12px,transparent 12.5px) top right/18px 18px no-repeat,
  linear-gradient(45deg,var(--k) 0 12px,transparent 12.5px) bottom left/18px 18px no-repeat,
  linear-gradient(315deg,var(--k) 0 12px,transparent 12.5px) bottom right/18px 18px no-repeat}
/* 原生控件（勾选框等）跟着页面的白天/夜间走，不跟系统走 */
:root[data-skin=green]{color-scheme:light}
@media(prefers-color-scheme:dark){:root[data-skin=green]{color-scheme:dark}}

/* v59.3: keep every recipe readable in the same order, including home versions. */
.cb-home .cb-cooking h2{margin-right:0;letter-spacing:0}
.cb-panel>.cb-cooking{margin-top:18px}
.cb-ingredients{margin:16px 0}
.cb-ingredients>summary{min-height:44px;cursor:pointer;display:list-item;align-content:center}
.cb-panel .cb-panel-links{font-size:13px}
:root[data-skin=green] .cb-home .cb-seal.is-large{width:44px;height:44px;background:var(--washi);color:var(--primary);border:1px solid var(--hairline);box-shadow:none;transform:none}
:root[data-skin=green] .cb-home .cb-seal.is-large b{font-size:20px}
:root[data-skin=green] .cb-home .cb-seal.is-large small{font-size:9px;letter-spacing:0}

/* 1.0 RC: persistent, explicit feedback without interrupting a draft. */
html{background:#f8f9f3}
@media(prefers-color-scheme:dark){html{background:#101c16}}
#action-banners{position:fixed;left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));bottom:calc(var(--skin-nav,68px) + 10px);z-index:120;max-width:650px;margin-inline:auto;pointer-events:none;display:flex;flex-direction:column;gap:8px;max-height:35svh;overflow:auto}
#undo-list{display:flex;flex-direction:column;gap:8px}
.update-banner,.undo-item{pointer-events:auto;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:9px 14px;border:1px solid var(--hairline);border-radius:12px;background:var(--washi);color:var(--ink);font:14px/1.6 var(--font-sans);box-shadow:0 4px 18px #00000012}
.update-banner .text-button,.undo-item .text-button{flex:none;min-height:44px;padding:0 4px;color:var(--primary)}
.app-version>span{display:block}.app-version>button{font:12px/1.6 var(--font-sans);color:var(--muted);min-height:44px;margin-top:2px}
.release-dialog{max-width:560px}.release-dialog h3{font-size:16px;margin:20px 0 6px}.release-dialog p{font:14px/1.8 var(--font-sans);margin:10px 0}
.ai-chat header.ai-toggle{cursor:default}.ai-chat .ai-toggle h2{font:500 19px/1.6 var(--font-serif);margin:0}.advice-reestimate{margin-top:14px}.advice-reestimate p{margin:0 0 8px}.advice-reestimate button{max-width:100%;white-space:normal}
