/* Luminara 3D 1.3: independent touch layers, compact HUD, no whole-interface scaling. */
:root{--ink:#f7f0dc;--gold:#eccb87;--muted:#bfd0cb;--cyan:#a9e3eb;--view-w:100vw;--view-h:100dvh;--view-x:0px;--view-y:0px;--top:max(12px,env(safe-area-inset-top));--left:max(14px,env(safe-area-inset-left));--right:max(14px,env(safe-area-inset-right));--bottom:max(16px,env(safe-area-inset-bottom));color-scheme:dark}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
[hidden],.screen[hidden],.modal-wrap[hidden],#hud[hidden]{display:none!important}
html,body{margin:0;width:100%;height:100%;background:#071b20;color:var(--ink);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;overflow:hidden;overscroll-behavior:none;touch-action:none;-webkit-user-select:none;user-select:none}
#game-shell{position:fixed;left:var(--view-x);top:var(--view-y);width:var(--view-w);height:var(--view-h);overflow:hidden;isolation:isolate}
#game{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;z-index:0}
button,select,input{font:inherit;color:inherit}button{border:0;appearance:none;-webkit-appearance:none;cursor:pointer;touch-action:manipulation}button:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.glass{background:linear-gradient(155deg,#112c33ec,#091c23e8);border:1px solid #d4e9e530;box-shadow:0 5px 20px #0003;backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px)}.strong{background:linear-gradient(155deg,#15313cf8,#091c24fb)}
.screen{position:absolute;inset:0;z-index:30;display:none}.screen.active{display:flex}
#loading{align-items:center;justify-content:center;flex-direction:column;background:#0a2027}#loading h1{font-family:Georgia,serif;letter-spacing:.14em}#loading p{color:var(--muted)}.sigil{font-size:3.4rem;color:var(--gold)}
#title{padding:var(--top) var(--right) var(--bottom) var(--left);align-items:center;background:linear-gradient(100deg,#03151ce6,#03151c9c 45%,#03151c25)}
.title-mark{position:absolute;top:calc(var(--top) + 14px);left:calc(var(--left) + 14px);font-size:.65rem;letter-spacing:.23em;color:var(--gold)}
.title-center{margin:0 0 0 6vw;max-width:660px;text-shadow:0 3px 20px #0007}.eyebrow{font-size:.68rem;font-weight:800;letter-spacing:.23em;color:var(--gold)!important}.title-center h1{font-family:Georgia,serif;font-weight:400;font-size:clamp(4.4rem,10vw,9rem);line-height:.98;margin:.2em 0 0}.title-center h2{font-family:Georgia,serif;font-size:1.8rem;letter-spacing:.27em;font-style:italic;font-weight:400;color:var(--gold);margin:.25em 0 1.1em}.tagline{font-size:.82rem;line-height:1.5;color:var(--muted);max-width:340px}.prototype-badge{position:absolute;right:var(--right);bottom:var(--bottom);font-size:.62rem;letter-spacing:.13em;color:var(--muted)}
.primary,.secondary{border-radius:12px;padding:.84rem 1rem;min-height:46px;border:1px solid #d7e3df2a;display:block;width:100%;margin:.55rem 0;line-height:1.3;touch-action:manipulation}.primary{background:linear-gradient(120deg,#f1d392,#cba055);color:#142732;font-weight:850}.secondary{background:#dceee70b;color:var(--ink)}.danger{color:#efa9ac}.title-center .primary,.title-center .secondary{width:265px;max-width:100%}.primary:active,.secondary:active{filter:brightness(1.1)}
#hud{position:absolute;inset:0;z-index:10;pointer-events:none}
.player-card{position:absolute;top:var(--top);left:var(--left);width:208px;display:flex;gap:9px;align-items:center;padding:9px 11px;border-radius:14px}
.portrait{display:none}.bars{flex:1;min-width:0}.label-row{display:flex;justify-content:space-between;align-items:center;font-size:.64rem;letter-spacing:.08em}.label-row.small{font-size:.57rem;color:var(--muted);margin-top:5px}.meter{height:5px;background:#04151f;border-radius:20px;margin-top:3px;overflow:hidden}.meter i{display:block;height:100%;width:100%;border-radius:inherit;transition:width .08s linear}.hp i{background:linear-gradient(90deg,#b94456,#f18786)}.sf i{background:linear-gradient(90deg,#69ceda,#d7f4ec)}.currency{font-size:.72rem;color:var(--gold);white-space:nowrap;align-self:flex-end;padding-bottom:1px}
.objective{position:absolute;top:var(--top);left:50%;transform:translateX(-50%);max-width:min(430px,45vw);padding:9px 13px;border-radius:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.75rem;line-height:1.35}.objective b{font-weight:600}.objective small{display:none}
.icon-btn{pointer-events:auto;position:absolute;top:var(--top);right:var(--right);width:44px;height:44px;display:grid;place-items:center;border-radius:13px;font-size:1.35rem;touch-action:manipulation}.recenter{top:calc(var(--top) + 53px);width:40px;height:40px;right:calc(var(--right) + 2px);font-size:1.6rem}
.waypoint{position:absolute;right:calc(var(--right) + 62px);top:calc(var(--top) + 55px);font-size:.7rem;color:var(--gold);text-shadow:0 2px 5px #000}.boss{position:absolute;top:var(--top);left:50%;transform:translateX(-50%);width:min(400px,42vw);padding:9px 14px;border-radius:12px;text-align:center}.boss b{font-size:.65rem;letter-spacing:.16em}.boss-bar{height:5px;background:#04141e;overflow:hidden;border-radius:20px;margin-top:5px}.boss-bar i{display:block;height:100%;width:100%;background:linear-gradient(90deg,#9d3246,#ed717f)}.boss-active .objective,.boss-active .waypoint{display:none}
.toast{position:absolute;left:var(--left);top:calc(var(--top) + 96px);max-width:min(250px,70vw);padding:6px 10px;background:#08252be5;border-left:2px solid var(--gold);border-radius:3px 8px 8px 3px;font-size:.7rem;color:var(--ink);line-height:1.4}
.subtitle{position:absolute;bottom:calc(var(--bottom) + 5px);left:50%;transform:translateX(-50%);width:min(580px,60vw);padding:7px 11px;border-radius:10px;font-size:.8rem;line-height:1.4;text-align:center}.subtitle b{color:var(--gold);font-size:.69rem;margin-right:.5rem}.in-combat .subtitle{display:none!important}
.desktop-help{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(var(--bottom) + 1px);display:flex;gap:11px;font-size:.64rem;padding:7px 12px;border-radius:10px;color:var(--muted)}.desktop-help kbd{border:1px solid #b9d9d830;padding:2px 5px;border-radius:4px;color:var(--ink)}#subtitle:not([hidden])~.desktop-help{display:none}
#mobile-ui{display:none;position:absolute;inset:0;pointer-events:none}.touch-mode #mobile-ui{display:block}.touch-mode .desktop-help{display:none}
#look-zone{position:absolute;left:42%;right:0;top:0;bottom:0;pointer-events:auto;touch-action:none;z-index:1}
.stick{position:absolute;left:var(--left);bottom:calc(var(--bottom) + 6px);width:118px;height:118px;z-index:3;pointer-events:auto;touch-action:none;border:1px solid #c1e4df40;border-radius:50%;background:radial-gradient(circle,#6bafa512,#071e2636);box-shadow:inset 0 0 24px #0002}
.stick-knob{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:49px;height:49px;background:radial-gradient(circle at 35% 30%,#d1e3dc65,#81afa537);border:1px solid #c2ebe970;border-radius:50%;pointer-events:none;will-change:transform}.stick.held{border-color:#aadbd570}
.actions{position:absolute;right:var(--right);bottom:var(--bottom);width:176px;height:167px;pointer-events:none;z-index:4}.action{position:absolute;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:1px;width:67px;height:67px;border-radius:50%;border:1px solid #bedfde42;color:var(--ink);background:linear-gradient(140deg,#193640ef,#0b222bef);box-shadow:0 5px 14px #0003;pointer-events:auto;touch-action:none;overflow:hidden;isolation:isolate}
.action:before{content:"";position:absolute;bottom:0;left:0;right:0;height:var(--cooldown,0%);background:#02161fa1;z-index:-1;pointer-events:none}
.action span{font-size:1.15rem;line-height:1.15}.action b{font-size:.63rem;line-height:1.2;font-weight:750}.action small{font-size:.49rem;line-height:1.25;color:#bed2cf}.action.held{border-color:#f1db9a;box-shadow:0 0 15px #d4eacf33}.action.unready{border-color:#90b1b426}.action.unready small{color:#acbfc2}
#attack-btn{width:83px;height:83px;right:0;bottom:0;background:linear-gradient(145deg,#225666ee,#12313c);border-color:#b0e8eb88}#bolt-btn{left:9px;top:16px}#dodge-btn{left:0;bottom:0}#heal-btn{right:0;top:0}#interact-btn{right:0;bottom:182px;background:#624d29e8;border-color:#f1d69c;width:64px;height:64px}
.touch-mode .objective{top:calc(var(--top) + 75px);left:var(--left);transform:none;max-width:calc(100% - var(--left) - var(--right) - 5px);font-size:.68rem;padding:6px 10px;background:#081e26bc}.touch-mode .waypoint{top:calc(var(--top) + 109px);left:var(--left);right:auto;font-size:.65rem}.touch-mode .toast{top:calc(var(--top) + 143px);max-width:205px;background:#09262bda}.touch-mode .boss{top:calc(var(--top) + 76px);left:var(--left);transform:none;width:calc(100% - var(--left) - var(--right));padding:7px 11px}.touch-mode .boss-active .toast{top:calc(var(--top) + 129px)}
.touch-mode .subtitle{width:calc(100% - var(--left) - var(--right));max-width:500px;bottom:calc(var(--bottom) + 185px);font-size:.74rem;line-height:1.35;padding:7px 10px}
.modal-wrap{position:absolute;inset:0;z-index:50;background:#031216b5;display:flex;align-items:center;justify-content:center;padding:max(14px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(14px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));pointer-events:auto}
.modal{width:min(490px,100%);max-height:100%;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;border-radius:21px;padding:23px;-webkit-overflow-scrolling:touch}.modal h2{font-family:Georgia,serif;font-size:clamp(1.7rem,6vw,2.35rem);font-weight:400;line-height:1.16;margin:.4rem 0 1rem}.modal p{color:var(--muted);font-size:.92rem;line-height:1.58}.modal .small-note{font-size:.74rem;line-height:1.5}.modal .eyebrow{font-size:.65rem}.modal .primary{margin-top:1.2rem}.menu-modal .primary{margin-top:.8rem}.build-id{color:#92adaa!important}.save-tools{display:flex;gap:8px}.save-tools .secondary{font-size:.8rem}.settings-modal label{display:grid;gap:7px;margin:16px 0;font-size:.83rem;color:var(--muted)}.settings-modal select,.settings-modal input[type=range]{width:100%;min-height:42px;border:1px solid #bbd8d831;border-radius:9px;background:#122e39;padding:8px;color:var(--ink);touch-action:pan-x}.settings-modal label.toggle{display:flex;align-items:center;gap:9px}.toggle input{width:20px;height:20px;accent-color:var(--gold)}
.rotation{position:absolute;inset:0;z-index:80;display:grid;place-items:center;background:#081e26d9;font-size:.83rem;color:var(--gold);pointer-events:auto}.error-screen{background:#0a2027;padding:24px;align-items:center;justify-content:center;flex-direction:column;text-align:center}.error-screen h2{font-family:Georgia,serif;font-size:2rem}.error-screen p{max-width:450px;color:var(--muted)}.error-screen .primary{width:250px}
.touch-mode.landscape{--top:max(8px,env(safe-area-inset-top));--bottom:max(9px,env(safe-area-inset-bottom));--left:max(13px,env(safe-area-inset-left));--right:max(13px,env(safe-area-inset-right))}
.touch-mode.landscape .player-card{width:193px;padding:8px 10px;gap:7px}.touch-mode.landscape .objective{top:var(--top);left:50%;transform:translateX(-50%);max-width:calc(100% - 450px);font-size:.68rem;padding:7px 10px}.touch-mode.landscape .waypoint{top:calc(var(--top) + 39px);left:50%;transform:translateX(-50%);font-size:.61rem}.touch-mode.landscape .boss{top:var(--top);left:50%;transform:translateX(-50%);width:calc(100% - 454px);max-width:340px;padding:6px 10px}.touch-mode.landscape .boss b{font-size:.59rem}
.touch-mode.landscape .stick{width:105px;height:105px}.touch-mode.landscape .stick-knob{width:45px;height:45px}.touch-mode.landscape .actions{width:161px;height:140px}.touch-mode.landscape .action{width:59px;height:59px}.touch-mode.landscape #attack-btn{width:73px;height:73px}.touch-mode.landscape #bolt-btn{left:8px;top:8px}.touch-mode.landscape #heal-btn{top:0}.touch-mode.landscape #dodge-btn{left:0;bottom:0}.touch-mode.landscape #interact-btn{right:176px;bottom:15px;width:59px;height:59px}.touch-mode.landscape .action span{font-size:1.05rem}.touch-mode.landscape .action b{font-size:.59rem}.touch-mode.landscape .action small{font-size:.45rem}
.touch-mode.landscape .subtitle{bottom:var(--bottom);width:calc(100% - 480px);font-size:.67rem;padding:6px 9px}.touch-mode.landscape .toast{top:calc(var(--top) + 73px);max-width:193px;font-size:.64rem}.touch-mode.landscape .boss-active .toast{top:calc(var(--top) + 73px)}.touch-mode.landscape .title-center h1{font-size:clamp(3rem,10vw,6rem)}.touch-mode.landscape .title-center h2{font-size:1.3rem;margin-bottom:.4em}.touch-mode.landscape .title-center .eyebrow{display:none}.touch-mode.landscape .title-center .primary,.touch-mode.landscape .title-center .secondary{min-height:40px;padding:.6rem 1rem;width:230px}.touch-mode.landscape .tagline{font-size:.71rem;margin:.4rem 0}.touch-mode.landscape .title-mark{top:var(--top);left:var(--left)}
@media(max-width:380px){.player-card{width:195px}.touch-mode .subtitle{font-size:.7rem}.title-center{margin-left:2vw}.title-center h1{font-size:4rem}.title-center h2{font-size:1.55rem}.modal{padding:19px}}
@media(prefers-reduced-motion:reduce){.meter i{transition:none}}
.icon-btn{z-index:8}

.touch-mode:not(.landscape) .objective{max-width:calc(100% - var(--left) - var(--right) - 53px)}
.touch-mode:not(.landscape) .boss{width:calc(100% - var(--left) - var(--right) - 53px)}
@media(max-width:380px){.touch-mode:not(.landscape) .stick{width:106px;height:106px}.touch-mode:not(.landscape) .stick-knob{width:46px;height:46px}}

/* v2.0 visual reboot overrides */
#game-shell::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:radial-gradient(ellipse at 50% 48%,transparent 48%,rgba(0,8,12,.18) 78%,rgba(0,5,8,.52) 100%);mix-blend-mode:multiply}
#hud,#title,.screen,.modal-wrap,.rotation{z-index:10}#title{z-index:30}.modal-wrap{z-index:50}.rotation{z-index:80}
#title{background:linear-gradient(90deg,rgba(1,10,16,.82) 0%,rgba(2,13,18,.52) 42%,rgba(2,11,16,.08) 73%),radial-gradient(circle at 72% 46%,rgba(85,192,184,.10),transparent 34%)}
.title-center h1{letter-spacing:-.035em;text-shadow:0 8px 32px #000b,0 0 48px #5de6d11a}.title-center h2{text-shadow:0 0 24px #f3d38b22}.tagline{letter-spacing:.02em}
.glass{background:linear-gradient(155deg,rgba(12,40,48,.88),rgba(4,20,27,.83));border-color:rgba(208,242,235,.16);box-shadow:0 8px 28px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.035)}
.player-card{border-radius:16px}.objective{background:linear-gradient(155deg,rgba(9,32,39,.78),rgba(5,18,24,.74));font-weight:600}.boss{background:linear-gradient(155deg,rgba(45,13,24,.89),rgba(15,8,15,.89));border-color:rgba(255,115,137,.22)}
.boss-bar i{box-shadow:0 0 16px #e94b67}.meter.sf i{box-shadow:0 0 10px #6ee8f655}.action{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.action:active,.action.held{transform:scale(.96)}
#attack-btn{box-shadow:0 0 0 1px #8aebf11c,0 8px 24px #0005,inset 0 0 22px #63d8df0b}
.subtitle{background:linear-gradient(155deg,rgba(6,29,36,.91),rgba(3,17,23,.91));border-color:rgba(213,244,236,.14)}
.prototype-badge{background:#06171dbb;border:1px solid #b7d6cf1f;border-radius:999px;padding:.45rem .65rem;backdrop-filter:blur(8px)}
@media (max-width:700px){.title-center{margin-left:3vw}.title-center h1{font-size:clamp(3.6rem,17vw,6.3rem)}.title-center h2{font-size:1.35rem}.prototype-badge{font-size:.52rem}.tagline{max-width:280px}}
