:root{--ink:#1c1814;--paper:#f2e6d0;--mist:#b5a892;--jade:#3f6b3a;--jade-deep:#2a4a28;--ember:#c23b3b;--gold:#c9a227;--panel:#1c1814eb;--line:#c9a2278c;--stone:#8a8680;--roof:#7a2e2e;color:var(--paper);background:radial-gradient(circle at 18% 8%,#c9a22729,#0000 42%),radial-gradient(circle at 88% 0,#3f6b3a38,#0000 36%),linear-gradient(165deg,#14110e 0%,#1c1814 48%,#2a2118 100%);font-family:Be Vietnam Pro,sans-serif}*{box-sizing:border-box}html,body,#app{height:100%;min-height:100%;margin:0}body{min-height:100vh}#app{grid-template-rows:1fr;height:100vh;max-height:100vh;display:grid;overflow:hidden}#app.mode-play{grid-template-rows:1fr}.lobby-stage{place-items:center;width:100%;height:100%;display:grid;position:relative;overflow:hidden}.lobby-bg{object-fit:cover;filter:saturate(.95)contrast(1.05);width:100%;height:100%;position:absolute;inset:0}.lobby-veil{background:radial-gradient(circle at 50% 35%,#1c181440,#0c0a08d1 70%),linear-gradient(#14110e59,#0c0a08e0);position:absolute;inset:0}.lobby-frame{z-index:1;flex-direction:column;gap:.85rem;width:min(440px,100vw - 2rem);max-height:calc(100vh - 2rem);display:flex;position:relative}.lobby-brand{color:var(--gold);align-items:center;gap:.85rem;display:flex}.lobby-brand img{border:1px solid var(--line);object-fit:cover;background:#000;border-radius:10px;width:56px;height:56px}.lobby-brand h1{letter-spacing:.08em;margin:0;font-family:Josefin Sans,sans-serif;font-size:2rem}.lobby-brand p{color:var(--mist);letter-spacing:.04em;margin:.15rem 0 0;font-size:.82rem}.lobby-card{border:1px solid var(--line);background:linear-gradient(#c9a2271a,#0000 120px),#14110ef0;border-radius:12px;max-height:min(78vh,720px);padding:1.1rem 1.15rem 1.25rem;overflow:auto;box-shadow:0 18px 48px #00000073}.char-row{justify-content:space-between;align-items:center;gap:.75rem;display:flex!important}.btn-enter{white-space:nowrap;min-width:120px}.boot-status{z-index:40;border:1px solid var(--line);color:var(--paper);pointer-events:none;background:#0e0c0aeb;border-radius:8px;padding:.85rem 1.2rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.boot-status.hidden{display:none}.play-root{position:relative}.lobby-foot{text-align:center;color:var(--mist);margin:0;font-size:.84rem}.panel{background:linear-gradient(180deg, #c9a22714, transparent 120px), var(--panel);border-right:1px solid var(--line);min-height:0;padding:1.1rem 1.15rem 1.4rem;overflow:auto;box-shadow:inset -1px 0 #ffffff0a}.lobby-card h2,.panel h2{color:var(--gold);border-bottom:1px solid #c9a22740;margin:0 0 .7rem;padding-bottom:.35rem;font-family:Josefin Sans,sans-serif;font-size:1.05rem}.panel p,.hint{color:var(--mist);margin:0 0 .9rem;font-size:.9rem;line-height:1.45}label{color:var(--mist);margin:.6rem 0 .28rem;font-size:.82rem;display:block}input,select,button{font:inherit}input,select{width:100%;color:var(--paper);background:#0006;border:1px solid #f2e6d02e;border-radius:6px;padding:.62rem .72rem}.school-cards{grid-template-columns:1fr 1fr;gap:.45rem;max-height:280px;margin:.55rem 0 .2rem;display:grid;overflow:auto}.school-card{cursor:pointer;background:#00000047;border:1px solid #f2e6d024;border-radius:8px;grid-template-columns:48px 1fr;align-items:center;gap:.65rem;padding:.45rem .55rem;display:grid}.school-card.active{border-color:var(--gold);box-shadow:0 0 0 1px #c9a22759}.school-card img{object-fit:cover;border:1px solid #c9a22759;border-radius:6px;width:48px;height:48px}.school-card strong{color:var(--paper);font-size:.92rem;display:block}.school-card small{color:var(--mist)}.row{flex-wrap:wrap;gap:.5rem;margin-top:.95rem;display:flex}button{appearance:none;cursor:pointer;background:linear-gradient(180deg, #4a7a42 0%, var(--jade-deep) 100%);color:var(--paper);border:1px solid #c9a22747;border-radius:6px;padding:.68rem .95rem;font-weight:600}button.secondary{background:0 0;border:1px solid #f2e6d04d}button:disabled{opacity:.5;cursor:not-allowed}.error{color:#ffb4a4;min-height:1.2em;margin-top:.7rem;font-size:.86rem}.char-list{gap:.5rem;margin:0 0 1rem;padding:0;list-style:none;display:grid}.char-list li{background:#00000047;border:1px solid #f2e6d024;border-radius:8px;justify-content:space-between;align-items:center;gap:.75rem;padding:.65rem .75rem;display:flex}.char-list strong{display:block}.char-list small{color:var(--mist);margin-top:.15rem;display:block}.char-list .row{flex-direction:column;align-items:stretch;margin-top:0}.lobby-preview{background:#0d0b09;border-left:1px solid #c9a22726;min-height:0;position:relative;overflow:hidden}.lobby-preview img{object-fit:cover;opacity:.72;filter:saturate(.9)contrast(1.05);width:100%;height:100%}.lobby-preview p{border:1px solid var(--line);color:var(--paper);background:#1c1814e0;border-radius:6px;margin:0;padding:.55rem .85rem;font-size:.86rem;position:absolute;bottom:1rem;left:1rem}.play-root,#game-root{background:#0d0b09;width:100%;height:100%;min-height:0;position:relative;overflow:hidden}#game-root canvas{display:block;width:100%!important;height:100%!important}.game-hud{z-index:20;pointer-events:none;color:var(--paper);font-size:13px;position:absolute;inset:0}.game-hud button,.game-hud .hud-bag{pointer-events:auto}.hud-unit,.hud-target{background:linear-gradient(#7a2e2e40,#0000 70%),#0e0c0ae0;border:1px solid #c9a2278c;border-radius:4px;grid-template-columns:56px 1fr;gap:10px;min-width:280px;max-width:340px;padding:10px 12px;display:grid;position:absolute;top:14px;box-shadow:0 10px 28px #00000073}.hud-unit{left:14px}.hud-target{grid-template-columns:48px 1fr;left:auto;right:14px}.hud-target.hidden{display:none}.hud-target img{border:1px solid var(--gold);object-fit:cover;background:#000;border-radius:4px;width:48px;height:48px}.hud-avatar{border:1px solid var(--gold);object-fit:cover;background:#000;border-radius:4px;width:56px;height:56px}.hud-name{color:var(--gold);letter-spacing:.02em;font-family:Josefin Sans,sans-serif;font-size:14px}.hud-sub{color:var(--mist);margin:2px 0 6px;font-size:11px}.hud-bar{background:#0000008c;border:1px solid #f2e6d038;border-radius:2px;height:14px;margin-top:4px;position:relative;overflow:hidden}.hud-bar-fill{width:100%;height:100%;transition:width .2s}.hud-bar.hp .hud-bar-fill{background:linear-gradient(90deg,#7a2e2e,#c23b3b)}.hud-bar.mp .hud-bar-fill{background:linear-gradient(90deg,#1e3a5f,#3d7ec9)}.hud-bar span{text-shadow:0 1px 2px #000;justify-content:center;align-items:center;font-size:10px;display:flex;position:absolute;inset:0}.hud-quest{background:#0e0c0ac7;border:1px solid #c9a22766;border-radius:4px;width:min(300px,42vw);padding:10px 12px;position:absolute;top:110px;left:14px}.hud-quest-chapter{color:var(--gold);margin-bottom:4px;font-family:Josefin Sans,sans-serif;font-size:12px}.hud-quest-obj{color:#e8d9b0;margin-bottom:4px;font-size:12px}.hud-quest-story{color:var(--mist);font-size:11px;line-height:1.4}.hud-minimap{background:#080c0ee6;border:1px solid #c9a22780;border-radius:4px;width:168px;padding:8px;position:absolute;top:14px;right:14px}.hud-map-title{color:var(--gold);text-align:center;margin-bottom:6px;font-family:Josefin Sans,sans-serif;font-size:12px}.hud-minimap-radar{background:linear-gradient(#3f6b3a1f 1px,#0000 1px) 0 0/20px 20px,linear-gradient(90deg,#3f6b3a1f 1px,#0000 1px) 0 0/20px 20px,#0a1210;border:1px solid #c9a22747;height:118px;position:relative}.hud-minimap-dot{background:#3dff7a;border-radius:50%;width:8px;height:8px;margin:-4px 0 0 -4px;position:absolute;box-shadow:0 0 0 2px #ffffffb3}.hud-minimap-npc{background:#ffd24a;border-radius:50%;width:7px;height:7px;margin:-3px 0 0 -3px;position:absolute}.hud-coords{text-align:center;color:var(--mist);margin-top:6px;font-size:11px}.hud-skills{flex-direction:column;align-items:flex-end;gap:8px;display:flex;position:absolute;bottom:58px;right:14px}.hud-skills-row{gap:6px;display:flex}.hud-skill{width:92px;min-height:64px;color:var(--paper);text-align:left;background:linear-gradient(#2a4a28f2,#0e0c0af2);border:1px solid #c9a22773;border-radius:4px;flex-direction:column;gap:2px;padding:6px 6px 8px;display:flex}.hud-skill.empty{opacity:.45;background:#14110ed9}.hud-skill .key{color:var(--gold);align-self:flex-end;font-size:10px}.hud-skill .label{font-size:11px;font-weight:600;line-height:1.2}.hud-skill .meta{color:var(--mist);font-size:10px}.hud-attack{min-width:120px;color:var(--paper);background:linear-gradient(#8a3a3a,#5a2222);border:1px solid #c9a22766;border-radius:4px;padding:.55rem .9rem;font-weight:700}.hud-menubar{background:#0e0c0ae6;border:1px solid #c9a22773;border-radius:4px;gap:6px;padding:6px 8px;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.hud-menubar button{background:#00000059;border:1px solid #f2e6d033;border-radius:3px;padding:.45rem .7rem;font-size:12px;font-weight:600}.hud-combat-log{color:#e8d9b0;background:#0e0c0ad1;border:1px solid #c9a22759;border-radius:4px;max-width:min(420px,48vw);padding:8px 12px;font-size:12px;position:absolute;bottom:14px;left:14px}.hud-bag{border:1px solid var(--line);background:#100e0cf5;border-radius:6px;width:min(420px,90vw);padding:12px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 16px 40px #0000008c}.hud-bag.hidden{display:none}.bag-head{color:var(--gold);justify-content:space-between;align-items:center;margin-bottom:10px;font-family:Josefin Sans,sans-serif;display:flex}.bag-grid{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.bag-cell{background:#00000059;border:1px solid #f2e6d029;border-radius:4px;justify-content:space-between;gap:8px;padding:8px 10px;font-size:12px;display:flex}@media (width<=900px){.shell{grid-template-rows:auto 42vh;grid-template-columns:1fr}.panel{border-right:0;border-bottom:1px solid var(--line)}.hud-skills-row{flex-wrap:wrap;justify-content:flex-end}.hud-skill{width:76px;min-height:56px}.hud-menubar{left:12px;right:12px;overflow-x:auto;transform:none}}
