/* ══════════════════════════════════════════════════════════
   美的小滋味 · 设计系统
   网站 = 这台微波炉的正面板。菜谱 = 机器上的预设程序键。
   色板 / 排版 / 控件都在这里；内容文件不写任何样式。
   ══════════════════════════════════════════════════════════ */

:root{
  --shell:#DCD7CD;        /* 机壳 */
  --paper:#F7F5F0;        /* 面板 */
  --ink:#181816;
  --ink2:#4E4A43;
  --ink3:#6E685E;
  --rule:#C2BCB0;
  --rule-2:#A9A294;
  --glass:#15120E;
  --amber:#F2711C;
  --amber-lt:#FFA24D;
  --amber-deep:#C1540A;
  --green:#3D7A52;
  --warn:#E3AC0B;

  --sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC",sans-serif;
  --mono:ui-monospace,"SF Mono","Cascadia Mono",Menlo,Consolas,"DejaVu Sans Mono",monospace;

  --r-key:6px;
  --maxw:1040px;
}

@media (prefers-color-scheme: dark){
  :root{
    --shell:#1E1C1A;
    --paper:#26231F;
    --ink:#F2EEE6;
    --ink2:#C9C2B5;
    --ink3:#9A9385;
    --rule:#3D382F;
    --rule-2:#514A3F;
    --glass:#100E0B;
  }
}

*,*::before,*::after{box-sizing:border-box}

html{-webkit-text-size-adjust:100%}

body{
  margin:0;
  background:var(--shell);
  color:var(--ink);
  font:400 16px/1.6 var(--sans);
  -webkit-font-smoothing:antialiased;
  padding:0 18px calc(34px + env(safe-area-inset-bottom));
}

.page{max-width:var(--maxw);margin:0 auto}

a{color:inherit}
img{max-width:100%;height:auto}

.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;
}

/* ── 机身铭牌 ─────────────────────────────────── */
header.page{padding:30px 0 22px;display:grid;grid-template-columns:1fr}
.plate{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.plate-model{
  font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.14em;
  padding:5px 9px;border:1px solid var(--rule-2);border-radius:2px;
  color:var(--ink2);background:color-mix(in srgb,var(--paper) 60%,transparent);
  text-decoration:none;
}
.plate-rule{flex:1;height:1px;background:var(--rule-2);min-width:24px}
.plate-spec{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;color:var(--ink3)}

.crumb{
  margin:16px 0 0;font-family:var(--mono);font-size:10.5px;
  letter-spacing:.16em;color:var(--ink3);
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
}
.crumb a{text-decoration:none;border-bottom:1px solid var(--rule-2)}
.crumb a:hover{border-bottom-color:var(--amber)}

h1{
  margin:18px 0 0;
  font-size:clamp(34px,7.4vw,64px);
  line-height:1.06;
  letter-spacing:-.025em;
  font-weight:700;
}
h1 .period{color:var(--amber)}
.lede{margin:16px 0 0;max-width:34em;color:var(--ink2);font-size:15.5px;line-height:1.72}

/* 标题下那排参数：标签 / 难度 / 份量 / 时间 */
.rmeta{
  display:flex;flex-wrap:wrap;gap:7px 8px;align-items:center;
  list-style:none;margin:16px 0 0;padding:0;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:var(--ink3);
}
.rmeta li{padding:3px 8px;border:1px solid var(--rule);border-radius:2px}
.rmeta .rmeta-tag{border-color:var(--rule-2);color:var(--ink2)}

@media (min-width:880px){
  header.page{
    grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);
    column-gap:44px;align-items:end;
  }
  header.page .plate,
  header.page .crumb{grid-column:1 / -1}
  header.page h1{grid-column:1;margin-bottom:0}
  header.page .lede{grid-column:2;margin:0 0 6px;font-size:16px}
  header.page .rmeta{grid-column:1 / -1;margin-top:18px}
}

/* ── 面板 ─────────────────────────────────────── */
.face{
  position:relative;
  margin-top:26px;
  background:var(--paper);
  border:1px solid var(--rule);
  border-radius:18px;
  padding:24px 20px 22px;
  display:grid;gap:22px;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.7),
    0 1px 2px rgba(0,0,0,.06),
    0 26px 50px -34px rgba(0,0,0,.5);
}
.face::before{
  content:"";position:absolute;left:20px;right:20px;top:9px;height:3px;border-radius:2px;
  background:repeating-linear-gradient(90deg,
    color-mix(in srgb,var(--rule-2) 65%,transparent) 0 2px, transparent 2px 9px);
}
@media (min-width:900px){
  .face{grid-template-columns:minmax(300px,368px) 1fr;padding:28px 26px 26px;gap:30px}
  .face--wide{grid-template-columns:1fr}
}

.ctrl{display:grid;gap:16px;align-content:start}

/* 显示窗 */
.display{
  position:relative;overflow:hidden;
  background:linear-gradient(180deg,#1B1712 0%,#100D09 100%);
  border-radius:8px;padding:16px 16px 12px;min-height:126px;
  box-shadow:inset 0 2px 14px rgba(0,0,0,.75),inset 0 0 0 1px rgba(0,0,0,.5);
}
.display::before{
  content:"";position:absolute;inset:0;
  background:radial-gradient(120% 80% at 18% -10%,rgba(255,255,255,.10),transparent 55%);
}
.display::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(0deg,transparent 0 2px,rgba(0,0,0,.32) 2px 3px);
}
.led{
  position:relative;z-index:1;
  font-family:var(--mono);font-weight:500;
  font-size:clamp(40px,9.8vw,56px);line-height:.95;letter-spacing:.02em;
  font-variant-numeric:tabular-nums;
  color:var(--amber-lt);
  text-shadow:0 0 20px rgba(255,120,30,.45),0 0 3px rgba(255,190,130,.85);
}
.display.done .led{animation:blink 540ms steps(1) 4}
@keyframes blink{50%{opacity:.15}}
/* 首页的程序目录里，显示窗是一条横贯面板的状态条 */
.display--home{
  max-width:none;
  display:grid;grid-template-columns:auto 1fr;align-items:center;
  column-gap:26px;row-gap:6px;
}
.display--home .led{grid-row:1 / span 2}
.display--home .readout{grid-column:2;margin:0;justify-content:flex-end}
.display--home .bars{grid-column:2;margin:0}
@media (max-width:620px){
  .display--home{display:block}
  .display--home .readout{margin-top:12px;justify-content:space-between}
  .display--home .bars{margin-top:12px}
}

.readout{
  position:relative;z-index:1;
  display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;
  margin-top:12px;
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;
  color:#8A7B68;
}
.readout b{color:#D9C9B4;font-weight:500}
.readout a{color:#D9C9B4;text-decoration:none;border-bottom:1px solid rgba(217,201,180,.35)}

.bars{position:relative;z-index:1;display:flex;gap:2px;margin-top:12px;height:9px}
.bars i{flex:1;background:#2A231B;border-radius:1px;transition:background 160ms,box-shadow 160ms}
.bars i.on{background:var(--amber);box-shadow:0 0 7px rgba(242,113,28,.6)}
.display.done .bars i{background:var(--green);box-shadow:0 0 7px rgba(61,122,82,.55)}

/* 旋钮 */
.dialrow{display:flex;align-items:center;gap:22px}
.dial{
  position:relative;width:120px;aspect-ratio:1;border-radius:50%;
  background:radial-gradient(circle at 32% 24%,#F4F1EA,#CFC9BD 74%);
  box-shadow:
    inset 0 1px 2px rgba(255,255,255,.9),
    inset 0 -10px 18px rgba(0,0,0,.10),
    0 0 0 1px rgba(0,0,0,.10),
    0 8px 18px -8px rgba(0,0,0,.55);
  cursor:grab;touch-action:none;flex:none;
}
.dial:active{cursor:grabbing}
.dial:focus-visible{outline:2px solid var(--amber);outline-offset:5px}
.ticks{
  position:absolute;inset:-9px;border-radius:50%;
  background:repeating-conic-gradient(from 0deg,var(--rule-2) 0 1.1deg,transparent 1.1deg 12deg);
  -webkit-mask:radial-gradient(circle,transparent 0 46%,#000 47% 52%,transparent 53%);
          mask:radial-gradient(circle,transparent 0 46%,#000 47% 52%,transparent 53%);
}
.knob{
  position:absolute;inset:18%;border-radius:50%;
  background:linear-gradient(152deg,#FBFAF6,#D9D2C5 68%,#C8C1B2);
  box-shadow:
    inset 0 2px 2px rgba(255,255,255,.95),
    inset 0 -6px 12px rgba(0,0,0,.18),
    0 0 0 1px rgba(0,0,0,.14),
    0 5px 12px -4px rgba(0,0,0,.45);
  transition:transform 340ms cubic-bezier(.2,1.35,.42,1);
}
.knob::before{
  content:"";position:absolute;inset:0;border-radius:50%;
  background:repeating-conic-gradient(from 0deg,rgba(0,0,0,.16) 0 .8deg,transparent .8deg 6deg);
  -webkit-mask:radial-gradient(circle,transparent 0 72%,#000 73% 100%);
          mask:radial-gradient(circle,transparent 0 72%,#000 73% 100%);
}
.knob .pin{
  position:absolute;left:50%;top:7%;width:4px;height:30%;
  transform:translateX(-50%);border-radius:3px;background:#23231F;
  box-shadow:0 0 0 1px rgba(255,255,255,.5);
}
.dialread{
  display:inline-flex;align-items:baseline;gap:7px;
  padding:9px 13px 10px;border-radius:6px;
  background:linear-gradient(180deg,#1B1712,#100D09);
  box-shadow:inset 0 1px 8px rgba(0,0,0,.7),inset 0 0 0 1px rgba(0,0,0,.5);
}
.dialread b{
  font-family:var(--mono);font-size:32px;line-height:1;font-weight:500;
  color:var(--amber-lt);text-shadow:0 0 14px rgba(255,120,30,.42);
  font-variant-numeric:tabular-nums;
}
.dialread span{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:#8A7B68}

/* 按键 */
.runkeys{display:grid;grid-template-columns:1.3fr 1fr auto auto;gap:8px}
.k{
  font-family:var(--sans);font-size:15px;font-weight:650;letter-spacing:.02em;
  padding:14px 10px;min-height:52px;border-radius:var(--r-key);
  border:1px solid var(--rule-2);color:var(--ink);
  background:linear-gradient(180deg,#FCFBF7,#E9E5DC);
  cursor:pointer;
  box-shadow:0 2px 0 var(--rule-2),0 3px 8px -2px rgba(0,0,0,.28);
  transition:transform 90ms ease,box-shadow 90ms ease,background 120ms;
}
.k:hover{background:linear-gradient(180deg,#FFFFFF,#EDE9E1)}
.k:active{transform:translateY(2px);box-shadow:0 0 0 var(--rule-2),inset 0 2px 5px rgba(0,0,0,.2)}
.k:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
.k-main{
  background:linear-gradient(180deg,#FF9149,#EE6A12);
  border-color:var(--amber-deep);color:#20140A;
  box-shadow:0 2px 0 var(--amber-deep),0 4px 12px -2px rgba(193,84,10,.55);
}
.k-main:hover{background:linear-gradient(180deg,#FFA05F,#F4741C)}
.k-main:active{box-shadow:0 0 0 var(--amber-deep),inset 0 2px 6px rgba(0,0,0,.25)}
.k-tiny{
  padding:0 11px;font-size:11.5px;line-height:1.15;letter-spacing:.04em;white-space:nowrap;
  background:transparent;border-style:dashed;box-shadow:none;color:var(--ink3);font-weight:500;
}
.k-tiny:active{transform:translateY(1px);box-shadow:none;background:rgba(0,0,0,.03)}

/* 提示音开关：图标按钮，和按键同一套质感 */
.k-sound{
  width:50px;padding:0;display:grid;place-items:center;
  color:var(--ink2);
}
.k-sound svg{
  width:20px;height:20px;fill:none;stroke:currentColor;
  stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;
}
.k-sound .ic-off{display:none}
.k-sound[aria-pressed="false"]{color:var(--ink3);box-shadow:none;border-style:dashed;background:transparent}
.k-sound[aria-pressed="false"] .ic-on{display:none}
.k-sound[aria-pressed="false"] .ic-off{display:block}

/* 程序键 */
.pad{display:flex;flex-direction:column;min-width:0}
.pad-h{
  margin:0 0 10px;font-family:var(--mono);font-size:10.5px;
  letter-spacing:.2em;color:var(--ink3);
}
.progs{display:grid;grid-template-columns:repeat(2,1fr);grid-auto-rows:1fr;gap:10px;flex:1}
@media (min-width:760px){
  .face--wide .progs{grid-template-columns:repeat(3,1fr)}
}
.pkey{
  position:relative;text-align:left;cursor:pointer;text-decoration:none;color:var(--ink);
  display:flex;flex-direction:column;justify-content:space-between;gap:4px;
  min-height:72px;padding:12px 13px 11px;border-radius:var(--r-key);
  border:1px solid var(--rule);
  background:linear-gradient(180deg,#FCFBF7,#EFEBE2);
  box-shadow:0 2px 0 var(--rule),0 3px 7px -2px rgba(0,0,0,.22);
  transition:transform 90ms ease,box-shadow 90ms ease,border-color 140ms,background 140ms;
}
.pkey:hover{background:linear-gradient(180deg,#FFFFFF,#F2EEE6)}
.pkey:active{transform:translateY(2px);box-shadow:0 0 0 var(--rule),inset 0 2px 5px rgba(0,0,0,.18)}
.pkey:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
.pkey[aria-pressed="true"],
.pkey.is-current{
  border-color:var(--rule-2);
  background:linear-gradient(180deg,#FFF6EC,#F8ECDD);
  box-shadow:0 1px 0 var(--rule),inset 0 1px 3px rgba(0,0,0,.10);
  transform:translateY(1px);
}
.pk-id{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--ink3)}
.pk-name{font-size:19px;font-weight:700;letter-spacing:-.015em;line-height:1.2}
.pk-desc{
  font-size:11.5px;line-height:1.4;color:var(--ink3);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.face--wide .pk-desc{-webkit-line-clamp:1}
.pk-spec{font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;color:var(--ink3)}
.pk-lamp{
  position:absolute;right:11px;top:11px;width:7px;height:7px;border-radius:50%;
  background:#C6BFB1;box-shadow:inset 0 1px 1px rgba(0,0,0,.35);
  transition:background 160ms,box-shadow 160ms;
}
.pkey[aria-pressed="true"] .pk-lamp,
.pkey.is-current .pk-lamp{background:var(--amber);box-shadow:0 0 9px rgba(242,113,28,.85)}

/* 面板外的一行说明 */
.hint{
  margin:14px 0 0;font-family:var(--mono);font-size:11px;line-height:1.7;
  letter-spacing:.04em;color:var(--ink3);
}

/* ── 炉门 ─────────────────────────────────────── */
.door{
  position:relative;overflow:hidden;
  margin-top:26px;padding:20px 18px 16px;
  border-radius:14px;border:1px solid #2E271E;
  background:radial-gradient(130% 90% at 16% -6%,#2C241B 0%,#17130F 52%,#0C0A07 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 30px 60px -40px rgba(0,0,0,.75);
}
.door::before{
  content:"";position:absolute;left:-10%;top:-26%;width:76%;height:78%;
  pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(255,168,88,.17),transparent 62%);
}
.door::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(255,255,255,.018) 3px 4px);
}
.door-top{
  display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;
  padding-bottom:12px;border-bottom:1px solid rgba(255,255,255,.10);
  font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;color:#8C7C68;
  position:relative;z-index:1;
}
.door-top b{color:#C9B69C;font-weight:500}
.door-bottom{
  display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;
  padding-top:13px;margin-top:4px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;color:#8C7C68;
  position:relative;z-index:1;
}
.door-hint{color:#6B5F4F}

/* 炉门里的正文 */
.prose{position:relative;z-index:1;color:#DCD3C5;font-size:15.5px;line-height:1.72}
.prose > *:first-child{margin-top:10px}
.prose p{margin:0 0 14px}
.prose strong{color:#FFF3E4;font-weight:650}
.prose em{color:#F0C49B;font-style:normal}
.prose h2{
  margin:22px 0 8px;font-size:16px;letter-spacing:-.01em;color:#FFF1DE;font-weight:700;
}
.prose h2::before{content:"// ";color:#8A7B68;font-weight:400}

/* 炉门里的成品图：像玻璃后面看到的那盘 */
.door-photo{
  position:relative;z-index:1;margin:14px 0 18px;
  border-radius:8px;overflow:hidden;background:#221B14;
  box-shadow:0 0 0 1px rgba(255,255,255,.09), inset 0 0 40px rgba(0,0,0,.55);
}
/* 宽度撑满、比例 16:9、高度封顶：靠 object-fit 裁，不靠 figure 缩 */
.door-photo img{
  display:block;width:100%;height:auto;
  aspect-ratio:16/9;max-height:380px;object-fit:cover;
}
.door-photo::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(120% 80% at 50% -12%,rgba(255,180,110,.10),transparent 62%);
}

/* 食材清单：左边名字，右边用量，中间虚线 */
.prose .ingredients{
  list-style:none;margin:14px 0 6px;padding:0;display:grid;gap:0;
}
.prose .ingredients li{
  display:flex;align-items:baseline;gap:10px;
  padding:9px 2px;font-size:15px;color:#DED5C7;
  border-bottom:1px dashed rgba(255,255,255,.10);
}
.prose .ingredients li:last-child{border-bottom:none}
.ing-item{color:#FFF3E4;font-weight:600}
.ing-note{font-size:11.5px;color:#8C7C68;margin-left:7px;font-weight:400}
.ing-qty{
  margin-left:auto;font-family:var(--mono);font-size:12.5px;
  color:var(--amber-lt);white-space:nowrap;letter-spacing:.02em;
}

/* 步骤里的"点一下就计时" */
.op-timer{
  display:inline-flex;align-items:center;
  margin-left:8px;padding:3px 8px;border-radius:4px;
  font-family:var(--mono);font-size:11.5px;letter-spacing:.04em;
  background:rgba(242,113,28,.14);color:var(--amber-lt);
  border:1px solid rgba(242,113,28,.42);cursor:pointer;
  transition:background 140ms,transform 90ms;
}
.op-timer:hover{background:rgba(242,113,28,.28)}
.op-timer:active{transform:translateY(1px)}
.op-timer:focus-visible{outline:2px solid var(--amber);outline-offset:2px}

.op-img{display:block;margin-top:10px;border-radius:6px;max-width:100%;height:auto}

/* 步骤（JS 升级前也保持可读） */
.prose ol.steps{margin:0;padding:0 0 0 1.5em;list-style:decimal}
.js .prose ol.steps{list-style:none;padding:0}
.op{
  display:grid;grid-template-columns:auto auto 1fr;gap:12px;align-items:start;
  padding:14px 4px;border-bottom:1px solid rgba(255,255,255,.07);
  cursor:pointer;-webkit-tap-highlight-color:transparent;
  transition:color 180ms;
}
.op:last-child{border-bottom:none}
.op-n{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:#8A7B64;padding-top:5px}
.op-lamp{
  width:9px;height:9px;border-radius:50%;margin-top:9px;
  background:#2C2419;box-shadow:inset 0 1px 2px rgba(0,0,0,.8);
  transition:background 220ms,box-shadow 220ms;
}
.op-t{min-width:0}
.op[aria-checked="true"]{color:#7C7265}
.op[aria-checked="true"] .op-t{text-decoration:line-through;text-decoration-color:rgba(255,255,255,.28)}
.op[aria-checked="true"] .op-lamp{background:var(--green);box-shadow:0 0 10px rgba(61,122,82,.95)}
.op:focus-visible{outline:2px solid var(--amber);outline-offset:-3px;border-radius:4px}

/* 小贴士 */
.prose ul.tips{
  list-style:none;margin:18px 0 0;padding:0;
  display:grid;gap:8px;
}
.prose ul.tips li{
  position:relative;padding-left:18px;font-size:14.5px;color:#C9BFB0;
}
.prose ul.tips li::before{
  content:"";position:absolute;left:2px;top:.62em;width:6px;height:6px;
  background:var(--amber);border-radius:1px;opacity:.85;
}

/* 正文里的小提示块 */
.prose .note,
.prose .warn{
  margin:18px 0;padding:12px 14px;border-radius:6px;font-size:14.5px;
  border-left:3px solid var(--amber);
  background:rgba(242,113,28,.09);color:#E7D9C6;
}
.prose .note{border-left-color:#8A7B68;background:rgba(255,255,255,.045)}

/* ── 全部程序清单页 ───────────────────────────── */
.filters{display:grid;gap:12px;margin-bottom:4px}
.search{position:relative;display:block}
.search input{
  width:100%;padding:13px 14px 13px 40px;border-radius:6px;
  border:1px solid var(--rule);color:var(--ink);
  background:linear-gradient(180deg,#FCFBF7,#EFEBE2);
  font:inherit;font-size:15px;
  box-shadow:0 2px 0 var(--rule),0 3px 7px -2px rgba(0,0,0,.18);
  -webkit-appearance:none;appearance:none;
}
.search input::placeholder{color:var(--ink3)}
.search input:focus{outline:2px solid var(--amber);outline-offset:2px}
.search::before{
  content:"";position:absolute;left:15px;top:calc(50% - 8px);
  width:12px;height:12px;border:2px solid var(--ink3);border-radius:50%;
  pointer-events:none;
}
.search::after{
  content:"";position:absolute;left:25px;top:calc(50% + 3px);
  width:6px;height:2px;background:var(--ink3);transform:rotate(45deg);
  pointer-events:none;
}

.chips{display:flex;flex-wrap:wrap;gap:7px}
.chip{
  font-family:var(--sans);font-size:12.5px;line-height:1;
  padding:8px 12px;border-radius:999px;cursor:pointer;
  border:1px solid var(--rule);background:var(--paper);color:var(--ink2);
  transition:background 140ms,border-color 140ms,color 140ms;
}
.chip i{
  font-style:normal;font-family:var(--mono);font-size:10px;
  margin-left:5px;opacity:.5;
}
.chip:hover{border-color:var(--rule-2)}
.chip.is-on{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.chip.is-on i{opacity:.65}
.chip:disabled{opacity:.32;cursor:not-allowed}
.chip:focus-visible{outline:2px solid var(--amber);outline-offset:2px}

.plist-hint{
  margin:16px 0 0;font-family:var(--mono);font-size:10.5px;
  letter-spacing:.14em;color:var(--ink3);
}
.plist{
  display:grid;gap:10px;margin-top:10px;
  grid-template-columns:repeat(auto-fill,minmax(228px,1fr));
}
.pkey--sm{
  min-height:0;padding:11px 12px 10px;gap:3px;justify-content:flex-start;
}
.pkey--sm .pk-name{font-size:16.5px}
.pkey--sm .pk-desc{-webkit-line-clamp:1}
.pkey[hidden]{display:none}
.plist-empty{margin:20px 0 0;font-size:14px;color:var(--ink3)}

/* 面板上的「全部程序」格 */
.pkey--all{border-style:dashed;background:transparent;box-shadow:none;color:var(--ink2)}
.pkey--all:hover{background:rgba(0,0,0,.03)}
.pkey--all .pk-name{color:var(--ink)}

/* 页面之间的切换：Chrome 里像换一页面板 */
@view-transition{navigation:auto}
@media (prefers-reduced-motion: reduce){
  ::view-transition-group(*),
  ::view-transition-old(*),
  ::view-transition-new(*){animation:none !important}
}

/* 加热时炉门里才有蒸汽 */
.steam{position:absolute;left:0;right:0;bottom:0;height:52%;pointer-events:none;opacity:0;transition:opacity 500ms}
.door.heating .steam{opacity:1}
.js .door:not(.heating) .steam{opacity:0}
.steam i{
  position:absolute;bottom:-8%;width:16%;height:74%;border-radius:50%;opacity:0;
  background:radial-gradient(ellipse at 50% 72%,rgba(255,214,170,.55),rgba(255,214,170,0) 70%);
  filter:blur(10px);animation:rise 5.2s ease-in-out infinite;
}
.steam i:nth-child(1){left:16%;animation-delay:0s}
.steam i:nth-child(2){left:38%;animation-delay:1.4s}
.steam i:nth-child(3){left:60%;animation-delay:2.6s}
.steam i:nth-child(4){left:80%;animation-delay:3.8s}
@keyframes rise{
  0%  {transform:translateY(14%) scale(.8);opacity:0}
  26% {opacity:.5}
  100%{transform:translateY(-118%) scale(1.4);opacity:0}
}

/* ── 警示贴纸 ─────────────────────────────────── */
.sticker{
  position:relative;max-width:600px;margin:24px 0 0;
  padding:13px 16px 14px 20px;
  background:var(--warn);color:#191712;
  border:1px solid #B98B06;border-radius:2px;
  transform:rotate(-.6deg);
  box-shadow:0 3px 0 #B98B06,0 14px 22px -16px rgba(0,0,0,.6);
}
.sticker::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:8px;
  background:repeating-linear-gradient(45deg,#191712 0 3px,transparent 3px 6px);
}
.sticker-tag{font-family:var(--mono);font-size:10px;letter-spacing:.2em;opacity:.75}
.sticker p{margin:5px 0 0;font-size:15px;font-weight:650;line-height:1.5}
.sticker ul{margin:6px 0 0;padding-left:18px;font-size:14.5px;line-height:1.6}

/* ── 无障碍 ───────────────────────────────────── */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
}
