:root{--bg:#07060a;--ink:#0d0804;--panel-top:#271f30;--panel-bottom:#120e18;--gold:#f0c35a;--gold-soft:#f6e3b4;--gold-deep:#9a6a22;--text:#efe4cc;--muted:#b4a68c;--hp:#e0283f;--mp:#2f80e8;--xp:#a879ff;--danger:#e2394b;--serif:"Cinzel", Georgia, serif;--book:"Alegreya", Georgia, serif;--frame:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='72' viewBox='0 0 72 72'%3E %3Cdefs%3E %3ClinearGradient id='g' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23fff1c4'/%3E%3Cstop offset='.45' stop-color='%23e2ad4b'/%3E%3Cstop offset='1' stop-color='%2385561a'/%3E%3C/linearGradient%3E %3CradialGradient id='j' cx='.4' cy='.35' r='.75'%3E%3Cstop offset='0' stop-color='%23ffb4a4'/%3E%3Cstop offset='.5' stop-color='%23d0302a'/%3E%3Cstop offset='1' stop-color='%23560a0a'/%3E%3C/radialGradient%3E %3Cg id='c'%3E %3Cpath d='M.5 .5H23.5L19 6H6V19L.5 23.5Z' fill='url(%23g)' stroke='%230d0804' stroke-width='1'/%3E %3Cpath d='M13 13Q19.5 13.5 21.5 21.5Q13.5 19.5 13 13Z' fill='url(%23g)' stroke='%230d0804' stroke-width='.8'/%3E %3Crect x='1.8' y='1.8' width='12' height='12' rx='1.2' fill='%231c1208' stroke='url(%23g)' stroke-width='1.6'/%3E %3Cpath d='M7.8 3L12.6 7.8L7.8 12.6L3 7.8Z' fill='url(%23j)' stroke='%23ffe8b8' stroke-opacity='.85' stroke-width='.6'/%3E %3Cpath d='M6.6 5.4L7.8 4.4L8.4 5.2Z' fill='%23fff' fill-opacity='.7'/%3E %3C/g%3E %3C/defs%3E %3Crect x='1' y='1' width='70' height='70' fill='none' stroke='%230d0804' stroke-width='2'/%3E %3Crect x='5' y='5' width='62' height='62' fill='none' stroke='url(%23g)' stroke-width='4'/%3E %3Crect x='7.5' y='7.5' width='57' height='57' fill='none' stroke='%230d0804' stroke-width='1'/%3E %3Crect x='11' y='11' width='50' height='50' fill='none' stroke='%23b88a3a' stroke-opacity='.5' stroke-width='1'/%3E %3Cuse href='%23c'/%3E %3Cuse href='%23c' transform='matrix(-1 0 0 1 72 0)'/%3E %3Cuse href='%23c' transform='matrix(1 0 0 -1 0 72)'/%3E %3Cuse href='%23c' transform='matrix(-1 0 0 -1 72 72)'/%3E %3C/svg%3E");--frame-violet:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='72' viewBox='0 0 72 72'%3E %3Cdefs%3E %3ClinearGradient id='g' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23f3e2ff'/%3E%3Cstop offset='.45' stop-color='%23a979e0'/%3E%3Cstop offset='1' stop-color='%2344246e'/%3E%3C/linearGradient%3E %3CradialGradient id='j' cx='.4' cy='.35' r='.75'%3E%3Cstop offset='0' stop-color='%23ffd0f4'/%3E%3Cstop offset='.5' stop-color='%23c43a8e'/%3E%3Cstop offset='1' stop-color='%234a0a3a'/%3E%3C/radialGradient%3E %3Cg id='c'%3E %3Cpath d='M.5 .5H23.5L19 6H6V19L.5 23.5Z' fill='url(%23g)' stroke='%230d0804' stroke-width='1'/%3E %3Cpath d='M13 13Q19.5 13.5 21.5 21.5Q13.5 19.5 13 13Z' fill='url(%23g)' stroke='%230d0804' stroke-width='.8'/%3E %3Crect x='1.8' y='1.8' width='12' height='12' rx='1.2' fill='%231c1208' stroke='url(%23g)' stroke-width='1.6'/%3E %3Cpath d='M7.8 3L12.6 7.8L7.8 12.6L3 7.8Z' fill='url(%23j)' stroke='%23ffe8b8' stroke-opacity='.85' stroke-width='.6'/%3E %3Cpath d='M6.6 5.4L7.8 4.4L8.4 5.2Z' fill='%23fff' fill-opacity='.7'/%3E %3C/g%3E %3C/defs%3E %3Crect x='1' y='1' width='70' height='70' fill='none' stroke='%230d0804' stroke-width='2'/%3E %3Crect x='5' y='5' width='62' height='62' fill='none' stroke='url(%23g)' stroke-width='4'/%3E %3Crect x='7.5' y='7.5' width='57' height='57' fill='none' stroke='%230d0804' stroke-width='1'/%3E %3Crect x='11' y='11' width='50' height='50' fill='none' stroke='%23a979e0' stroke-opacity='.5' stroke-width='1'/%3E %3Cuse href='%23c'/%3E %3Cuse href='%23c' transform='matrix(-1 0 0 1 72 0)'/%3E %3Cuse href='%23c' transform='matrix(1 0 0 -1 0 72)'/%3E %3Cuse href='%23c' transform='matrix(-1 0 0 -1 72 72)'/%3E %3C/svg%3E");--corner-tl:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cdefs%3E %3ClinearGradient id='g' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0' stop-color='%23fff1c4'/%3E%3Cstop offset='.5' stop-color='%23e2ad4b'/%3E%3Cstop offset='1' stop-color='%238a5a1a'/%3E%3C/linearGradient%3E %3CradialGradient id='j' cx='.4' cy='.35' r='.75'%3E%3Cstop offset='0' stop-color='%23ffb4a4'/%3E%3Cstop offset='.5' stop-color='%23d0302a'/%3E%3Cstop offset='1' stop-color='%23560a0a'/%3E%3C/radialGradient%3E %3C/defs%3E%3Cg transform='matrix(1 0 0 1 0 0)'%3E %3Cpath d='M2 2H45L40.5 7.5H7.5V40.5L2 45Z' fill='url(%23g)' stroke='%230d0804' stroke-width='1.2'/%3E %3Ccircle cx='44' cy='4.8' r='2.6' fill='url(%23g)' stroke='%230d0804' stroke-width='1'/%3E %3Ccircle cx='4.8' cy='44' r='2.6' fill='url(%23g)' stroke='%230d0804' stroke-width='1'/%3E %3Cpath d='M15 15Q28 16 32 32Q16 28 15 15Z' fill='url(%23g)' stroke='%230d0804' stroke-width='1'/%3E %3Cpath d='M18.5 18.5Q25 20 27 27' fill='none' stroke='%230d0804' stroke-opacity='.55' stroke-width='.9'/%3E %3Cpath d='M10 .8L19.2 10L10 19.2L.8 10Z' fill='%231c1208' stroke='url(%23g)' stroke-width='1.8'/%3E %3Cpath d='M10 4.2L15.8 10L10 15.8L4.2 10Z' fill='url(%23j)' stroke='%23ffe8b8' stroke-opacity='.85' stroke-width='.7'/%3E %3Cpath d='M8.4 7.6L10 6L10.9 7.1Z' fill='%23fff' fill-opacity='.75'/%3E %3C/g%3E%3C/svg%3E");--corner-tr:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cdefs%3E %3ClinearGradient id='g' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0' stop-color='%23fff1c4'/%3E%3Cstop offset='.5' stop-color='%23e2ad4b'/%3E%3Cstop offset='1' stop-color='%238a5a1a'/%3E%3C/linearGradient%3E %3CradialGradient id='j' cx='.4' cy='.35' r='.75'%3E%3Cstop offset='0' stop-color='%23ffb4a4'/%3E%3Cstop offset='.5' stop-color='%23d0302a'/%3E%3Cstop offset='1' stop-color='%23560a0a'/%3E%3C/radialGradient%3E %3C/defs%3E%3Cg transform='matrix(-1 0 0 1 48 0)'%3E %3Cpath d='M2 2H45L40.5 7.5H7.5V40.5L2 45Z' fill='url(%23g)' stroke='%230d0804' stroke-width='1.2'/%3E %3Ccircle cx='44' cy='4.8' r='2.6' fill='url(%23g)' stroke='%230d0804' stroke-width='1'/%3E %3Ccircle cx='4.8' cy='44' r='2.6' fill='url(%23g)' stroke='%230d0804' stroke-width='1'/%3E %3Cpath d='M15 15Q28 16 32 32Q16 28 15 15Z' fill='url(%23g)' stroke='%230d0804' stroke-width='1'/%3E %3Cpath d='M18.5 18.5Q25 20 27 27' fill='none' stroke='%230d0804' stroke-opacity='.55' stroke-width='.9'/%3E %3Cpath d='M10 .8L19.2 10L10 19.2L.8 10Z' fill='%231c1208' stroke='url(%23g)' stroke-width='1.8'/%3E %3Cpath d='M10 4.2L15.8 10L10 15.8L4.2 10Z' fill='url(%23j)' stroke='%23ffe8b8' stroke-opacity='.85' stroke-width='.7'/%3E %3Cpath d='M8.4 7.6L10 6L10.9 7.1Z' fill='%23fff' fill-opacity='.75'/%3E %3C/g%3E%3C/svg%3E");--corner-bl:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cdefs%3E %3ClinearGradient id='g' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0' stop-color='%23fff1c4'/%3E%3Cstop offset='.5' stop-color='%23e2ad4b'/%3E%3Cstop offset='1' stop-color='%238a5a1a'/%3E%3C/linearGradient%3E %3CradialGradient id='j' cx='.4' cy='.35' r='.75'%3E%3Cstop offset='0' stop-color='%23ffb4a4'/%3E%3Cstop offset='.5' stop-color='%23d0302a'/%3E%3Cstop offset='1' stop-color='%23560a0a'/%3E%3C/radialGradient%3E %3C/defs%3E%3Cg transform='matrix(1 0 0 -1 0 48)'%3E %3Cpath d='M2 2H45L40.5 7.5H7.5V40.5L2 45Z' fill='url(%23g)' stroke='%230d0804' stroke-width='1.2'/%3E %3Ccircle cx='44' cy='4.8' r='2.6' fill='url(%23g)' stroke='%230d0804' stroke-width='1'/%3E %3Ccircle cx='4.8' cy='44' r='2.6' fill='url(%23g)' stroke='%230d0804' stroke-width='1'/%3E %3Cpath d='M15 15Q28 16 32 32Q16 28 15 15Z' fill='url(%23g)' stroke='%230d0804' stroke-width='1'/%3E %3Cpath d='M18.5 18.5Q25 20 27 27' fill='none' stroke='%230d0804' stroke-opacity='.55' stroke-width='.9'/%3E %3Cpath d='M10 .8L19.2 10L10 19.2L.8 10Z' fill='%231c1208' stroke='url(%23g)' stroke-width='1.8'/%3E %3Cpath d='M10 4.2L15.8 10L10 15.8L4.2 10Z' fill='url(%23j)' stroke='%23ffe8b8' stroke-opacity='.85' stroke-width='.7'/%3E %3Cpath d='M8.4 7.6L10 6L10.9 7.1Z' fill='%23fff' fill-opacity='.75'/%3E %3C/g%3E%3C/svg%3E");--corner-br:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cdefs%3E %3ClinearGradient id='g' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0' stop-color='%23fff1c4'/%3E%3Cstop offset='.5' stop-color='%23e2ad4b'/%3E%3Cstop offset='1' stop-color='%238a5a1a'/%3E%3C/linearGradient%3E %3CradialGradient id='j' cx='.4' cy='.35' r='.75'%3E%3Cstop offset='0' stop-color='%23ffb4a4'/%3E%3Cstop offset='.5' stop-color='%23d0302a'/%3E%3Cstop offset='1' stop-color='%23560a0a'/%3E%3C/radialGradient%3E %3C/defs%3E%3Cg transform='matrix(-1 0 0 -1 48 48)'%3E %3Cpath d='M2 2H45L40.5 7.5H7.5V40.5L2 45Z' fill='url(%23g)' stroke='%230d0804' stroke-width='1.2'/%3E %3Ccircle cx='44' cy='4.8' r='2.6' fill='url(%23g)' stroke='%230d0804' stroke-width='1'/%3E %3Ccircle cx='4.8' cy='44' r='2.6' fill='url(%23g)' stroke='%230d0804' stroke-width='1'/%3E %3Cpath d='M15 15Q28 16 32 32Q16 28 15 15Z' fill='url(%23g)' stroke='%230d0804' stroke-width='1'/%3E %3Cpath d='M18.5 18.5Q25 20 27 27' fill='none' stroke='%230d0804' stroke-opacity='.55' stroke-width='.9'/%3E %3Cpath d='M10 .8L19.2 10L10 19.2L.8 10Z' fill='%231c1208' stroke='url(%23g)' stroke-width='1.8'/%3E %3Cpath d='M10 4.2L15.8 10L10 15.8L4.2 10Z' fill='url(%23j)' stroke='%23ffe8b8' stroke-opacity='.85' stroke-width='.7'/%3E %3Cpath d='M8.4 7.6L10 6L10.9 7.1Z' fill='%23fff' fill-opacity='.75'/%3E %3C/g%3E%3C/svg%3E");--texture:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E %3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E %3CfeColorMatrix values='0 0 0 0 1  0 0 0 0 .9  0 0 0 0 .75  0 0 0 .09 0'/%3E%3C/filter%3E %3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");--rule:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='14' viewBox='0 0 260 14'%3E %3Cdefs%3E%3ClinearGradient id='l' gradientUnits='userSpaceOnUse' x1='0' y1='0' x2='260' y2='0'%3E%3Cstop offset='0' stop-color='%23f0c35a' stop-opacity='0'/%3E%3Cstop offset='.5' stop-color='%23f0c35a'/%3E%3Cstop offset='1' stop-color='%23f0c35a' stop-opacity='0'/%3E%3C/linearGradient%3E%3C/defs%3E %3Cpath d='M0 7H111M149 7H260' stroke='url(%23l)' stroke-width='1.2'/%3E %3Ccircle cx='115' cy='7' r='1.8' fill='%23f0c35a'/%3E%3Ccircle cx='145' cy='7' r='1.8' fill='%23f0c35a'/%3E %3Cpath d='M130 1L136 7L130 13L124 7Z' fill='%23f0c35a' stroke='%230d0804' stroke-width='.8'/%3E %3Cpath d='M130 4.4L132.6 7L130 9.6L127.4 7Z' fill='%23c9302a'/%3E%3C/svg%3E");--flourish:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='70' height='12' viewBox='0 0 70 12'%3E %3Cdefs%3E%3ClinearGradient id='l' gradientUnits='userSpaceOnUse' x1='0' y1='0' x2='58' y2='0'%3E%3Cstop offset='0' stop-color='%23f0c35a' stop-opacity='0'/%3E%3Cstop offset='1' stop-color='%23f0c35a'/%3E%3C/linearGradient%3E%3C/defs%3E %3Cpath d='M0 6H58' stroke='url(%23l)' stroke-width='1.2'/%3E %3Cpath d='M64 1.2L68.8 6L64 10.8L59.2 6Z' fill='%23f0c35a' stroke='%230d0804' stroke-width='.8'/%3E%3C/svg%3E");--pointer:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='15' viewBox='0 0 13 15'%3E %3Cpath d='M1 1L12 7.5L1 14L3.6 7.5Z' fill='%23ffd978' stroke='%233b2208' stroke-width='1' stroke-linejoin='round'/%3E%3C/svg%3E");--next:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='10' viewBox='0 0 12 10'%3E %3Cpath d='M1 1H11L6 9Z' fill='%23f0c35a' stroke='%233b2208' stroke-width='1' stroke-linejoin='round'/%3E%3C/svg%3E");--panel-fill:var(--texture), radial-gradient(ellipse at 50% -20%, #ffbe6424, transparent 65%), linear-gradient(180deg, var(--panel-top), var(--panel-bottom));--plate:linear-gradient(180deg, #3b2c1c 0%, #251a10 55%, #1a1209 100%)}*{box-sizing:border-box;margin:0;padding:0}html,body{background:radial-gradient(circle at 50% 40%, #1a1322 0%, var(--bg) 70%);width:100%;height:100%;color:var(--text);font-family:var(--book);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;overflow:hidden}#stage{transform-origin:50%;background:#000;width:960px;height:540px;position:fixed;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%);box-shadow:0 0 80px #000c}#hud,.dialog,.toast,.banner{zoom:var(--ui,1)}#game{width:100%;height:100%;display:block;position:absolute;inset:0}.hidden{display:none!important}kbd{min-width:18px;font:700 10px/14px var(--serif);color:var(--gold-soft);text-align:center;background:linear-gradient(#3d3024,#231b13);border:1px solid #7a5c2c;border-bottom:3px solid #3f2d12;border-radius:3px;padding:1px 5px 0;display:inline-block}.card,.hud-panel,.dialog,.toast{border:18px solid #0000;border-image:var(--frame) 24 stretch;background:var(--panel-fill);background-origin:border-box}.rule{background:var(--rule) center / contain no-repeat;width:260px;height:14px;margin:4px auto 10px}.card:after,.dialog:after{content:"";background:var(--corner-tl) left top / var(--corner) no-repeat, var(--corner-tr) right top / var(--corner) no-repeat, var(--corner-bl) left bottom / var(--corner) no-repeat, var(--corner-br) right bottom / var(--corner) no-repeat;pointer-events:none;--corner:46px;position:absolute;inset:-23px}.dialog:after{--corner:38px;inset:-20px}.dialog.villain:after{filter:hue-rotate(235deg)saturate(.85)}.controls,.goals,.stats div,.hero-stats div{background:#0000004d;border:1px solid #f0c35a38;border-radius:2px;box-shadow:inset 0 0 0 1px #0000008c,inset 0 2px 8px #00000080}.inset-label{border:1px solid var(--gold-deep);background:var(--plate);box-shadow:0 0 0 1px var(--ink);font:700 9px/15px var(--serif);letter-spacing:.28em;text-transform:uppercase;color:var(--gold);white-space:nowrap;padding:0 12px;position:absolute;top:-9px;left:50%;transform:translate(-50%)}#hud{inset:8px calc(10px + env(safe-area-inset-right,0px) / var(--k,1) / var(--ui,1)) auto calc(10px + env(safe-area-inset-left,0px) / var(--k,1) / var(--ui,1));pointer-events:none;z-index:10;justify-content:space-between;align-items:flex-start;gap:10px;display:flex;position:absolute}.hud-panel{border-width:12px;box-shadow:0 6px 18px #0000008c}.hud-left{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.hud-quick{--u:calc(var(--tc-scale,1) * 1px);--alpha:var(--tc-alpha,.75);pointer-events:auto;gap:18px;padding-left:6px;display:flex}.hud-quick .tc-btn{position:relative}.hud-hero{align-items:center;gap:10px;padding:1px 5px 3px 1px;display:flex}.portrait{border:2px solid var(--gold);width:54px;height:54px;box-shadow:0 0 0 1px var(--ink), inset 0 0 10px #000;background:radial-gradient(circle at 50% 35%,#4a3a66,#150f1e 75%);border-radius:2px;flex:none;position:relative}.portrait canvas{width:100%;height:100%;image-rendering:pixelated}.lvl-badge{border:1px solid var(--gold);min-width:24px;box-shadow:0 0 0 1px var(--ink);font:800 12px/15px var(--book);font-variant-numeric:lining-nums tabular-nums;color:var(--gold-soft);text-align:center;background:linear-gradient(#5a1a14,#2c0b08);border-radius:2px;padding:0 5px;position:absolute;bottom:-9px;left:50%;transform:translate(-50%)}.bars{flex-direction:column;gap:3px;width:196px;display:flex}.hero-name{font:700 12px/14px var(--serif);letter-spacing:.08em;color:var(--gold-soft);text-shadow:0 1px #000;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.bar{height:14px;box-shadow:0 0 0 1px var(--ink), inset 0 2px 3px #000000b3;background:#0b0810;border:1px solid #7a5c2c;border-radius:2px;position:relative;overflow:hidden}.bar .fill,.bar .ghost{width:100%;position:absolute;inset:0 auto 0 0}.bar.hp .fill{background:linear-gradient(180deg, #ff8a97 0%, var(--hp) 45%, #8e0f22 100%);transition:width .12s ease-out}.bar .ghost{opacity:.7;background:#ffe1a8;transition:width .6s ease-in .25s}.bar.mp .fill{background:linear-gradient(180deg, #8cc4ff 0%, var(--mp) 45%, #173f8f 100%);transition:width .12s ease-out}.bar.xp{height:6px}.bar.xp .fill{background:linear-gradient(90deg, #6a3fd8, var(--xp));transition:width .3s ease-out}.bar .label,.bar .val{font:700 9.5px/12px var(--serif);text-shadow:0 1px 2px #000,0 0 2px #000;letter-spacing:.06em;position:absolute;top:0}.bar .label{color:#ffffffe6;left:6px}.bar .val{color:#fff;right:6px}.buffs{gap:4px;min-height:0;display:flex}.buff{font:700 10px/14px var(--book);font-variant-numeric:lining-nums tabular-nums;background:#0000008c;border:1px solid;border-radius:2px;align-items:center;gap:3px;padding:1px 6px;display:inline-flex}.buff.power{color:#ffd66b}.buff.shield{color:#86e3ff}.hud-items{pointer-events:auto;align-items:center;gap:9px;padding:1px 1px 1px 4px;display:flex}.res{font:800 15px var(--book);font-variant-numeric:lining-nums tabular-nums;color:var(--gold-soft);text-shadow:0 1px #000;align-items:center;gap:3px;display:flex}.res img{object-fit:contain;width:20px;height:20px}.res kbd{opacity:.85;border-bottom-width:2px;min-width:13px;padding:0 3px;font-size:8px;line-height:10px}.res.score{border-left:1px solid #f0c35a40;padding-left:9px}.res-label{font:700 9px var(--serif);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-right:3px}.icon-btn{background:var(--plate);width:28px;height:28px;box-shadow:0 0 0 1px var(--ink), inset 0 1px 0 #ffdca033;color:var(--gold-soft);font:700 12px var(--book);cursor:pointer;border:1px solid #7a5c2c;border-radius:2px}.icon-btn:hover{border-color:var(--gold);color:var(--gold)}.boss-panel{text-align:center;width:460px;animation:.5s ease-out drop-in;position:absolute;top:78px;left:50%;transform:translate(-50%)}.boss-name{font:700 16px var(--serif);letter-spacing:.08em;color:#ffdcd6;text-shadow:0 0 10px #ff283cb3,0 2px 3px #000;justify-content:center;align-items:center;gap:10px;margin-bottom:5px;display:flex}.boss-name:before,.boss-name:after{content:"";background:var(--flourish) center / contain no-repeat;flex:none;width:70px;height:12px}.boss-name:after{transform:scaleX(-1)}.boss-bar{height:14px;box-shadow:0 0 0 1px var(--ink), 0 0 16px #ff1e3c59, inset 0 2px 4px #000;background:#12070a;border:2px solid #b8862e;border-radius:2px;position:relative;overflow:hidden}.boss-bar .fill,.boss-bar .ghost{width:100%;position:absolute;inset:0 auto 0 0}.boss-bar .fill{background:linear-gradient(#ff6b7f,#d4102f 55%,#6d0616);transition:width .1s linear}.boss-bar .ghost{opacity:.75;background:#fff0c2;transition:width .7s ease-in .3s}.banner{text-align:center;pointer-events:none;opacity:0;z-index:12;position:absolute;top:34%;left:0;right:0}.banner.show{animation:3.4s ease-in-out forwards banner}.banner .act{font:700 14px var(--serif);letter-spacing:.4em;color:var(--gold);text-shadow:0 2px 6px #000}.banner .name{font:900 46px var(--serif);letter-spacing:.08em;color:#fff;text-shadow:0 0 24px #f0c35a73,0 3px #2a1706,0 4px 10px #000}.banner .rule{width:340px;margin-top:6px}.toast{max-width:560px;color:var(--gold-soft);font:500 15px var(--book);text-align:center;opacity:0;pointer-events:none;z-index:13;border-width:12px;padding:0 10px;transition:opacity .25s,transform .25s;position:absolute;top:80px;left:50%;transform:translate(-50%,-8px);box-shadow:0 8px 20px #0000008c}.toast.show{opacity:1;transform:translate(-50%)}.dialog{width:640px;min-height:100px;font:500 16px/1.45 var(--book);color:var(--text);z-index:13;pointer-events:none;border-width:16px;align-items:center;gap:14px;padding:8px 28px 6px 12px;animation:.25s ease-out rise-centered;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%);box-shadow:0 12px 30px #000000a6}.dialog p{text-shadow:0 1px #000;flex:1;min-height:46px}.dialog-speaker{border:1px solid var(--gold-deep);background:var(--plate);box-shadow:0 0 0 1px var(--ink), inset 0 1px 0 #ffdca040;font:700 11px/17px var(--serif);letter-spacing:.14em;text-transform:uppercase;color:var(--gold);padding:2px 14px 1px;position:absolute;top:-29px;left:4px}.dialog-portrait{width:72px;height:72px;box-shadow:0 0 0 1px var(--ink), inset 0 0 12px #000;image-rendering:pixelated;background:radial-gradient(circle at 50% 40%,#50306a,#150a1e 80%);border:2px solid #8b6a9e;flex:none}.dialog-close{border:1px solid var(--gold-deep);background:var(--plate);width:30px;height:30px;box-shadow:0 0 0 1px var(--ink), inset 0 1px 0 #ffdca040, 0 2px 6px #0009;color:var(--gold-soft);cursor:pointer;pointer-events:auto;z-index:1;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:-23px;right:-23px}.dialog-close svg{fill:none;stroke:currentColor;stroke-width:2.6px;stroke-linecap:round;width:12px;height:12px}.dialog-close:hover,.dialog-close:focus-visible{border-color:var(--gold);color:var(--gold);outline:none}.dialog.villain .dialog-close{color:#ecc9ff;background:linear-gradient(#3d1e57,#1d0e2b);border-color:#7b4fa8}.touch-mode .dialog-close{width:40px;height:40px;top:-28px;right:-28px}.touch-mode .dialog-close svg{width:15px;height:15px}.dialog-next{background:var(--next) center / contain no-repeat;opacity:0;width:12px;height:10px;position:absolute;bottom:2px;right:4px}.dialog.done .dialog-next{opacity:1;animation:.6s ease-in-out infinite alternate next-bob}.dialog.villain{border-image-source:var(--frame-violet);background:var(--texture), radial-gradient(ellipse at 50% -20%, #c878ff2e, transparent 65%), linear-gradient(180deg, #2c1638, #140a1c);background-origin:border-box;font-style:italic;box-shadow:0 12px 30px #000000a6,0 0 26px #a050ff40}.dialog.villain .dialog-speaker{color:#ecc9ff;background:linear-gradient(#3d1e57,#1d0e2b);border-color:#7b4fa8}.screen{z-index:20;background:radial-gradient(at 50% 45%,#120a1680,#040306e6);justify-content:center;align-items:center;animation:.3s ease-out fade;display:flex;position:absolute;inset:0}#screen-loading{background:radial-gradient(circle at 50% 30%,#2a1f36 0%,#07060a 75%)}#screen-title,#screen-hero{background:radial-gradient(#0a060e1a 35%,#040306b3 100%)}.card{text-align:center;width:660px;max-height:524px;padding:6px 24px 12px;animation:.35s ease-out rise;position:relative;box-shadow:0 24px 60px #000c,inset 0 0 40px #00000073}.card.compact{width:440px}.card.defeat{background:var(--texture), radial-gradient(ellipse at 50% -20%, #ff3c4633, transparent 65%), linear-gradient(180deg, #2e1216, #140a0c);background-origin:border-box}.card.victory{box-shadow:0 24px 60px #000c,0 0 50px #f0c35a33,inset 0 0 40px #00000073}.eyebrow{font:700 11px var(--serif);letter-spacing:.32em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}.eyebrow.gold{color:var(--gold)}.title{font:900 44px/1.05 var(--serif);letter-spacing:.05em;background:linear-gradient(180deg, #fff6d8 10%, var(--gold) 55%, #a8701a 90%);color:#0000;filter:drop-shadow(0 2px #3a2208)drop-shadow(0 0 14px #f0c35a4d);-webkit-background-clip:text;background-clip:text}.title.small{margin:4px 0 2px;font-size:30px}.subtitle{font:600 13px var(--serif);letter-spacing:.28em;color:var(--gold-soft);margin-top:6px}.heading{font:700 24px var(--serif);letter-spacing:.05em;color:var(--gold-soft);text-shadow:0 2px #000,0 0 12px #f0c35a33;margin-bottom:2px}.heading+.rule{margin-top:2px}.lore{font:italic 400 15px/1.5 var(--book);color:#e3d6bb;margin:0 12px 16px}.story-body p{font:400 16px/1.5 var(--book);color:#e6dac0;text-align:left;margin-bottom:10px}.story-body p:first-child:first-letter{float:left;font:900 44px/.85 var(--serif);color:var(--gold);text-shadow:0 2px #3a2208;padding:5px 7px 0 0}.lore strong,.story-body strong{color:var(--gold-soft);font-weight:700}.muted{color:var(--muted);font-variant-numeric:lining-nums;font-size:15px;line-height:1.5}.card>p.muted{margin-bottom:16px}.tiny{margin-top:6px;font-size:12px}.controls{text-align:left;color:var(--muted);grid-template-columns:1fr 1fr;gap:3px 22px;margin:0 0 16px;padding:14px 16px 10px;font-size:13px;display:grid;position:relative}.controls div{align-items:center;gap:3px;display:flex}.controls span:not(.inset-label){color:#e3d6bb;margin-left:auto}.goals{text-align:left;margin:12px 0 16px;padding:14px 16px 8px;position:relative}.goals ul{list-style:none}.goals li{font:500 15px/1.7 var(--book);color:var(--gold-soft)}.goals li:before{content:"";border:1px solid var(--gold);background:#f0c35a33;width:7px;height:7px;margin:0 11px 2px 3px;display:inline-block;transform:rotate(45deg)}.stats{grid-template-columns:1fr 1fr;gap:8px;margin:6px 0 16px;display:grid}.stats div{font:700 10px var(--serif);color:var(--muted);text-transform:uppercase;letter-spacing:.14em;padding:7px 8px 6px}.victory .stats{grid-template-columns:repeat(3,1fr)}.stats div:last-child:nth-child(odd){grid-column:span 2}.victory .stats div:last-child:nth-child(odd){grid-column:auto}.stats b{font:800 20px var(--book);font-variant-numeric:lining-nums tabular-nums;color:var(--gold-soft);letter-spacing:0;text-transform:none;margin-top:1px;display:block}.progress{border:2px solid var(--gold-deep);height:12px;box-shadow:0 0 0 1px var(--ink), inset 0 2px 4px #000;background:#0b0810;border-radius:2px;margin:12px 0 0;overflow:hidden}#load-fill{background:linear-gradient(180deg, #ffe08a, var(--gold) 50%, #a8701a);width:0;height:100%;transition:width .15s}.actions{justify-content:center;gap:36px;display:flex}.actions.vertical{flex-direction:column;align-items:stretch;gap:10px;margin:6px 16px 0}.btn{background:radial-gradient(circle, #f1cf82 0 1.4px, #3b2410 1.9px, transparent 2.4px) left 3px top 3px / 6px 6px no-repeat, radial-gradient(circle, #f1cf82 0 1.4px, #3b2410 1.9px, transparent 2.4px) right 3px top 3px / 6px 6px no-repeat, radial-gradient(circle, #f1cf82 0 1.4px, #3b2410 1.9px, transparent 2.4px) left 3px bottom 3px / 6px 6px no-repeat, radial-gradient(circle, #f1cf82 0 1.4px, #3b2410 1.9px, transparent 2.4px) right 3px bottom 3px / 6px 6px no-repeat, var(--plate);min-width:180px;box-shadow:0 0 0 1px var(--ink), inset 0 1px 0 #ffe2a04d, inset 0 -3px 0 #00000059, 0 4px 10px #00000080;color:var(--gold-soft);font:700 13px var(--serif);letter-spacing:.14em;text-transform:uppercase;text-shadow:0 1px #000;cursor:pointer;border:2px solid #9c7430;border-radius:2px;padding:10px 26px 9px;transition:filter .15s,box-shadow .15s,border-color .15s;position:relative}.btn:before{content:"";background:var(--pointer) center / contain no-repeat;opacity:0;width:13px;height:15px;transition:opacity .1s;position:absolute;top:50%;left:-22px;transform:translateY(-50%)}.btn:hover,.btn:focus{filter:brightness(1.15);box-shadow:0 0 0 1px var(--ink), inset 0 1px 0 #ffe2a059, inset 0 -3px 0 #00000059, 0 0 16px #ffc85a66;border-color:#ffe29a;outline:none}.btn:hover:before,.btn:focus:before{opacity:1;animation:.5s ease-in-out infinite alternate cursor-bob}.btn:active{filter:brightness(.95);transform:translateY(1px)}.btn.primary{--plate:linear-gradient(180deg, #9a3024 0%, #66180f 55%, #420c07 100%);color:#ffe8ae;border-color:#e0b04a}.btn.primary.danger{--plate:linear-gradient(180deg, #7a1422 0%, #4e0a14 55%, #2c050b 100%)}.btn.secondary{border-color:#c09540}.btn.ghost{--plate:linear-gradient(180deg, #2a2430 0%, #1a1520 100%);color:var(--muted);border-color:#5e4d3a}.difficulty{justify-content:center;align-items:center;gap:8px;margin-bottom:6px;display:flex}.difficulty-label,.option-label{font:700 10px var(--serif);letter-spacing:.25em;text-transform:uppercase;color:var(--muted);margin-right:6px}.difficulty button,.option button{min-width:104px;box-shadow:0 0 0 1px var(--ink), inset 0 1px 0 #ffffff0d;color:var(--muted);font:700 12px var(--serif);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;--gem:#6b5d4c;background:linear-gradient(#221c28,#15111a);border:1px solid #5e4d3a;border-radius:2px;justify-content:center;align-items:center;gap:8px;padding:7px 14px 6px;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.difficulty button:before,.option button:before{content:"";background:var(--gem);width:7px;height:7px;box-shadow:0 0 0 1px var(--ink);transform:rotate(45deg)}.difficulty button:hover,.difficulty button:focus-visible,.option button:hover,.option button:focus-visible{color:var(--text);border-color:#9c7430;outline:none}.difficulty button.selected,.option button.selected{color:#fff}.difficulty button.easy.selected{--gem:#6be39a;background:linear-gradient(#50c87847,#143c2466);border-color:#5fd38a}.difficulty button.medium.selected,.option button.selected{--gem:var(--gold);border-color:var(--gold);background:linear-gradient(#f0c35a42,#50381066)}.difficulty button.hard.selected{--gem:#ff6070;border-color:var(--danger);background:linear-gradient(#ff4d5e47,#500e1866)}.difficulty button.selected:before,.option button.selected:before{box-shadow:0 0 0 1px var(--ink), 0 0 8px var(--gem)}#screen-controls{align-items:flex-start;padding-top:8px}#screen-controls .card{width:456px}.options{gap:7px;margin:4px 0 14px;display:grid}.option{align-items:center;gap:8px;display:flex}.option-label{letter-spacing:.14em;text-align:right;width:92px;margin-right:0}.option button{letter-spacing:.06em;gap:6px;min-width:72px;padding:6px 9px 5px}.terms-card{width:640px}.terms-updated{font:italic 400 13px var(--book);color:var(--muted);margin:2px 0 10px}.terms-body{overscroll-behavior:contain;touch-action:pan-y;text-align:left;scrollbar-width:thin;scrollbar-color:var(--gold-deep) transparent;background:#0000004d;border:1px solid #f0c35a38;border-radius:2px;max-height:250px;margin-bottom:14px;padding:12px 18px 4px;overflow-y:auto;box-shadow:inset 0 0 0 1px #0000008c,inset 0 2px 8px #00000080}.terms-body:focus-visible{outline:1px solid var(--gold)}.terms-body h3{font:700 12px var(--serif);letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin:12px 0 4px}.terms-body p{font:400 14px/1.5 var(--book);color:#e6dac0;margin-bottom:8px}.terms-body .terms-intro{color:var(--gold-soft);font-style:italic}.terms-note{font:italic 500 14px/1.4 var(--book);color:#ff9aa6;margin:-4px 0 12px}.link-btn{font:500 13px var(--book);color:var(--muted);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;margin:10px auto 0;padding:2px 6px;text-decoration:underline;display:block}.link-btn:hover,.link-btn:focus-visible{color:var(--gold-soft);outline:none}.title-footer{font:500 13px var(--book);color:var(--muted);justify-content:center;align-items:baseline;gap:8px;margin-top:10px;display:flex}.title-footer .link-btn{margin:0}.difficulty-desc{min-height:20px;font:italic 400 14px/1.4 var(--book);color:var(--muted);margin-bottom:12px}.hero-card{width:680px}.hero-sheet{text-align:left;gap:22px;margin:2px 0 14px;display:flex}.hero-figure{flex-direction:column;flex:none;align-items:center;width:190px;display:flex}#hero-preview{border:2px solid var(--gold-deep);width:176px;height:176px;box-shadow:0 0 0 1px var(--ink), inset 0 0 24px #000;image-rendering:pixelated;background:radial-gradient(at 50% 78%,#2e4166 0%,#171329 55%,#0b0910 100%);border-radius:2px}.hero-plate{max-width:190px;box-shadow:0 0 0 1px var(--ink), inset 0 1px 0 #ffc89640;font:700 12px/17px var(--serif);letter-spacing:.06em;color:var(--gold-soft);white-space:nowrap;text-overflow:ellipsis;background:linear-gradient(#5a1d15,#2c0b08);border:1px solid #c09540;margin-top:-13px;padding:3px 14px 2px;position:relative;overflow:hidden}.hero-info{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.field-label{font:700 10px var(--serif);letter-spacing:.25em;text-transform:uppercase;color:var(--muted);margin-top:4px}.name-field{gap:8px;display:flex}.name-field input{border:2px solid var(--gold-deep);min-width:0;height:40px;box-shadow:0 0 0 1px var(--ink), inset 0 2px 6px #000c;font:700 20px var(--serif);letter-spacing:.06em;color:var(--gold-soft);caret-color:var(--gold);-webkit-user-select:text;user-select:text;background:linear-gradient(#0c0a10,#1a1520);border-radius:2px;outline:none;flex:1;padding:0 12px}.name-field input::placeholder{color:#f6e3b459}.name-field input:focus{border-color:var(--gold);box-shadow:0 0 0 1px var(--ink), inset 0 2px 6px #000c, 0 0 12px #f0c35a59}.roll{background:var(--plate);width:40px;height:40px;box-shadow:0 0 0 1px var(--ink), inset 0 1px 0 #ffe2a04d;color:var(--gold);cursor:pointer;border:2px solid #9c7430;border-radius:2px;flex:none;place-items:center;display:grid}.roll svg{fill:currentColor;width:22px;height:22px}.roll:hover,.roll:focus-visible{color:#ffe8ae;box-shadow:0 0 0 1px var(--ink), 0 0 12px #ffc85a66;border-color:#ffe29a;outline:none}.hero-class b{font:700 16px var(--serif);color:var(--gold-soft);display:block}.hero-class span{font:italic 400 14px/1.35 var(--book);color:var(--muted);display:block}.hero-stats{grid-template-columns:repeat(3,1fr);gap:6px;margin-top:8px;display:grid}.hero-stats div{justify-content:space-between;align-items:baseline;padding:4px 9px 3px;display:flex}.hero-stats span{font:700 9.5px var(--serif);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.hero-stats b{font:800 17px var(--book);font-variant-numeric:lining-nums tabular-nums;color:var(--gold-soft)}.hero-stats .hp b{color:#ff8d9a}.hero-stats .mp b{color:#8cc4ff}html:not(.touch-mode) .touch-only,.touch-mode .keyboard-only,.touch-mode .res kbd{display:none!important}.icon-btn svg{fill:none;stroke:currentColor;stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle;width:15px;height:15px}.icon-btn.on{border-color:var(--gold);color:var(--gold)}.touch-mode .icon-btn{width:40px;height:40px;font-size:16px}.touch-mode .icon-btn svg{width:20px;height:20px}.touch{--u:calc(var(--tc-scale,1) * clamp(.8px, .27vmin, 1.3px));--alpha:var(--tc-alpha,.75);--safe-l:env(safe-area-inset-left,0px);--safe-r:env(safe-area-inset-right,0px);--safe-b:env(safe-area-inset-bottom,0px);z-index:30;pointer-events:none;touch-action:none;-webkit-touch-callout:none;position:fixed;inset:0}.touch.preview *{pointer-events:none!important}.touch.preview .tc-ctx{display:none}.touch.preview{-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0, var(--hole-x,0) var(--hole-y,0);-webkit-mask-size:100% 100%, var(--hole-w,0) var(--hole-h,0);-webkit-mask-composite:xor;mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-repeat:no-repeat;-webkit-mask-position:0 0, var(--hole-x,0) var(--hole-y,0);mask-position:0 0, var(--hole-x,0) var(--hole-y,0);-webkit-mask-size:100% 100%, var(--hole-w,0) var(--hole-h,0);mask-size:100% 100%, var(--hole-w,0) var(--hole-h,0);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-composite:xor;mask-composite:exclude}.touch-mode .dialog{width:min(480px,44%);font-size:15px}.touch-mode .boss-panel{top:100px}.touch-mode .toast{top:152px}.tc-btn{--s:calc(52 * var(--u));--core:60 44 70;width:var(--s);height:var(--s);border:calc(2 * var(--u)) solid #f0c35a99;background:radial-gradient(circle at 50% 30%, rgb(var(--core) / .75), #0c0810c7 72%);box-shadow:0 0 0 1px #0d0804d9, inset 0 calc(2 * var(--u)) 0 #ffe6aa2e, 0 calc(4 * var(--u)) calc(12 * var(--u)) #00000073;color:var(--gold-soft);opacity:var(--alpha);pointer-events:auto;touch-action:none;border-radius:50%;place-items:center;padding:0;transition:transform 80ms,opacity .12s,border-color .12s;display:grid;position:absolute}.tc-btn svg{fill:none;stroke:currentColor;stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 1px 1px #000c);width:46%;height:46%}.tc-btn .faint{opacity:.55}.tc-pad{left:calc(var(--safe-l) + 10 * var(--u));bottom:calc(var(--safe-b) + 12 * var(--u));gap:calc(14 * var(--u));padding:calc(10 * var(--u));pointer-events:auto;touch-action:none;display:flex;position:absolute}.tc-pad .tc-btn{--s:calc(60 * var(--u));position:relative}.tc-pad .tc-btn svg{stroke-width:2.6px;width:50%;height:50%;transform:translateX(var(--pull,0px))}.tc-pad .tc-btn:not(.active) svg{transition:transform .12s ease-out}.tc-dir:after{content:"»";transform:translate(calc(3 * var(--u)), -54%);font:700 calc(20 * var(--u)) / 1 var(--book);color:var(--gold);text-shadow:0 1px 2px #000;opacity:.4;transition:opacity .12s;position:absolute;top:50%;left:100%}.tc-dir[data-dir=left]:after{content:"«";transform:translate(calc(-3 * var(--u)), -54%);left:auto;right:100%}.tc-pad.run .tc-dir.active:after{opacity:1;text-shadow:0 0 calc(8 * var(--u)) var(--gold)}.tc-pad:before{content:"Run";font:700 calc(10 * var(--u)) var(--serif);letter-spacing:.2em;text-transform:uppercase;color:var(--gold);text-shadow:0 1px 2px #000;opacity:0;transition:opacity .15s;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.tc-pad.run:before{opacity:1}.tc-pad.run .tc-btn.active{border-color:var(--gold);box-shadow:0 0 0 1px var(--ink), 0 0 calc(14 * var(--u)) #f0c35a99}.tc-btn.active{opacity:1;background:radial-gradient(circle at 50% 30%, rgb(var(--core)), #281a0ee6 75%);border-color:#ffe29a;transform:scale(.92)}.tc-wheel{right:calc(var(--safe-r) + 52 * var(--u));bottom:calc(var(--safe-b) + 50 * var(--u));position:absolute}.tc-wheel .tc-btn{left:calc(cos(var(--a,0deg)) * var(--r,0px) - var(--s) / 2);top:calc(sin(var(--a,0deg)) * var(--r,0px) * -1 - var(--s) / 2)}.tc-atk{--s:calc(76 * var(--u));--core:150 38 28;border-color:#ffaa82b3}.tc-jump{--s:calc(58 * var(--u));--a:90deg;--r:calc(80 * var(--u))}.tc-bolt{--core:40 80 150;--ring:#6fb6ff;--a:180deg;--r:calc(78 * var(--u))}.tc-ult{--core:110 60 150;--ring:#ffd36b;--a:135deg;--r:calc(82 * var(--u))}.tc-item{--s:calc(42 * var(--u))}.tc-skill:after{content:"";inset:calc(-5 * var(--u));background:conic-gradient(var(--ring) calc(var(--p,1) * 360deg), #ffffff1f 0);-webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 4 * var(--u)), #000 calc(100% - 3.5 * var(--u)));-webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 4 * var(--u)), #000 calc(100% - 3.5 * var(--u)));mask:radial-gradient(farthest-side, transparent calc(100% - 4 * var(--u)), #000 calc(100% - 3.5 * var(--u)));pointer-events:none;border-radius:50%;position:absolute}.tc-cost{font:800 calc(9 * var(--u)) var(--book);font-variant-numeric:lining-nums tabular-nums;color:var(--ring);text-shadow:0 1px 1px #000;position:absolute;bottom:9%}.tc-skill:not(.ready) svg,.tc-skill:not(.ready) .tc-cost{opacity:.4}.tc-ult.ready{animation:1.2s ease-in-out infinite alternate tc-ready}.tc-item img{object-fit:contain;filter:drop-shadow(0 1px 1px #000);width:62%;height:62%}.tc-item b{top:calc(-4 * var(--u));right:calc(-4 * var(--u));min-width:calc(17 * var(--u));height:calc(17 * var(--u));padding:0 calc(3 * var(--u));border-radius:calc(9 * var(--u));border:1px solid var(--gold);box-shadow:0 0 0 1px var(--ink);font:800 calc(11 * var(--u)) / calc(15 * var(--u)) var(--book);font-variant-numeric:lining-nums tabular-nums;color:var(--gold-soft);background:linear-gradient(#5a1a14,#2c0b08);position:absolute}.tc-tag{bottom:calc(-6 * var(--u));padding:0 calc(4 * var(--u));border-radius:calc(3 * var(--u));font:700 calc(8 * var(--u)) / calc(12 * var(--u)) var(--serif);letter-spacing:.1em;background:#0d0804d9;position:absolute;left:50%;transform:translate(-50%)}.tc-potion .tc-tag{color:#ff9aa6}.tc-ether .tc-tag{color:#9fd0ff}.tc-item.empty{opacity:calc(var(--alpha) * .6)}.tc-item.empty img{filter:grayscale()brightness(.6)}.tc-potion.urgent{opacity:1;border-color:#ff6070;animation:.8s ease-in-out infinite alternate tc-urgent}.tc-ctx{right:calc(var(--safe-r) + 172 * var(--u));bottom:calc(var(--safe-b) + 90 * var(--u));align-items:center;gap:calc(8 * var(--u));height:calc(42 * var(--u));padding:0 calc(15 * var(--u)) 0 calc(5 * var(--u));border-radius:calc(21 * var(--u));border:calc(2 * var(--u)) solid var(--gold);box-shadow:0 0 0 1px var(--ink), 0 0 calc(16 * var(--u)) #f0c35a59;color:var(--gold-soft);font:700 calc(12 * var(--u)) var(--serif);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;pointer-events:auto;touch-action:none;background:linear-gradient(#462e16eb,#18100aeb);transition:transform 80ms,filter 80ms;animation:.18s ease-out tc-pop;display:flex;position:absolute}.tc-ctx.active{filter:brightness(1.2);transform:scale(.95)}.tc-ctx-icon{width:calc(32 * var(--u));height:calc(32 * var(--u));color:var(--ink);background:radial-gradient(circle at 50% 30%,#ffe9b0,#c98f2e);border-radius:50%;place-items:center;display:grid}.tc-ctx svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:62%;height:62%}@keyframes tc-ready{to{box-shadow:0 0 0 1px var(--ink), 0 0 calc(20 * var(--u)) #ffd264b3}}@keyframes tc-urgent{to{box-shadow:0 0 0 1px var(--ink), 0 0 calc(18 * var(--u)) #ff465ad9}}@keyframes tc-pop{0%{opacity:0;transform:scale(.7)}}.rotate{z-index:100;background:radial-gradient(circle at 50% 40%, #1a1322 0%, var(--bg) 70%);color:var(--gold-soft);font:700 15px/1.5 var(--serif);letter-spacing:.12em;text-transform:uppercase;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:18px;padding:24px;display:none;position:fixed;inset:0}@media (orientation:portrait){.touch-mode .rotate{display:flex}}.rotate-phone{fill:none;width:72px;height:72px;stroke:var(--gold);stroke-width:1.4px;stroke-linecap:round;animation:2.4s ease-in-out infinite rotate-phone}@keyframes rotate-phone{0%,20%{transform:rotate(0)}50%,80%{transform:rotate(-90deg)}to{transform:rotate(0)}}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(12px)}}@keyframes rise-centered{0%{opacity:0;transform:translate(-50%,12px)}}@keyframes drop-in{0%{opacity:0;transform:translate(-50%,-10px)}}@keyframes cursor-bob{to{transform:translate(4px,-50%)}}@keyframes next-bob{to{transform:translateY(3px)}}@keyframes banner{0%{opacity:0;transform:scale(.96)}15%,75%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.02)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
