/* AI Live2D 生成器 · miaainow.com/zh/ai-live2d/studio/ · 视频配套的小工具，样子跟网站走（web/src/tokens/tokens.json） */
:root{
  --paper:#f3efe6;
  --card:#faf7f0;
  --card-2:#ebe5d8;
  --ink:#111111;
  --ink-2:#2b2a27;
  --ink-3:#67635b;
  --line:#d9d2c3;
  --line-2:#c7bfae;
  --lime:#c8f03c;
  --lime-wash:#eaf4bf;
  --sky:#8cc8f2;
  --coral:#ff6a55;
  --ok:#3f6a00;
  --warn:#9a5a00;
  --warn-soft:#f8e6c9;
  --err:#c2321f;
  --err-soft:#fbe3df;
  --sh-sm:2px 2px 0 #111;
  --sh-md:4px 4px 0 #111;
  --r:18px;
  --r-sm:12px;
  --sans:Inter,"Noto Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  --zh:"Noto Sans SC","PingFang SC","Hiragino Sans GB",system-ui,sans-serif;
  --num:"Space Grotesk",Inter,system-ui,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --check-a:#e6e0d3;--check-b:#f7f4ec;
  color-scheme:light;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:84px}
body{margin:0;background:var(--paper);color:var(--ink);font:400 16px/1.75 var(--sans);overflow-x:hidden}
a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--lime);text-decoration-thickness:3px;text-underline-offset:3px}
a:hover{text-decoration-color:var(--ink);text-decoration-thickness:2px}
code{font:500 .88em/1.4 var(--mono);background:var(--card-2);border:1px solid var(--line);border-radius:6px;padding:.08em .38em;word-break:break-all}
img{max-width:100%}
button,input,select{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--ink);outline-offset:2px;border-radius:8px}
[hidden]{display:none!important}

/* ---------- 字标（跟网站顶栏一样） ---------- */
.wm{display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:var(--ink)}
.wm>img{width:30px;height:30px;border-radius:50%;flex:none}
.wm-t{display:inline-flex;align-items:center;font:900 21px/1 Inter,sans-serif;letter-spacing:-.02em;white-space:nowrap}
.wm-zh{font-family:var(--zh);font-weight:900;margin:0 .24em 0 .26em;letter-spacing:0}
.key{display:inline-flex;align-items:center;justify-content:center;background:var(--lime);border:2px solid var(--ink);border-radius:8px;padding:3px 6px;box-shadow:var(--sh-sm);transform:rotate(-5deg);font:700 .83em/1 var(--num)}

/* ---------- 顶栏 ---------- */
.bar{position:sticky;top:0;z-index:30;background:var(--paper);border-bottom:1px solid var(--line)}
.bar-in{max-width:1240px;margin:0 auto;padding:10px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:62px}

/* ---------- 布局 ---------- */
.shell{max-width:1240px;margin:0 auto;padding:0 24px 40px;display:grid;grid-template-columns:200px minmax(0,1fr);gap:40px}
.rail{position:sticky;top:86px;align-self:start;padding-top:44px}
.rail ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;position:relative}
.rail ol::before{content:"";position:absolute;left:15px;top:18px;bottom:18px;width:2px;background:var(--line)}
.rail a{display:flex;align-items:center;gap:12px;padding:8px 10px 8px 0;color:var(--ink-3);text-decoration:none;font-size:15px;position:relative}
.rail b{flex:none;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--paper);border:2px solid var(--line-2);font:700 14px/1 var(--num);color:var(--ink-3);transition:all .2s}
.rail a:hover{color:var(--ink)}
.rail a.cur{color:var(--ink);font-weight:700}
.rail a.cur b{border-color:var(--ink);color:var(--ink)}
.rail a.done b{background:var(--lime);border-color:var(--ink);color:var(--ink);font-size:0}
.rail a.done b::after{content:"";width:11px;height:6px;border:2.4px solid var(--ink);border-top:0;border-right:0;transform:translateY(-2px) rotate(-45deg)}
.main{min-width:0;padding-bottom:20px}

/* ---------- 开头 ---------- */
.hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:32px;align-items:center;padding:46px 0 20px}
.eyebrow{display:inline-block;margin:0 0 14px;font:700 13.5px/1 var(--zh);background:var(--lime-wash);border:1.5px solid var(--ink);border-radius:999px;padding:7px 12px}
.hero h1{margin:0;font:900 clamp(38px,5.4vw,64px)/1.08 var(--sans);letter-spacing:-.02em}
.lead{margin:16px 0 0;font-size:18px;color:var(--ink-2);max-width:32em}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.demo-note{margin:12px 0 0;font-size:13.5px;color:var(--ink-3)}
.needs{margin:22px 0 0;padding:0;list-style:none;display:grid;gap:5px;font-size:14px;color:var(--ink-3)}
.needs li{padding-left:22px;position:relative}
.needs li::before{content:"";position:absolute;left:3px;top:.6em;width:9px;height:9px;border-radius:3px;background:var(--lime);box-shadow:inset 0 0 0 1.5px var(--ink)}
.vid{display:flex;align-items:center;gap:14px;margin-top:22px;max-width:470px;padding:8px 14px 8px 8px;background:var(--card);border:2px solid var(--ink);border-radius:14px;box-shadow:var(--sh-sm);text-decoration:none;color:var(--ink-2);font-size:14px;line-height:1.5}
.vid:hover{text-decoration:none;transform:translate(-1px,-1px);box-shadow:3px 3px 0 #111}
.vid img{width:120px;height:68px;object-fit:cover;border-radius:8px;border:1.5px solid var(--ink);flex:none}
.vid b{display:block;color:var(--ink);font-size:15px}
.hero-art{margin:0;position:relative;height:420px}
.stack{position:absolute;inset:0;display:grid;place-items:center}
.sheet{position:absolute;height:400px;width:auto;transition:transform .6s cubic-bezier(.2,.8,.2,1);-webkit-mask-image:linear-gradient(#000 78%,transparent 99%);mask-image:linear-gradient(#000 78%,transparent 99%)}
.sheet.s1{z-index:3;filter:drop-shadow(0 16px 20px rgba(17,17,17,.16))}
.sheet.s2{z-index:2;opacity:.3;transform:translate(26px,-20px);filter:grayscale(1)}
.sheet.s3{z-index:1;opacity:.15;transform:translate(52px,-40px);filter:grayscale(1)}
.hero-art:hover .s2{transform:translate(40px,-30px)}
.hero-art:hover .s3{transform:translate(80px,-60px)}
.tag{position:absolute;z-index:4;font:700 13px/1 var(--zh);background:var(--card);border:2px solid var(--ink);box-shadow:var(--sh-sm);padding:7px 11px;border-radius:999px;white-space:nowrap}
.tag.t1{left:6%;top:16%}
.tag.t2{right:0;top:46%}
.tag.t3{left:12%;bottom:12%}
.tag::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--lime);box-shadow:inset 0 0 0 1.5px var(--ink);margin-right:7px;vertical-align:0}

/* ---------- 按钮 ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:9px 20px;border-radius:999px;border:2px solid var(--ink);background:var(--card);color:var(--ink);font:700 15px/1.2 var(--sans);text-decoration:none;cursor:pointer;transition:transform .1s,box-shadow .1s,background .15s;white-space:nowrap}
.btn:hover{background:#fff;text-decoration:none}
.btn:active{transform:translate(2px,2px);box-shadow:none}
.btn[disabled]{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}
.btn-primary{background:var(--lime);box-shadow:var(--sh-sm)}
.btn-primary:hover{background:#d4f55a}
.btn-sm{min-height:36px;padding:5px 14px;font-size:13.5px}
.btn-lg{min-height:52px;padding:12px 26px;font-size:17px}
.btn.wide{width:100%}
.btn[aria-pressed="true"]{background:var(--lime-wash)}
.link-btn{background:none;border:0;padding:0;color:var(--ink);cursor:pointer;font-weight:500;text-decoration:underline;text-decoration-color:var(--lime);text-decoration-thickness:3px;text-underline-offset:3px}
.link-btn:hover{text-decoration-color:var(--ink);text-decoration-thickness:2px}

/* ---------- 上次做到一半 ---------- */
.resume{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;background:var(--lime-wash);border:2px solid var(--ink);border-radius:var(--r);padding:14px 18px;margin:8px 0 6px}
.resume p{margin:0}
.resume b{margin-right:6px}
.row{display:flex;gap:10px;flex-wrap:wrap}

/* ---------- 每一步 ---------- */
.step{background:var(--card);border:2px solid var(--ink);border-radius:20px;box-shadow:var(--sh-md);padding:28px 32px 32px;margin:28px 0}
.step-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:18px;align-items:start;margin-bottom:22px}
.num{display:grid;place-items:center;width:46px;height:46px;border-radius:12px;border:2px solid var(--ink);background:var(--paper);font:700 22px/1 var(--num);transition:transform .2s,background .2s,box-shadow .2s}
.step.cur .num{background:var(--lime);box-shadow:var(--sh-sm);transform:rotate(-5deg)}
.step.done .num{background:var(--lime)}
.step h2{margin:0;font:900 26px/1.3 var(--zh)}
.sub{margin:6px 0 0;color:var(--ink-2);font-size:15.5px}
.badge{font:700 12.5px/1 var(--zh);padding:7px 11px;border-radius:999px;background:var(--card-2);color:var(--ink-3);border:1.5px solid var(--line-2);white-space:nowrap;margin-top:6px}
.badge.ok{background:var(--lime);color:var(--ink);border-color:var(--ink)}
.badge.busy{background:var(--lime-wash);color:var(--ink);border-color:var(--ink)}
.h3{margin:0 0 12px;font:900 18px/1.4 var(--zh)}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}
.note{font-size:13.5px;color:var(--ink-3);margin:12px 0 0;line-height:1.65}
.or{margin:12px 0 0;font-size:14px}

/* ---------- 拖放 ---------- */
.drop{display:block;position:relative;border:2px dashed var(--line-2);border-radius:var(--r);background:var(--paper);cursor:pointer;transition:border-color .15s,background .15s;min-height:230px}
.drop:hover,.drop.over{border-color:var(--ink);background:var(--lime-wash)}
.drop-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px;padding:34px 22px;min-height:226px;color:var(--ink-3);font-size:14px}
.drop-empty b{color:var(--ink);font-size:17px}
.drop-icon{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;background:var(--lime);border:2px solid var(--ink);box-shadow:var(--sh-sm);color:var(--ink);margin-bottom:6px}
.drop-icon svg{width:26px;height:26px}
.drop-slim{min-height:0}
.drop-slim .drop-empty{min-height:0;padding:22px 18px}
.drop-slim .drop-empty b{font-size:15.5px}
.drop-full{display:flex;gap:18px;align-items:center;padding:16px}
.drop-full img{width:130px;height:180px;object-fit:contain;border-radius:12px;background:repeating-conic-gradient(var(--check-a) 0 25%,var(--check-b) 0 50%) 0 0/16px 16px;flex:none}
.drop-meta{display:flex;flex-direction:column;gap:4px;min-width:0;font-size:14px;color:var(--ink-2)}
.drop-meta b{color:var(--ink);font-size:15.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drop-meta .link{text-decoration:underline;text-decoration-color:var(--lime);text-decoration-thickness:3px;text-underline-offset:3px;margin-top:6px;color:var(--ink)}
.drop-ghost{min-height:0;margin-top:18px;background:transparent;padding:14px 16px;font-size:14px;color:var(--ink-2);text-align:center}
.checks{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:6px;font-size:14px}
.checks li{display:flex;gap:9px;align-items:flex-start;color:var(--ink-2)}
.checks li::before{content:"";flex:none;width:16px;height:16px;margin-top:4px;border-radius:50%;background:var(--lime);border:2px solid var(--ink)}
.checks li.warn::before{background:#f2b33d}
.rules{list-style:none;margin:0;padding:0;display:grid;gap:9px;font-size:15px;color:var(--ink-2)}
.rules li{padding-left:28px;position:relative}
.rules li::before{content:"";position:absolute;left:1px;top:.36em;width:18px;height:18px;border-radius:6px;background:var(--lime);border:1.5px solid var(--ink)}
.rules li::after{content:"";position:absolute;left:6.5px;top:calc(.36em + 5px);width:8px;height:4.5px;border:2.2px solid var(--ink);border-top:0;border-right:0;transform:rotate(-45deg)}
.rules b{color:var(--ink)}

/* ---------- 折叠 ---------- */
.fold{margin-top:20px;border:1.5px solid var(--line-2);border-radius:var(--r-sm);background:var(--card);overflow:hidden}
.fold>summary{cursor:pointer;list-style:none;padding:13px 16px;font-weight:700;display:flex;align-items:center;justify-content:space-between;gap:10px}
.fold>summary::-webkit-details-marker{display:none}
.fold>summary::after{content:"";width:9px;height:9px;border:2px solid var(--ink);border-top:0;border-left:0;transform:rotate(45deg) translateY(-3px);transition:transform .2s;flex:none}
.fold[open]>summary::after{transform:rotate(225deg) translate(-2px,-2px)}
.fold-body{padding:0 16px 16px;font-size:14.5px;color:var(--ink-2)}
.fold-body>p:first-child{margin-top:0}
.fold.small>summary{font-size:14.5px;padding:11px 14px}
.fold.small{margin-top:14px}
.steps{margin:0;padding-left:34px}
.steps li{margin:3px 0}
.fields{display:grid;gap:9px;margin:12px 0 14px}
.fields label{display:grid;grid-template-columns:44px minmax(0,1fr);gap:10px;align-items:center;font-size:13.5px;color:var(--ink-3)}
.fields input,.adv input,.adv select,.token-row input{width:100%;min-height:40px;border:2px solid var(--line-2);border-radius:10px;background:#fff;padding:8px 11px;font-size:14.5px;color:var(--ink)}
.fields input:focus,.adv input:focus,.adv select:focus,.token-row input:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px var(--lime-wash)}
.adv{display:grid;gap:12px}
.adv label{display:grid;gap:5px;font-size:13.5px;color:var(--ink-3)}
.adv label.check{display:flex;gap:9px;align-items:center;color:var(--ink-2);font-size:14.5px}
.adv input[type=checkbox],.remember input{width:18px;height:18px;min-height:0;accent-color:var(--ink)}

/* ---------- 提示词 ---------- */
.prompt{border:1.5px solid var(--line-2);border-radius:var(--r-sm);background:var(--paper);overflow:hidden;margin:0 0 14px}
.prompt-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 8px 8px 14px;border-bottom:1.5px solid var(--line-2);font-size:13px;color:var(--ink-3);font-weight:700}
.prompt pre{margin:0;padding:13px 15px;font:400 13.5px/1.75 var(--mono);white-space:pre-wrap;word-break:break-word;color:var(--ink);max-height:260px;overflow:auto}
.lang-switch{display:inline-flex;background:var(--card);border:1.5px solid var(--line-2);border-radius:999px;padding:2px}
.lang-switch button{border:0;background:none;padding:4px 11px;border-radius:999px;font-size:12.5px;font-weight:700;color:var(--ink-3);cursor:pointer}
.lang-switch button.on{background:var(--ink);color:var(--paper)}

/* ---------- 第 2 步 ---------- */
.seg{display:inline-flex;background:var(--paper);border:2px solid var(--ink);border-radius:999px;padding:3px;margin-bottom:20px}
.seg button{border:0;background:none;padding:7px 16px;border-radius:999px;font-weight:700;font-size:14.5px;color:var(--ink-3);cursor:pointer;min-height:36px}
.seg button.on{background:var(--ink);color:var(--paper)}
.grid-run>div:first-child>p:first-child{margin-top:0;color:var(--ink-2);font-size:15px}
.token{background:var(--paper);border:1.5px solid var(--line-2);border-radius:var(--r-sm);padding:14px}
.token-field{display:grid;gap:7px;font-size:13.5px;font-weight:700;color:var(--ink-2)}
.token-row{display:flex;gap:8px}
.token-row input{font-family:var(--mono);font-size:13.5px}
.token-row .btn{flex:none}
.remember{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:13.5px;color:var(--ink-2)}
.token-status{margin:8px 0 0;font-size:13.5px}
.token-status:empty{display:none}
.token-status.ok{color:var(--ok)}
.token-status.bad{color:var(--err)}
.runbox{display:flex;flex-direction:column;align-items:stretch;gap:12px;background:var(--lime-wash);border:2px solid var(--ink);border-radius:var(--r);padding:20px}
.runbox-hint{margin:0;font-size:14px;color:var(--ink-3);text-align:center}
.runbox .link-btn{align-self:center;font-size:14.5px}
.progress{background:var(--card);border:1.5px solid var(--ink);border-radius:var(--r-sm);padding:14px 16px}
.progress-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:15px}
.progress-top span{font:500 14px/1 var(--num);color:var(--ink-3)}
.meter{height:12px;border-radius:99px;background:var(--paper);margin:10px 0 8px;overflow:hidden;border:2px solid var(--ink)}
.meter i{display:block;height:100%;width:0;background:var(--lime);border-right:2px solid var(--ink);transition:width .6s ease}
.meter.indet i{width:35%!important;animation:indet 1.4s ease-in-out infinite;border-left:2px solid var(--ink)}
@keyframes indet{0%{transform:translateX(-100%)}100%{transform:translateX(300%)}}
.progress-sub{margin:0 0 6px;font-size:13.5px;color:var(--ink-3)}
.alert{border-radius:var(--r-sm);padding:13px 15px;font-size:14.5px;background:var(--err-soft);color:var(--ink);border:2px solid var(--err)}
.alert b{color:var(--err)}
.alert p{margin:6px 0 0}
.alert ul{margin:6px 0 0;padding-left:20px}
.alert .raw{font:400 12px/1.5 var(--mono);color:var(--ink-3);word-break:break-word;margin-top:8px}

.result{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:28px;margin-top:26px;padding-top:26px;border-top:2px dashed var(--line-2)}
.viewer-stage{position:relative;border-radius:var(--r);border:2px solid var(--ink);overflow:hidden;aspect-ratio:3/4;max-height:74vh;display:grid;place-items:center;perspective:1400px}
.checker{background:repeating-conic-gradient(var(--check-a) 0 25%,var(--check-b) 0 50%) 0 0/20px 20px}
.viewer-stage canvas{max-width:100%;max-height:100%;display:block}
.viewer-stage.exploded>canvas{display:none}
.xstack{position:absolute;inset:8% 6%;display:grid;place-items:center;transform-style:preserve-3d;transition:transform 1.1s cubic-bezier(.2,.8,.2,1)}
.xstack.open{transform:rotateX(10deg) rotateY(-48deg) scale(.66)}
.xbox{position:relative;height:100%;max-width:100%;transform-style:preserve-3d}
.plane{position:absolute;inset:0;border:1px solid rgba(17,17,17,.28);background:rgba(250,247,240,.16);border-radius:4px;transition:transform 1.1s cubic-bezier(.2,.8,.2,1)}
.plane canvas{position:absolute;display:block}
.viewer-tools{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.layers-head{display:flex;align-items:baseline;gap:10px;margin:0 0 12px;flex-wrap:wrap}
.layers-head b{font:900 20px/1.2 var(--zh)}
.layers-head span{font-size:13.5px;color:var(--ink-3)}
.layer-list{list-style:none;margin:0;padding:0 2px 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px;max-height:520px;overflow:auto}
.layer-list button{width:100%;display:flex;flex-direction:column;align-items:stretch;gap:5px;background:var(--card);border:1.5px solid var(--line-2);border-radius:12px;padding:6px;cursor:pointer;text-align:left;transition:border-color .15s,opacity .15s}
.layer-list button:hover{border-color:var(--ink)}
.layer-list button.off{opacity:.42}
.layer-list button.off .thumb{filter:grayscale(1)}
.layer-list .thumb{aspect-ratio:1;border-radius:8px;background:repeating-conic-gradient(var(--check-a) 0 25%,var(--check-b) 0 50%) 0 0/10px 10px;display:grid;place-items:center;overflow:hidden}
.layer-list .thumb canvas{max-width:92%;max-height:92%}
.layer-list .ln{font-size:13px;font-weight:700;line-height:1.25;color:var(--ink)}
.layer-list .le{font:400 11px/1.2 var(--mono);color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- 第 3 步 ---------- */
.howto{margin:0 0 22px;padding:0;list-style:none;counter-reset:h;display:grid;gap:8px}
.howto li{counter-increment:h;padding-left:38px;position:relative;font-size:15px;color:var(--ink-2)}
.howto li::before{content:counter(h);position:absolute;left:0;top:1px;width:26px;height:26px;border-radius:8px;background:var(--ink);color:var(--paper);font:700 13.5px/26px var(--num);text-align:center}
.howto b{color:var(--ink)}
.edit{display:flex;flex-direction:column;min-width:0}
.patch{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:14px;margin-top:14px;align-items:start}
.patch-view{position:relative;border-radius:var(--r-sm);border:2px solid var(--ink);overflow:hidden;aspect-ratio:16/10;display:grid;place-items:center}
.patch-view canvas{width:100%;height:100%;object-fit:contain;display:block}
.patch-label{position:absolute;left:8px;top:8px;font-size:11.5px;font-weight:700;background:var(--card);border:1.5px solid var(--ink);padding:3px 8px;border-radius:99px;color:var(--ink)}
.patch-side{display:flex;flex-direction:column;gap:10px;font-size:13.5px}
.patch-msg{margin:0;color:var(--ink-2);line-height:1.55}
.patch-msg.warn{color:var(--warn)}
.patch-msg.bad{color:var(--err)}
.nudge{display:grid;grid-template-columns:repeat(3,38px);grid-template-rows:repeat(2,34px);gap:4px}
.nudge button{border:2px solid var(--ink);background:var(--card);border-radius:9px;cursor:pointer;font-weight:700;font-size:15px}
.nudge button:hover{background:var(--lime)}
.nudge [data-nudge="0,-1"]{grid-column:2}
.nudge [data-nudge="-1,0"]{grid-column:1;grid-row:2}
.nudge [data-nudge="1,0"]{grid-column:3;grid-row:2}
.nudge [data-nudge="0,1"]{grid-column:2;grid-row:2}
.sample-only{margin-top:10px;align-self:flex-start;font-size:14px}
.mia-note{margin-top:24px;border:2px solid var(--ink);background:var(--lime-wash);border-radius:var(--r-sm);padding:12px 16px;font-size:14.5px;color:var(--ink-2)}
.mia-note p{margin:0}
.mia-note p+p{margin-top:6px}
.mia-note b{color:var(--ink)}

/* ---------- 第 4 步 ---------- */
.rig{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(250px,.65fr);gap:24px;align-items:start}
.rig-stage{position:relative;border-radius:var(--r);overflow:hidden;border:2px solid var(--ink);background:#f4f1ea;aspect-ratio:4/5;max-height:78vh;width:100%}
.rig-stage iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;background:transparent}
.rig-stage:fullscreen{border-radius:0;border:0;max-height:none;aspect-ratio:auto}
.rig-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;color:var(--ink-3);background:repeating-linear-gradient(-45deg,rgba(17,17,17,.03) 0 12px,transparent 12px 24px),var(--paper);font-size:14.5px}
.rig-empty p{margin:0}
.rig-empty-title{font:900 21px/1.3 var(--zh);color:var(--ink);margin-bottom:6px!important}
.rig-empty .btn{margin-top:16px}
.rig-empty .drop-ghost{max-width:320px}
.rig-busy{position:absolute;inset:0;display:flex;gap:12px;align-items:center;justify-content:center;background:rgba(243,239,230,.84);color:var(--ink);font-weight:700;font-size:15px}
.spinner{width:20px;height:20px;border-radius:50%;border:3px solid rgba(17,17,17,.18);border-top-color:var(--ink);animation:spin .8s linear infinite;flex:none}
@keyframes spin{to{transform:rotate(360deg)}}
.fs-btn{position:absolute;right:12px;bottom:12px;width:42px;height:42px;border-radius:12px;border:2px solid var(--ink);background:var(--card);color:var(--ink);display:grid;place-items:center;cursor:pointer;box-shadow:var(--sh-sm)}
.fs-btn svg{width:20px;height:20px}
.rig-stage:fullscreen .fs-btn{opacity:.3}
.rig-panel{display:flex;flex-direction:column;gap:18px}
.rig-sum{margin:-8px 0 0;font-size:13.5px;color:var(--ink-3);text-align:center}
.ctl-label{margin:0 0 8px;font:700 12.5px/1 var(--zh);letter-spacing:.08em;color:var(--ink-3)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips+.chips{margin-top:8px}
.chips button{border:2px solid var(--ink);background:var(--card);border-radius:99px;padding:5px 13px;font-size:14px;font-weight:700;cursor:pointer;color:var(--ink);min-height:36px}
.chips button:hover{background:#fff}
.chips button.on{background:var(--ink);color:var(--paper)}
.toggles{display:grid;gap:6px}
.tg{display:flex;align-items:center;gap:10px;border:2px solid var(--line-2);background:var(--card);border-radius:12px;padding:8px 12px;font-size:14.5px;font-weight:700;cursor:pointer;text-align:left;color:var(--ink-2);min-height:44px}
.tg i{flex:none;width:36px;height:22px;border-radius:99px;background:var(--paper);border:2px solid var(--ink);position:relative;transition:background .2s}
.tg i::after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:var(--ink);transition:transform .2s}
.tg[aria-pressed="true"]{border-color:var(--ink);color:var(--ink)}
.tg[aria-pressed="true"] i{background:var(--lime)}
.tg[aria-pressed="true"] i::after{transform:translateX(14px)}
.tg.busy i{animation:pulse 1s ease-in-out infinite}
@keyframes pulse{50%{opacity:.4}}
.ctl-note{margin:8px 0 0;font-size:13px;color:var(--ink-3)}
.ctl-note.bad{color:var(--err)}
.exports{display:grid;gap:8px}
.exports .btn{justify-content:flex-start}
.is-off{opacity:.42;pointer-events:none;filter:grayscale(.4)}

/* ---------- 第 5 步 ---------- */
.routes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.route{border:1.5px solid var(--line-2);border-radius:var(--r);padding:20px 22px;background:var(--paper)}
.route h3{margin:2px 0 10px;font:900 18px/1.4 var(--zh)}
.route p,.route li{font-size:14.5px;color:var(--ink-2)}
.route p{margin:0}
.route ol{margin:0;padding-left:20px;display:grid;gap:5px}
.route .note{margin-top:10px}
.route-tag{display:inline-block;font:700 12px/1 var(--zh)!important;color:var(--ink)!important;background:var(--lime);border:1.5px solid var(--ink);padding:5px 9px;border-radius:99px}
.gloss{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 14px;margin:12px 0 0}
.gloss div{display:flex;flex-direction:column;font-size:13.5px}
.gloss dt{font-weight:700;color:var(--ink)}
.gloss dd{margin:0;color:var(--ink-3)}

/* ---------- 页脚 ---------- */
.foot{border-top:2px solid var(--ink);background:var(--card);margin-top:20px}
.foot-in{max-width:1240px;margin:0 auto;padding:30px 24px 44px;display:grid;gap:14px}
.foot-brand{display:flex;align-items:center;gap:8px 16px;flex-wrap:wrap}
.made{color:var(--ink-3);text-decoration:none;font:500 15px/1 var(--sans);display:inline-flex;align-items:center;gap:8px}
.made:hover{color:var(--ink);text-decoration:none}
.made .wm-t{font-size:19px;color:var(--ink)}
.foot-what{font-size:14px;color:var(--ink-3)}
.foot-links{display:flex;flex-wrap:wrap;gap:8px 22px;font-size:14.5px}
.foot-fine{margin:0;font-size:13px;color:var(--ink-3)}
.foot-fine a{color:var(--ink-2)}

/* ---------- 一键演示、提示 ---------- */
.demo-bar{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:60;display:flex;align-items:center;gap:10px;background:var(--lime);color:var(--ink);border:2px solid var(--ink);box-shadow:var(--sh-md);padding:10px 18px;border-radius:999px;font-weight:700;font-size:14.5px;max-width:calc(100vw - 32px);white-space:nowrap}
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:var(--ink);color:var(--paper);padding:10px 18px;border-radius:99px;font-size:14px;font-weight:700;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:50;max-width:calc(100vw - 32px);text-align:center}
.toast.show{opacity:1;transform:translate(-50%,0)}
.demo-bar:not([hidden])~.toast{bottom:84px}

/* ---------- 窄屏 ---------- */
@media (max-width:1080px){
  .shell{grid-template-columns:minmax(0,1fr);gap:0}
  .rail{position:sticky;top:62px;z-index:20;padding:0;margin:0 -24px;background:var(--paper);border-bottom:1px solid var(--line)}
  .rail ol{flex-direction:row;gap:0;overflow-x:auto;padding:8px 16px;scrollbar-width:none}
  .rail ol::-webkit-scrollbar{display:none}
  .rail ol::before{display:none}
  .rail a{padding:4px 14px 4px 0;font-size:13.5px;white-space:nowrap;gap:7px}
  .rail b{width:24px;height:24px;font-size:12px;border-width:1.5px}
  .rail a.done b::after{width:9px;height:5px;border-width:2px}
  html{scroll-padding-top:118px}
}
@media (max-width:860px){
  .hero{grid-template-columns:minmax(0,1fr);padding-top:28px;gap:8px}
  .hero-art{height:300px}
  .sheet{height:290px}
  .grid2,.result,.rig,.routes{grid-template-columns:minmax(0,1fr)}
  .rig-stage{aspect-ratio:3/4;max-height:70vh}
}
@media (max-width:560px){
  .bar-in{padding:8px 16px;min-height:56px}
  .wm-t{font-size:18px}
  .wm>img{width:26px;height:26px}
  .rail{top:56px}
  .shell{padding:0 16px 30px}
  .rail{margin:0 -16px}
  .hero h1{font-size:36px}
  .lead{font-size:16px}
  .hero-cta .btn{flex:1 1 auto}
  .hero-art{height:260px;margin-top:10px}
  .sheet{height:250px}
  .tag{font-size:12px;padding:6px 10px}
  .tag.t1{left:0}
  .tag.t3{left:4%}
  .vid img{width:96px;height:54px}
  .step{padding:20px 16px 22px;border-radius:18px;margin:20px 0;box-shadow:var(--sh-sm)}
  .step-head{grid-template-columns:auto minmax(0,1fr);gap:12px}
  .step-head .badge{grid-column:2;justify-self:start;margin-top:0}
  .num{width:38px;height:38px;font-size:18px;border-radius:10px}
  .step h2{font-size:21px}
  .sub{font-size:14.5px}
  .drop-full img{width:96px;height:132px}
  .patch{grid-template-columns:minmax(0,1fr)}
  .patch-side{flex-direction:row;align-items:center;flex-wrap:wrap}
  .patch-msg{flex:1 1 100%}
  .fields label{grid-template-columns:minmax(0,1fr);gap:4px}
  .gloss{grid-template-columns:minmax(0,1fr)}
  .foot-in{padding:26px 16px 40px}
  .layer-list{grid-template-columns:repeat(3,minmax(0,1fr))}
  .demo-bar{bottom:16px;font-size:13.5px}
}
