:root{color-scheme:dark;--bg:#101a22;--panel:#18262f;--line:#30434c;--gold:#e7bb73;--text:#e6ecea;--muted:#91a7ae;--danger:#e0655f;--ok:#7db99d;--ice:#8fdcff}
*{box-sizing:border-box}
html,body{margin:0;background:radial-gradient(ellipse at 65% 0,#253c43,transparent 60%),var(--bg);color:var(--text);font:15px/1.6 'Malgun Gothic','Apple SD Gothic Neo',sans-serif}
button,input,select{font:inherit;border:1px solid #465a62;border-radius:4px;background:#223640;color:var(--text);padding:9px 14px;min-height:42px}
button{cursor:pointer;transition:background .15s}button:hover:not(:disabled){background:#36525d}button:disabled{opacity:.4;cursor:default}
button.primary{background:var(--gold);color:#252820;font-weight:700;border-color:var(--gold)}
input,select{width:100%;margin:7px 0 12px}
button:focus-visible,input:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
h1{font-size:27px;letter-spacing:-1px;margin:8px 0}h2{font-size:21px;margin:4px 0 12px}h3{font-size:15px;margin:0 0 12px;color:var(--gold)}h4{margin:0 0 6px;font-size:14px}
p{color:var(--muted);margin:8px 0 14px}small{color:var(--muted)}
.eyebrow{color:var(--gold);font-size:10px;letter-spacing:2px}
.tag{padding:5px 10px;border:1px solid #b5965b55;color:var(--gold);font-size:12px;border-radius:3px;white-space:nowrap}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.bar{height:8px;background:#0c1720;border-radius:3px;overflow:hidden;margin:6px 0;position:relative}.bar i{display:block;height:100%;background:var(--ok);transition:width .15s}
.muted{color:var(--muted);font-size:12px}
[hidden]{display:none!important}
header{padding:12px 24px;border-bottom:1px solid #384249;display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:8px 24px;background:#0b141c;position:relative;z-index:20}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--gold);font-size:22px;font-weight:bold}.brand span{font-size:17px}.brand small{display:block;font-size:8px;letter-spacing:3px;color:var(--muted)}
.topnav{display:flex;gap:4px}.topnav button{border-color:transparent;background:transparent;border-radius:0;padding:7px 15px;min-height:38px;font-size:13px;color:#a4afb5}.topnav button[aria-pressed=true]{color:#f5cd89;border-bottom:2px solid #e8ba72}
#resources{font-size:12px;color:var(--gold);text-align:right;white-space:nowrap}
.recovery-menu{position:relative;font-size:11px}.recovery-menu summary{cursor:pointer;padding:8px;color:var(--muted)}.recovery-menu[open]{position:absolute;right:24px;top:10px;width:250px;background:#15222c;padding:12px;border:1px solid var(--line);z-index:30}.recovery-menu button{width:100%;margin-top:6px;font-size:12px}
main{max-width:1800px;margin:auto;padding:16px 24px}
#notice{color:var(--gold);min-height:0;margin:0 0 10px}#notice:empty{display:none}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:20px}
.login{max-width:480px;margin:40px auto}.login button{width:100%}.login h1{font-size:24px}.controls-help{margin-top:18px;font-size:12px;color:var(--muted);line-height:1.8}.controls-help b{color:var(--gold);margin-right:6px}
footer{padding:28px;text-align:center;font-size:11px;color:#748c95}
/* City */
.city-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px}
.world{position:relative;background:#0d1922;border:1px solid #485151;border-radius:6px;overflow:hidden}
.scene-heading{display:flex;justify-content:space-between;align-items:center;padding:13px 20px 10px}.scene-heading h2{margin:2px 0 0;font-size:18px}
.map-stage{position:relative;overflow:hidden;aspect-ratio:1664/941;background:#152735}.map-stage canvas{width:100%;height:100%;display:block;object-fit:cover;image-rendering:pixelated}
#map-points{position:absolute;inset:0}
.map-point{position:absolute;transform:translate(-50%,-100%);background:#0b141cd9;border:1px solid #e7bb7366;padding:6px 10px;min-height:0;text-align:left;border-radius:6px;display:flex;flex-direction:column;gap:1px;backdrop-filter:blur(2px)}.map-point b{font-size:13px;color:#f3d79a}.map-point small{font-size:10px}.map-point .pin-dot{position:absolute;left:50%;bottom:-9px;width:9px;height:9px;background:var(--gold);border-radius:50%;transform:translateX(-50%);box-shadow:0 0 12px #e7bb73}.map-point[aria-expanded=true]{border-color:var(--gold);background:#1d2b34}
.map-caption{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;padding:6px 12px;font-size:10px;letter-spacing:1px;color:#c9d3cf;background:linear-gradient(transparent,#0b141ccc)}
.building-panel{padding:20px 22px;border-top:1px solid var(--line);background:#132029}
.drawer-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:8px}.drawer-heading h2{margin:2px 0 0}
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.card{padding:14px;background:#101e27;border:1px solid var(--line);border-radius:5px}.card h3{margin-bottom:6px}.card p{font-size:12px;min-height:38px;margin:4px 0 10px}.card button{width:100%}.card.active{border-color:var(--gold);box-shadow:inset 0 0 0 1px #e7bb7355}
.skill-list{font-size:12px;color:var(--muted);margin:6px 0 10px;padding-left:0;list-style:none}.skill-list li{padding:3px 0;border-bottom:1px solid #ffffff0a}.skill-list b{color:var(--text)}
.section-title{margin:22px 0 10px}
.city-hud{display:flex;flex-direction:column;gap:12px}.hud-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:16px}.hud-card h3{margin-bottom:8px}
.resource-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;margin:0}.resource-grid div{background:#0f1b23;padding:6px 10px;border-radius:4px}.resource-grid dt{font-size:10px;color:var(--muted)}.resource-grid dd{margin:0;font-size:16px;color:var(--gold)}
.player-name{display:block;font-size:16px;margin-bottom:8px}
.member{padding:8px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;font-size:13px}.member small{font-size:11px}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#5a6b70;margin-right:6px}.dot.on{background:var(--ok);box-shadow:0 0 8px var(--ok)}
#party button,#party-full button{width:100%;margin-top:8px}
.requirement{color:#e2a67a;font-size:12px}
.stat-number{font-size:34px;color:var(--gold);line-height:1}.stat-number small{display:block;font-size:11px;color:var(--muted)}
.subpage{max-width:960px;margin:auto}
#journal details{margin:8px 0;padding:10px;background:#101e27;border-radius:5px}#journal summary{cursor:pointer;color:var(--gold)}.chapter-ending{color:#a8d8c0}
.log{font-size:12px;color:var(--muted);padding:6px 0;border-bottom:1px solid #ffffff08}
/* Play screen */
#stage{position:relative;width:100%;max-width:1280px;margin:auto;aspect-ratio:16/9;background:#000;border-radius:8px;overflow:hidden;box-shadow:0 20px 60px #0009;user-select:none;-webkit-user-select:none;touch-action:none}
#arena{width:100%;height:100%;display:block}
#hud{position:absolute;inset:0;pointer-events:none;font-size:13px}
#hud button{pointer-events:auto}
#hud-top{position:absolute;left:0;right:0;top:0;display:grid;grid-template-columns:1fr auto 1fr;gap:10px;padding:10px 12px}
#hud-party{display:flex;flex-direction:column;gap:5px;align-items:flex-start}
.hud-unit{background:#050b10b0;border:1px solid #ffffff14;border-radius:5px;padding:5px 9px;width:210px}.hud-unit b{font-size:12px}.hud-unit small{float:right;font-size:10px}.hud-unit .bar{margin:3px 0 0;height:6px}.hud-unit.down .bar i{background:var(--danger)}.hud-unit.dead{opacity:.5}.hud-unit.ally b::after{content:' · AI';color:var(--muted);font-weight:normal;font-size:10px}
#hud-center{text-align:center}#hud-boss{min-width:340px;background:#050b10b0;border:1px solid #e0655f55;border-radius:5px;padding:6px 12px}#hud-boss b{color:#ffb4ae;font-size:13px;letter-spacing:1px}.bar.boss{height:10px;margin:4px 0 0}.bar.boss i{background:linear-gradient(90deg,#c9463f,#ff8d7a)}
#hud-wave{font-size:11px;color:var(--muted);margin-top:4px}
#hud-right{display:flex;justify-content:flex-end;gap:8px;align-items:flex-start}
#hud-floor{background:#050b10b0;border-radius:5px;padding:6px 10px;text-align:right}#hud-floor b{display:block;color:var(--gold);font-size:14px}#hud-floor small{font-size:10px}
#hud-map{background:#050b10b0;border-radius:5px;padding:6px}
#hud-map svg{display:block;width:120px;height:66px}
#hud-menu{min-height:0;padding:6px 10px;background:#050b10b0;border-color:#ffffff22;font-size:16px}
#hud-banner{position:absolute;left:0;right:0;top:24%;text-align:center;animation:banner 3.6s forwards;pointer-events:none}#hud-banner b{display:block;font-size:34px;letter-spacing:3px;color:#f7dfae;text-shadow:0 2px 12px #000,0 0 30px #e7bb7355}#hud-banner small{font-size:13px;color:#d6dcd8;letter-spacing:2px}
@keyframes banner{0%{opacity:0;transform:translateY(12px) scale(.96)}12%{opacity:1;transform:none}80%{opacity:1}100%{opacity:0}}
#hud-combo{position:absolute;right:6%;top:36%;text-align:center;transform-origin:center}#hud-combo b{display:block;font-size:46px;color:#ffd77a;text-shadow:0 0 18px #ffb34766,0 3px 0 #6b4900;font-style:italic;line-height:1}#hud-combo small{font-size:11px;letter-spacing:4px;color:#f3e2bd}#hud-combo.pop{animation:pop .18s}
@keyframes pop{0%{transform:scale(1.35)}100%{transform:scale(1)}}
#hud-ready{position:absolute;left:50%;top:14%;transform:translateX(-50%);background:#050b10c0;border:1px solid #e7bb7366;padding:8px 16px;border-radius:6px;color:#f3d79a}
#hud-dialog{position:absolute;left:12px;bottom:118px;max-width:46%;background:#050b10d0;border-left:3px solid var(--gold);padding:8px 14px;border-radius:0 6px 6px 0;animation:fade .3s}#hud-dialog .speaker{color:var(--gold);font-size:11px;letter-spacing:1px}#hud-dialog p{margin:2px 0 0;color:#eef2ef;font-size:13px;line-height:1.5}
@keyframes fade{from{opacity:0;transform:translateX(-8px)}to{opacity:1}}
#hud-bottom{position:absolute;left:0;right:0;bottom:0;display:grid;grid-template-columns:270px 1fr 260px;gap:12px;padding:10px 12px;align-items:end}
#hud-self{background:#050b10b0;border-radius:6px;padding:8px 10px}.self-name{font-size:12px;color:var(--gold)}.self-name b{color:#fff;margin-right:6px}.bar.hp{height:14px;margin:4px 0}.bar.hp i{background:linear-gradient(90deg,#4fa37d,#9be0b6)}.bar.hp em{position:absolute;left:0;top:0;height:100%;background:#8fdcff88}.self-stats{font-size:10px;color:#cfd8d5;display:flex;flex-wrap:wrap;gap:0 10px}.bar.exp{height:4px;margin:4px 0 0}.bar.exp i{background:#c9a2ff}
#hud-skills{display:flex;justify-content:center;gap:8px}
.skill-slot{position:relative;width:68px;height:64px;background:#050b10c0;border:1px solid #ffffff22;border-radius:8px;text-align:center;overflow:hidden}.skill-slot b{position:absolute;left:2px;right:2px;bottom:4px;font-size:10px;line-height:1.1;color:#eef2ef;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.skill-slot small{position:absolute;left:5px;top:3px;font-size:10px;color:var(--gold)}.skill-slot .cd{position:absolute;left:0;right:0;bottom:0;background:#0b141ccc;transition:height .1s}.skill-slot .cdt{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:20px;color:#fff;text-shadow:0 0 6px #000}.skill-slot.ready{border-color:#e7bb7366;box-shadow:0 0 12px #e7bb7333}.skill-slot .icon{display:block;font-size:18px;margin-top:12px;line-height:1}.skill-slot.small{width:56px;height:64px}
#hud-chat{align-self:end}#chat-log{max-height:96px;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;gap:2px;font-size:12px}#chat-log div{background:#050b10a0;padding:2px 8px;border-radius:4px;color:#dfe6e3}#chat-log b{color:var(--gold)}#chat-input{pointer-events:auto;margin:6px 0 0;min-height:34px;padding:4px 10px;background:#0b141ce0}
#hud-perks{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#0b141cf0;border:1px solid #e7bb7366;border-radius:10px;padding:18px 20px;width:min(760px,92%);text-align:center;pointer-events:auto}#hud-perks h3{margin-bottom:12px}
.perk-options{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.perk-options article{background:#101e27;border:1px solid var(--line);border-radius:6px;padding:12px;cursor:pointer;text-align:left}.perk-options article:hover{border-color:var(--gold)}.perk-options h4{color:var(--gold)}.perk-options p{font-size:12px;margin:0 0 6px}.perk-options kbd{background:#223640;padding:1px 6px;border-radius:3px;font-size:11px}
#hud-pause,#hud-result{position:absolute;inset:0;background:#050b10c8;display:flex;align-items:center;justify-content:center;pointer-events:auto}
.pause-box,.result-box{background:#132029;border:1px solid var(--line);border-radius:10px;padding:24px 28px;width:min(520px,92%);text-align:center}.pause-box button,.result-box button{width:100%;margin-top:8px}#help-box{text-align:left;font-size:12px;color:var(--muted);margin-top:12px;line-height:1.8}#help-box b{color:var(--gold)}
#result-body{text-align:left;font-size:13px}#result-body .loot{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0}#result-body .loot div{background:#0f1b23;padding:8px;border-radius:5px;text-align:center}#result-body .loot b{display:block;font-size:20px;color:var(--gold)}#result-body .loot small{font-size:10px}
/* Touch controls */
#touch{position:absolute;inset:0;pointer-events:none}
#joystick{position:absolute;left:24px;bottom:30px;width:140px;height:140px;border-radius:50%;background:#ffffff14;border:2px solid #ffffff33;pointer-events:auto;touch-action:none}#joystick-knob{position:absolute;left:45px;top:45px;width:50px;height:50px;border-radius:50%;background:#e7bb73cc;box-shadow:0 0 14px #e7bb7388}
#touch-buttons{position:absolute;right:16px;bottom:22px;width:250px;height:190px;pointer-events:auto}
#touch-buttons button{position:absolute;border-radius:50%;width:58px;height:58px;min-height:0;padding:0;background:#0b141cb8;border:2px solid #ffffff44;color:#fff;font-size:12px;touch-action:none}
#touch-buttons .big{width:80px;height:80px;right:8px;bottom:8px;border-color:var(--gold);color:var(--gold);font-size:15px}
#touch-buttons [data-press=j]{right:96px;bottom:4px}#touch-buttons [data-press=d]{right:96px;bottom:70px}
#touch-buttons .skill{width:48px;height:48px;background:#1d2b34c8;border-color:#8fdcff66;color:#bfeaff;top:0}#touch-buttons [data-press=s1]{left:0}#touch-buttons [data-press=s2]{left:56px}#touch-buttons [data-press=s3]{left:112px}#touch-buttons [data-press=s4]{left:168px}
#touch-buttons .small{width:44px;height:44px;font-size:11px}#touch-buttons [data-press=q]{left:0;bottom:8px;border-color:#9be0b6;color:#9be0b6}#touch-buttons [data-press=e]{left:0;bottom:64px}
body.touch #hud-bottom{grid-template-columns:200px 1fr 0;padding-bottom:200px}body.touch #hud-chat{display:none}body.touch #hud-skills{display:none}body.touch #hud-self{position:absolute;left:12px;bottom:186px;width:200px}
body.touch #hud-dialog{bottom:200px}
@media(max-width:1000px){.city-layout{grid-template-columns:1fr}.cards{grid-template-columns:1fr 1fr}header{grid-template-columns:1fr auto;grid-template-rows:auto auto}#resources{grid-column:1/-1;text-align:left}.topnav{order:3}}
@media(max-width:640px){main{padding:10px}header{padding:10px 12px}.brand{font-size:18px}.cards{grid-template-columns:1fr}.perk-options{grid-template-columns:1fr}#hud-bottom{grid-template-columns:1fr}#hud-chat{display:none}#hud-party .hud-unit{min-width:120px;padding:3px 6px}#hud-banner b{font-size:22px}.skill-slot{width:52px;height:52px}#hud-dialog{max-width:70%;font-size:12px}#stage{border-radius:0}}
/* Touch / small screens: the expedition takes the whole screen */
#arena{object-fit:contain}
body.touch.playing header,body.touch.playing footer,body.touch.playing #notice{display:none}
body.touch.playing main{padding:0;max-width:none}
body.touch.playing #stage{position:fixed;inset:0;max-width:none;aspect-ratio:auto;border-radius:0;z-index:50;background:#06090c}
body.touch #hud-top{padding:6px 8px}body.touch .hud-unit{width:150px;padding:2px 7px}body.touch .hud-unit b{font-size:11px}
body.touch #hud-self{position:absolute;left:8px;top:132px;width:190px;padding:5px 8px;bottom:auto}body.touch .self-stats{display:none}
body.touch #hud-bottom{position:static;display:block;padding:0}
body.touch #hud-dialog{bottom:8px;left:190px;max-width:min(46%,420px);font-size:12px}
body.touch #hud-banner{top:18%}body.touch #hud-banner b{font-size:24px}
body.touch #hud-perks{width:min(640px,80%);padding:10px 12px}body.touch #hud-perks h3{margin:4px 0 8px;font-size:14px}body.touch .perk-options{grid-template-columns:repeat(3,1fr)}body.touch .perk-options article{padding:8px}body.touch .perk-options p{font-size:11px}
#touch-buttons button.held{background:#e7bb7366}
#touch-buttons .skill.cooling{opacity:.45}
