/* Domlok — episodes page and episode games. Loads after styles.css and reuses its tokens. */
:root{--card:#1E1830;--card-2:#251E3A;--ok:#7FD39A;--warn:#F2C230;--bad:#F09A8E}
.sub-page{min-height:100vh;display:flex;flex-direction:column}
.sub-page main{flex:1}
.btn-sm{min-height:40px;padding:0 16px;font-size:14px}
.muted{color:var(--mist)}
.spark-p{position:absolute;width:9px;height:9px;border-radius:50%;pointer-events:none;z-index:80}
.nav ul a[aria-current="page"]{color:var(--cream);background:rgba(246,240,228,.08)}

/* ---------- seals ---------- */
.seals{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.seal{--c:var(--gold);width:46px;height:46px;border-radius:14px;display:grid;place-items:center;font-family:var(--f-mono);font-weight:600;font-size:14px;color:var(--mist);border:2px dashed color-mix(in srgb,var(--c) 55%,transparent);background:transparent;text-decoration:none;position:relative;transition:transform .3s cubic-bezier(.3,1.6,.5,1)}
a.seal:hover{transform:translateY(-3px)}
.seal.earned{border-style:solid;border-color:var(--c);background:color-mix(in srgb,var(--c) 26%,transparent);color:var(--cream);box-shadow:0 0 18px -2px color-mix(in srgb,var(--c) 70%,transparent)}
.seal.earned::after{content:"";position:absolute;right:-6px;top:-6px;width:16px;height:16px;border-radius:50%;background:var(--c) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.5l2.5 2.5L12 5.5' fill='none' stroke='%2316121F' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/12px no-repeat}
.seal-row{display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px;padding:18px 20px;border:1.5px solid var(--line);border-radius:20px;background:rgba(246,240,228,.03)}
.seal-row p{margin:0;color:var(--mist);font-size:15px;max-width:52ch}
.seal-row p b{color:var(--cream)}
.guardian{display:flex;align-items:center;gap:12px;padding:10px 16px;border-radius:999px;background:linear-gradient(90deg,rgba(226,178,74,.22),rgba(167,155,240,.22));border:1.5px solid var(--gold);font-weight:800}
.guardian svg{width:26px;height:26px}
.seal-reset{background:none;border:0;color:var(--mist);font:inherit;font-size:13px;text-decoration:underline;cursor:pointer;min-height:44px;padding:0 6px}

/* ---------- episodes page ---------- */
.eps-hero{position:relative;overflow:hidden;padding-block:clamp(48px,7vw,88px) 32px;background:radial-gradient(60% 90% at 85% 0%,rgba(226,178,74,.16),transparent 70%),radial-gradient(50% 80% at 0% 100%,rgba(217,105,63,.14),transparent 70%)}
.eps-hero .wrap{display:flex;flex-direction:column;gap:20px}
.eps-hero .eyebrow{color:var(--gold)}
.eps-hero h1{font-size:clamp(46px,8vw,96px);letter-spacing:-.02em}
.eps-hero h1 em{font-style:normal;color:var(--terra)}
.eps-hero .lead{color:var(--mist);font-size:clamp(16px,1.8vw,19px);max-width:60ch}
.filters{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.filter{min-height:44px;padding:0 16px;border-radius:999px;border:1.5px solid var(--line);background:transparent;color:var(--mist);font:inherit;font-weight:700;font-size:14px;cursor:pointer;transition:all .2s}
.filter:hover{border-color:var(--gold);color:var(--cream)}
.filter[aria-pressed="true"]{background:var(--cream);border-color:var(--cream);color:var(--night)}
.ep-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;padding-block:28px 96px}
.epc{--c:var(--gold);position:relative;display:grid;grid-template-columns:150px minmax(0,1fr);border-radius:24px;overflow:hidden;background:var(--card);border:1.5px solid color-mix(in srgb,var(--c) 30%,transparent);transition:transform .35s cubic-bezier(.3,1.5,.5,1),border-color .3s,box-shadow .3s}
.epc:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--c) 70%,transparent);box-shadow:0 22px 40px -24px color-mix(in srgb,var(--c) 80%,transparent)}
.epc[hidden]{display:none}
.epc-art{position:relative;background:radial-gradient(circle at 50% 30%,color-mix(in srgb,var(--c) 45%,transparent),transparent 70%),color-mix(in srgb,var(--c) 14%,#16121F);overflow:hidden}
.epc-art img{position:absolute;left:50%;top:14px;width:150%;max-width:none;height:auto;transform:translateX(-50%);transition:transform .5s cubic-bezier(.3,1.4,.5,1)}
.epc:hover .epc-art img{transform:translateX(-50%) translateY(-6px) scale(1.04)}
.epc-num{position:absolute;left:12px;bottom:10px;font-family:var(--f-display);font-weight:900;font-size:46px;line-height:1;color:var(--cream);text-shadow:0 2px 12px rgba(0,0,0,.5)}
.epc-body{padding:22px 22px 20px;display:flex;flex-direction:column;gap:10px;min-width:0}
.epc-meta{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13px;font-weight:800;letter-spacing:.06em}
.epc-topic{padding:4px 10px;border-radius:999px;background:color-mix(in srgb,var(--c) 18%,transparent);color:var(--c)}
.epc-guide{color:var(--mist);letter-spacing:0;font-weight:700}
.epc h2{font-size:clamp(24px,2.6vw,30px);line-height:1.12}
.epc p{color:var(--mist);font-size:15px;line-height:1.55}
.epc .rule-line{font-family:var(--f-display);font-weight:700;color:var(--cream);font-size:16px;padding-left:12px;border-left:3px solid var(--c)}
.epc .rule-line small{display:block;font-family:var(--f-body);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--c);margin-bottom:2px}
.epc-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:8px}
.btn-play{background:var(--c);color:#16121F;box-shadow:0 6px 0 -2px color-mix(in srgb,var(--c) 55%,#000)}
.btn-play svg{width:16px;height:16px}
.epc .seal-flag{position:absolute;left:12px;top:12px;z-index:2;font-size:12px;font-weight:800;padding:5px 10px;border-radius:999px;background:var(--c);color:#16121F;display:none}
.epc.earned .seal-flag{display:block}
@media (max-width:980px){.ep-list{grid-template-columns:minmax(0,1fr)}}
@media (max-width:520px){.epc{grid-template-columns:minmax(0,1fr)}.epc-art{height:170px}.epc-art img{width:80%;top:10px}}

/* ---------- game shell ---------- */
.game{--c:var(--gold)}
.game-head{padding-block:clamp(32px,5vw,56px) 16px;background:radial-gradient(70% 100% at 90% 0%,color-mix(in srgb,var(--c) 22%,transparent),transparent 70%)}
.game-head .wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;align-items:end}
.crumbs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:14px;font-weight:700;color:var(--mist)}
.crumbs a{color:var(--mist);text-decoration:none;min-height:44px;display:inline-flex;align-items:center}
.crumbs a:hover{color:var(--cream)}
.game-head .eyebrow{color:var(--c)}
.game-head h1{font-size:clamp(40px,6.4vw,78px);letter-spacing:-.02em;margin-top:8px}
.game-head .goal{color:var(--mist);max-width:60ch;margin-top:12px;font-size:17px}
.head-seal{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--mist)}
.speech{display:flex;align-items:flex-end;gap:14px;margin-top:22px}
.speech .who-img{width:84px;height:84px;flex:none;border-radius:50%;overflow:hidden;background:color-mix(in srgb,var(--c) 30%,#1E1830);border:2px solid var(--c)}
.speech .who-img img{width:100%;height:100%;display:block}
.bubble{position:relative;background:var(--cream);color:var(--ink);border-radius:22px 22px 22px 6px;padding:14px 18px;font-weight:700;font-size:16px;line-height:1.45;max-width:64ch;min-height:52px}
.bubble b{display:block;font-family:var(--f-display);font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:color-mix(in srgb,var(--c) 70%,#3B342C);margin-bottom:2px}
.arena{padding-block:20px 40px}
.panel-box{background:var(--card);border:1.5px solid var(--line);border-radius:22px;padding:20px}
.panel-box h3{font-size:20px;margin-bottom:10px}
.hud{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.pill{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;border:1.5px solid var(--line);font-family:var(--f-mono);font-size:14px;color:var(--mist)}
.pill b{color:var(--cream);font-variant-numeric:tabular-nums}
.lesson{margin-top:28px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.lesson div{padding:16px 18px;border-radius:18px;background:rgba(246,240,228,.03);border:1.5px solid var(--line)}
.lesson b{display:block;font-family:var(--f-display);font-size:17px;margin-bottom:4px}
.lesson p{color:var(--mist);font-size:14px}
@media (max-width:760px){.game-head .wrap{grid-template-columns:minmax(0,1fr)}.head-seal{flex-direction:row}.lesson{grid-template-columns:minmax(0,1fr)}.speech .who-img{width:64px;height:64px}}

.result{margin-top:28px;border-radius:26px;padding:clamp(22px,4vw,36px);background:radial-gradient(80% 120% at 0% 0%,color-mix(in srgb,var(--c) 26%,transparent),transparent 70%),var(--card-2);border:2px solid var(--c);display:grid;grid-template-columns:auto minmax(0,1fr);gap:24px;align-items:center}
.result:focus-within h2{outline:none}
.seal-big{width:110px;height:110px;border-radius:30px;display:grid;place-items:center;background:color-mix(in srgb,var(--c) 30%,#16121F);border:3px solid var(--c);box-shadow:0 0 40px -6px var(--c);font-family:var(--f-display);font-weight:900;font-size:40px;color:var(--cream);animation:sealIn .8s cubic-bezier(.3,1.6,.5,1)}
@keyframes sealIn{0%{transform:scale(.2) rotate(-30deg);opacity:0}100%{transform:none;opacity:1}}
.result .r-k{font-size:13px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--c)}
.result h2{font-size:clamp(28px,3.6vw,40px);margin:6px 0 8px}
.result h2:focus{outline:none}
.result p{color:var(--mist)}
.result .rule-q{margin-top:12px;font-family:var(--f-display);font-weight:700;font-size:20px;color:var(--cream)}
.result .rule-q small{display:block;font-family:var(--f-body);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.result .cta{justify-content:flex-start;margin-top:16px}
@media (max-width:620px){.result{grid-template-columns:minmax(0,1fr)}}

/* option buttons shared by quizzes */
.opts{display:grid;gap:10px}
.opt{display:block;width:100%;text-align:left;font:inherit;color:var(--cream);background:rgba(246,240,228,.04);border:1.5px solid var(--line);border-radius:16px;padding:14px 16px;cursor:pointer;min-height:48px;transition:border-color .2s,background .2s,transform .2s}
.opt:hover:not(:disabled){border-color:var(--c);transform:translateX(3px)}
.opt:disabled{cursor:default}
.opt.right{border-color:var(--ok);background:rgba(127,211,154,.12)}
.opt.wrong{border-color:var(--bad);background:rgba(240,154,142,.1);opacity:.75}
.opt pre{margin:0;font-family:var(--f-mono);font-size:13.5px;white-space:pre-wrap;word-break:break-word}

/* ---------- 02 Raiden's Gate ---------- */
.flow{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(24px,.6fr) minmax(0,1fr) minmax(24px,.6fr) minmax(0,1fr);align-items:center;gap:6px;padding:26px 18px;border-radius:22px;background:linear-gradient(180deg,#1A1526,#211A33);border:1.5px solid var(--line);overflow:hidden;min-height:170px}
.node{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:14px 8px;border-radius:18px;background:rgba(246,240,228,.05);border:1.5px solid var(--line);min-width:0}
.node b{font-family:var(--f-display);font-size:16px}
.node code{font-family:var(--f-mono);font-size:11.5px;color:var(--mist);word-break:break-all}
.node.gate{border-color:var(--c);background:color-mix(in srgb,var(--c) 10%,transparent);transition:box-shadow .3s}
.node.gate img{width:58px;height:58px;border-radius:50%;background:#FBF1C4}
.node.gate.ok{animation:gateOk .7s}
.node.gate.no{animation:gateNo .7s}
@keyframes gateOk{30%{box-shadow:0 0 0 6px rgba(127,211,154,.5),0 0 40px rgba(127,211,154,.5)}}
@keyframes gateNo{30%{box-shadow:0 0 0 6px rgba(240,154,142,.6),0 0 50px rgba(242,194,48,.8);background:rgba(240,154,142,.2)}}
.lane{height:3px;border-radius:3px;background:repeating-linear-gradient(90deg,var(--line) 0 8px,transparent 8px 14px)}
.packet{position:absolute;left:0;top:0;z-index:3;padding:5px 10px;border-radius:999px;font-family:var(--f-mono);font-size:12px;font-weight:600;background:var(--cream);color:var(--night);white-space:nowrap;box-shadow:0 6px 16px -6px rgba(0,0,0,.6);pointer-events:none}
.packet.pre{background:#A79BF0}
.packet.resp{background:var(--ok)}
.packet.pm{background:#F5A04C}
.packet.opaque{background:#4A4560;color:#B9B2CC;border:1.5px dashed #8F86A6}
.packet.dead{background:var(--bad);transition:opacity .25s,transform .25s}
.gate-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:18px;margin-top:18px}
.lvl-top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.lvl-dots{display:flex;gap:6px}
.lvl-dots i{width:26px;height:6px;border-radius:3px;background:var(--line)}
.lvl-dots i.done{background:var(--ok)}
.lvl-dots i.now{background:var(--c)}
.lvl h3{margin:8px 0 10px;font-size:24px}
.code-box{margin:0;background:#120E1A;border:1.5px solid var(--line);border-radius:14px;padding:14px 16px;font-family:var(--f-mono);font-size:13.5px;line-height:1.6;color:#E9E2F5;overflow-x:auto;white-space:pre}
.hint{margin-top:10px;padding:10px 14px;border-radius:12px;background:color-mix(in srgb,var(--c) 12%,transparent);color:var(--cream);font-size:14.5px}
.console{list-style:none;margin:14px 0 0;padding:12px 14px;border-radius:14px;background:#0E0B14;border:1.5px solid var(--line);font-family:var(--f-mono);font-size:12.5px;line-height:1.55;min-height:120px;max-height:240px;overflow:auto;display:flex;flex-direction:column;gap:6px}
.console li{color:var(--mist);word-break:break-word}
.console li.err{color:#FF9C90}
.console li.ok{color:var(--ok)}
.console li.warn{color:var(--warn)}
.console li.pm{color:#F5A04C}
.console:empty::before{content:"Console. Messages from the browser appear here.";color:#6E6680}
.headers{border:0;padding:0;margin:0;display:flex;flex-direction:column;gap:14px}
.headers legend{font-family:var(--f-display);font-weight:900;font-size:20px;margin-bottom:6px;padding:0}
.hgroup{display:flex;flex-direction:column;gap:8px}
.hgroup>span{font-family:var(--f-mono);font-size:12.5px;color:var(--c);font-weight:600}
.toggles{display:flex;flex-wrap:wrap;gap:6px}
.toggles label{position:relative}
.toggles input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.toggles span{display:inline-flex;align-items:center;min-height:40px;padding:0 12px;border-radius:10px;border:1.5px solid var(--line);font-family:var(--f-mono);font-size:12.5px;color:var(--mist);transition:all .15s}
.toggles input:checked+span{background:var(--c);border-color:var(--c);color:#16121F;font-weight:600}
.toggles input:focus-visible+span{outline:3px solid var(--gold);outline-offset:2px}
.resp-box{margin:6px 0 0;font-family:var(--f-mono);font-size:12px;line-height:1.6;color:#C9F0D3;background:#0E0B14;border-radius:12px;padding:12px 14px;border:1.5px solid var(--line);white-space:pre-wrap;word-break:break-word}
.gate-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.btn-c{background:var(--c);color:#16121F;box-shadow:0 7px 0 -2px color-mix(in srgb,var(--c) 55%,#000)}
@media (max-width:860px){.gate-grid{grid-template-columns:minmax(0,1fr)}}
@media (max-width:560px){.flow{padding:18px 8px;gap:2px}.node{padding:10px 4px}.node b{font-size:13px}.node code{font-size:9.5px}.node.gate img{width:40px;height:40px}}

/* ---------- 03 Shifting Oni ---------- */
.oni-wrap{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:22px;align-items:start}
.oni-stage{position:relative;border-radius:24px;padding:22px;background:radial-gradient(70% 70% at 50% 70%,rgba(107,92,196,.3),transparent 70%),#1A1526;border:1.5px solid var(--line);display:flex;flex-direction:column;align-items:center;gap:16px;min-height:360px}
#oni{--size:1;width:220px;height:200px;transform:scale(var(--size));transform-origin:50% 100%;transition:transform .6s cubic-bezier(.3,1.5,.5,1),filter .6s}
#oni .body{animation:oniShift 3.2s ease-in-out infinite;transform-origin:110px 190px}
#oni.calm{filter:saturate(.5) brightness(.9)}
#oni.calm .body{animation:none}
@keyframes oniShift{0%,100%{transform:scale(1,1)}25%{transform:scale(1.12,.88) skewX(6deg)}50%{transform:scale(.88,1.12)}75%{transform:scale(1.06,.94) skewX(-6deg)}}
.chaos{width:100%;max-width:260px}
.chaos span{font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#B4A8F4}
.chaos div{height:10px;border-radius:5px;background:var(--line);overflow:hidden;margin-top:6px}
.chaos i{display:block;height:100%;background:linear-gradient(90deg,#6B5CC4,#B4A8F4);transform-origin:left;transition:transform .5s}
.oni-card{position:relative;padding:24px;border-radius:22px;background:var(--cream);color:var(--ink);border:2px solid var(--ink);box-shadow:0 14px 0 -4px #3A2E52;transition:box-shadow .3s}
.oni-card.good{box-shadow:0 14px 0 -4px #3E8A58}
.oni-card.bad{box-shadow:0 14px 0 -4px #B9564A}
.oni-card .k{font-size:13px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#A9482A}
.oni-card p.t{font-family:var(--f-display);font-weight:700;font-size:clamp(20px,2.4vw,26px);line-height:1.3;margin:10px 0 14px;color:var(--ink)}
.timer{height:8px;border-radius:4px;background:#E3D6BE;overflow:hidden}
.timer i{display:block;height:100%;background:#F07A3A;transform-origin:left;transition:transform .1s linear}
.timer.low i{background:#B9564A}
.sort{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px}
.sort button{min-height:64px;border-radius:16px;border:2px solid var(--ink);background:#FFFBF3;color:var(--ink);font:inherit;font-weight:800;font-size:15px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:8px;transition:transform .2s,background .2s}
.sort button small{font-family:var(--f-mono);font-weight:600;font-size:11px;color:var(--ink-soft)}
.sort button:hover:not(:disabled){transform:translateY(-3px)}
.sort button[data-a="cf"]{border-color:#C25E2A}
.sort button[data-a="xf"]{border-color:#6B5CC4}
.sort button.right{background:#D7F0DD;border-color:#3E8A58}
.sort button.wrong{background:#F8D9D4;border-color:#B9564A}
.sort button:disabled{cursor:default}
.why{min-height:3em;margin-top:14px;color:var(--ink-soft);font-size:15px}
.oni-foot{display:flex;justify-content:flex-end;margin-top:8px}
.oni-start{text-align:center;display:flex;flex-direction:column;gap:14px;align-items:center;padding:30px 20px}
.oni-start p{color:var(--ink-soft);max-width:46ch}
.key3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;width:100%;max-width:560px;text-align:left}
.key3 div{padding:12px;border-radius:14px;background:#FFFBF3;border:1.5px solid #E3D6BE;font-size:13.5px;color:var(--ink-soft)}
.key3 b{display:block;color:var(--ink);font-size:15px}
@media (max-width:860px){.oni-wrap{grid-template-columns:minmax(0,1fr)}.oni-stage{min-height:0;flex-direction:row;justify-content:space-around;flex-wrap:wrap}#oni{width:150px;height:136px}}
@media (max-width:520px){.sort,.key3{grid-template-columns:minmax(0,1fr)}.sort button{min-height:52px;flex-direction:row;gap:8px}}

/* ---------- 04 Vishwa's Walls ---------- */
.walls-ctrl{display:flex;flex-direction:column;gap:14px}
.wrow{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.wrow label{font-weight:800}
.wout{font-family:var(--f-mono);font-size:22px;font-weight:600;color:var(--c);min-width:84px;font-variant-numeric:tabular-nums}
input[type=range]{flex:1;min-width:200px;accent-color:var(--c);height:44px}
.status{padding:10px 14px;border-radius:12px;font-weight:700;font-size:15px;background:rgba(127,211,154,.12);color:var(--ok)}
.status[data-state="squash"]{background:rgba(240,154,142,.12);color:var(--bad)}
.status[data-state="stretch"]{background:rgba(242,194,48,.12);color:var(--warn)}
.frame-box{position:relative;margin-top:16px;overflow:hidden;border-radius:16px}
.frame{transform-origin:top left;background:#F6F0E4;border-radius:16px;border:3px solid #3B342C;overflow:hidden;transition:border-color .2s}
.frame[data-state="squash"]{border-color:#B9564A}
.frame[data-state="stretch"]{border-color:#C79A12}
.frame-bar{display:flex;gap:6px;padding:8px 12px;background:#E7DCC8}
.frame-bar i{width:9px;height:9px;border-radius:50%;background:#C9BBA2}
.grid{display:grid;gap:16px;padding:16px}
.pc{position:relative;background:#FFFBF3;border:2px solid #E3D6BE;border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:6px;color:#3B342C;min-width:0;overflow:hidden}
.pc-img{height:86px;border-radius:10px;background:linear-gradient(135deg,hsl(var(--h) 55% 72%),hsl(calc(var(--h) + 40) 50% 60%))}
.frame[data-state="stretch"] .pc-img{height:170px}
.pc b{font-family:var(--f-display);font-size:17px;white-space:nowrap}
.pc-price{font-weight:800;color:#A9482A}
.pc-btn{align-self:flex-start;padding:7px 14px;border-radius:999px;background:#B5502C;color:#FFF6EA;font-weight:800;font-size:13px;white-space:nowrap}
.pc-w{position:absolute;right:8px;top:8px;font-family:var(--f-mono);font-style:normal;font-size:11px;font-weight:600;padding:3px 7px;border-radius:6px;background:rgba(59,52,44,.8);color:#FFFBF3}
.frame[data-state="squash"] .pc{border-color:#B9564A;background:#FBE9E5}
.frame[data-state="squash"] .pc-w{background:#B9564A}
.frame[data-state="stretch"] .pc{border-color:#E1C266}
.frame[data-state="stretch"] .pc-w{background:#8A6A08}
.walls-actions{display:flex;flex-wrap:wrap;gap:10px}
.bp-list{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-height:44px}
.bp-chip{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 12px;border-radius:10px;border:1.5px solid var(--c);background:color-mix(in srgb,var(--c) 14%,transparent);color:var(--cream);font-family:var(--f-mono);font-size:13px;cursor:pointer}
.bp-chip span{font-size:16px;color:var(--c)}
.walls-out{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;margin-top:18px}
.ruler-bar{position:relative;height:22px;border-radius:6px;background:var(--line);margin:28px 0 10px}
.ruler-bar i{position:absolute;top:0;bottom:0}
.ruler-bar i.ok{background:var(--ok)}
.ruler-bar i.squash{background:var(--bad)}
.ruler-bar i.stretch{background:var(--warn)}
.ruler-bar b{position:absolute;top:-24px;transform:translateX(-50%);font-family:var(--f-mono);font-size:11px;color:var(--cream)}
.ruler-bar b::after{content:"";position:absolute;left:50%;top:18px;width:2px;height:28px;background:var(--cream)}
.ruler-legend{display:flex;justify-content:space-between;font-family:var(--f-mono);font-size:11px;color:var(--mist)}
.bonus{margin-top:14px;padding:14px 16px;border-radius:14px;border:1.5px dashed var(--c);font-size:15px;color:var(--mist)}
.bonus code{font-family:var(--f-mono);color:var(--cream);font-size:13.5px}
@media (max-width:860px){.walls-out{grid-template-columns:minmax(0,1fr)}}
@media (max-width:600px){.pc:nth-child(n+4){display:none}}

/* ---------- 05 Sanjaya's Veil ---------- */
.veil-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:20px;align-items:start}
.kc-stage{position:relative;border-radius:22px;padding:28px;background:radial-gradient(70% 70% at 50% 40%,rgba(167,155,240,.18),transparent 70%),#1A1526;border:1.5px solid var(--line);overflow:hidden}
.kc-stage .tag{font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#B4A8F4;margin-bottom:12px;display:block}
.kc{background:#FFFBF3;color:#3B342C;border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:12px;max-width:320px;margin-inline:auto}
.kc-img{width:100%;height:auto;display:block;border-radius:10px}
.kc-body{display:flex;flex-direction:column;gap:8px}
.kc-t{font-family:var(--f-display);font-size:22px}
.kc-p{font-weight:800;color:#A9482A}
.kc-l{font-weight:800;font-size:14px}
.kc-in{min-height:44px;border-radius:10px;border:2px solid #C9BBA2;padding:0 12px;font:inherit;background:#fff;color:#3B342C}
.kc-btn{min-height:46px;border-radius:999px;background:#B5502C;color:#FFF6EA;font:inherit;font-weight:800;border:0;display:flex;align-items:center;justify-content:center;cursor:pointer}
.kc *:focus{outline:none}
.kc.focus-ok *:focus-visible{outline:3px solid #7B6CC4;outline-offset:3px}
.veil{position:absolute;inset:0;background:repeating-linear-gradient(115deg,rgba(76,60,150,.9) 0 18px,rgba(92,75,170,.92) 18px 36px);backdrop-filter:blur(3px);transition:opacity .8s;pointer-events:none;display:grid;place-items:center}
.veil span{font-family:var(--f-display);font-weight:900;font-size:20px;color:#E7E2FF;letter-spacing:.06em;text-align:center;padding:0 20px}
.hears{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.hears li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 14px;border-radius:16px;border:1.5px solid rgba(240,154,142,.4);background:rgba(240,154,142,.06)}
.hears li.ok{border-color:rgba(127,211,154,.5);background:rgba(127,211,154,.08)}
.h-n{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-family:var(--f-mono);font-weight:600;font-size:13px;background:var(--bad);color:#16121F}
.hears li.ok .h-n{background:var(--ok)}
.hears b{display:block;font-size:14px}
.hears q{font-family:var(--f-mono);font-size:13px;color:var(--mist);quotes:none}
.h-done{font-size:13px;font-weight:800;color:var(--ok)}
.sr-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.fixer{margin-top:16px;border:2px solid #A79BF0;border-radius:18px;padding:16px;background:#221B36}
.fixer-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.fixer h4{margin:0;font-family:var(--f-display);font-size:18px}
.fix-now{margin:10px 0 12px;font-family:var(--f-mono);font-size:13px;padding:10px 12px;border-radius:10px;background:rgba(240,154,142,.08);border:1.5px dashed rgba(240,154,142,.5);color:#FFC7BE;white-space:pre-wrap;word-break:break-word}
.fix-now::before{content:"Now: ";color:var(--bad);font-weight:600}
.fix-why{margin-top:10px;color:var(--mist);font-size:14.5px;min-height:1.5em}
.icon-btn{width:44px;height:44px;border-radius:12px;border:1.5px solid var(--line);background:transparent;color:var(--cream);font-size:20px;cursor:pointer}
@media (max-width:860px){.veil-grid{grid-template-columns:minmax(0,1fr)}}

/* ---------- 06 Vayu's Mirage ---------- */
.mir-dots{display:flex;gap:6px;margin-bottom:14px}
.mir-dots i{flex:1;max-width:80px;height:6px;border-radius:3px;background:var(--line)}
.mir-dots i.done{background:var(--ok)}
.mir-dots i.now{background:var(--c)}
.mir-step h3{font-size:clamp(22px,2.6vw,28px);margin-bottom:8px}
.mir-step h3:focus{outline:none}
.mir-step>p{color:var(--mist);margin-bottom:14px;max-width:62ch}
.dials{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:16px}
.dial{padding:18px;border-radius:18px;border:1.5px solid var(--line);background:rgba(246,240,228,.03);display:flex;align-items:center;gap:16px}
.dial .ring{width:84px;height:84px;border-radius:50%;display:grid;place-items:center;font-family:var(--f-display);font-weight:900;font-size:24px;flex:none}
.dial.lab .ring{background:conic-gradient(var(--ok) 0 100%,transparent 0);box-shadow:inset 0 0 0 10px #1E1830;color:var(--ok)}
.dial.field .ring{background:conic-gradient(var(--bad) 0 70%,var(--line) 0);box-shadow:inset 0 0 0 10px #1E1830;color:var(--bad);font-size:20px}
.dial b{display:block;font-family:var(--f-display);font-size:17px}
.dial span{color:var(--mist);font-size:14px}
.shop{position:relative;max-width:380px;border-radius:20px;background:#FFFBF3;color:#3B342C;padding:16px;border:3px solid #3B342C;display:flex;flex-direction:column;gap:10px}
.shop .s-t{font-family:var(--f-display);font-weight:900;font-size:20px}
.shop .s-row{display:flex;justify-content:space-between;font-weight:700}
.shop .ad{border-radius:12px;background:repeating-linear-gradient(45deg,#F2CE7A 0 14px,#F5D88E 14px 28px);color:#3B342C;font-weight:900;display:grid;place-items:center;height:84px;overflow:hidden;text-align:center;font-size:15px}
.shop button{min-height:52px;border-radius:999px;font:inherit;font-weight:800;border:0;cursor:pointer}
.shop .buy{background:#B5502C;color:#FFF6EA}
.shop .rem{background:#E9DFCC;color:#3B342C}
.shop:not(.live) button{opacity:.45;pointer-events:none}
.shop-msg{min-height:1.5em;margin-top:12px;font-weight:700}
.culprits{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:10px}
.culprits li{padding:12px 14px;border-radius:14px;background:#120E1A;border:1.5px solid var(--line);font-family:var(--f-mono);font-size:13px;color:var(--mist)}
.culprits li b{color:var(--cream);font-family:var(--f-body);font-size:14px;display:block;margin-bottom:2px}
.tickets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.ticket{display:flex;flex-direction:column;gap:6px;text-align:left;padding:14px;border-radius:16px;border:1.5px solid var(--line);background:rgba(246,240,228,.03);color:var(--cream);font:inherit;cursor:pointer;min-height:120px;transition:all .2s}
.ticket b{font-family:var(--f-display);font-size:16px}
.ticket span{color:var(--mist);font-size:13.5px;line-height:1.45}
.ticket:hover:not(:disabled){border-color:var(--c)}
.ticket.on{border-color:var(--c);background:color-mix(in srgb,var(--c) 16%,transparent);box-shadow:0 0 0 2px var(--c) inset}
.ticket:disabled{opacity:.4;cursor:not-allowed}
.vitals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px}
.gauge{padding:14px;border-radius:16px;border:1.5px solid var(--line);background:#120E1A}
.gauge .g-k{display:flex;justify-content:space-between;align-items:baseline;font-weight:800}
.gauge .g-k small{font-family:var(--f-mono);font-weight:400;color:var(--mist);font-size:11.5px}
.gauge .g-v{font-family:var(--f-display);font-weight:900;font-size:30px;font-variant-numeric:tabular-nums}
.gauge .g-track{height:8px;border-radius:4px;background:var(--line);overflow:hidden;margin-top:6px}
.gauge .g-fill{display:block;height:100%;transform-origin:left;transition:transform .8s cubic-bezier(.3,1.2,.5,1),background .4s}
.gauge[data-grade="good"] .g-v{color:var(--ok)}.gauge[data-grade="good"] .g-fill{background:var(--ok)}
.gauge[data-grade="mid"] .g-v{color:var(--warn)}.gauge[data-grade="mid"] .g-fill{background:var(--warn)}
.gauge[data-grade="poor"] .g-v{color:var(--bad)}.gauge[data-grade="poor"] .g-fill{background:var(--bad)}
.ship-notes{margin:12px 0 0;padding-left:18px;color:var(--mist);font-size:14.5px;display:grid;gap:4px}
.ship-notes b{color:var(--cream)}
@media (max-width:760px){.dials,.vitals{grid-template-columns:minmax(0,1fr)}.tickets{grid-template-columns:minmax(0,1fr)}.ticket{min-height:0}}

@media (prefers-reduced-motion:reduce){#oni .body{animation:none}.seal-big{animation:none}}

.hgroup{border:0;padding:0;margin:0;display:flex;flex-direction:column;gap:8px;min-width:0}
.hgroup>legend{font-family:var(--f-mono);font-size:12.5px;color:var(--c);font-weight:600;padding:0;margin-bottom:8px}
#ruler:not([hidden]) ~ .rule-empty{display:none}
/* sub pages: the dark seal look */
.sub-page .seal{border:2px dashed color-mix(in srgb,var(--c) 55%,transparent);color:var(--mist);background:transparent}
.sub-page .seal.earned{border-style:solid;border-color:var(--c);background:color-mix(in srgb,var(--c) 26%,transparent);color:var(--cream)}
.sub-page .seal.earned::after{content:"";width:16px;height:16px;right:-6px;top:-6px}

/* ---------- Episode 07 · Drain the Kappa's Pond ---------- */
.game-head .goal code,.mir-step code,.lesson code,.kp-lh code,.kp-row code,.kp-page code{font-family:var(--f-mono);font-size:.9em;color:#9CCBF0}
.kp-board{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) minmax(0,.8fr);gap:16px;margin-bottom:22px;align-items:stretch}
.kp-app{background:#F6F0E4;color:#3B342C;border-radius:18px;overflow:hidden;border:2px solid #3B342C;min-width:0}
.kp-bar{display:flex;align-items:center;gap:8px;background:#E7DCC8;padding:10px 14px}
.kp-bar i{width:11px;height:11px;border-radius:50%;background:#D9693F}.kp-bar i:nth-child(2){background:#E2B24A}.kp-bar i:nth-child(3){background:#8CC4A0}
.kp-url{margin-left:8px;background:#FFFBF3;border-radius:10px;padding:2px 12px;font-family:var(--f-mono);font-size:13px;color:#5F564B;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kp-tabs{display:flex;gap:6px;padding:10px 12px 0}
.kp-tab{flex:1;min-height:44px;border-radius:12px;border:2px solid #3B342C;background:#FFFBF3;color:#3B342C;font:inherit;font-weight:800;font-size:15px;cursor:pointer;transition:transform .15s}
.kp-tab:hover{transform:translateY(-2px)}
.kp-tab[aria-pressed="true"]{background:#3B342C;color:#FFFBF3}
.kp-tab:focus-visible{outline:3px solid var(--c);outline-offset:2px}
.kp-page{padding:14px;display:flex;flex-direction:column;gap:10px;min-height:170px}
.kp-page small{color:#5F564B;font-size:13px}.kp-page code{color:#1F5F96}
.kp-search{background:#FFFBF3;border:1.5px solid #E7DCC8;border-radius:999px;padding:8px 16px;color:#8E8170;font-size:14px}
.kp-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.kp-cards i{height:54px;border-radius:10px;background:#EFE6D4}
.kp-clock{font-family:var(--f-display);font-weight:900;font-size:40px;line-height:1}.kp-clock span{color:#1F5F96}
.kp-chat{display:flex;flex-direction:column;gap:6px}.kp-chat p{margin:0;background:#FFFBF3;border-radius:12px;padding:8px 12px;font-size:14px;width:fit-content;max-width:100%}
.kp-ledger{background:var(--card-2);border:1.5px solid var(--line);border-radius:18px;padding:16px;display:flex;flex-direction:column;gap:10px;min-width:0}
.kp-lh{font-family:var(--f-display);font-weight:900;font-size:18px;color:var(--cream);display:flex;flex-direction:column;gap:2px}
.kp-lh span{font-family:var(--f-body);font-weight:500;font-size:13px;color:var(--mist)}
.kp-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;border-radius:12px;background:rgba(127,211,154,.08);border:1.5px solid rgba(127,211,154,.25);font-size:14px;color:var(--mist)}
.kp-row b{font-family:var(--f-display);font-weight:900;font-size:26px;color:var(--ok);font-variant-numeric:tabular-nums}
.kp-row[data-state="leak"]{background:rgba(240,154,142,.1);border-color:rgba(240,154,142,.4)}
.kp-row[data-state="leak"] b{color:var(--bad)}
.kp-mem{display:grid;grid-template-columns:1fr auto;gap:6px 10px;align-items:baseline;margin-top:auto;font-size:14px;color:var(--mist)}
.kp-mem b{color:var(--cream);font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.kp-track{grid-column:1/-1;height:10px;border-radius:5px;background:rgba(246,240,228,.08);overflow:hidden}
.kp-track i{display:block;height:100%;width:18%;border-radius:5px;background:var(--ok);transition:width .4s,background .4s}
.kp-track i[data-state="warn"]{background:var(--warn)}.kp-track i[data-state="bad"]{background:var(--bad)}
.kp-pond{position:relative;border-radius:18px;overflow:hidden;min-height:250px;background:linear-gradient(#1B1628,#241D35);border:1.5px solid var(--line)}
.kp-water{position:absolute;left:0;right:0;bottom:0;height:14%;background:linear-gradient(#3F8FD0,#22476B);transition:height .6s cubic-bezier(.3,1.3,.5,1)}
.kp-water::before{content:"";position:absolute;left:-10%;right:-10%;top:-8px;height:16px;border-radius:50%;background:#6FB4EC;opacity:.6}
.kp-kappa{--s:.5;position:absolute;left:50%;bottom:6%;width:180px;height:auto;transform:translateX(-50%) scale(var(--s));transform-origin:50% 100%;transition:transform .6s cubic-bezier(.3,1.5,.5,1),opacity .8s}
@media (prefers-reduced-motion: reduce){.kp-water,.kp-kappa,.kp-track i{transition:none}}
.kp-fixes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.kp-fix{background:rgba(246,240,228,.03);border:1.5px solid var(--line);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:10px;min-width:0}
.kp-fix.done{border-color:var(--ok)}
.kp-fix h4{margin:0;font-family:var(--f-display);font-weight:900;font-size:17px;color:var(--cream)}
.kp-fix .code-box{font-size:12.5px;white-space:pre-wrap;overflow-wrap:anywhere;font-variant-ligatures:none}
.kp-fix mark{background:rgba(233,166,107,.22);color:#E9A66B;border-radius:4px;padding:0 4px}
.kp-fix .opt pre{font-size:12.5px;font-variant-ligatures:none}
.kp-why{margin:0;font-size:14px;color:var(--mist);min-height:1em}
.kp-fix.done .kp-why{color:var(--ok)}
@media (max-width:980px){.kp-board{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.kp-pond{grid-column:1/-1;min-height:200px}.kp-fixes{grid-template-columns:minmax(0,1fr)}}
@media (max-width:620px){.kp-board{grid-template-columns:minmax(0,1fr)}}

/* ---------- Episode 08 · Thaw the Frozen Echo ---------- */
.fe-board{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) minmax(0,.8fr);gap:16px;margin-bottom:22px;align-items:stretch}
.fe-app{background:#F6F0E4;color:#3B342C;border-radius:18px;overflow:hidden;border:2px solid #3B342C;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto 1fr}
.fe-app .kp-bar{grid-column:1/-1}
.fe-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:16px;min-height:170px;background:#EFE6D4;margin:12px 0 12px 12px;border-radius:14px}
.fe-screen span{font-size:13px;font-weight:700;color:#5F564B;text-align:center}
.fe-screen b{font-family:var(--f-display);font-weight:900;font-size:72px;line-height:1;font-variant-numeric:tabular-nums}
.fe-console{margin:12px;background:#24212A;border-radius:14px;padding:10px 12px;color:#9CC7A4;font-family:var(--f-mono);font-size:14px;min-width:0}
.fe-ch{font-family:var(--f-body);font-size:12px;color:#A8A1B3;margin-bottom:6px}
.fe-console ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}
.fe-console li span{color:#8EC5E8}
.fe-renders{background:var(--card-2);border:1.5px solid var(--line);border-radius:18px;padding:16px;display:flex;flex-direction:column;gap:10px;min-width:0}
.fe-renders ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.fe-renders li{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;align-items:baseline;padding:8px 12px;border-radius:12px;background:rgba(167,155,240,.08);border:1.5px solid rgba(167,155,240,.25);font-size:14px;color:var(--mist)}
.fe-renders li b{font-family:var(--f-mono);font-weight:600;color:var(--cream);text-align:right}
.fe-renders li em{grid-column:1/-1;font-style:normal;font-size:12.5px;color:var(--c)}
.fe-renders li.frozen{background:rgba(142,197,232,.12);border-color:rgba(142,197,232,.5)}
.fe-renders li.frozen em{color:#9CCBF0}
.fe-renders li.skip{background:rgba(240,154,142,.08);border-color:rgba(240,154,142,.35)}
.fe-renders li.skip em{color:var(--bad)}
.fe-renders .kp-lh code,.fe-board code{font-family:var(--f-mono);font-size:.9em;color:#C9C1F7}
.fe-ice{position:relative;border-radius:18px;overflow:hidden;min-height:250px;background:linear-gradient(#1B1628,#241D35);border:1.5px solid var(--line)}
.fe-frost{position:absolute;left:0;right:0;bottom:0;height:12%;background:linear-gradient(rgba(191,217,236,.35),rgba(142,197,232,.55));border-top:3px solid #BFD9EC;transition:height .6s cubic-bezier(.3,1.3,.5,1)}
.fe-echo{--s:.55;position:absolute;left:50%;bottom:6%;width:180px;height:auto;transform:translateX(-50%) scale(var(--s));transform-origin:50% 100%;transition:transform .6s cubic-bezier(.3,1.5,.5,1),opacity .8s}
.fe-code{font-variant-ligatures:none;margin-bottom:14px;max-width:560px}
.fe-code mark,.fe-fixes mark{background:rgba(142,197,232,.22);color:#BFE3FF;border-radius:4px;padding:0 4px}
.fe-fixes{grid-template-columns:repeat(2,minmax(0,1fr))}
.mir-step .fe-code{white-space:pre}
@media (prefers-reduced-motion: reduce){.fe-frost,.fe-echo{transition:none}}
@media (max-width:980px){.fe-board{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.fe-ice{grid-column:1/-1;min-height:200px}.fe-fixes{grid-template-columns:minmax(0,1fr)}}
@media (max-width:620px){.fe-board{grid-template-columns:minmax(0,1fr)}.fe-app{grid-template-columns:minmax(0,1fr)}.fe-screen{margin:12px 12px 0}}
.game .lesson code,.game .goal code,.mir-step code,.kp-why{font-variant-ligatures:none}
