:root{--gold: #F2C14E;--ember: #E5602E;--lapis: #1F4E8C;--sand: #C9A27A;--ink: #14110F;--parch: #F3E9D2;--crimson: #B3263A;--display: "Cinzel", Georgia, serif;--body: "Inter", system-ui, sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--ink);color:var(--parch);font-family:var(--body);overflow:hidden;touch-action:manipulation;-webkit-user-select:none;user-select:none}#stage{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center}canvas#game{width:min(100vw,177.78vh);height:auto;aspect-ratio:16 / 9;display:block;background:#000}#ui{position:absolute;width:min(100vw,177.78vh);aspect-ratio:16 / 9;pointer-events:none;container-type:inline-size}#ui>*{pointer-events:auto}.screen{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.6cqw;background:radial-gradient(ellipse at 50% 30%,rgba(242,193,78,.12),transparent 60%),linear-gradient(180deg,#14110f8c,#14110feb)}.screen.clear{background:transparent}.logo{font-family:var(--display);font-weight:900;font-size:7.2cqw;letter-spacing:.06em;color:var(--gold);text-shadow:0 .25cqw 0 #7a4a0c,0 0 2.5cqw rgba(242,193,78,.45);line-height:1;margin:0;text-align:center}.tag{font-family:var(--display);font-size:1.4cqw;letter-spacing:.35em;text-transform:uppercase;color:var(--parch);opacity:.85;margin:0}.brand{position:absolute;bottom:1.6cqw;font-size:1cqw;letter-spacing:.25em;text-transform:uppercase;opacity:.6}.menu{display:flex;flex-direction:column;gap:.7cqw;min-width:28cqw}.btn{font-family:var(--display);font-weight:800;font-size:1.7cqw;letter-spacing:.08em;text-transform:uppercase;color:var(--parch);background:linear-gradient(180deg,#2b231d,#1a1512);border:.15cqw solid #4a3c30;border-radius:.6cqw;padding:.9cqw 2cqw;cursor:pointer;text-align:center;transition:transform .08s,border-color .08s}.btn:hover,.btn:focus-visible,.btn.focus{border-color:var(--gold);color:var(--gold);outline:none;transform:scale(1.03);box-shadow:0 0 1.2cqw #f2c14e40}.btn.small{font-size:1.2cqw;padding:.6cqw 1.4cqw}.btn[disabled]{opacity:.4;pointer-events:none}.hint{font-size:1.05cqw;opacity:.7;text-align:center}h2.title{font-family:var(--display);font-weight:900;font-size:3.4cqw;color:var(--gold);margin:0;letter-spacing:.06em;text-shadow:0 .2cqw 0 #6b3f0a}.row{display:flex;gap:1cqw;align-items:center;justify-content:center;flex-wrap:wrap}.select{justify-content:flex-start;padding-top:2cqw}.grid{display:grid;grid-template-columns:repeat(9,9.4cqw);gap:.6cqw}.card{position:relative;height:12.5cqw;border:.2cqw solid #3d3128;border-radius:.6cqw;background:linear-gradient(180deg,#2d241e,#120f0d);overflow:hidden;cursor:pointer}.card img{position:absolute;left:50%;bottom:1.6cqw;height:9.6cqw;transform:translate(-50%);object-fit:contain;filter:drop-shadow(0 .3cqw .3cqw rgba(0,0,0,.6))}.card .nm{position:absolute;bottom:0;left:0;right:0;font-family:var(--display);font-weight:800;font-size:1cqw;text-align:center;padding:.3cqw 0;background:#0000008c;letter-spacing:.05em}.card.locked img{filter:brightness(0) drop-shadow(0 0 .3cqw rgba(242,193,78,.4))}.card.p1{border-color:#3d7bd9;box-shadow:0 0 1cqw #3d7bd9b3}.card.p2{border-color:#d93d4f;box-shadow:0 0 1cqw #d93d4fb3}.card.p1.p2{border-color:#c45ad9}.card .tagp{position:absolute;top:.3cqw;font-family:var(--display);font-weight:900;font-size:1cqw;padding:0 .4cqw;border-radius:.3cqw}.card .tagp.a{left:.3cqw;background:#3d7bd9}.card .tagp.b{right:.3cqw;background:#d93d4f}.showcase{display:flex;justify-content:space-between;width:92cqw;align-items:flex-end;height:22cqw}.side{width:36cqw;display:flex;gap:1cqw;align-items:flex-end}.side.right{flex-direction:row-reverse;text-align:right}.side img.big{height:21cqw;object-fit:contain;filter:drop-shadow(0 .5cqw .6cqw rgba(0,0,0,.7))}.side.right img.big{transform:scaleX(-1)}.bio .who{font-family:var(--display);font-weight:900;font-size:2.6cqw;color:var(--gold);line-height:1}.bio .ttl{font-size:1.1cqw;letter-spacing:.2em;text-transform:uppercase;opacity:.8;margin:.3cqw 0 .6cqw}.bio .arch{font-size:1cqw}.bio .mech{font-size:.95cqw;opacity:.8;margin-top:.4cqw;max-width:20cqw}.ready{font-family:var(--display);font-weight:900;color:var(--gold);font-size:1.4cqw}.stages{display:grid;grid-template-columns:repeat(2,30cqw);gap:1.2cqw}.stagecard{height:13cqw;border-radius:.7cqw;border:.2cqw solid #3d3128;background-size:cover;background-position:center;position:relative;cursor:pointer}.stagecard span{position:absolute;left:0;right:0;bottom:0;padding:.5cqw;font-family:var(--display);font-weight:800;font-size:1.4cqw;background:linear-gradient(transparent,#000c)}.stagecard.focus,.stagecard:hover{border-color:var(--gold);box-shadow:0 0 1.4cqw #f2c14e66}.panel{font-size:1.1cqw;line-height:1.45;background:#14110feb;border:.15cqw solid #4a3c30;border-radius:.8cqw;padding:1.4cqw 2cqw;max-width:80cqw;max-height:80%;overflow:auto}.movelist{display:grid;grid-template-columns:auto auto auto;gap:.3cqw 1.6cqw;font-size:1.1cqw}.movelist .k{font-family:monospace;color:var(--gold)}.controls{display:grid;grid-template-columns:auto auto auto;gap:.35cqw 2cqw;font-size:1.05cqw}.controls b{color:var(--gold)}input.code{font-family:var(--display);font-size:3cqw;letter-spacing:.5em;width:22cqw;text-align:center;text-transform:uppercase;background:#0e0c0a;color:var(--gold);border:.2cqw solid #4a3c30;border-radius:.6cqw;padding:.6cqw}.codebig{font-family:var(--display);font-weight:900;font-size:6cqw;letter-spacing:.4em;color:var(--gold)}.verses{display:grid;grid-template-columns:repeat(3,24cqw);gap:1cqw}.vcard{background:var(--parch);color:#3a2a1a;border-radius:.5cqw;padding:1cqw;font-family:Georgia,serif;font-size:.95cqw;min-height:9cqw}.vcard.locked{position:relative;background:#14110fe0;color:var(--parch);border:.15cqw dashed rgba(242,193,78,.45)}.vcard.locked b{color:var(--gold)}.vcard.locked .ref{display:block;font-family:var(--display);font-size:.95cqw;letter-spacing:.08em;color:var(--sand);margin-bottom:.5cqw}.vcard.locked .lock{position:absolute;top:.9cqw;right:.9cqw;width:1.4cqw;height:1.4cqw;color:var(--gold);opacity:.8}.vcard b{font-family:var(--display);display:block;font-size:1.1cqw;margin-bottom:.3cqw;color:#7a1c28}.progress{width:40cqw;height:1cqw;background:#2a221c;border-radius:1cqw;overflow:hidden}.progress i{display:block;height:100%;background:var(--gold);width:0}#touch{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5}#touch .pad,#touch .tb{pointer-events:auto;position:absolute;border-radius:50%;background:#ffffff1f;border:2px solid rgba(255,255,255,.3);color:#fff;font:800 13px var(--body);display:grid;place-items:center;touch-action:none}#touch .pad{left:4vw;bottom:6vh;width:34vmin;height:34vmin}#touch .pad i{position:absolute;left:50%;top:50%;width:12vmin;height:12vmin;margin:-6vmin;border-radius:50%;background:#ffffff59}#touch .tb{width:15vmin;height:15vmin}#touch .tb.on{background:#f2c14e8c}#rotate{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9;background:var(--ink);display:none;place-items:center;text-align:center;font-family:var(--display);color:var(--gold);font-size:22px;padding:20px}@media(orientation:portrait)and (pointer:coarse){#rotate{display:grid}}#toast{position:fixed;top:16px;left:50%;transform:translate(-50%);z-index:20;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}.toast{background:#14110feb;border:2px solid var(--gold);color:var(--parch);font-family:var(--body);font-weight:700;font-size:clamp(11px,1.15vw,15px);line-height:1.3;white-space:nowrap;padding:.6em 1.2em;border-radius:10px;box-shadow:0 6px 24px #00000080;transition:opacity .5s,transform .5s}.toast.out{opacity:0;transform:translateY(-10px)}.pads{display:grid;grid-template-columns:repeat(2,30cqw);gap:1.2cqw}.padslot{background:#14110fd9;border:.15cqw solid #4a3c30;border-radius:.8cqw;padding:1.2cqw;min-height:6cqw;font-size:1.4cqw}.padslot.on{border-color:var(--gold)}.padslot h3{margin:0 0 .4cqw;font-family:var(--display);color:var(--gold);font-size:1.6cqw}.binds b{font-family:var(--display);color:var(--parch)}.binds{display:grid;grid-template-columns:auto auto auto;gap:.3cqw 2cqw;font-size:1.15cqw}.binds .k{font-family:var(--display);font-weight:800;color:var(--gold)}.binds .now{background:#f2c14e2e;border-radius:.3cqw}.screen.mainmenu{gap:1cqw}.menu.compact{gap:.45cqw}.menu.compact .btn{font-size:1.35cqw;padding:.55cqw 2cqw}.brand.inline{position:static;margin-top:.6cqw}.chapters{display:grid;grid-template-columns:repeat(3,25cqw);gap:.8cqw}.chapter{position:relative;height:10.6cqw;padding:0;border:.2cqw solid #4a3c30;border-radius:.8cqw;overflow:hidden;cursor:pointer;background:#120f0d;color:var(--parch);text-align:left;font-family:var(--body);display:flex;flex-direction:column;justify-content:flex-end;gap:.2cqw;padding:.7cqw 1cqw;transition:transform .08s,border-color .08s}.chapter .art{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;filter:brightness(.55);z-index:0}.chapter>:not(.art){position:relative;z-index:1;text-shadow:0 .15cqw .4cqw rgba(0,0,0,.9)}.chapter .num{font-family:var(--display);font-size:1cqw;letter-spacing:.2em;text-transform:uppercase;color:var(--sand)}.chapter b{font-family:var(--display);font-weight:900;font-size:1.6cqw;color:var(--gold);line-height:1.1}.chapter i{font-size:1cqw;opacity:.85}.chapter .state{position:absolute;top:.8cqw;right:.9cqw;font-family:var(--display);font-weight:800;font-size:.95cqw;background:#14110fcc;border:.1cqw solid var(--gold);color:var(--gold);padding:.2cqw .6cqw;border-radius:.4cqw}.chapter.done .state{background:var(--gold);color:var(--ink)}.chapter.locked{cursor:default}.chapter.locked .art{filter:brightness(.2) grayscale(1)}.chapter.locked b{color:var(--sand)}.chapter.focus,.chapter:hover:not(.locked){border-color:var(--gold);transform:scale(1.03);box-shadow:0 0 1.4cqw #f2c14e59}.scripture{max-width:60cqw;background:var(--parch);color:#3a2a1a;border-radius:.6cqw;padding:1.6cqw 2.2cqw;font-family:Georgia,serif;box-shadow:0 .6cqw 2cqw #00000080}.scripture p{margin:0 0 .6cqw;font-size:1.7cqw;font-style:italic;line-height:1.4}.scripture span{font-family:var(--display);font-weight:800;color:#7a1c28;font-size:1.2cqw}.storyboard{background:#000;justify-content:flex-end;padding-bottom:2cqw;cursor:pointer;overflow:hidden}.panelart{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center}.panelart.kb{animation:kb 14s ease-out forwards}@keyframes kb{0%{transform:scale(1)}to{transform:scale(1.08)}}@media(prefers-reduced-motion:reduce){.panelart.kb{animation:none}}.caption{position:relative;width:76cqw;background:#0e0b09db;border:.15cqw solid rgba(242,193,78,.5);border-radius:.8cqw;padding:1.2cqw 1.8cqw}.caption p{margin:0;font-size:1.55cqw;line-height:1.45}.caption blockquote{margin:.8cqw 0 0;font-family:Georgia,serif;font-style:italic;font-size:1.35cqw;color:var(--gold);line-height:1.4}.caption blockquote span{display:block;font-style:normal;font-family:var(--display);font-size:1cqw;color:var(--sand);margin-top:.3cqw}.caption .next{margin-top:.7cqw;font-size:.95cqw;opacity:.6;text-align:right}.btn.skip{position:absolute;top:1.4cqw;right:1.6cqw}.harp{justify-content:flex-start;padding-top:1.6cqw}.harphint{font-size:1.3cqw;background:#0e0b09cc;padding:.6cqw 1.4cqw;border-radius:.6cqw;border:.12cqw solid rgba(242,193,78,.4)}.vcard.big{max-width:52cqw;font-size:1.6cqw;padding:1.6cqw 2cqw;line-height:1.4}.vcard.big b{font-size:1.4cqw}.lesson{font-family:var(--display);font-weight:800;color:var(--gold);font-size:1.6cqw;margin:0;text-align:center;max-width:60cqw}@media(max-width:900px){.caption{width:88cqw;padding:1cqw 1.6cqw}.caption p{font-size:2.4cqw}.caption blockquote{font-size:2.1cqw}.caption blockquote span,.caption .next{font-size:1.6cqw}.harphint{font-size:2.1cqw}.scripture p{font-size:2.4cqw}}.mixrow{display:grid;grid-template-columns:14cqw 1fr 4.5cqw;align-items:center;gap:1.2cqw;text-align:left;cursor:default}.mixrow input{width:100%;accent-color:var(--gold);cursor:pointer}.mixrow b{text-align:right;font-weight:800}#fullscreen{position:fixed;top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right));z-index:15;display:flex;align-items:center;gap:6px;padding:6px 10px 6px 8px;border-radius:8px;border:1.5px solid var(--gold);background:#14110fd9;color:var(--gold);font:800 13px var(--body);box-shadow:0 2px 10px #00000080;letter-spacing:.03em;cursor:pointer;transition:opacity .4s,border-color .15s,color .15s}#fullscreen svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}#fullscreen:hover,#fullscreen:focus-visible{border-color:var(--gold);color:var(--gold);opacity:1;outline:none}#fullscreen.dim{opacity:.45}#fullscreen.on span{display:none}@media(pointer:coarse){#fullscreen span{display:none}#fullscreen{padding:7px}}.verse-continue{position:absolute;left:50%;top:77%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:.2cqw;font-size:2.1cqw;padding:.8cqw 3.2cqw;border-color:var(--gold);color:var(--gold);box-shadow:0 0 1.6cqw #f2c14e59;animation:verse-pulse 1.6s ease-in-out infinite}.verse-continue small{font-family:var(--body);font-size:.95cqw;letter-spacing:.04em;text-transform:none;color:var(--parch);opacity:.8}.verse-continue:hover,.verse-continue.focus{transform:translate(-50%) scale(1.04)}@keyframes verse-pulse{50%{box-shadow:0 0 2.6cqw #f2c14e99}}
