@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@600;800&family=Nunito:wght@500;700;900&display=swap');
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#090714;color:#fff;font-family:Nunito,sans-serif}main{position:fixed;inset:0;width:100%;height:100%;height:100dvh;min-width:0;min-height:0;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);place-items:center;overflow:hidden;background:radial-gradient(circle at 50% 20%,#30204d,#090714 70%)}canvas{width:100%;height:100%;min-width:0;min-height:0;max-width:100%;max-height:100%;object-fit:contain;display:block}.panel{position:absolute;inset:0;margin:auto;width:min(530px,90vw);height:max-content;max-height:calc(100% - 24px);overflow-y:auto;overscroll-behavior:contain;padding:44px 48px;text-align:center;border:1px solid #d6b25c66;border-radius:28px;background:linear-gradient(145deg,#171126f2,#291a37ed);box-shadow:0 30px 90px #000b,0 0 80px #8c5bc422;backdrop-filter:blur(12px);transition:opacity .4s,transform .4s}.panel.hidden{opacity:0;transform:scale(1.06);pointer-events:none}.eyebrow{text-transform:uppercase;letter-spacing:.25em;color:#e6c873;font-size:12px;font-weight:900}h1{font-family:Cinzel,serif;text-transform:uppercase;font-size:clamp(48px,8vw,82px);line-height:.76;margin:26px 0;color:#fff5cf;text-shadow:0 4px 0 #6b3d1b,0 0 28px #dbaf52}h1 span{font-size:.68em;letter-spacing:.22em;color:#e7b94d}p{line-height:1.6;color:#ded5e7}button{font:900 15px Nunito;border:0;color:#281606;background:linear-gradient(#ffe08a,#d49a35);padding:15px 28px;border-radius:99px;box-shadow:0 6px 0 #87551e;cursor:pointer}button:active{transform:translateY(4px);box-shadow:0 2px 0 #87551e}small{display:block;margin-top:24px;color:#a99daf}#touch{display:none;position:absolute;inset:auto 18px 20px;justify-content:space-between;pointer-events:none}#touch button{pointer-events:auto;width:58px;height:58px;padding:0;opacity:.75;color:white;background:#1b123acc;box-shadow:none;border:1px solid #fff5}.jump{margin-left:auto!important;width:76px!important}.action{width:68px!important;font-size:11px!important}@media(pointer:coarse){#touch{display:flex;gap:6px}.panel{padding:30px 24px}small{display:none}}
#music-toggle{position:absolute;z-index:4;right:22px;top:20px;padding:10px 15px;color:#fff4c7;background:#170e2cdd;border:1px solid #ddbb6366;box-shadow:none;font-size:11px;letter-spacing:.08em}#music-toggle.off{color:#9c92a7;background:#100b19bb}button:disabled{cursor:wait;filter:saturate(.35);opacity:.7;box-shadow:0 3px 0 #59462f}@media(pointer:coarse){#music-toggle{right:12px;top:10px}}
.level-buttons{display:grid;gap:14px;margin-top:24px}.level-buttons button{width:100%}#level2{color:#fff5d7;background:linear-gradient(#9a2534,#641521);box-shadow:0 6px 0 #3a0b12;border:1px solid #e6bd62}#pause-toggle{position:absolute;z-index:5;right:22px;top:68px;padding:10px 15px;color:#fff4c7;background:#170e2cdd;border:1px solid #ddbb6366;box-shadow:none;font-size:11px;letter-spacing:.08em}#pause-toggle.hidden{display:none}#pause-toggle.paused{color:#241405;background:linear-gradient(#ffe08a,#d49a35)}@media(pointer:coarse){#pause-toggle{right:12px;top:54px}}
[hidden]{display:none!important}#controls-toggle{position:absolute;z-index:5;right:22px;top:116px;padding:10px 15px;color:#fff4c7;background:#170e2cdd;border:1px solid #ddbb6366;box-shadow:none;font-size:11px;letter-spacing:.08em}#instructions{z-index:10;width:min(710px,94vw);max-height:92dvh;overflow:auto;padding:24px 32px;text-align:left;background:linear-gradient(145deg,#171126fc,#291a37fc)}#instructions h2{font:800 30px Cinzel,serif;color:#fff5cf;margin:8px 0}#instructions p{font-size:14px;line-height:1.45;margin:10px 0}#instructions .eyebrow{font-size:11px}.controls-list{display:grid;grid-template-columns:1fr 1fr;gap:8px 22px;margin:16px 0}.controls-list>div{border-bottom:1px solid #d6b25c30;padding:6px 0}.controls-list dt{font-weight:900;color:#f4d26f;font-size:14px}.controls-list dd{margin:3px 0;font-size:13px;color:#e2d8e9}.trunk-tip{color:#ffe4a1!important}.touch-tip{display:none}#instructions-start{display:block;margin:16px auto 0}.level1-control{display:none}body[data-level="1"] .level1-control{display:block}#touch{z-index:6;flex-wrap:wrap;justify-content:center}#touch button{touch-action:none}body:not([data-level]) #touch{display:none}@media(pointer:coarse){.touch-tip{display:block}#controls-toggle{right:12px;top:98px}#touch{inset:auto 8px 10px;gap:4px}#touch button{width:44px;height:44px;font-size:12px}.jump{width:58px!important}.action{width:48px!important}#instructions{padding:18px 22px}.controls-list{gap:4px 14px}.jump{margin-left:0!important}}@media(max-width:480px){#instructions h2{font-size:24px}.controls-list{grid-template-columns:1fr 1fr}.controls-list dd{font-size:12px}#instructions p{font-size:12px}}
.panel.hidden{visibility:hidden}canvas:focus{outline:none}

/* Reserve a separate bottom strip for visible touch controls. */
@media(pointer:coarse){body[data-level] main{padding-bottom:64px}}
@media(pointer:coarse) and (max-width:440px){body[data-level="1"] main{padding-bottom:112px}}

/* Keep Apparition's blackout uninterrupted; Escape still pauses the sequence. */
body[data-apparating="true"] #music-toggle,
body[data-apparating="true"] #pause-toggle,
body[data-apparating="true"] #controls-toggle,
body[data-apparating="true"] #touch { opacity: 0; pointer-events: none; }

#mp-join-form{display:grid;gap:12px;margin-top:24px}#mp-code{font:900 24px Nunito;text-transform:uppercase;text-align:center;letter-spacing:.2em;width:100%;border-radius:12px;border:1px solid #d7bc76;background:#100a20;color:#fff;padding:12px}#mp-room-code{font-size:25px;letter-spacing:.15em;color:#ffe08a}#mp-copy{padding:8px 12px;font-size:12px}#mp-members{list-style:none;padding:0;text-align:left}#mp-members li{padding:8px 12px;border-bottom:1px solid #ffffff20}#mp-characters{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}#mp-characters button{padding:12px 14px}#mp-characters button[aria-pressed=true]{outline:3px solid #9ef5fa;outline-offset:3px}#multiplayer-panel fieldset{border:1px solid #ccb47866;border-radius:14px;padding:16px 8px}#multiplayer-panel h2{font-family:Cinzel,serif}.mp-help{font-size:12px}#mp-status{color:#ffe08a;min-height:1.5em}#mp-game-bar{position:absolute;bottom:12px;left:12px;right:12px;display:flex;gap:8px;align-items:center;justify-content:center;flex-wrap:wrap;z-index:5;background:#130b24d9;border-radius:16px;padding:6px}#mp-game-bar button{padding:8px 12px;font-size:12px;box-shadow:none}#mp-game-label{font-size:12px;color:#ffe08a}#mp-controls{z-index:8}#mp-game-bar[hidden],#single-levels[hidden]{display:none}@media(pointer:coarse){#mp-game-bar{bottom:100px}}@media(max-height:650px){#multiplayer-panel{padding:18px 24px}#multiplayer-panel p{margin:8px 0}}@media(pointer:coarse){body[data-multiplayer=true] #touch{bottom:8px}body[data-multiplayer=true] #mp-game-bar{bottom:80px}}

#multiplayer-panel{padding:22px 32px}#multiplayer-panel h2{margin:12px 0}#multiplayer-panel .mp-help{margin:12px 0}#multiplayer-panel #mp-members li{padding:6px 12px}

#mp-spell-buttons{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}#mp-spell-buttons button{font-size:12px;padding:10px 14px}

#mp-join-character{font:700 16px Nunito;color:#fff;background:#100a20;border:1px solid #d7bc76;border-radius:12px;padding:12px;width:100%}
