:root{color-scheme:dark;--bg:#2b3033;--panel:#383f42;--deep:#262c2f;--line:#626a68;--soft-line:#4c5555;--text:#f3ebdd;--muted:#b9bfb4;--brass:#c8ab70;--brass-dark:#8b754b;--tank:#ad8be5;--damage:#e6c667;--good:#84ad8e;--danger:#d68d80}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:13px/1.55 'Malgun Gothic','Segoe UI',sans-serif}button,input,select{font:inherit}button{cursor:pointer;color:var(--text);background:#424a4b;border:1px solid #737a70;padding:7px 12px;border-radius:2px;transition:background .12s,border-color .12s}button:hover{background:#50584f;border-color:var(--brass)}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--brass);outline-offset:2px}button:disabled{opacity:.42;cursor:not-allowed}button.primary{background:#7c6948;border-color:#c8ab70;color:#fff6df}button.primary:hover{background:#947f54}.quiet{background:transparent;border-color:var(--soft-line)}.danger{color:#efb1a5}input,select{background:#2c3335;color:var(--text);border:1px solid #6a7370;padding:8px;border-radius:2px;max-width:100%}input[type=checkbox]{accent-color:var(--brass)}input[type=number]{width:85px}h1,h2,h3,p{margin-top:0}h1{font-size:23px;font-weight:600;letter-spacing:-.6px;margin-bottom:4px}h2{font-size:16px}h3{font-size:14px}p{margin-bottom:10px}small,.muted{color:var(--muted)}small{font-size:10px}.brass{color:var(--brass)}.tank{color:var(--tank)}.damage{color:var(--damage)}.app{height:100dvh;min-height:720px;display:grid;grid-template-rows:72px 46px minmax(0,1fr) 184px;gap:10px;padding:12px;max-width:1920px;margin:auto}.topbar{display:flex;align-items:center;gap:24px;justify-content:space-between;border:1px solid var(--brass-dark);background:var(--deep);box-shadow:inset 0 0 0 3px #31383a;padding:10px 20px}.brand{display:flex;align-items:center;gap:12px;font-size:21px;letter-spacing:1px;font-family:Georgia,'Malgun Gothic',serif;white-space:nowrap}.brand small{display:block;font:8px/1.7 'Segoe UI',sans-serif;letter-spacing:2.5px;color:var(--brass)}.brand-mark{font-size:38px;color:var(--brass)}.top-resources{display:flex;align-items:center;gap:24px;font-size:12px;color:var(--muted)}.top-resources strong{font-size:17px;font-weight:500;margin-left:8px;color:var(--brass)}.top-actions{display:flex;gap:10px;align-items:center}.icon-button{width:38px;height:35px;padding:7px;display:grid;place-items:center}.icon-button svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.audio-control{position:relative}.audio-panel{position:absolute;z-index:20;right:0;top:44px;width:230px;padding:16px;background:var(--deep);border:1px solid var(--brass);box-shadow:0 8px 30px #0007}.audio-panel label{display:flex;justify-content:space-between;gap:12px}.audio-panel input[type=range]{width:100%;margin:12px 0;accent-color:var(--brass)}.audio-panel .mute-row{justify-content:start}.navigation{display:flex;gap:5px;align-items:stretch;overflow:auto;scrollbar-width:thin}.navigation button{min-width:83px;background:#343b3e;border-color:#626b65;color:var(--muted);white-space:nowrap}.navigation button.active{background:var(--panel);color:var(--brass);border-top:2px solid var(--brass);border-bottom-color:var(--panel);font-weight:bold}.workspace{display:grid;grid-template-columns:205px minmax(0,1fr) 246px;gap:10px;min-height:0}.panel{border:1px solid var(--line);background:var(--panel);min-width:0}.panel-title{background:#303739;border-bottom:1px solid var(--line);padding:9px 12px;font-size:12px;color:var(--brass);display:flex;align-items:center;justify-content:space-between;min-height:36px;letter-spacing:.5px}.panel-title small{font-size:8px;font-weight:normal;letter-spacing:.6px}.character{overflow:auto;scrollbar-width:thin}.character .body{padding:13px}.portrait{position:relative;background:#303639;border:1px solid #6b7063;padding:12px;text-align:center}.portrait img{width:94px;height:94px;object-fit:contain}.portrait .level{position:absolute;right:5px;bottom:4px;font-size:10px;color:var(--brass)}.character-name{font-size:19px;text-align:center;margin:8px 0 2px}.equipped-title{font-size:11px;color:var(--brass);text-align:center;min-height:19px;overflow-wrap:anywhere}.job-label{text-align:center;font-size:11px;margin:7px 0 13px}.meter{position:relative;background:#252c2d;border:1px solid #666e66;height:18px;margin:7px 0;overflow:hidden}.meter i{display:block;height:100%;background:#8d695f}.meter.mp i{background:#647e91}.meter.exp i{background:#87916c}.meter span{position:absolute;inset:0;text-align:center;font-size:10px;line-height:16px;text-shadow:0 1px 2px #000}.stat-list{display:grid;grid-template-columns:1fr auto;gap:7px;font-size:11px;margin-top:15px;padding-top:12px;border-top:1px solid var(--soft-line)}.stat-list dt{color:var(--muted)}.stat-list dd{margin:0}.wide{width:100%}.character-actions{display:grid;gap:6px;margin-top:14px}.scene{overflow:auto;scrollbar-width:thin;position:relative}.scene-head{padding:20px 22px 16px;border-bottom:1px solid var(--soft-line)}.scene-head p{font-size:11px;color:var(--muted);margin:5px 0 0}.scene-body{padding:18px 22px}.eyebrow{font-size:9px;color:var(--brass);letter-spacing:1.7px;margin-bottom:5px}.status-column{display:flex;flex-direction:column;gap:10px;overflow:auto;scrollbar-width:thin}.status-body{padding:13px;font-size:11px}.status-body strong{font-weight:500;color:var(--brass)}.status-body p:last-child{margin-bottom:0}.rule{border:0;border-top:1px solid var(--soft-line);margin:12px 0}.timer{font-variant-numeric:tabular-nums;color:var(--brass);font-size:18px;letter-spacing:1px}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.between{justify-content:space-between}.stack{display:grid;gap:12px}.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.card{border:1px solid var(--soft-line);padding:16px;background:#333b3d;min-width:0}.card h2{color:#e4d4af;font-weight:500;margin-bottom:8px}.card p{font-size:12px;color:var(--muted)}.card .meta{font-size:10px;color:var(--brass);margin-top:10px}.pill{border:1px solid #737b6b;color:var(--muted);font-size:10px;padding:2px 7px;display:inline-block}.pill.done{color:var(--good);border-color:#76967b}.empty{padding:30px 20px;text-align:center;color:var(--muted)}.note{padding:11px 14px;border:1px solid #756d54;background:#3f4036;color:#d9cfb6;font-size:11px;margin-bottom:14px}.job-switch{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:16px}.job-switch button{padding:10px 3px;font-size:11px}.job-switch img{width:44px;height:44px;display:block;margin:0 auto 6px}.job-switch button.selected{border-color:var(--brass);background:#59513d}.equipment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:18px}.equipment-slot{border:1px solid var(--soft-line);padding:11px;display:flex;gap:10px;align-items:center;justify-content:space-between;min-width:0}.equipment-slot b{font-size:12px;font-weight:500}.equipment-slot small{display:block}.equipment-slot button{padding:5px 7px;font-size:11px}.skill-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.skill-card{border:1px solid var(--soft-line);padding:12px;min-width:0;background:#30383a}.skill-card img{width:62px;height:62px;float:left;margin:0 10px 7px 0;border:1px solid #93938a}.skill-card h3{font-weight:500;margin:2px 0 4px;font-size:12px}.skill-card p{font-size:10px;min-height:45px;clear:both;color:var(--muted);margin:8px 0}.skill-card .buttons{display:flex;gap:5px;flex-wrap:wrap}.skill-card button{font-size:10px;padding:5px 7px}.section-label{margin:20px 0 10px;color:var(--brass);font-size:13px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:11px}th,td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--soft-line);white-space:normal}th{color:var(--brass);font-weight:500;background:#303739}td button{font-size:10px;padding:5px 7px}.quantity{font-variant-numeric:tabular-nums}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:13px}.filters input[type=search]{flex:1;min-width:160px}.inventory-actions{display:flex;gap:6px;margin:12px 0;flex-wrap:wrap}.overflow{border-color:var(--danger);background:#4b3d37}.overflow .panel-title{color:#efb1a5}.tilemap{display:grid;grid-template-columns:repeat(20,minmax(0,1fr));border-left:1px solid #546059;border-top:1px solid #546059;margin-bottom:13px;aspect-ratio:20/12}.tile{aspect-ratio:1;padding:0;border:0;border-radius:0;border-right:1px solid #546059;border-bottom:1px solid #546059;background:#45504a;position:relative;color:#b5bea4;font-size:13px;min-width:0}.tile.forest{background:#384b41}.tile.water{background:#3b5863}.tile.road,.tile.bridge{background:#6c6650}.tile.mountain{background:#474b4c}.tile.current{box-shadow:inset 0 0 0 2px var(--brass);color:#fff4bb}.tile.adjacent{outline:1px solid #b7ba86;outline-offset:-3px}.tile img{height:65%;width:65%;object-fit:contain;position:absolute;left:17.5%;top:17.5%}.tile .player{position:relative;text-shadow:0 1px 3px #000;font-size:17px}.map-controls{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}.direction-pad{display:grid;grid-template-columns:repeat(3,36px);gap:3px}.direction-pad button{padding:4px}.direction-pad .up{grid-column:2}.direction-pad .left{grid-column:1;grid-row:2}.direction-pad .down{grid-column:2;grid-row:2}.direction-pad .right{grid-column:3;grid-row:2}.battle{border:1px solid #8d7a54;background:#303738;padding:19px;margin-bottom:16px}.battle h2{font-size:20px;margin-bottom:5px}.battle .enemy-bar{height:20px;margin:12px 0 16px}.battle-actions{display:flex;gap:7px;flex-wrap:wrap}.battle-actions button{min-width:95px;font-size:11px}.battle-actions img{width:30px;height:30px;vertical-align:middle;margin-right:6px}.battle-log{margin-top:15px;padding-top:10px;border-top:1px solid var(--soft-line);font-size:11px;color:var(--muted)}.podium{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}.podium .card{text-align:center;padding:16px 8px}.podium .rank{font-family:Georgia,serif;font-size:30px;color:var(--brass);margin-bottom:5px}.podium .name{font-size:16px;overflow-wrap:anywhere}.podium .title{font-size:10px;color:#dcc799;min-height:32px;margin-top:7px;overflow-wrap:anywhere}.podium .floor{color:var(--muted);font-size:11px}.season-summary{display:flex;justify-content:space-between;align-items:center;background:#2f3739;padding:12px 16px;border:1px solid var(--line);margin-bottom:14px;gap:12px;flex-wrap:wrap}.floor-preview{border:1px solid var(--soft-line);padding:16px;margin-top:15px}.craft-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.craft-row select{max-width:260px}.recipe-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.recipe{border:1px solid var(--soft-line);padding:12px}.recipe h3{margin:0 0 5px;font-weight:500}.recipe p{font-size:10px;color:var(--muted);min-height:32px}.dock{display:grid;grid-template-columns:1fr 1fr;gap:10px;min-height:0}.chat-panel{display:grid;grid-template-rows:36px minmax(0,1fr) 38px;min-height:0}.log-panel{display:grid;grid-template-rows:36px minmax(0,1fr);min-height:0}.messages{overflow:auto;padding:9px 12px;font-size:11px;scrollbar-width:thin;overflow-wrap:anywhere}.messages p{margin:0 0 5px}.messages .time{color:#929d95;margin-right:8px;font-size:10px;font-variant-numeric:tabular-nums}.messages .nickname{color:#d5c39b;margin-right:7px}.messages button{font-size:10px;padding:1px 6px;margin-left:8px}.chat-input{display:flex;gap:5px;padding:4px 7px;border-top:1px solid var(--soft-line)}.chat-input input{flex:1;min-width:0;padding:4px 7px;font-size:11px}.chat-input button{font-size:11px;padding:3px 10px}.connection{color:var(--muted);font-size:9px;letter-spacing:0}.scene-loading{padding:80px 30px;text-align:center;color:var(--muted)}dialog{color:var(--text);background:var(--panel);border:1px solid var(--brass);max-width:min(860px,94vw);max-height:88dvh;min-width:320px;padding:25px;box-shadow:0 20px 100px #000a}dialog::backdrop{background:#101718b8}.dialog-close{position:absolute;right:10px;top:8px;border:0;background:transparent;font-size:23px;padding:0 7px}#dialog-content h2{color:var(--brass);padding-right:20px}#dialog-content .auth-form{display:grid;gap:12px;margin-top:18px;min-width:min(350px,75vw)}.auth-form label{display:grid;gap:5px;color:var(--muted);font-size:11px}.auth-form .error{color:#f0b4a7;min-height:20px}.toast{position:fixed;z-index:100;bottom:25px;left:50%;transform:translateX(-50%);background:#202729f0;border:1px solid var(--brass);padding:13px 22px;color:#f5e5bf;max-width:90vw;box-shadow:0 5px 25px #0007}.achievement-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.achievement{border:1px solid var(--soft-line);padding:14px}.achievement.earned{border-color:#7e9b7e}.achievement p{font-size:11px;color:var(--muted)}.inline-form{display:flex;gap:8px;flex-wrap:wrap;align-items:end}.inline-form label{display:grid;gap:5px;color:var(--muted);font-size:11px}.pending{color:var(--muted);font-size:10px}.progress-steps{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin:15px 0}.progress-steps div{padding:10px 5px;background:#303739;border:1px solid var(--soft-line);text-align:center;font-size:10px}.progress-steps b{display:block;color:var(--brass);font-size:13px}.progress-steps .done{border-color:#7c9374}.text-center{text-align:center}[hidden]{display:none!important}@media(max-width:1250px){.workspace{grid-template-columns:180px minmax(0,1fr) 210px}.top-resources{gap:12px}.skill-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.navigation button{min-width:75px;padding:7px}.scene-head{padding:17px}.scene-body{padding:15px}}@media(max-width:980px){.workspace{grid-template-columns:165px minmax(0,1fr)}.status-column{display:none}.top-resources{gap:9px;font-size:10px}.top-resources strong{font-size:13px}.brand{font-size:17px}.topbar{padding:8px 12px;gap:12px}.app{padding:8px;gap:8px;grid-template-rows:66px 43px minmax(0,1fr) 170px}.cards{grid-template-columns:1fr}}@media(max-width:680px){.app{height:auto;min-height:100dvh;display:block;padding:6px}.topbar{position:sticky;top:0;z-index:10;min-height:64px}.brand-mark{display:none}.brand{font-size:15px}.brand small{font-size:6px;letter-spacing:1px}.top-resources{display:none}.navigation{margin:8px 0;height:42px}.workspace{display:block}.character{display:none}.scene{min-height:480px;max-height:70dvh}.dock{display:grid;grid-template-columns:1fr;margin-top:8px;gap:8px}.chat-panel{height:175px}.log-panel{height:140px}.skill-grid,.equipment-grid,.recipe-list,.achievement-grid{grid-template-columns:1fr}.scene-body{padding:12px}.scene-head{padding:15px}.job-switch img{width:34px;height:34px}.job-switch button{font-size:9px}.podium{gap:5px}.podium .name{font-size:12px}.podium .card{padding:9px 5px}.progress-steps{gap:4px}.tile{font-size:9px}.tile .player{font-size:12px}}
.bag-icon{display:inline-flex;flex:none;align-items:center;justify-content:center;width:42px;height:42px;background:#2c3335;border:1px solid #737a70;border-radius:3px;color:#f3ebdd;padding:4px}.bag-icon svg{width:100%;height:100%;fill:currentColor}.bag-item{display:flex;align-items:center;gap:10px}.bag-item b{font-weight:500;display:block}.bag-item small{display:block;margin-top:3px}.bag-filters,.bag-slots{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0}.bag-filters button{flex:1;padding:7px 9px;white-space:nowrap}.bag-filters small{margin-left:4px}.bag-slots button{display:flex;align-items:center;gap:5px;padding:5px 7px;font-size:11px}.bag-slots .bag-icon{width:27px;height:27px;padding:2px;border:0;background:transparent}.bag-slots [aria-pressed=true]{border-color:var(--brass);color:var(--brass);background:#514b3d}.bag-table td{vertical-align:middle}.bag-table th:nth-child(3){white-space:nowrap}.bag-table td:first-child{width:22px;padding:8px 4px}.bag-table td:last-child button{font-size:10px;padding:6px;white-space:nowrap}.bag-table input[type=number]{width:60px}.bag-help{font-size:10px}.update-notice{position:fixed;right:18px;bottom:20px;z-index:1000;width:min(390px,calc(100vw - 28px));padding:20px;background:var(--panel);color:var(--text);border:1px solid var(--brass);box-shadow:0 8px 36px #0009;border-radius:4px}.update-notice h2{color:var(--brass);font-size:16px}.update-notice p{font-size:13px}@media(max-width:520px){.bag-table td{padding:8px 3px}.bag-icon{width:32px;height:32px}.bag-item{gap:6px}.bag-item b{font-size:11px}.bag-item small{font-size:9px}.bag-filters button{padding:6px 5px;font-size:11px}.bag-table th{font-size:10px}.bag-table td:last-child button{font-size:9px}.bag-table input[type=number]{width:44px}.bag-view .inventory-actions{gap:5px}.bag-view .inventory-actions button{font-size:10px;padding:6px}.bag-table td:nth-child(3){font-size:11px}.bag-slots{gap:4px}.bag-slots button{font-size:10px}}
.dialog-actions{display:flex;justify-content:flex-end;margin-top:16px}
.guild-links{grid-auto-rows:1fr}.guild-links .card{display:flex;flex-direction:column}.guild-links .card>button{align-self:flex-end;margin-top:auto}
.scene.exploring{display:flex;flex-direction:column;overflow:hidden}.exploring>.scene-head{flex:none;padding:12px 18px}.exploring .explore-body{display:flex;flex-direction:column;flex:1;min-height:0;gap:9px;padding:12px 18px}.map-summary{flex:none;font-size:11px}.map-viewport{flex:1;min-height:0;container-type:size;display:grid;place-items:center}.map-viewport .tilemap{width:min(100cqw,calc(100cqh * 20 / 12));aspect-ratio:20/12;grid-template-rows:repeat(12,minmax(0,1fr));margin:0}.tile.unknown,.tile.unknown:hover{background:#292f31;color:transparent}.tile.unknown{border-color:#414b4b}.map-controls{flex:none}.map-controls h3{margin:0 0 3px;font-size:12px}.map-controls p{margin:0;font-size:10px}.explore-body.with-battle{overflow:auto;flex:none}.with-battle .map-viewport{height:240px;flex:none}@media(max-width:680px){.scene.exploring{height:70dvh;min-height:480px}.exploring>.scene-head{padding:12px}.exploring .explore-body{padding:10px;gap:8px}.map-summary{font-size:10px}.map-controls{gap:8px}.map-controls>div:first-child{max-width:calc(100% - 125px)}}
.update-notice{margin:0;left:auto;top:auto;min-width:0}.update-notice::backdrop{background:#10171866}
