/* 拆一道菜 / Dish Teardown */
:root{
  --bg:#f1f2ed;
  --surface:#fafbf7;
  --ink:#1a1f1b;
  --muted:#5f6961;
  --line:#d3d8cf;
  --accent:#2a7450;
  --accent-ink:#ffffff;
  --accent-soft:rgba(42,116,80,.10);
  --num:#9a5716;
  --warn:#a3461f;
  --warn-bg:rgba(163,70,31,.09);
  --heat:#b0441a;
  --heat-bg:rgba(176,68,26,.1);
  --stage-hi:#f8f9f4;
  --stage-lo:#d9ded2;
  --veil:rgba(241,242,237,.72);
  --grid:#2a332d;
  --shadow:.26;
  --callout:rgba(250,251,247,.92);
  --display:"Noto Serif SC","Source Han Serif SC","Songti SC","STSong",Georgia,serif;
  --body:"Noto Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#101311; --surface:#171b18; --ink:#e3e8e1; --muted:#909a91; --line:#29302b;
    --accent:#6cc196; --accent-ink:#0b1710; --accent-soft:rgba(108,193,150,.14); --num:#e3a964; --warn:#ec9a72; --warn-bg:rgba(236,154,114,.12);
    --heat:#f19a6c; --heat-bg:rgba(241,154,108,.15);
    --stage-hi:#252b25; --stage-lo:#0e110f; --veil:rgba(16,19,17,.72); --grid:#dfe6dd; --shadow:.55; --callout:rgba(23,27,24,.9);
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#101311; --surface:#171b18; --ink:#e3e8e1; --muted:#909a91; --line:#29302b;
  --accent:#6cc196; --accent-ink:#0b1710; --accent-soft:rgba(108,193,150,.14); --num:#e3a964; --warn:#ec9a72; --warn-bg:rgba(236,154,114,.12);
  --heat:#f19a6c; --heat-bg:rgba(241,154,108,.15);
  --stage-hi:#252b25; --stage-lo:#0e110f; --veil:rgba(16,19,17,.72); --grid:#dfe6dd; --shadow:.55; --callout:rgba(23,27,24,.9);
  color-scheme:dark;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.wrap{max-width:1240px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.vh{position:absolute!important;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---------- 顶栏 ---------- */
.site{border-bottom:1px solid var(--line)}
.site .wrap{display:flex;align-items:center;gap:10px 22px;min-height:58px;flex-wrap:wrap;padding-block:8px}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none;font-family:var(--display);font-weight:900;font-size:21px;letter-spacing:.04em;line-height:1}
.brand svg{width:26px;height:26px;flex:none}
.nav{display:flex;gap:18px;font-size:14px}
.nav a{text-decoration:none;color:var(--muted);padding:4px 0;border-bottom:2px solid transparent}
.nav a:hover{color:var(--ink)}
.nav a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--ink)}
.toggles{margin-left:auto;display:flex;align-items:center;gap:10px}
.seg{display:flex;padding:2px;gap:2px;border:1px solid var(--line);border-radius:7px;background:var(--surface)}
.seg button{appearance:none;border:0;background:none;font:inherit;font-size:13px;padding:3px 9px;border-radius:5px;color:var(--muted);cursor:pointer;min-width:2.6em}
.seg button:hover{color:var(--ink)}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--bg)}

/* ---------- 通用 ---------- */
.eyebrow{margin:0 0 8px;font-family:var(--mono);font-size:12px;letter-spacing:.12em;color:var(--muted);text-transform:uppercase}
.btn{appearance:none;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--ink);border-radius:6px;background:var(--ink);color:var(--bg);font:inherit;font-size:14px;font-weight:500;padding:7px 14px;cursor:pointer;white-space:nowrap;text-decoration:none}
.btn:hover{opacity:.88}
.btn:disabled{opacity:.45;cursor:default}
.btn.ghost{background:none;color:var(--ink);border-color:var(--line)}
.btn.ghost:hover{border-color:var(--ink);opacity:1}
.badge{display:inline-block;padding:1px 7px;border-radius:4px;font-size:12px;font-weight:500;line-height:1.6;background:var(--warn-bg);color:var(--warn);white-space:nowrap}
.badge.ok{background:var(--accent-soft);color:var(--accent)}
.badge.ai{background:none;border:1px solid var(--line);color:var(--muted);font-weight:400}
.heat{display:inline-block;padding:0 6px;border-radius:3px;background:var(--heat-bg);color:var(--heat);font-family:var(--body);font-weight:500;white-space:nowrap}
.page-msg{padding:80px 0;text-align:center;color:var(--muted)}
.page-msg .btn{margin-top:14px}
input[type="search"],input[type="text"],input[type="password"],input[type="email"],textarea{font:inherit;font-size:14px;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:7px 10px;min-width:0}
input::placeholder,textarea::placeholder{color:var(--muted)}

/* ---------- 首页 ---------- */
.hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.55fr);gap:24px 36px;align-items:center;padding:34px 0 30px}
@media (max-width:920px){.hero{grid-template-columns:minmax(0,1fr);padding-top:22px}}
.hero h1{margin:0;font-family:var(--display);font-weight:900;font-size:clamp(46px,7.4vw,86px);line-height:1;letter-spacing:.04em;text-wrap:balance}
.hero .lede{margin:16px 0 22px;max-width:26em;color:var(--muted);font-size:16px;text-wrap:pretty}
.hero-pick{display:grid;gap:10px}
.hero-pick .hp-k{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--muted)}
.hero-tabs{display:flex;flex-wrap:wrap;gap:4px 20px}
.hero-tabs button{appearance:none;border:0;border-bottom:2px solid transparent;background:none;padding:2px 0 6px;font:inherit;cursor:pointer;color:var(--muted);text-align:left}
.hero-tabs .dn{display:block;font-family:var(--display);font-weight:700;font-size:21px;line-height:1.25;letter-spacing:.02em}
.hero-tabs .dk{display:block;font-size:12px}
.hero-tabs button:hover{color:var(--ink)}
.hero-tabs button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--ink)}
.hero-go{margin-top:6px;justify-self:start}
.hero .stage{height:clamp(380px,58vh,600px)}
@media (max-width:920px){.hero .stage{height:clamp(360px,100vw,520px)}}
.lib{padding:10px 0 20px}
.lib-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 16px;padding-bottom:12px;border-bottom:1px solid var(--ink)}
.lib-head h2{margin:0;font-family:var(--display);font-weight:900;font-size:28px;letter-spacing:.03em}
.lib-head .cnt{font-family:var(--mono);font-size:12px;color:var(--muted)}
.lib-head input{margin-left:auto;width:min(100%,16em)}
.cards{list-style:none;margin:0;padding:18px 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}
.card{display:grid;grid-template-rows:auto 1fr;height:100%;text-decoration:none;background:var(--surface);border:1px solid var(--line);border-radius:8px;overflow:hidden;transition:border-color .15s}
.card:hover{border-color:var(--ink)}
.card-art{display:block;width:100%;height:auto;aspect-ratio:16/9;background:radial-gradient(120% 90% at 50% 30%,var(--stage-hi) 0%,var(--stage-lo) 92%)}
.card-body{display:grid;align-content:start;gap:3px;padding:12px 14px 14px}
.card h3{margin:0;font-family:var(--display);font-weight:900;font-size:23px;line-height:1.2;letter-spacing:.02em}
.card .alt{margin:0;font-size:13px;color:var(--muted)}
.card .meta{margin:6px 0 0;font-size:13px;color:var(--muted)}
.card .badge{justify-self:start;margin-top:6px}
.lib-empty{padding:30px 0;color:var(--muted)}

/* ---------- 菜谱页 ---------- */
.dish-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 30px;align-items:end;padding:24px 0 18px}
@media (max-width:760px){.dish-head{grid-template-columns:minmax(0,1fr)}}
.back{display:inline-block;margin-bottom:10px;font-size:13px;color:var(--muted);text-decoration:none}
.back:hover{color:var(--ink)}
.dish-head h1{margin:0;font-family:var(--display);font-weight:900;font-size:clamp(38px,6vw,64px);line-height:1.05;letter-spacing:.03em;text-wrap:balance}
.dish-head .alt{margin:4px 0 0;color:var(--muted);font-size:15px}
.dish-head .sum{margin:10px 0 0;max-width:40em;text-wrap:pretty}
.dish-head .labels{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;align-items:center}
@media (max-width:760px){.dish-head .labels{justify-content:flex-start}}
.draft-note{grid-column:1/-1;margin:6px 0 0;padding:8px 12px;border-left:3px solid var(--warn);background:var(--warn-bg);font-size:13.5px;color:var(--ink)}

/* 出处框：这道菜照什么整理的、原文没写而本站补的 */
.badge.cite{background:var(--accent-soft);color:var(--accent)}
.card .tags{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 0}
.card .tags:empty{display:none}
.card .tags .badge,.card .by .badge{margin-top:0}
.cite-box{grid-column:1/-1;margin:8px 0 0;padding:10px 14px 11px;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:0 6px 6px 0;background:var(--surface);font-size:14px;max-width:62em}
.cite-box p{margin:0}
.cite-k{display:flex;align-items:center;gap:8px;margin-bottom:4px!important;font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--muted);text-transform:uppercase}
.cite-kind{display:inline-block;padding:0 6px;border-radius:3px;background:var(--accent-soft);color:var(--accent);font-family:var(--body);font-size:12px;font-weight:500;letter-spacing:0;line-height:1.6;text-transform:none;white-space:nowrap}
.cite-t{line-height:1.5;text-wrap:pretty}
.cite-t b{font-family:var(--mono);font-weight:600;font-size:13px}
.cite-m{margin-top:2px!important;font-size:13px;color:var(--muted)}
.cite-m a{color:var(--accent);font-weight:500;white-space:nowrap}
.cite-n{margin-top:6px!important;font-size:13.5px;text-wrap:pretty}
.cite-more{margin-top:8px;font-size:13.5px}
.cite-more summary{cursor:pointer;color:var(--ink);font-weight:500;width:max-content;max-width:100%}
.cite-more ul{margin:6px 0 2px;padding-left:1.2em;display:grid;gap:4px;color:var(--ink)}
.cite-more li .cite-kind{margin-right:6px}
.cite-more li .cite-t{display:inline}
.cite-check{margin-top:8px!important;font-size:12.5px;color:var(--muted)}
.cmp-cite{display:flex;align-items:baseline;gap:6px;margin:4px 0 0;font-size:12.5px;color:var(--muted)}
.cmp-cite .cite-kind{font-size:11px}

/* ---------- 拆解台：舞台 + 清单 ---------- */
.bench{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:18px;align-items:start}
@media (max-width:920px){.bench{grid-template-columns:minmax(0,1fr)}}
.stage{position:relative;height:clamp(460px,70vh,720px);border:1px solid var(--line);border-radius:8px;overflow:hidden;background:radial-gradient(120% 90% at 50% 35%,var(--stage-hi) 0%,var(--stage-lo) 88%);user-select:none;-webkit-user-select:none}
@media (max-width:920px){.stage{height:clamp(420px,115vw,600px)}}
.stage-gl{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:pan-y;cursor:grab}
.stage-gl:active{cursor:grabbing}
.stage-leaders{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.stage-leaders polyline{fill:none;stroke:var(--ink);stroke-width:1;stroke-opacity:.5}
.stage-leaders circle{fill:var(--accent);stroke:var(--stage-hi);stroke-width:2}
.stage-leaders g.on polyline{stroke:var(--accent);stroke-opacity:1;stroke-width:1.6}
.stage-callouts{position:absolute;inset:0;pointer-events:none}
.callout{position:absolute;left:0;top:0;pointer-events:auto;display:grid;grid-template-columns:auto auto;column-gap:8px;align-items:center;padding:5px 10px 5px 6px;border:1px solid var(--line);border-radius:5px;background:var(--callout);color:var(--ink);font:inherit;font-size:13px;line-height:1.3;text-align:left;cursor:pointer;white-space:nowrap;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.callout .no{grid-row:span 2;font-family:var(--mono);font-size:11px;font-weight:500;padding:2px 5px;border-radius:3px;background:var(--ink);color:var(--bg)}
.callout .nm{font-weight:500}
.callout .amt{font-family:var(--mono);font-size:11px;color:var(--muted)}
.callout.on{border-color:var(--accent)}
.callout.on .no{background:var(--accent);color:var(--accent-ink)}
@media (max-width:560px){.callout{font-size:12px;padding:4px 7px 4px 5px;column-gap:6px}.callout .amt{display:none}}
.nogl{position:absolute;inset:0;display:grid;place-items:center;margin:0;padding:24px;text-align:center;color:var(--muted)}
.stage-err{position:absolute;inset:0;display:grid;place-items:center;margin:0;padding:24px;text-align:center;color:var(--warn);background:var(--veil)}
.fig{position:absolute;left:14px;top:12px;margin:0;font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--muted);pointer-events:none}
.modes{position:absolute;left:12px;bottom:12px;display:flex;gap:2px;padding:3px;background:var(--surface);border:1px solid var(--line);border-radius:7px}
.modes button{appearance:none;border:0;font:inherit;font-size:14px;font-weight:500;padding:7px 14px;border-radius:5px;background:none;color:var(--muted);cursor:pointer;white-space:nowrap}
.modes button:hover{color:var(--ink)}
.modes button[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
@media (max-width:420px){.modes button{padding:7px 10px;font-size:13px}}
.smeta{position:absolute;right:14px;bottom:18px;display:flex;align-items:center;gap:14px;font-family:var(--mono);font-size:11px;color:var(--muted);pointer-events:none}
.scale{display:flex;align-items:center;gap:6px}
.scale i{display:block;width:40px;height:6px;border:1px solid var(--muted);border-top:0}
@media (max-width:560px){.smeta .hint{display:none}}
.probe{position:absolute;left:0;top:0;display:grid;padding:4px 8px 5px;border-radius:5px;background:var(--ink);color:var(--bg);pointer-events:none;line-height:1.15}
.probe .pv{font-family:var(--mono);font-size:15px;font-weight:500;font-variant-numeric:tabular-nums}
.probe .pl{font-size:10.5px;opacity:.75}

/* 下锅顺序：步骤卡和时间轴 */
.cookcap{position:absolute;left:14px;top:12px;width:min(calc(100% - 28px),21.5em);padding:12px 14px 13px;background:var(--callout);border:1px solid var(--line);border-radius:7px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none}
.cc-k{margin:0;font-family:var(--mono);font-size:11.5px;letter-spacing:.03em;color:var(--muted)}
.cookcap h3{margin:3px 0 4px;font-family:var(--display);font-weight:900;font-size:25px;line-height:1.2;letter-spacing:.02em}
.cookcap p{margin:0;font-size:14px;line-height:1.5}
.cookcap .cc-cue{margin-top:5px;color:var(--muted)}
.cookcap .cc-warn{margin-top:7px;padding-top:7px;border-top:1px solid var(--line);color:var(--warn);font-weight:500}
.cookcap .cc-tip{margin-top:3px;font-size:12.5px;color:var(--muted)}
.cc-temp{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;margin:8px 0 2px;padding:7px 0 6px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.cc-tnum{font-family:var(--mono);font-size:24px;font-weight:500;line-height:1;color:var(--heat);font-variant-numeric:tabular-nums}
.cc-tl{font-size:12.5px;color:var(--muted)}
.cc-timer{margin-left:auto;font-family:var(--mono);font-size:12px;color:var(--ink);font-variant-numeric:tabular-nums}
@media (max-width:760px){.cookcap{position:static;width:auto;margin-top:10px;background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none}}
@media (max-width:560px){.cookcap{padding:10px 12px}.cookcap h3{font-size:21px}.cc-tnum{font-size:21px}}
.stage-slot{min-width:0;position:relative}
.scrub{display:grid;gap:6px;margin-top:10px;padding:10px 12px 8px;background:var(--surface);border:1px solid var(--line);border-radius:8px}
.scrub-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.scrub .btn{min-width:4.6em;justify-content:center;padding:5px 10px;font-size:13px}
.scrub .seg button{font-size:12.5px}
.clock{margin-left:auto;font-family:var(--mono);font-size:12.5px;font-variant-numeric:tabular-nums;color:var(--ink)}
.scrub-main{min-width:0;display:grid}
.tchart{position:relative;height:48px}
.tchart svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.tchart .area{fill:var(--heat-bg)}
.tchart .line{fill:none;stroke:var(--heat);stroke-width:1.6;vector-effect:non-scaling-stroke}
.tchart .guide{stroke:var(--line);stroke-width:1;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}
.tchart .now{stroke:var(--ink);stroke-width:1.5;vector-effect:non-scaling-stroke}
.tchart .gl{position:absolute;right:0;transform:translateY(-50%);font-family:var(--mono);font-size:9.5px;color:var(--muted);background:var(--surface);padding:0 2px}
.tchart .tk{position:absolute;left:0;top:0;font-size:10.5px;color:var(--muted)}
@media (max-width:560px){.tchart{height:46px}}
.ticks{display:flex}
.ticks button{flex:1 1 0;min-width:0;overflow:hidden;appearance:none;border:0;border-left:1px solid var(--line);background:none;padding:1px 0 0;font-family:var(--mono);font-size:11px;color:var(--muted);cursor:pointer;white-space:nowrap}
.ticks button:first-child{border-left:0}
.ticks button:hover{color:var(--ink)}
.ticks button.on{color:var(--accent);font-weight:500}
.ticks button.warn::after{content:"!";margin-left:1px;color:var(--warn);font-weight:700}
.scrub input[type="range"]{width:100%;margin:2px 0 0;accent-color:var(--accent)}

/* 清单 */
.bom{display:flex;flex-direction:column;gap:14px;min-width:0;padding:20px 18px 18px;background:var(--surface);border:1px solid var(--line);border-radius:8px}
.bom-kicker{margin:0;font-family:var(--mono);font-size:11.5px;letter-spacing:.12em;color:var(--muted)}
.bom h2{margin:2px 0 0;font-family:var(--display);font-weight:900;font-size:30px;line-height:1.15;letter-spacing:.03em}
.bom-sub{margin:4px 0 0;color:var(--muted);font-size:13.5px}
.bom-cols,.row{display:grid;grid-template-columns:2.6em minmax(0,1fr) auto;column-gap:10px}
.bom-cols{padding:0 8px 6px;border-bottom:1px solid var(--ink);font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--muted)}
.bom-list{list-style:none;margin:-14px 0 0;padding:0}
.row{width:100%;appearance:none;border:0;border-bottom:1px solid var(--line);border-radius:0;background:none;color:inherit;font:inherit;text-align:left;padding:11px 8px;cursor:pointer;align-items:baseline}
.row:hover,.row.on{background:var(--accent-soft)}
.row .no{font-family:var(--mono);font-size:12px;color:var(--muted)}
.row.on .no{color:var(--accent)}
.row .nm{font-weight:500;font-size:15px;line-height:1.35}
.row small{display:block;margin-top:2px;font-size:12.5px;font-weight:400;line-height:1.5;color:var(--muted)}
.row small.w{color:var(--warn);font-weight:500}
.row .tag{font-family:var(--mono);font-size:11px;font-weight:400;color:var(--muted)}
.row .amt{font-family:var(--mono);font-size:12.5px;text-align:right;max-width:12.5em}
.srow .amt{line-height:1.7}
.method{display:grid;grid-template-columns:2.6em minmax(0,1fr);column-gap:10px;padding:2px 8px 0;font-size:13.5px}
.method span{padding-top:3px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--muted)}
.method p{margin:0}

/* 参数 */
.spec{margin-top:28px;border-top:1px solid var(--line)}
.spec > summary{cursor:pointer;list-style:none;display:flex;align-items:baseline;gap:12px;padding:16px 0;font-family:var(--display);font-weight:900;font-size:22px;letter-spacing:.02em}
.spec > summary::-webkit-details-marker{display:none}
.spec > summary::after{content:"+";margin-left:auto;font-family:var(--mono);font-weight:400;color:var(--muted)}
.spec[open] > summary::after{content:"−"}
.spec-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.7fr);gap:24px 40px;align-items:start;padding-bottom:10px}
@media (max-width:920px){.spec-body{grid-template-columns:minmax(0,1fr)}}
.spec-copy p{margin:0 0 18px;max-width:32em;color:var(--muted)}
.vocab{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 20px;padding:0;list-style:none}
.vocab li{padding:2px 8px;font-size:12.5px;border:1px solid var(--line);border-radius:4px;background:var(--surface);color:var(--muted)}
.vocab li.used{border-color:var(--accent);color:var(--accent)}
.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 14px;margin:0}
.stats div{padding-top:8px;border-top:1px solid var(--ink)}
.stats dt{font-size:12px;color:var(--muted)}
.stats dd{margin:2px 0 0;font-family:var(--mono);font-size:21px;font-weight:500;font-variant-numeric:tabular-nums}
.json{min-width:0;max-height:560px;margin:0;overflow:auto;padding:16px 18px;background:var(--surface);border:1px solid var(--line);border-radius:8px;font-family:var(--mono);font-size:12px;line-height:1.65;color:var(--ink);white-space:pre-wrap;word-break:break-word}
.json .k{color:var(--accent)}
.json .n{color:var(--num)}
.sw{display:inline-block;width:.85em;height:.85em;margin-right:4px;border-radius:2px;vertical-align:-.1em;background:var(--c);box-shadow:inset 0 0 0 1px rgba(0,0,0,.18)}
.disclaimer{margin:22px 0 0;max-width:52em;font-size:13px;color:var(--muted)}

/* ---------- 审核台 ---------- */
.rv-head{padding:24px 0 14px}
.rv-head h1{margin:0;font-family:var(--display);font-weight:900;font-size:clamp(36px,5vw,54px);line-height:1.05;letter-spacing:.03em}
.rv-head p{margin:10px 0 0;max-width:46em;color:var(--muted)}
.rv-load{margin:0 0 18px;padding:14px 16px 16px;background:var(--surface);border:1px solid var(--line);border-radius:8px}
.rv-tabs{display:flex;flex-wrap:wrap;gap:2px 22px;margin-bottom:12px;border-bottom:1px solid var(--line)}
.rv-tabs button{appearance:none;border:0;border-bottom:2px solid transparent;background:none;padding:4px 0 8px;margin-bottom:-1px;font:inherit;font-weight:500;cursor:pointer;color:var(--muted)}
.rv-tabs button:hover{color:var(--ink)}
.rv-tabs button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--ink)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{appearance:none;display:inline-flex;align-items:center;gap:8px;padding:6px 11px;border:1px solid var(--line);border-radius:6px;background:var(--bg);font:inherit;font-size:14px;color:var(--ink);cursor:pointer}
.chip:hover,.chip[aria-pressed="true"]{border-color:var(--ink)}
.chip .badge{font-size:11px}
.rv-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px 14px;align-items:end}
.rv-form label{display:grid;gap:4px;font-size:13px;color:var(--muted)}
.rv-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px}
.rv-status{font-family:var(--mono);font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.rv-status.err{font-family:var(--body);font-size:13px;color:var(--warn)}
.rv-paste textarea{width:100%;min-height:120px;font-family:var(--mono);font-size:12px}
.rv-panel{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;margin-top:18px;align-items:start}
.rv-box{padding:16px 16px 14px;background:var(--surface);border:1px solid var(--line);border-radius:8px;min-width:0}
.rv-box h3{margin:0 0 8px;font-size:15px;font-weight:700}
.rv-box ul{margin:0;padding:0 0 0 1.1em;font-size:13px}
.rv-box li{margin:3px 0}
.rv-box li code{font-family:var(--mono);font-size:11.5px;color:var(--muted)}
.rv-box.warns h3{color:var(--warn)}
.rv-box .none{margin:0;font-size:13px;color:var(--muted)}
.checks{display:grid;gap:6px;margin:0 0 12px;padding:0;list-style:none;font-size:14px}
.checks label{display:flex;gap:8px;align-items:flex-start;cursor:pointer}
.checks input{margin-top:4px;accent-color:var(--accent)}
.rv-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px}
.rv-actions input{width:12em}
.rv-after{margin:10px 0 0;font-size:12.5px;color:var(--muted)}
.rv-editor{margin-top:18px}
.rv-editor h3{margin:0 0 8px;font-size:15px}
.rv-editor textarea{display:block;width:100%;min-height:420px;font-family:var(--mono);font-size:12px;line-height:1.6;tab-size:2;white-space:pre}
.rv-empty{padding:40px 0;color:var(--muted);text-align:center}

/* ---------- 同一道菜的几种做法：首页入口、菜谱页提示 ---------- */
.fam{padding:6px 0 26px}
.fam-list{list-style:none;margin:0;padding:18px 0 0;display:grid;gap:16px}
.fam-card{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:stretch;text-decoration:none;background:var(--surface);border:1px solid var(--line);border-radius:8px;overflow:hidden;transition:border-color .15s}
.fam-card:hover{border-color:var(--ink)}
.fam-arts{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));align-items:center;background:radial-gradient(120% 90% at 50% 30%,var(--stage-hi) 0%,var(--stage-lo) 92%)}
.fam-arts .card-art{background:none}
.fam-arts .card-art + .card-art{border-left:1px dashed var(--line)}
.fam-body{display:grid;align-content:center;gap:4px;padding:18px 22px}
.fam-body h3{margin:0;font-family:var(--display);font-weight:900;font-size:clamp(24px,2.6vw,32px);line-height:1.2;letter-spacing:.02em}
.fam-body .meta{margin:0;font-size:13.5px;color:var(--muted)}
.fam-go{margin-top:8px;font-size:14px;font-weight:500;color:var(--heat)}
@media (max-width:760px){.fam-card{grid-template-columns:minmax(0,1fr)}}
.fam-strip{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:8px 0 0;font-size:14px}
.fam-strip span{color:var(--muted)}
.fam-strip a{color:var(--ink)}
.fam-strip .fam-go{margin:0 0 0 auto;font-weight:500;color:var(--heat);text-decoration:none}
@media (max-width:760px){.fam-strip .fam-go{margin-left:0;flex-basis:100%}}

/* ---------- 版本对比 ---------- */
.cmp-head .eyebrow{margin:0 0 4px}
.cmp-head .sum{max-width:46em}
.cmp-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0 0 12px}
.cmp-bar .hint{font-size:12.5px;color:var(--muted)}
.cmp-tabs{display:none}
.cmp-grid{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:14px}
.cmp-col{display:grid;grid-template-rows:auto auto auto;align-content:start;gap:8px;min-width:0}
.cmp-col-head h2{margin:0;font-family:var(--display);font-weight:900;font-size:25px;line-height:1.2;letter-spacing:.02em}
.cmp-col-head h2 a{text-decoration:none}
.cmp-col-head h2 a:hover{text-decoration:underline;text-underline-offset:4px}
.cmp-col-head .alt{margin:2px 0 0;font-size:13px;color:var(--muted)}
.cmp-chips{display:flex;flex-wrap:wrap;gap:5px;margin:8px 0 0;padding:0;list-style:none;min-height:23px}
.cmp-chips li{padding:1px 8px;border-radius:4px;font-size:12.5px;font-weight:500;line-height:1.6;background:var(--heat-bg);color:var(--heat)}
.cmp-stage{height:clamp(400px,50vh,470px)}
.cmp-stage .callout{grid-template-columns:auto;padding:4px 9px;font-size:12.5px}
.cmp-stage .callout .no{display:none}
.callout .amt:empty{display:none}
.callout .ctag{font-size:11px;font-weight:500;line-height:1.35;color:var(--heat)}
.callout.marked{border-color:var(--heat)}
.callout.marked.on{border-color:var(--accent)}
.cmp-open{justify-self:start;font-size:13.5px;color:var(--muted);text-decoration:none}
.cmp-open:hover{color:var(--ink)}
@media (max-width:760px){
  .cmp-tabs{display:flex;gap:4px;margin:0 0 10px;padding:3px;border:1px solid var(--line);border-radius:7px;background:var(--surface)}
  .cmp-tabs button{flex:1 1 0;min-width:0;appearance:none;border:0;border-radius:5px;background:none;padding:7px 4px;font:inherit;font-size:13.5px;font-weight:500;color:var(--muted);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .cmp-tabs button[aria-selected="true"]{background:var(--ink);color:var(--bg)}
  .cmp-grid{grid-template-columns:minmax(0,1fr)}
  .cmp-col.off{display:none}
  .cmp-stage{height:clamp(380px,104vw,500px)}
  .cmp-bar .hint{display:none}
}
.cmp-sec{margin-top:34px}
.cmp-sec-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 16px;padding-bottom:10px;border-bottom:1px solid var(--ink)}
.cmp-sec-head h2{margin:0;font-family:var(--display);font-weight:900;font-size:28px;letter-spacing:.03em}
.cmp-sec-head p{margin:0;font-size:13px;color:var(--muted)}
.cmp-points{margin:0;padding:0;list-style:none;counter-reset:pt;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));column-gap:32px}
.cmp-points li{counter-increment:pt;display:grid;grid-template-columns:2.2em minmax(0,1fr);gap:6px;padding:13px 0;border-bottom:1px solid var(--line);font-size:15.5px;line-height:1.6;text-wrap:pretty}
.cmp-points li::before{content:counter(pt,decimal-leading-zero);padding-top:3px;font-family:var(--mono);font-size:12px;color:var(--heat)}
.cmp-points b{font-weight:700}
.cmp-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.cmp-table{width:100%;min-width:540px;border-collapse:collapse;font-size:14px;line-height:1.45}
.cmp-table th,.cmp-table td{padding:9px 10px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
.cmp-table thead th{padding-top:12px;font-family:var(--display);font-weight:900;font-size:17px;letter-spacing:.02em;border-bottom:1px solid var(--ink)}
.cmp-table thead th a{text-decoration:none}
.cmp-table tbody th{width:8.6em;font-weight:500;font-size:13px;color:var(--muted);white-space:nowrap}
.cmp-table tbody.derived td{font-weight:500}
.cmp-table tbody.derived tr:last-child > *{border-bottom:1px solid var(--ink)}
.cmp-table td.uniq{color:var(--heat)}
.cmp-table td.absent{color:var(--heat);font-weight:500}
.cmp-table td.none{color:var(--muted)}
.cmp-table td.only{background:var(--heat-bg)}
.cmp-table .it{display:block}
.cmp-table .q{font-family:var(--mono);font-size:12.5px;white-space:nowrap}
.cmp-table .flag{display:inline-block;margin-top:3px;padding:0 6px;border-radius:3px;font-size:11px;font-weight:500;line-height:1.6;background:var(--heat);color:var(--bg)}
.cmp-table tr[data-group]{cursor:pointer}
.cmp-table tr[data-group]:hover,.cmp-table tr[data-group].on{background:var(--accent-soft)}
.cmp-table tr[data-group]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
@media (max-width:620px){
  .cmp-table{min-width:0;font-size:13px}
  .cmp-table th,.cmp-table td{padding:8px 5px}
  .cmp-table thead th{font-size:14.5px}
  .cmp-table tbody th{width:auto;font-size:12px;white-space:normal}
  .cmp-table .q{font-size:11.5px}
}
.cmp-tl{display:grid;gap:10px;margin-top:16px}
.tl-row{display:grid;grid-template-columns:9.5em minmax(0,1fr) 6.5em;gap:4px 12px;align-items:center}
.tl-name{font-weight:500;font-size:14px;line-height:1.3}
.tl-track{position:relative;min-width:0}
.tl-bar{display:flex;height:30px;border-radius:4px;overflow:hidden}
.tl-bar span{min-width:0;display:flex;align-items:center;justify-content:center;overflow:hidden;white-space:nowrap;font-size:11.5px;font-weight:500;color:#fff;box-shadow:inset -1px 0 0 rgba(255,255,255,.4)}
.tl-total{font-family:var(--mono);font-size:12px;color:var(--muted);white-space:nowrap}
.tl-axis .tl-track{height:16px;border-top:1px solid var(--line)}
.tl-axis .tl-track span{position:absolute;top:2px;transform:translateX(-50%);font-family:var(--mono);font-size:10.5px;color:var(--muted);white-space:nowrap}
.tl-axis .tl-track span:first-child{transform:none}
.tl-legend{display:flex;flex-wrap:wrap;gap:4px 16px;margin:12px 0 0;padding:0;list-style:none;font-size:12.5px;color:var(--muted)}
.tl-legend i{display:inline-block;width:11px;height:11px;margin-right:6px;border-radius:2px;vertical-align:-1px}
@media (max-width:620px){
  .tl-row{grid-template-columns:minmax(0,1fr) auto}
  .tl-name{grid-column:1}
  .tl-total{grid-column:2;grid-row:1;text-align:right}
  .tl-track{grid-column:1/-1}
  .tl-axis > span{display:none}
}

/* ================= 账号、上传、社区、后台 ================= */
/* 顶栏：上传按钮、头像菜单 */
.account{display:flex;align-items:center;gap:10px}
.account:empty{display:none}
.btn.sm{padding:5px 11px;font-size:13px}
.up-btn span[aria-hidden]{font-size:17px;line-height:1;margin-top:-2px}
@media (max-width:620px){
  .up-btn .lbl{display:none}
  .up-btn{padding:5px 10px}
  /* 手机：头像和上传按钮留在第一行右边，语言和温度单位换到第二行；「全部菜谱」点左上角的名字就能回去 */
  .site .account{order:2;margin-left:auto}
  .site .toggles{order:3;flex-basis:100%;margin-left:0}
  .site .nav{display:none}
}
.acct-out{display:flex;align-items:center;gap:12px}
.nav-login{font-size:14px;font-weight:500;text-decoration:none}
.nav-login:hover{text-decoration:underline;text-underline-offset:4px}
@media (max-width:620px){.acct-out [data-up]{display:none}}
.acct{position:relative}
.acct > summary{list-style:none;cursor:pointer;display:flex;align-items:center;position:relative;border-radius:50%}
.acct > summary::-webkit-details-marker{display:none}
.acct .dot{position:absolute;top:-2px;right:-2px;width:10px;height:10px;border-radius:50%;background:var(--heat);border:2px solid var(--bg)}
.acct-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:40;min-width:210px;padding:6px;display:grid;background:var(--surface);border:1px solid var(--line);border-radius:9px;box-shadow:0 12px 32px rgba(0,0,0,.14)}
.acct-menu .who{margin:0 0 4px;padding:8px 10px 10px;display:grid;line-height:1.35;border-bottom:1px solid var(--line)}
.acct-menu .who span{font-size:12.5px;color:var(--muted)}
.acct-menu a,.acct-menu button{appearance:none;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;border:0;border-radius:6px;background:none;color:var(--ink);font:inherit;font-size:14px;text-align:left;text-decoration:none;cursor:pointer}
.acct-menu a:hover,.acct-menu button:hover{background:var(--accent-soft)}
.acct-menu .n{padding:0 7px;border-radius:9px;background:var(--heat);color:var(--bg);font-family:var(--mono);font-size:11.5px}

/* 头像：名字第一个字 */
.ava{--h:150;display:inline-grid;place-items:center;flex:none;width:30px;height:30px;border-radius:50%;background:hsl(var(--h) 46% 87%);color:hsl(var(--h) 48% 26%);font-size:14px;font-weight:700;line-height:1;user-select:none}
.ava.sm{width:22px;height:22px;font-size:11px}
.ava.lg{width:64px;height:64px;font-size:28px}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .ava{background:hsl(var(--h) 26% 24%);color:hsl(var(--h) 56% 84%)}}
:root[data-theme="dark"] .ava{background:hsl(var(--h) 26% 24%);color:hsl(var(--h) 56% 84%)}

/* 通用：页面标题、表单、提示 */
.narrow{max-width:580px}
.narrow-wide{max-width:780px}
.page-head{padding:26px 0 16px}
.page-head h1{margin:0;font-family:var(--display);font-weight:900;font-size:clamp(32px,5vw,46px);line-height:1.1;letter-spacing:.03em}
.page-head p{margin:10px 0 0;max-width:42em;color:var(--muted);text-wrap:pretty}
.form{display:grid;gap:14px;margin:0 0 18px;padding:18px;background:var(--surface);border:1px solid var(--line);border-radius:8px}
.form h2{margin:0;font-size:17px;font-weight:700}
.fld{display:grid;gap:5px;font-size:13.5px;font-weight:500}
.fld small{font-size:12.5px;font-weight:400;color:var(--muted)}
.fld input,.fld textarea{width:100%;font-size:15px;padding:9px 11px}
.fld textarea{resize:vertical;line-height:1.65}
.fld .count{justify-self:end;font-family:var(--mono)}
.check{display:flex;gap:9px;align-items:flex-start;font-size:14px;cursor:pointer}
.check input{flex:none;margin-top:4px;accent-color:var(--accent)}
.form-err{margin:0;padding:8px 12px;border-left:3px solid var(--warn);background:var(--warn-bg);font-size:13.5px}
.form-err:empty{display:none}
.form-acts{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px}
.form-acts > a{font-size:14px;color:var(--muted)}
.quota{font-size:13px;color:var(--muted)}
.muted{color:var(--muted)}
.small{font-size:12.5px}
.fine,.note-local{margin:0;font-size:12.5px;color:var(--muted)}
.notice{margin:0 0 16px;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--num);border-radius:6px;font-size:14px}
.notice p{margin:0}
.notice p + p{margin-top:6px}
.notice.ok{border-left-color:var(--accent)}
.tabs2{display:flex;flex-wrap:wrap;gap:2px 22px;margin:0 0 18px;border-bottom:1px solid var(--line)}
.tabs2 a,.tabs2 button{appearance:none;margin-bottom:-1px;padding:4px 0 9px;border:0;border-bottom:2px solid transparent;background:none;color:var(--muted);font:inherit;font-weight:500;text-decoration:none;cursor:pointer;white-space:nowrap}
.tabs2 a:hover,.tabs2 button:hover{color:var(--ink)}
.tabs2 [aria-current="page"],.tabs2 [aria-selected="true"]{color:var(--ink);border-bottom-color:var(--ink)}
.tabs2 .ext{margin-left:auto;font-weight:400}
.btn.is-busy{opacity:.6;cursor:progress}
.btn.danger{background:var(--warn);border-color:var(--warn);color:#fff}
.btn.ghost.danger{background:none;color:var(--warn);border-color:var(--line)}
.btn.ghost.danger:hover{border-color:var(--warn)}
.linkish{appearance:none;padding:0;border:0;background:none;color:var(--muted);font:inherit;font-size:13px;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.linkish:hover{color:var(--ink)}
.linkish.danger{color:var(--warn)}
.empty{padding:40px 0;text-align:center;color:var(--muted)}
.empty p{margin:0 0 14px}
.chip-st{display:inline-block;padding:1px 8px;border-radius:4px;background:var(--accent-soft);color:var(--accent);font-size:12px;font-weight:500;line-height:1.6;white-space:nowrap}
.chip-st.busy{background:var(--heat-bg);color:var(--heat)}
.chip-st.warn{background:var(--warn-bg);color:var(--warn)}
.chip-st.muted{background:none;color:var(--muted);box-shadow:inset 0 0 0 1px var(--line)}

/* 卡片：作者、收藏数；首页社区区 */
.card .by{display:flex;align-items:center;gap:7px;margin:8px 0 0;font-size:13px;color:var(--muted)}
.card .by .favs{margin-left:auto;font-family:var(--mono);font-size:12px}
.card.gone{opacity:.75}
.card.gone .card-body p{margin:0 0 6px;font-size:13.5px;color:var(--muted)}
.card-art.ph{display:block;width:100%;aspect-ratio:16/9;background:repeating-linear-gradient(135deg,var(--stage-lo) 0 10px,var(--stage-hi) 10px 20px);opacity:.55}
.comm{padding-top:26px}
.comm .lib-head .btn{margin-left:auto}
.comm-lede{margin:10px 0 0;font-size:14px;color:var(--muted)}
.hero-acts{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;margin-top:6px}
.hero-acts .hero-go{margin-top:0}
.hero-up{font-size:14px;color:var(--muted)}
.hero-up:hover{color:var(--ink)}

/* 我的、个人主页 */
.me-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px 18px;align-items:center;padding:26px 0 18px}
.me-head h1{margin:0;font-family:var(--display);font-weight:900;font-size:clamp(28px,4vw,40px);line-height:1.1;letter-spacing:.02em}
.me-head .sub{margin:4px 0 0;font-size:14px;color:var(--muted)}
.me-head .sub a{color:inherit}
.me-head .bio{margin:8px 0 0;max-width:36em}
.me-cta{display:grid;justify-items:end;gap:6px}
.me-cta .quota{margin:0}
@media (max-width:620px){.me-head{grid-template-columns:auto minmax(0,1fr)}.me-cta{grid-column:1/-1;justify-items:start}}
.mylist{display:grid;gap:10px;margin:0;padding:0;list-style:none}
.mylist a{display:grid;grid-template-columns:128px minmax(0,1fr) auto;gap:16px;align-items:center;padding:8px 16px 8px 8px;background:var(--surface);border:1px solid var(--line);border-radius:8px;text-decoration:none;transition:border-color .15s}
.mylist a:hover{border-color:var(--ink)}
.mylist .card-art{border-radius:5px}
.ml-body h3{margin:0;font-family:var(--display);font-weight:900;font-size:20px;line-height:1.25;letter-spacing:.02em}
.ml-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:6px 0 0;font-size:12.5px;color:var(--muted)}
.ml-note{margin:5px 0 0;font-size:13px;color:var(--warn)}
.ml-go{color:var(--muted)}
@media (max-width:560px){.mylist a{grid-template-columns:88px minmax(0,1fr);gap:12px;padding-right:10px}.ml-go{display:none}.ml-body h3{font-size:17px}}
.settings{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:0 18px;align-items:start}
.pre-input{display:flex;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:6px}
.pre-input span{padding-left:10px;color:var(--muted);font-weight:400}
.pre-input input{border:0;background:none;padding-left:2px}
.pre-input:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.pre-input input:focus-visible{outline:none}

/* 上传 */
.thumbs{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0 0;padding:0;list-style:none}
.thumbs li{position:relative;width:96px;height:96px;overflow:hidden;border:1px solid var(--line);border-radius:6px;background:var(--bg)}
.thumbs img{display:block;width:100%;height:100%;object-fit:cover}
.thumbs .x{position:absolute;top:4px;right:4px;width:24px;height:24px;padding:0;border:0;border-radius:50%;background:rgba(0,0,0,.62);color:#fff;font-size:16px;line-height:1;cursor:pointer}
.thumbs .add{border:0;background:none}
.thumbs .add label{display:grid;place-items:center;width:100%;height:100%;border:1px dashed var(--muted);border-radius:6px;color:var(--muted);font-size:30px;font-weight:300;cursor:pointer}
.thumbs .add label:hover{color:var(--ink);border-color:var(--ink)}
.thumbs .add label:focus-within{outline:2px solid var(--accent);outline-offset:2px}

/* 作者确认页 */
.ed-panel{display:grid;gap:12px;margin:0 0 18px;padding:16px 18px;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:8px}
.ed-panel.first{border-left-color:var(--num)}
.ed-panel.warn{border-left-color:var(--warn)}
.ed-msg{margin:0;max-width:52em;font-size:15px;text-wrap:pretty}
.vis-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 16px}
.vis{display:flex;flex-wrap:wrap;gap:8px;min-width:0;margin:0;padding:0;border:0}
.vis legend{margin-bottom:6px;padding:0;font-size:12.5px;color:var(--muted)}
.vis-opt{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:8px;min-width:150px;padding:8px 12px 8px 10px;background:var(--bg);border:1px solid var(--line);border-radius:7px;cursor:pointer}
.vis-opt input{grid-row:span 2;margin:4px 0 0;accent-color:var(--accent)}
.vis-opt .vt{font-size:14px;font-weight:500}
.vis-opt .vd{font-size:12px;color:var(--muted)}
.vis-opt:has(input:checked){border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.vis:disabled .vis-opt{opacity:.55;cursor:default}
@media (max-width:560px){.vis{display:grid;width:100%}.vis-opt{min-width:0}.vis-row .btn{width:100%;justify-content:center}}
.share-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.share-row span{font-size:13px;color:var(--muted)}
.share-row input{flex:1 1 220px;font-family:var(--mono);font-size:12.5px}
.gen-card{display:flex;gap:18px;align-items:flex-start;margin:0 0 18px;padding:22px;background:var(--surface);border:1px solid var(--line);border-radius:8px}
.gen-card > div{flex:1;min-width:0}
.gen-card > .gen-spin{flex:0 0 34px}
.gen-card h2{margin:0 0 6px;font-family:var(--display);font-weight:900;font-size:24px;line-height:1.25}
.gen-card p{margin:0 0 6px}
.gen-card.bad{border-left:3px solid var(--warn)}
.gen-n{font-family:var(--mono);font-size:13px;font-variant-numeric:tabular-nums}
.gen-spin{flex:none;width:34px;height:34px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.regen-form{margin:12px 0 0;padding:0;border:0;background:none}
.ed-sec{margin-top:18px;border-top:1px solid var(--line)}
.ed-sec > summary{display:flex;align-items:baseline;padding:14px 0;font-size:17px;font-weight:700;list-style:none;cursor:pointer}
.ed-sec > summary::-webkit-details-marker{display:none}
.ed-sec > summary::after{content:"+";margin-left:auto;font-family:var(--mono);font-weight:400;color:var(--muted)}
.ed-sec[open] > summary::after{content:"−"}
.ed-sec .form{margin-bottom:14px}
.ed-form{display:grid;gap:6px;padding-bottom:16px}
.ed-form h3{margin:14px 0 4px;font-size:13px;font-weight:500;letter-spacing:.06em;color:var(--muted)}
.ed-cols,.ed-row{display:grid;grid-template-columns:8.5em minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:start}
.ed-cols span{font-family:var(--mono);font-size:11px;color:var(--muted)}
.ed-k{padding-top:8px;font-size:13px;color:var(--muted)}
.ed-k b{font-family:var(--mono);font-size:11.5px;font-weight:500;color:var(--ink)}
.ed-row input,.ed-row textarea{width:100%}
.ed-row textarea{min-height:2.6em;resize:vertical}
.ed-form .form-acts{margin-top:8px}
@media (max-width:620px){.ed-cols{display:none}.ed-row{grid-template-columns:minmax(0,1fr);gap:6px}.ed-row + .ed-row{margin-top:4px}.ed-k{padding-top:6px}}
.src{padding-bottom:14px}
.src-text{max-height:360px;margin:0 0 12px;overflow:auto;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:6px;font-family:var(--body);font-size:14px;line-height:1.7;white-space:pre-wrap;word-break:break-word}
.src-photos{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 10px;padding:0;list-style:none}
.src-photos img{display:block;width:140px;height:140px;object-fit:cover;border:1px solid var(--line);border-radius:6px}
.ed-danger{margin:22px 0 0}

/* 用户菜谱页：作者、自己的菜 */
.byline{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:12px 0 0;font-size:14px}
.byline-user{display:inline-flex;align-items:center;gap:7px;font-weight:500;text-decoration:none}
.byline-user:hover span{text-decoration:underline;text-underline-offset:3px}
.owner-bar{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:8px;padding:8px 12px;background:var(--surface);border:1px solid var(--line);border-radius:7px;font-size:14px}
.owner-bar .btn{margin-left:auto;padding:4px 12px;font-size:13px}

/* 收藏、评论 */
.social{margin-top:34px;padding-top:22px;border-top:1px solid var(--ink)}
.social-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
.social-bar .report{margin-left:auto}
.fav .star{font-size:15px;line-height:1}
.fav[aria-pressed="true"]{border-color:var(--num);color:var(--num)}
.fav .n{font-family:var(--mono);font-size:12px;color:var(--muted)}
.cm-head{display:flex;align-items:baseline;gap:10px;margin:26px 0 12px}
.cm-head h2{margin:0;font-family:var(--display);font-weight:900;font-size:26px;letter-spacing:.02em}
.cm-head .cnt{font-family:var(--mono);font-size:12px;color:var(--muted)}
.cm-form{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:start;margin-bottom:14px}
.cm-box{display:grid;gap:8px}
.cm-box textarea{width:100%;min-height:64px;resize:vertical}
.cm-row{display:flex;align-items:center;justify-content:flex-end;gap:10px}
.cm-hint{margin-right:auto;font-size:12px;color:var(--muted)}
@media (max-width:560px){.cm-hint{display:none}}
.cm-login{margin:0 0 16px;color:var(--muted)}
.cm-login a{color:var(--ink);font-weight:500}
.cm-empty{margin:0;color:var(--muted)}
.cm-list{margin:0;padding:0;list-style:none}
.cm{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;padding:14px 0;border-top:1px solid var(--line)}
.cm.is-hidden{opacity:.6}
.cm-main{min-width:0}
.cm-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:0;font-size:13.5px}
.cm-meta a{font-weight:500;text-decoration:none}
.cm-meta a:hover{text-decoration:underline;text-underline-offset:3px}
.cm-meta time{font-size:12px;color:var(--muted)}
.cm-body{margin:4px 0 0;font-size:15px;white-space:pre-wrap;word-break:break-word}
.cm-acts{display:flex;gap:14px;margin:6px 0 0}
.cm-acts:empty{display:none}

/* 弹框、提示条 */
.dlg{width:min(460px,calc(100vw - 32px));max-height:calc(100vh - 32px);padding:0;overflow:auto;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:10px;box-shadow:0 20px 60px rgba(0,0,0,.28)}
.dlg::backdrop{background:rgba(10,14,12,.45)}
.dlg form{display:grid;gap:12px;padding:20px}
.dlg h2{margin:0;font-family:var(--display);font-weight:900;font-size:22px;line-height:1.25}
.dlg-body{margin:0;font-size:14px;color:var(--muted)}
.dlg-acts{display:flex;justify-content:flex-end;gap:8px}
.radios{display:grid;gap:6px;margin:0;padding:0;border:0}
.radios label{display:flex;align-items:center;gap:9px;padding:7px 10px;border:1px solid var(--line);border-radius:6px;font-size:14px;cursor:pointer}
.radios label:has(input:checked){border-color:var(--ink)}
.radios input{margin:0;accent-color:var(--accent)}
.quick{display:flex;flex-wrap:wrap;gap:6px}
.quick .chip{padding:4px 9px;font-size:13px}
.toast{position:fixed;left:50%;bottom:22px;z-index:80;max-width:calc(100vw - 32px);padding:10px 16px;border-radius:8px;background:var(--ink);color:var(--bg);font-size:14px;box-shadow:0 8px 24px rgba(0,0,0,.2);opacity:0;pointer-events:none;transform:translate(-50%,16px);transition:opacity .2s,transform .2s}
.toast.on{opacity:1;transform:translate(-50%,0)}
.toast.err{background:var(--warn);color:#fff}

/* 编辑后台 */
.q-list{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px;padding:0;list-style:none}
.q-list button{appearance:none;display:grid;gap:1px;padding:8px 12px;background:var(--surface);border:1px solid var(--line);border-radius:7px;color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.q-list button:hover{border-color:var(--ink)}
.q-list button[aria-pressed="true"]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.q-list b{font-size:14.5px}
.q-list span{font-size:12px;color:var(--muted)}
.q-meta h2{margin:0;font-family:var(--display);font-weight:900;font-size:30px;letter-spacing:.02em}
.q-meta p{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;margin:6px 0 14px}
.q-detail .src-text{max-height:280px}
.q-detail .src-photos img{width:110px;height:110px}
.rp-seg{display:inline-flex;margin-bottom:14px}
.rp-list{display:grid;gap:10px;margin:0;padding:0;list-style:none}
.rp-list li{padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:8px}
.rp-what{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 8px}
.rp-what blockquote{flex-basis:100%;margin:6px 0 2px;padding:6px 10px;border-left:3px solid var(--line);font-size:14px;white-space:pre-wrap;word-break:break-word}
.rp-why{margin:8px 0 2px;font-size:14px}
.rp-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.u-search{display:flex;gap:8px;margin-bottom:14px}
.u-search input{flex:1 1 auto;max-width:360px}
.u-table{width:100%;min-width:640px;border-collapse:collapse;font-size:14px}
.u-table th,.u-table td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;white-space:nowrap}
.u-table thead th{border-bottom:1px solid var(--ink);font-size:12.5px;font-weight:500;color:var(--muted)}
.u-table td a{text-decoration:none;font-weight:500}
.u-acts{display:flex;gap:14px}
.use-top{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:18px}
.stat{display:grid;gap:2px;padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:8px}
.stat span{font-size:12.5px;color:var(--muted)}
.stat b{font-family:var(--mono);font-size:24px;font-weight:500;font-variant-numeric:tabular-nums}
.stat small{font-size:12px;color:var(--muted)}

/* ---------- 页脚 ---------- */
.site-foot{margin-top:44px;padding:22px 0 40px;border-top:1px solid var(--line);font-size:12.5px;color:var(--muted)}
.site-foot p{margin:0 0 6px;max-width:60em}
.site-foot a{color:var(--muted)}
kbd{padding:0 4px;font-family:var(--mono);font-size:11px;border:1px solid var(--line);border-radius:3px;background:var(--surface)}
@media (prefers-reduced-motion: reduce){*{transition:none!important}}
