/* Гримуар Белгардина — single dark theme by choice: it's read next to the game. */
:root{
  --bg:#0b0a0e;--surface:#15131a;--surface2:#1f1c25;--line:#2e2a35;
  --ink:#ece5d7;--muted:#a39b8f;--soul:#8fd3bf;--gold:#d4a85a;--blood:#dc5841;
  --kd:#f2cf3c;--stag:#ff6fae;--grab:#a35cff;--jg:#ff8a1e;--safe:#3fd77a;--m-death:#ff3b3b;--m-cnt:#3f8cff;
  --f-display:"Alegreya SC","Palatino Linotype",Georgia,serif;
  --f-body:"Golos Text","Segoe UI",system-ui,sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
  --r:12px;--navh:56px;color-scheme:dark;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--navh) + 12px)}
html,body{background:var(--bg)}
body{color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.55;margin:0;overflow-x:hidden}
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:60;opacity:.05;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}
a{color:var(--soul)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
img{max-width:100%}
[hidden]{display:none!important}
.wrap{max-width:1180px;margin:0 auto;padding-inline:16px}
h1,h2,h3{font-family:var(--f-display);font-weight:700;letter-spacing:.01em;text-wrap:balance;margin:0}
h2{font-size:clamp(1.9rem,4.6vw,3.1rem);line-height:1.02;font-weight:800}
h3,.h3{font-size:1.18rem}
p{margin:0}
.kicker{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.ko{font-family:var(--f-body);color:var(--muted);font-size:.6em;font-weight:400;letter-spacing:0}
.num{font-variant-numeric:tabular-nums;font-family:var(--f-mono)}
.muted{color:var(--muted)}

/* ===== ambient page background ===== */
.ambient{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.amb-img{position:absolute;inset:-6%;background:center/cover no-repeat;opacity:0;transition:opacity 1.6s ease;filter:saturate(.9) brightness(.55)}
.amb-img.on{opacity:.22}
#ambFx{position:absolute;inset:0;width:100%;height:100%}
.amb-fog{position:absolute;inset:0;background:radial-gradient(120% 70% at 50% 110%,rgba(110,90,150,.10),transparent 60%),radial-gradient(90% 60% at 10% 0%,rgba(143,211,191,.05),transparent 60%),linear-gradient(180deg,rgba(11,10,14,.55),rgba(11,10,14,.85))}
.cursor-glow{position:fixed;left:0;top:0;width:520px;height:520px;margin:-260px 0 0 -260px;border-radius:50%;pointer-events:none;z-index:0;background:radial-gradient(circle,rgba(167,127,228,.10),rgba(143,211,191,.05) 35%,transparent 65%);transform:translate(-999px,-999px);transition:opacity .4s;mix-blend-mode:screen}
.flash{position:fixed;inset:0;z-index:55;pointer-events:none;background:radial-gradient(80% 60% at 70% 10%,rgba(220,230,255,.55),rgba(160,170,220,.12) 60%,transparent);opacity:0}
.flash.go{animation:flash .9s ease-out}
@keyframes flash{0%{opacity:0}6%{opacity:.9}12%{opacity:.2}18%{opacity:.7}100%{opacity:0}}

/* ===== NAV + BOSS HP ===== */
.topbar{position:fixed;left:0;right:0;top:0;z-index:50;padding-top:env(safe-area-inset-top,0px);background:color-mix(in srgb,var(--bg) 65%,transparent);backdrop-filter:blur(12px) saturate(1.2);border-bottom:1px solid color-mix(in srgb,var(--line) 70%,transparent)}
.topbar .row{display:flex;align-items:center;gap:12px;height:var(--navh)}
.brand{font:800 1.05rem var(--f-display);white-space:nowrap;color:var(--ink);text-decoration:none;display:flex;align-items:center;gap:8px}
.nav{display:flex;gap:2px;overflow-x:auto;flex:1;min-width:0;scrollbar-width:none;mask-image:linear-gradient(90deg,#000 88%,transparent)}
.nav::-webkit-scrollbar{display:none}
.nav a{font:600 .82rem var(--f-body);color:var(--muted);text-decoration:none;padding:7px 10px;border-radius:7px;white-space:nowrap;transition:color .2s,background .2s}
.nav a:hover{color:var(--ink)}
.nav a.cur{color:var(--ink);background:var(--surface2)}
.author{display:inline-flex;align-items:center;gap:6px;font:600 .8rem var(--f-body);color:#b9c0ff;text-decoration:none;padding:6px 10px;border:1px solid color-mix(in srgb,#5865f2 50%,var(--line));border-radius:999px;background:color-mix(in srgb,#5865f2 14%,transparent);white-space:nowrap;transition:background .2s,transform .2s}
.author:hover{background:color-mix(in srgb,#5865f2 30%,transparent);transform:translateY(-1px)}
.author.big{font-size:1rem;padding:9px 16px}
.cheat{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;font:600 .8rem var(--f-body);color:#f0d9a6;text-decoration:none;padding:6px 12px;border:1px solid color-mix(in srgb,var(--gold,#d4a85a) 55%,var(--line));border-radius:999px;background:linear-gradient(180deg,color-mix(in srgb,#d4a85a 22%,transparent),color-mix(in srgb,#d4a85a 8%,transparent));box-shadow:0 0 14px -6px rgba(212,168,90,.7);white-space:nowrap;transition:background .2s,transform .2s,box-shadow .2s}
.cheat:hover{background:color-mix(in srgb,#d4a85a 32%,transparent);box-shadow:0 0 18px -4px rgba(212,168,90,.85);transform:translateY(-1px)}
.diff{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;flex:0 0 auto}
.diff button{--sk:#f1ece2;display:grid;place-items:center;background:none;border:0;color:var(--sk);padding:5px 8px;cursor:pointer;opacity:.62;filter:saturate(.7);transition:opacity .2s,filter .2s,background .2s}
.diff button[data-d=H]{--sk:#ff3b3b}.diff button[data-d=NM]{--sk:#a35cff}
.diff button:hover{opacity:.8;filter:none}
.diff button[aria-pressed=true]{opacity:1;filter:drop-shadow(0 0 5px color-mix(in srgb,var(--sk) 70%,transparent));background:color-mix(in srgb,var(--sk) 16%,transparent)}
.diff .skull{width:19px;height:19px;display:block}
.bosshp{position:relative;height:5px;background:#24080a}
.bosshp i{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,#7a1b12,var(--blood) 60%,#ff8d6b);box-shadow:0 0 12px var(--blood);transition:width .15s linear}
.bosshp b{position:absolute;right:16px;top:7px;font:600 .66rem var(--f-mono);color:var(--blood);letter-spacing:.08em;text-shadow:0 1px 3px #000}

/* ===== HERO ===== */
.hero{position:relative;height:100vh;min-height:620px;max-height:1100px;overflow:hidden;isolation:isolate;display:grid;align-items:end;background:#0a0a10}
.hero-art{position:absolute;left:0;top:0;width:100%;height:100%;z-index:-3;transform-origin:60% 40%;will-change:transform}
.hero-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(1.05) contrast(1.05)}
.hero-art .chest{position:absolute;left:48.5%;top:51%;width:15%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,rgba(190,140,255,.75),rgba(140,80,255,.25) 30%,transparent 65%);mix-blend-mode:screen;animation:chest 3.4s ease-in-out infinite}
.hero-art .eye{position:absolute;left:49.2%;top:29%;width:3%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,rgba(220,200,255,.7),transparent 70%);mix-blend-mode:screen;animation:chest 5s ease-in-out infinite reverse}
@keyframes chest{0%,100%{opacity:.55;transform:translate(-50%,-50%) scale(.9)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.15)}}
#heroGL{position:absolute;inset:0;width:100%;height:100%;z-index:-2;display:block}
.hero-shade{position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(90deg,rgba(8,8,12,.92) 0%,rgba(8,8,12,.65) 32%,rgba(8,8,12,.05) 62%),linear-gradient(180deg,rgba(11,10,14,.35),transparent 30%,transparent 62%,var(--bg) 99%)}
.hero-in{padding-block:calc(var(--navh) + 40px) 64px;display:grid;gap:18px;position:relative;z-index:1;width:100%}
.hero-in>*{max-width:min(100%,640px)}
.eyebrow{display:flex;flex-wrap:wrap;gap:8px}
.eyebrow span{font:600 .7rem var(--f-mono);letter-spacing:.14em;text-transform:uppercase;padding:5px 9px;border:1px solid color-mix(in srgb,var(--gold) 45%,transparent);border-radius:999px;color:var(--gold);background:color-mix(in srgb,var(--bg) 55%,transparent);backdrop-filter:blur(4px)}
.title{position:relative;font-size:clamp(3.4rem,12vw,9rem);line-height:.86;font-weight:800;letter-spacing:-.01em;color:#f3e7cf;max-width:none!important;filter:drop-shadow(0 6px 30px rgba(212,168,90,.3))}
.title .ch{display:inline-block;background:linear-gradient(180deg,#fff7e6 0%,#ead7ae 45%,#a87a35 100%);-webkit-background-clip:text;background-clip:text;color:transparent;animation:rise 1.2s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i) * 60ms + .2s)}
@keyframes rise{from{transform:translateY(.4em) rotateX(60deg);filter:blur(12px);opacity:0}to{transform:none;filter:none;opacity:1}}
.title.glitch .ch{animation:gl .42s steps(2) 1}
@keyframes gl{0%{transform:translate(0)}25%{transform:translate(3px,-2px) skewX(-6deg);text-shadow:-3px 0 #6ea9ff}50%{transform:translate(-3px,1px)}75%{transform:translate(2px,2px) skewX(4deg)}100%{transform:none}}
.subtitle{font:700 clamp(1.1rem,2.6vw,1.7rem) var(--f-display);color:var(--ink);letter-spacing:.04em;display:flex;flex-wrap:wrap;gap:4px 14px;align-items:baseline}
.subtitle small{font:500 .9rem var(--f-body);color:var(--muted);letter-spacing:0}
.hero-copy{max-width:54ch;color:#d4ccbd;font-size:1.02rem;text-shadow:0 1px 8px rgba(0,0,0,.6)}
.cta{display:flex;flex-wrap:wrap;gap:10px}
.btn{font:600 .88rem var(--f-body);color:var(--ink);background:var(--surface2);border:1px solid var(--line);border-radius:9px;padding:9px 14px;cursor:pointer;display:inline-flex;gap:7px;align-items:center;white-space:nowrap;text-decoration:none;transition:border-color .2s,transform .2s,box-shadow .2s,background .2s}
.btn:hover{border-color:var(--muted)}
.btn.on{background:var(--gold);color:#1a140a;border-color:var(--gold)}
.btn.sm{padding:5px 9px;font-size:.78rem}
.btn.prime{background:linear-gradient(180deg,#e6c27c,#b4852f);color:#1a1206;border-color:#e6c27c;box-shadow:0 10px 30px -10px rgba(212,168,90,.6)}
.btn.prime:hover{transform:translateY(-2px);box-shadow:0 0 0 6px rgba(212,168,90,.12),0 14px 34px -10px rgba(212,168,90,.7)}
.btn.ghost{background:color-mix(in srgb,var(--bg) 55%,transparent);backdrop-filter:blur(4px)}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:color-mix(in srgb,var(--line) 80%,transparent);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;backdrop-filter:blur(6px)}
.stats div{background:color-mix(in srgb,var(--bg) 70%,transparent);padding:10px 12px;display:grid;gap:1px}
.stats b{font:600 1.15rem var(--f-mono);font-variant-numeric:tabular-nums}
.stats span{font-size:.66rem;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}
.scroll-cue{position:absolute;left:50%;bottom:18px;width:22px;height:36px;border:2px solid rgba(236,229,215,.4);border-radius:12px;transform:translateX(-50%)}
.scroll-cue i{position:absolute;left:50%;top:6px;width:4px;height:8px;margin-left:-2px;border-radius:2px;background:var(--gold);animation:cue 1.8s ease-in-out infinite}
@keyframes cue{0%{opacity:0;transform:translateY(0)}30%{opacity:1}100%{opacity:0;transform:translateY(14px)}}

/* marquee */
.marquee{border-block:1px solid var(--line);overflow:hidden;background:linear-gradient(90deg,var(--bg),var(--surface),var(--bg));padding-block:12px}
.marquee .track{display:flex;gap:34px;width:max-content;animation:mq 60s linear infinite}
.marquee span{font:700 1.05rem var(--f-display);color:color-mix(in srgb,var(--ink) 70%,transparent);white-space:nowrap}
.marquee span em{font:500 .8rem var(--f-body);font-style:normal;color:var(--gold);margin-left:8px}
.marquee span::after{content:"✦";color:var(--blood);margin-left:34px;font-size:.7rem;vertical-align:middle}
@keyframes mq{to{transform:translateX(-50%)}}

/* ===== SECTIONS ===== */
main{display:grid;grid-template-columns:minmax(0,1fr);gap:0;position:relative;z-index:1}
.chapter,.sec,.calc,.card{min-width:0}
.chapter.wrap{width:100%}
.chapter{padding-block:80px 24px;position:relative}
.chapter-head{display:grid;gap:10px;margin-bottom:26px;max-width:820px;position:relative}
.chapter-head .kicker{color:var(--gold)}
.chapter-head h2{background:linear-gradient(180deg,#fff6e4,#d9c49b);-webkit-background-clip:text;background-clip:text;color:transparent}
.chapter-head h2 .ko{-webkit-text-fill-color:var(--muted)}
.vhead{max-width:none;padding:34px 28px;border-radius:18px;overflow:hidden;border:1px solid var(--line);isolation:isolate}
.vhead .vbg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;filter:blur(2px) saturate(.9) brightness(.45);transform:scale(1.06)}
.vhead::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(11,10,14,.92),rgba(11,10,14,.55) 60%,rgba(11,10,14,.3))}
.lead{max-width:68ch;color:var(--muted);font-size:1rem}
.vhead .lead{color:#cfc6b6}
.sec{display:grid;gap:14px;margin-bottom:28px}
.reveal{will-change:transform}
.grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr))}
.card{background:color-mix(in srgb,var(--surface) 92%,transparent);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:grid;gap:6px;align-content:start;min-width:0}
.card h3{font-size:1.05rem}
.tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:color-mix(in srgb,var(--surface) 85%,transparent)}
table{border-collapse:collapse;width:100%;font-size:.86rem;min-width:520px}
th,td{padding:8px 10px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
th{font:600 .7rem var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:var(--surface)}
td.n,th.n{text-align:right;font-family:var(--f-mono);font-variant-numeric:tabular-nums}
tr.sel td{background:color-mix(in srgb,var(--gold) 9%,transparent)}
tr:last-child td{border-bottom:0}
.note{font-size:.82rem;color:var(--muted);max-width:80ch}

/* facts — one compact row */
.facts{display:flex;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--line);gap:1px}
.facts div{flex:1 1 0;min-width:0;background:color-mix(in srgb,var(--surface) 94%,transparent);padding:9px 10px;display:grid;gap:2px;align-content:center}
.facts b{font:600 .95rem var(--f-mono);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.facts span{font-size:.62rem;color:var(--muted);letter-spacing:.07em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.facts div.wide{flex:1.5 1 0}

/* spec cards */
.spec{display:grid;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr))}
.sc{position:relative;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:linear-gradient(180deg,color-mix(in srgb,var(--c) 14%,var(--surface)),var(--surface) 55%);transition:transform .3s,border-color .3s,box-shadow .3s}
.sc.sel{border-color:var(--c);box-shadow:0 0 0 1px var(--c),0 18px 40px -22px var(--c);transform:translateY(-3px)}
.sc-h{display:flex;justify-content:space-between;align-items:baseline;padding:14px 16px 6px}
.sc-h b{font:800 1.4rem var(--f-display);color:var(--c)}
.sc-h span{font:600 .78rem var(--f-mono);color:var(--muted)}
.sc-il{font:700 2rem var(--f-mono);padding:0 16px;letter-spacing:-.02em}
.sc-il small{font:500 .7rem var(--f-mono);color:var(--muted);margin-left:6px;letter-spacing:.08em}
.sc dl{margin:10px 0 0;padding:4px 16px 14px;display:grid;gap:7px}
.sc dl div{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:baseline;border-top:1px dashed color-mix(in srgb,var(--line) 80%,transparent);padding-top:7px}
.sc dt{font-size:.78rem;color:var(--muted)}
.sc dd{margin:0;font:600 .9rem var(--f-mono);text-align:right}
.sc .bar{height:4px;border-radius:2px;background:color-mix(in srgb,var(--c) 20%,transparent);grid-column:1/-1;overflow:hidden}
.sc .bar i{display:block;height:100%;background:var(--c)}

/* phases */
.phases{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,440px),1fr));gap:18px}
.portal{position:relative;border-radius:18px;padding:22px;min-height:460px;display:grid;align-content:end;gap:10px;overflow:hidden;border:1px solid var(--line);background:var(--surface);transform:perspective(1000px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .25s ease-out,border-color .3s;will-change:transform}
.portal[data-g="1"]{--pa:var(--gold)}.portal[data-g="2"]{--pa:var(--grab)}
.portal:hover{border-color:color-mix(in srgb,var(--pa) 60%,var(--line))}
.portal .art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 25%;z-index:0;opacity:.88;transition:transform .8s,opacity .3s}
.portal:hover .art{transform:scale(1.05);opacity:1}
.portal::after{content:"";position:absolute;inset:0;z-index:0;background:linear-gradient(180deg,transparent 22%,rgba(11,10,14,.65) 55%,var(--bg) 94%);pointer-events:none}
.portal>:not(.art){position:relative;z-index:1}
.portal .btn{justify-self:start}
.portal .gtag{font:600 .7rem var(--f-mono);letter-spacing:.16em;color:var(--pa);text-transform:uppercase}
.portal h3{font-size:clamp(1.6rem,3.4vw,2.3rem);line-height:1;font-weight:800}
.portal .loc{color:var(--muted);font-size:.88rem}
.pstats{display:flex;flex-wrap:wrap;gap:6px}
.pstats span{font:600 .74rem var(--f-mono);padding:4px 8px;border-radius:6px;background:color-mix(in srgb,var(--bg) 70%,transparent);border:1px solid var(--line)}
.threats{display:grid;gap:3px;font-size:.86rem;color:#d6cdbd;margin:0;padding:0;list-style:none}
.threats li::before{content:"✕ ";color:var(--blood);font-weight:700}

/* banners (images keep their own proportions; crops are pre-cut along the white lines) */
.banners{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
.banners.b3{grid-template-columns:repeat(3,minmax(0,1fr))}
.banners.b2{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
.banners figure{margin:0;display:grid;gap:5px;align-content:start}
.banner{width:100%;border-radius:var(--r);border:1px solid var(--line);display:block;aspect-ratio:16/10;object-fit:cover;cursor:zoom-in;transition:transform .4s,box-shadow .4s}
.banner.natural{aspect-ratio:auto;object-fit:contain;background:#000}
.banner:hover{transform:translateY(-2px);box-shadow:0 18px 40px -20px rgba(167,127,228,.6)}
.banners figcaption{font-size:.76rem;color:var(--muted)}

/* arena */
.stage{position:relative;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#0d0b10;box-shadow:0 30px 80px -40px rgba(143,211,191,.3)}
.stage:fullscreen{border-radius:0}
#arena{display:block;width:100%;height:clamp(360px,70vh,680px);touch-action:none;cursor:grab}
.stage:fullscreen #arena{height:100vh}
#arena:active{cursor:grabbing}
.stage.glitchy{animation:sglitch .18s steps(2) infinite}
.stage.glitchy canvas{filter:hue-rotate(40deg) saturate(1.6) contrast(1.2)}
@keyframes sglitch{0%{transform:translate(0)}50%{transform:translate(3px,-2px)}100%{transform:translate(-3px,1px)}}
.hud{position:absolute;left:12px;right:12px;top:10px;display:flex;justify-content:space-between;gap:8px;pointer-events:none;flex-wrap:wrap}
.hud-title{background:color-mix(in srgb,var(--bg) 78%,transparent);border:1px solid var(--line);border-radius:8px;padding:6px 10px;max-width:60%;backdrop-filter:blur(4px)}
.hud-title b{font-family:var(--f-display);font-size:1.05rem;display:block;line-height:1.15}
.hud-title span{font-size:.75rem;color:var(--muted)}
.hud-btns{display:flex;gap:6px;pointer-events:auto;align-self:flex-start}
.seg{display:flex;gap:2px;background:color-mix(in srgb,var(--bg) 70%,transparent);border:1px solid var(--line);border-radius:9px;padding:2px;backdrop-filter:blur(4px)}
.seg .btn{border:0;background:transparent}
.seg .btn.on{background:var(--gold);color:#1a140a}
.gauge{position:absolute;left:12px;right:12px;bottom:10px;pointer-events:none}
.gauge-bar{height:8px;border-radius:4px;background:var(--surface2);border:1px solid var(--line);overflow:hidden}
.gauge-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--blood),var(--kd));width:100%;transition:width .2s}
.gauge small{display:block;margin-bottom:3px;color:var(--ink);text-shadow:0 1px 2px #000}
.caption{position:absolute;left:50%;bottom:36px;transform:translateX(-50%);max-width:min(92%,600px);text-align:center;background:color-mix(in srgb,var(--bg) 82%,transparent);border:1px solid var(--line);border-radius:8px;padding:6px 12px;font-size:.9rem;pointer-events:none;backdrop-filter:blur(4px)}
.cmp{position:absolute;right:12px;top:58px;width:min(36%,360px);background:color-mix(in srgb,var(--bg) 88%,transparent);border:1px solid var(--line);border-radius:10px;overflow:hidden;backdrop-filter:blur(6px)}
.cmp-h{display:flex;justify-content:space-between;align-items:center;padding:4px 8px;font-size:.8rem}
.cmp video{display:block;width:100%;aspect-ratio:16/9;background:#000;object-fit:cover}
.cmp-nav{display:flex;gap:4px;padding:6px;flex-wrap:wrap}
.cmp-nav button{font:600 .7rem var(--f-mono);background:var(--surface2);color:var(--muted);border:1px solid var(--line);border-radius:5px;padding:2px 7px;cursor:pointer}
.cmp-nav button.on{color:var(--bg);background:var(--soul)}
.ctrl{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding-block:12px 0}
.ctrl2{padding-top:8px}
.ctrl input[type=range]{flex:1 1 160px;min-width:0;accent-color:var(--gold)}
.tg{display:inline-flex;gap:6px;align-items:center;font-size:.82rem;color:var(--muted)}
.tg input{accent-color:var(--gold)}
.chip-group{display:grid;gap:8px;margin-top:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr))}
.simsel{display:flex;gap:6px;align-items:center}
.simsel select{flex:1 1 220px;min-width:0;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:600 .88rem var(--f-body)}
.legend{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:.78rem;color:var(--muted);padding-block:10px 2px}
.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-2px;margin-right:5px}
.legend i.hatch{background-image:repeating-linear-gradient(45deg,rgba(0,0,0,.55) 0 2px,transparent 2px 5px)}
.legend .keys{flex-basis:100%;font-family:var(--f-mono);font-size:.7rem;opacity:.8}
.steps{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:4px;font-size:.86rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,360px),1fr))}
.steps li{display:grid;grid-template-columns:48px 1fr;gap:8px;padding:5px 8px;border-radius:6px;color:var(--muted);cursor:pointer;border:1px solid transparent}
.steps li.cur{background:var(--surface2);color:var(--ink);border-color:var(--line)}
.steps li .num{color:var(--gold);font-size:.78rem}

/* HP rail */
.rail{position:relative;padding:34px 12px 28px;border:1px solid var(--line);border-radius:var(--r);background:color-mix(in srgb,var(--surface) 90%,transparent)}
.rail-bar{position:relative;height:14px;border-radius:7px;background:linear-gradient(90deg,#ff8d6b,var(--blood) 50%,#5a120c);box-shadow:inset 0 0 0 1px rgba(0,0,0,.4),0 0 24px -6px var(--blood)}
.rail-bar::after{content:"";position:absolute;inset:0;border-radius:7px;background:repeating-linear-gradient(90deg,transparent 0 calc(10% - 1px),rgba(0,0,0,.35) calc(10% - 1px) 10%)}
.mk{position:absolute;top:50%;transform:translate(-50%,-50%);z-index:2;width:22px;height:22px;border-radius:50%;background:var(--bg);border:2px solid var(--gold);cursor:pointer;padding:0;transition:transform .2s,box-shadow .2s}
.mk:hover,.mk.cur{transform:translate(-50%,-50%) scale(1.25);box-shadow:0 0 0 6px color-mix(in srgb,var(--gold) 20%,transparent),0 0 18px var(--gold)}
.mk span{position:absolute;left:50%;transform:translateX(-50%);top:-28px;font:600 .74rem var(--f-mono);color:var(--gold);white-space:nowrap}
.mk:nth-of-type(even) span{top:24px}
.rail-ends{display:flex;justify-content:space-between;font:600 .68rem var(--f-mono);color:var(--muted);margin-top:22px;letter-spacing:.08em}

/* gimmick timeline + sticky media viewer on the right */
.glayout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,460px);gap:22px;align-items:start;margin-bottom:34px}
.tl{position:relative;display:grid;gap:4px;padding-left:74px}
.tl::before{content:"";position:absolute;left:58px;top:6px;bottom:6px;width:2px;background:linear-gradient(var(--gold),var(--blood))}
.tl-item{position:relative;padding:10px 12px 14px 14px;border-radius:12px;transition:background .3s,border-color .3s;border:1px solid transparent;cursor:pointer}
.tl-item:hover{background:color-mix(in srgb,var(--surface2) 60%,transparent)}
.tl-item.act{background:color-mix(in srgb,var(--surface) 92%,transparent);border-color:color-mix(in srgb,var(--gold) 45%,var(--line))}
.tl-item::before{content:"";position:absolute;left:-20px;top:15px;width:10px;height:10px;border-radius:50%;background:var(--bg);border:2px solid var(--gold);transition:background .3s,box-shadow .3s}
.tl-item.act::before{background:var(--gold);box-shadow:0 0 12px var(--gold)}
.tl-bar{position:absolute;left:-78px;top:9px;width:50px;text-align:right;font:600 .9rem var(--f-mono);color:var(--gold)}
.tl-item h3{font-size:1.06rem}
.tl-item p{color:var(--muted);font-size:.92rem;max-width:72ch}
.tl-item.act p{color:#d6cdbd}
.tl-item .dnote{margin-top:6px;font-size:.86rem;color:var(--ink);border-left:2px solid var(--blood);padding-left:8px}
.tl-item .tl-acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.tl-item .mcount{font:600 .7rem var(--f-mono);color:var(--soul)}
.tl-inline{display:none}
.gview{position:sticky;top:calc(var(--navh) + 18px);background:color-mix(in srgb,var(--surface) 94%,transparent);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 24px 60px -30px rgba(0,0,0,.8)}
.gv-h{padding:10px 12px;display:flex;justify-content:space-between;gap:8px;align-items:baseline;border-bottom:1px solid var(--line)}
.gv-h b{font:700 1.02rem var(--f-display)}
.gv-h span{font:600 .74rem var(--f-mono);color:var(--gold)}
.gv-main{position:relative;background:#000;aspect-ratio:16/9;display:grid;place-items:center;cursor:zoom-in}
.gv-main video,.gv-main img{width:100%;height:100%;object-fit:contain;display:block}
.gv-cap{font-size:.78rem;color:var(--muted);padding:8px 12px}
.gv-th{display:flex;gap:6px;padding:0 12px 12px;overflow-x:auto}
.gv-th button{flex:0 0 74px;height:44px;border-radius:6px;border:1px solid var(--line);padding:0;overflow:hidden;cursor:pointer;background:#000;position:relative;opacity:.65;transition:opacity .2s,border-color .2s}
.gv-th button.on{opacity:1;border-color:var(--gold)}
.gv-th img{width:100%;height:100%;object-fit:cover;display:block}
.gv-th button i{position:absolute;right:3px;bottom:2px;font:600 .58rem var(--f-mono);color:#fff;text-shadow:0 1px 2px #000;font-style:normal}
.gv-empty{padding:30px 16px;text-align:center;color:var(--muted);font-size:.86rem}
.yt{position:relative;display:block;width:100%;height:100%;color:#fff;text-decoration:none}
.yt img{width:100%;height:100%;object-fit:cover;filter:brightness(.6)}
.yt span{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:6px;text-align:center;font:600 .9rem var(--f-body)}
.yt span::before{content:"▶";display:grid;place-items:center;width:64px;height:44px;border-radius:12px;background:#e33;font-size:1.2rem;margin:0 auto}

/* patterns */
.filters{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.filters input{flex:1 1 180px;min-width:0;background:var(--surface);border:1px solid var(--line);color:var(--ink);border-radius:8px;padding:8px 10px;font:inherit}
.plist{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(min(100%,500px),1fr));align-items:start}
.pat{background:color-mix(in srgb,var(--surface) 94%,transparent);border:1px solid var(--line);border-radius:var(--r);border-left:4px solid var(--line);transition:border-color .2s,transform .2s}
.pat:hover{transform:translateY(-1px)}
.pat[data-cat=red]{border-left-color:var(--blood)}
.pat[data-cat=insight],.pat[data-cat=grab]{border-left-color:var(--grab)}
.pat[data-cat=normal]{border-left-color:var(--muted)}
.pat summary{list-style:none;cursor:pointer;padding:11px 14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.pat summary::-webkit-details-marker{display:none}
.pat summary .pth{width:64px;height:36px;border-radius:5px;object-fit:cover;flex:0 0 auto;border:1px solid var(--line)}
.pat summary h3{font-size:1rem;flex:1 1 200px;min-width:0}
.pat summary h3 .ko{font-size:.78em}
.stars{font-family:var(--f-mono);font-size:.78rem;color:var(--gold);letter-spacing:.05em}
.pat .body{padding:0 14px 12px;display:grid;gap:8px;font-size:.9rem}
.pat .body p{max-width:72ch}
.tags{display:flex;flex-wrap:wrap;gap:5px}
.tag{font:600 .68rem var(--f-mono);letter-spacing:.05em;padding:2px 7px;border-radius:999px;border:1px solid currentColor;text-transform:uppercase}
.t-kd{color:var(--kd)}.t-stag{color:var(--stag)}.t-grab{color:var(--grab)}.t-jg{color:var(--jg)}.t-death{color:var(--m-death)}.t-cnt{color:var(--m-cnt)}.t-fall{color:var(--muted)}
.diffnote{font-size:.84rem;color:var(--muted);border-left:2px solid var(--line);padding-left:8px}
.shots{display:grid;gap:6px;grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr))}
.shot{position:relative;margin:0;border-radius:8px;overflow:hidden;border:1px solid var(--line);background:#000;aspect-ratio:16/9;cursor:zoom-in}
.shot video{width:100%;height:100%;object-fit:cover;display:block}
.shot b{position:absolute;left:6px;bottom:5px;font:600 .66rem var(--f-mono);background:rgba(0,0,0,.65);padding:1px 5px;border-radius:4px;color:var(--ink)}

/* calculators — full content width */
.calcs{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}
.calc{background:color-mix(in srgb,var(--surface) 94%,transparent);border:1px solid var(--line);border-radius:var(--r);padding:18px;display:grid;gap:12px;min-width:0;align-content:start}
.calc.wide{grid-column:1/-1}
.calc-split{display:grid;gap:14px;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start}
.fields{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(min(100%,120px),1fr))}
label.f{display:grid;gap:4px;font-size:.76rem;color:var(--muted);letter-spacing:.03em}
label.f input,label.f select{background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:7px;padding:8px 9px;font:500 .95rem var(--f-mono);width:100%;min-width:0}
.out{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(min(100%,130px),1fr))}
.out div{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:9px 11px;display:grid;gap:1px}
.out b{font:600 1.15rem var(--f-mono);font-variant-numeric:tabular-nums}
.out span{font-size:.72rem;color:var(--muted)}
.pill{display:inline-block;font:700 .7rem var(--f-mono);letter-spacing:.05em;padding:3px 8px;border-radius:999px;text-transform:uppercase}
.p-ok{background:color-mix(in srgb,var(--safe) 18%,transparent);color:var(--safe)}
.p-warn{background:color-mix(in srgb,var(--kd) 18%,transparent);color:var(--kd)}
.p-bad{background:color-mix(in srgb,var(--blood) 20%,transparent);color:var(--blood)}
.p-top{background:color-mix(in srgb,var(--gold) 20%,transparent);color:var(--gold)}
.meter{height:10px;background:var(--bg);border:1px solid var(--line);border-radius:5px;position:relative;overflow:hidden}
.meter i{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,var(--soul),#c6f3e5);transition:width .4s}
.meter u{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--gold)}

/* rewards */
.items{display:grid;gap:6px;grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr))}
.item{display:flex;gap:9px;align-items:center;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:6px 8px;min-width:0;transition:border-color .2s,transform .2s}
.item:hover{border-color:var(--gold);transform:translateY(-1px)}
.ico{width:40px;height:40px;flex:0 0 40px;border-radius:7px;display:grid;place-items:center;position:relative;overflow:hidden;background:#2a2620;box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}
.ico img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.ico.c-gold{background:radial-gradient(circle at 30% 25%,#8a6a2c,#2e2210)}.ico.c-red{background:radial-gradient(circle at 30% 25%,#7e2a1e,#2a0e0a)}.ico.c-blue{background:radial-gradient(circle at 30% 25%,#2c4f8c,#0e1a33)}.ico.c-violet{background:radial-gradient(circle at 30% 25%,#4b2d82,#1a1030)}.ico.c-teal{background:radial-gradient(circle at 30% 25%,#2b6b5a,#0d2621)}.ico.c-bone{background:radial-gradient(circle at 30% 25%,#6d6454,#25221c)}
.ico b{font:700 .7rem var(--f-mono);color:#fff}
.item .nm{font-size:.82rem;line-height:1.25;min-width:0}
.item .qty{margin-left:auto;font:600 .9rem var(--f-mono);color:var(--gold);padding-left:6px}
.grid.rw{grid-template-columns:repeat(auto-fit,minmax(min(100%,440px),1fr))}
.gatebox{display:grid;gap:10px}
.gatebox .head{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:baseline}
.goldline{font:700 1.5rem var(--f-mono);color:var(--gold);text-shadow:0 0 22px rgba(212,168,90,.35)}
.vamb{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.vcard{grid-template-columns:96px 1fr;gap:12px;align-items:start}
.vcard img{width:96px;border-radius:6px;border:1px solid var(--line);cursor:zoom-in}
.tier{display:flex;gap:4px;height:6px;margin-top:6px}
.tier span{flex:1;border-radius:3px}
.vplan{display:grid;gap:14px;grid-template-columns:minmax(0,1fr) 300px;align-items:start;margin-top:14px}
.vui{margin:0;display:grid;gap:5px}
.vui img{border-radius:var(--r);border:1px solid var(--line);cursor:zoom-in;width:100%}
.vui figcaption{font-size:.76rem;color:var(--muted)}

.src{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(min(100%,330px),1fr))}
.src a{display:block;background:color-mix(in srgb,var(--surface) 92%,transparent);border:1px solid var(--line);border-radius:10px;padding:12px 14px;text-decoration:none;color:var(--ink);transition:border-color .2s,transform .2s}
.src a:hover{border-color:var(--soul);transform:translateY(-2px)}
.src a span{display:block;font-size:.8rem;color:var(--muted)}
.lore{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));gap:22px}
.lore p{font-size:1.02rem;color:#d8cfbf;border-left:2px solid var(--gold);padding-left:16px}
.lore blockquote{margin:0;font:600 clamp(1.2rem,2.6vw,1.6rem) var(--f-display);color:var(--gold);line-height:1.25}
.lore blockquote small{display:block;font:500 .8rem var(--f-body);color:var(--muted);margin-top:8px}
.divider{height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);opacity:.35;margin-top:30px}
.foot{color:var(--muted);font-size:.78rem;padding-block:30px 40px;border-top:1px solid var(--line);margin-top:40px;display:grid;gap:14px;position:relative;z-index:1}
.foot-author{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.x{background:none;border:0;color:var(--muted);cursor:pointer;font-size:1.1rem}

/* lightbox */
.lb{position:fixed;inset:0;z-index:80;background:rgba(5,4,8,.92);display:grid;place-items:center;padding:16px}
.lb-body{max-width:min(100%,1200px);max-height:88vh;display:grid;place-items:center}
.lb-body video,.lb-body img{max-width:100%;max-height:86vh;border-radius:10px;border:1px solid var(--line)}
.lb>button{position:absolute;top:12px;right:14px}

@media (max-width:980px){
  .glayout{grid-template-columns:1fr}
  .gview{display:none}
  .tl-inline{display:block;margin-top:10px}
  .spec{grid-template-columns:1fr}
  .vamb{grid-template-columns:repeat(2,minmax(0,1fr))}
  .vplan{grid-template-columns:1fr}
  .calc-split{grid-template-columns:1fr}
  .facts{overflow-x:auto;scrollbar-width:thin}
  .facts div{flex:0 0 auto;min-width:118px}
  .author span{display:none}
}
@media (max-width:640px){
  :root{--navh:52px}
  .brand span{display:none}
  .cheat{padding:6px 8px}.cheat span{display:none}
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tl{padding-left:62px}.tl::before{left:46px}.tl-bar{left:-66px;width:42px;font-size:.8rem}
  .caption{bottom:30px;font-size:.8rem}
  .portal{min-height:420px}
  .chapter{padding-block:60px 16px}
  .calcs{grid-template-columns:1fr}
  .banners.b3,.banners.b2{grid-template-columns:1fr}
  .vamb{grid-template-columns:1fr}
  .hud-title{max-width:100%}
  .cmp{width:46%}
  .hero-shade{background:linear-gradient(180deg,rgba(11,10,14,.3),rgba(8,8,12,.55) 45%,var(--bg) 98%)}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
}
@media (min-width:981px){.tl-item .mcount::after{content:" — справа →"}}

/* Vambrace: damage + honing calculator */
.vd-grid{display:grid;gap:14px;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:start}
.vd-chart{background:color-mix(in srgb,var(--surface) 92%,transparent);border:1px solid var(--line);border-radius:var(--r);padding:14px;display:grid;gap:10px}
.vbars{display:grid;grid-template-columns:repeat(15,minmax(0,1fr));gap:4px;align-items:end;height:170px;padding-top:18px}
.vbar{position:relative;display:flex;flex-direction:column;justify-content:flex-end;height:100%;min-width:0}
.vbar i{display:block;border-radius:4px 4px 0 0;background:linear-gradient(180deg,var(--c),color-mix(in srgb,var(--c) 35%,transparent));min-height:4px}
.vbar b{position:absolute;left:50%;transform:translateX(-50%);font:600 .6rem var(--f-mono);color:var(--ink);white-space:nowrap}
.vbar span{font:600 .6rem var(--f-mono);color:var(--muted);text-align:center;margin-top:3px}
.vbar[title]{cursor:help}
.vplan .vside{display:grid;gap:12px;align-content:start}
.vtips ul{margin:0;padding-left:18px;display:grid;gap:6px;font-size:.86rem;color:#d6cdbd}
.vtips b{color:var(--gold)}
#vStatT td.n b{color:var(--gold)}
#vCostT td:first-child{white-space:nowrap}
.vplan .calc .out b small{font-size:.7rem;color:var(--muted);margin-left:4px}
@media (max-width:980px){.vd-grid{grid-template-columns:1fr}}
@media (max-width:640px){.vbars{height:140px}.vbar b{font-size:.52rem}}

/* Vambrace calculator v2: dual slider, segmented options, icon chips */
.vcalc{gap:14px}
.vc-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap}
.vc-range{font:700 1.6rem var(--f-mono);letter-spacing:-.02em;background:linear-gradient(90deg,var(--c1,#a77fe4),var(--c2,#dc5841));-webkit-background-clip:text;background-clip:text;color:transparent}
.dual{position:relative;height:30px;margin-top:4px}
.dual-track{position:absolute;left:11px;right:11px;top:50%;height:8px;margin-top:-4px;border-radius:4px;background:linear-gradient(90deg,#a77fe455 0 40%,#e4913d55 40% 60%,#dc584155 60% 80%,#e9d6ad55 80% 100%);overflow:hidden}
.dual-track i{position:absolute;top:0;bottom:0;background:linear-gradient(90deg,#a77fe4 0,#a77fe4 calc(40% * var(--k,1)),#e4913d,#dc5841,#e9d6ad);box-shadow:0 0 14px rgba(212,168,90,.5);border-radius:4px}
.dual input{position:absolute;left:0;right:0;top:0;width:100%;height:30px;margin:0;background:none;pointer-events:none;-webkit-appearance:none;appearance:none}
.dual input:focus-visible{outline:none}
.dual input::-webkit-slider-runnable-track{background:none;height:30px}
.dual input::-moz-range-track{background:none}
.dual input::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;width:22px;height:22px;margin-top:4px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff3cf,#d4a85a 60%,#8a6326);border:2px solid #1a140a;box-shadow:0 0 0 3px rgba(212,168,90,.25),0 4px 10px rgba(0,0,0,.6);cursor:grab}
.dual input::-moz-range-thumb{pointer-events:auto;width:20px;height:20px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff3cf,#d4a85a 60%,#8a6326);border:2px solid #1a140a;cursor:grab}
.dual input:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 4px var(--gold)}
.dual-ticks{display:flex;justify-content:space-between;padding:0 4px;font:600 .66rem var(--f-mono);color:var(--muted)}
.dual-grades{display:flex;gap:2px;margin:0 11px;font:700 .6rem var(--f-mono);letter-spacing:.08em;text-transform:uppercase}
.dual-grades span{color:var(--c);text-align:center;border-top:2px solid var(--c);padding-top:3px;opacity:.85}
.vc-opts{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:flex-end}
.vc-opt{display:grid;gap:5px}
.seg2{display:flex;background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:2px;gap:2px}
.seg2 button{display:inline-flex;align-items:center;gap:4px;font:600 .8rem var(--f-body);color:var(--muted);background:none;border:0;border-radius:7px;padding:6px 10px;cursor:pointer;white-space:nowrap}
.seg2 button img{width:18px;height:18px;border-radius:4px}
.seg2 button.on{background:var(--surface2);color:var(--ink);box-shadow:inset 0 0 0 1px var(--gold)}
.seg2 button[data-v=best].on{color:var(--safe)}.seg2 button[data-v=worst].on{color:var(--blood)}
.vc-hv{display:flex;align-items:center;gap:6px;background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:2px 8px}
.vc-hv img{width:22px;height:22px;border-radius:4px}
.vc-hv input{width:76px;background:none;border:0;color:var(--ink);font:600 .95rem var(--f-mono);padding:5px 0}
.vc-sum{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(min(100%,128px),1fr))}
.vc-sum div{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:linear-gradient(180deg,color-mix(in srgb,var(--c) 12%,var(--bg)),var(--bg));display:grid;gap:2px}
.vc-sum b{font:700 1.45rem var(--f-mono);color:var(--c);letter-spacing:-.02em}
.vc-sum span{font-size:.72rem;color:var(--muted)}
.vc-sum small{font-size:.72rem;color:var(--muted);font-weight:500}
.vc-mats{display:grid;gap:6px;grid-template-columns:repeat(auto-fill,minmax(min(100%,138px),1fr))}
.mchip{display:flex;align-items:center;gap:8px;background:var(--bg);border:1px solid var(--line);border-left:3px solid var(--c);border-radius:8px;padding:5px 8px;min-width:0}
.mchip img{width:30px;height:30px;border-radius:6px;flex:0 0 30px}
.mchip b{font:600 .95rem var(--f-mono);color:var(--c);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mchip.dim{opacity:.4}
.vc-steps summary{cursor:pointer;font:600 .85rem var(--f-body);color:var(--soul);padding:4px 0}
.vc-steps[open] summary{margin-bottom:8px}
#vCostT th img{width:18px;height:18px;vertical-align:-4px;border-radius:3px}
#vCostT tbody tr:nth-child(odd) td{background:color-mix(in srgb,var(--surface2) 40%,transparent)}
#vCostT .st{font:700 .8rem var(--f-mono);color:var(--c)}
#vCostT .ch{color:var(--c);font-weight:600}
#vCostT td[data-c]{color:var(--c)}
.chk{display:flex;align-items:center;gap:8px;background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:6px 10px;font-size:.82rem;color:var(--ink);cursor:pointer}
.chk input{width:18px;height:18px;accent-color:var(--gold);margin:0}

/* language switcher */
.lang{position:relative;display:flex;flex:0 0 auto;padding:2px;border-radius:999px;background:color-mix(in srgb,var(--surface2) 80%,transparent);border:1px solid var(--line);box-shadow:inset 0 1px 3px rgba(0,0,0,.4)}
.lang i{position:absolute;top:2px;bottom:2px;left:2px;width:34px;border-radius:999px;background:linear-gradient(180deg,#e6c27c,#b4852f);box-shadow:0 2px 10px -2px rgba(212,168,90,.7);transition:transform .35s cubic-bezier(.3,1.4,.5,1),width .35s}
.lang button{position:relative;z-index:1;display:grid;place-items:center;background:none;border:0;border-radius:999px;padding:6px 9px;cursor:pointer;opacity:.55;filter:saturate(.55);transition:opacity .25s,filter .25s}
.lang button:hover{opacity:.9;filter:none}
.lang button[aria-pressed=true]{opacity:1;filter:none}
.lang .flag{display:block;width:21px;height:14px;border-radius:2.5px;box-shadow:0 0 0 1px rgba(0,0,0,.45),0 1px 3px rgba(0,0,0,.5)}
@media (prefers-reduced-motion:reduce){.lang i{transition:none}}
/* CJK fallback faces */
:root[data-lang=zh]{--f-display:"Alegreya SC","Noto Serif SC","Source Han Serif SC","Songti SC",STSong,"Microsoft YaHei",serif;--f-body:"Golos Text","Noto Sans SC","PingFang SC","Microsoft YaHei","Hiragino Sans GB",system-ui,sans-serif}
:root[data-lang=zh] .kicker,:root[data-lang=zh] .eyebrow span{letter-spacing:.06em}

/* ===== return to reading (js/return.js) ===== */
.ret-pill{position:fixed;right:calc(18px + env(safe-area-inset-right,0px));bottom:calc(18px + env(safe-area-inset-bottom,0px));z-index:60;display:inline-flex;align-items:center;gap:8px;max-width:min(92vw,460px);
  font:600 .9rem var(--f-body);color:#1a1206;background:linear-gradient(180deg,#e6c27c,#b4852f);border:1px solid #e6c27c;border-radius:999px;padding:10px 16px 10px 12px;cursor:pointer;
  box-shadow:0 14px 34px -10px rgba(0,0,0,.7),0 0 0 4px rgba(212,168,90,.14);opacity:0;pointer-events:none;transform:translateY(14px);transition:opacity .22s,transform .22s}
.ret-pill.on{opacity:1;pointer-events:auto;transform:none}
@media (max-width:640px){.ret-pill{right:auto;left:50%;transform:translate(-50%,14px)}.ret-pill.on{transform:translate(-50%,0)}}
.ret-pill:hover{box-shadow:0 14px 34px -10px rgba(0,0,0,.7),0 0 0 6px rgba(212,168,90,.22)}
.ret-pill .ret-ic{font-size:1.1rem;line-height:1}
.ret-pill .ret-t{white-space:nowrap}
.ret-pill .ret-w{font-weight:500;font-size:.78rem;opacity:.75;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.ret-pill .ret-w:empty{display:none}
.ret-pill .ret-w span::before{content:" · "}
.stage:fullscreen .ret-pill{position:absolute;right:12px;bottom:12px}
.ret-btn{border-color:color-mix(in srgb,var(--gold) 60%,var(--line));color:#f0d9a6}
.ret-flash{animation:retFlash 1.8s ease-out}
@keyframes retFlash{0%,25%{box-shadow:0 0 0 2px var(--gold),0 0 30px -4px rgba(212,168,90,.6)}100%{box-shadow:0 0 0 0 transparent}}
@media (prefers-reduced-motion:reduce){.ret-pill{transition:none}.ret-flash{animation:none;outline:2px solid var(--gold)}}
@media print{.ret-pill{display:none}}
