:root{color:#17201b;font-synthesis:none;text-rendering:optimizelegibility;background:#f4f0e7;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button{cursor:pointer;border:0}button:disabled{cursor:not-allowed;opacity:.5}.app-shell{width:calc(100% - 16px);max-width:1920px;margin:0 auto;padding:8px 0}.topbar,.lobby-header{justify-content:space-between;align-items:center;gap:16px;margin-bottom:8px;display:flex}.topbar h1,.panel h2{letter-spacing:0;margin:0}.topbar h1{font-size:24px;line-height:1.1}.eyebrow{color:#69736d;text-transform:uppercase;margin:0 0 2px;font-size:13px;font-weight:700}.status-pill,.ready{color:#5c665f;white-space:nowrap;background:#fffaf0;border:1px solid #d0c5b0;border-radius:999px;justify-content:center;align-items:center;min-height:28px;padding:0 10px;font-size:13px;font-weight:700;display:inline-flex}.ready-on{color:#215928;background:#edf8e9;border-color:#7da87b}.home-grid,.lobby-grid{gap:16px;display:grid}.home-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)}.lobby-grid{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start}.panel{background:#fffaf0;border:1px solid #d8ccb9;border-radius:8px;min-width:0;padding:20px;box-shadow:0 1px #2d26180d}.panel h2{margin-bottom:16px;font-size:20px}.event-panel{grid-column:1/-1}label{color:#4e574f;gap:8px;margin-bottom:14px;font-size:14px;font-weight:700;display:grid}input{color:#17201b;background:#fffdf8;border:1px solid #c8bea9;border-radius:6px;outline:none;width:100%;min-height:44px;padding:0 12px}input:focus{border-color:#4d7257;box-shadow:0 0 0 3px #4d72572e}.segmented,.actions{flex-wrap:wrap;gap:8px;display:flex}.segmented{margin-bottom:14px}.segmented button,.primary,.secondary{border-radius:6px;min-height:42px;padding:0 14px;font-weight:800}.segmented button{color:#4e574f;background:#fffdf8;border:1px solid #c8bea9}.segmented .active{color:#f9fbf7;background:#4d7257;border-color:#4d7257}.primary{color:#fffdf8;background:#2e6042}.secondary{color:#334239;background:#fffdf8;border:1px solid #c8bea9}.notice{background:#fffaf0;border:1px solid #c8bea9;border-radius:8px;grid-column:1/-1;gap:3px;padding:14px 16px;display:grid}.notice.info{background:#f0f7fb;border-color:#9fb6c8}.notice.error{background:#fff2ef;border-color:#d4a199}.notice span{color:#4e574f}.public-code{letter-spacing:0;font-size:34px;font-weight:900;line-height:1}.room-meta{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 16px;display:grid}.room-meta div{background:#f4f0e7;border-radius:6px;min-width:0;padding:10px}.room-meta dt{color:#69736d;font-size:12px;font-weight:800}.room-meta dd{overflow-wrap:anywhere;margin:2px 0 0;font-weight:900}.player-list,.event-list{gap:8px;display:grid}.player-row,.event-row{border-bottom:1px solid #eadfca;justify-content:space-between;align-items:center;gap:12px;min-height:44px;padding:8px 0;display:flex}.player-row:last-child,.event-row:last-child{border-bottom:0}.seat{color:#69736d;min-width:36px;font-weight:900;display:inline-block}.event-row time{color:#69736d;white-space:nowrap;font-size:13px}.game-board-shell{min-width:0}.game-layout{background:#111;border:4px solid #111;grid-template-rows:minmax(0,1fr) minmax(0,1fr) 132px;grid-template-columns:minmax(220px,.8fr) minmax(560px,2.15fr) minmax(440px,1.65fr);gap:4px;height:calc(100vh - 70px);min-height:560px;display:grid;overflow:hidden}.game-area{background:#fffdf8;min-width:0;min-height:0;padding:12px;overflow:hidden}.player-area{grid-area:1/1}.action-area{grid-area:2/1;align-content:start;display:grid}.map-area{grid-area:1/2/3;place-items:center;display:grid;overflow:hidden}.unit-deck-area{grid-area:1/3/3;grid-template-rows:auto minmax(0,1fr);gap:14px;display:grid}.hand-area{z-index:8;grid-area:3/1/auto/4;grid-template-rows:minmax(0,1fr);grid-template-columns:76px minmax(0,1fr);align-items:stretch;gap:12px;display:grid;overflow:visible}.area-header{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.area-header h2,.hand-area h2{letter-spacing:0;margin:0;font-size:18px}.hand-title{border-right:2px solid #eadfca;place-items:center;height:100%;display:grid}.icon-text-button{color:#334239;background:#fffdf8;border:1px solid #c8bea9;border-radius:6px;min-height:32px;padding:0 10px;font-size:13px;font-weight:800}.compact-player-list{gap:8px;display:grid}.compact-player{background:#fffaf0;border:1px solid #eadfca;border-radius:6px;align-items:start;gap:8px;min-height:58px;padding:8px;display:grid}.compact-player.current{border-color:#4d7257;box-shadow:inset 0 0 0 1px #4d7257}.player-name-line{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.player-name-line strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.player-public-summary{color:#4e574f;white-space:nowrap;font-size:13px;font-weight:800;line-height:1.25}.turn-marker,.state-version{color:#215928;font-size:12px;font-weight:900}.state-version{color:#69736d}.action-status,.decision-box{background:#fffaf0;border:1px solid #eadfca;border-radius:6px;gap:4px;margin-bottom:8px;padding:8px;display:grid}.decision-box.active{background:#edf8e9;border-color:#7da87b}.recruit-actions{background:#fffdf8;border:1px solid #c8bea9;border-radius:6px;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;padding:8px;display:flex}.scout-actions{background:#fffdf8;border:1px solid #c8bea9;border-radius:6px;gap:10px;margin-bottom:8px;padding:10px;display:grid}.scout-actions strong{line-height:1.35}.scout-actions div{grid-template-columns:1fr 1fr;gap:8px;display:grid}.dice-actions{background:#fffdf8;border:1px solid #c8bea9;border-radius:6px;gap:10px;margin-bottom:8px;padding:10px;display:grid}.dice-actions strong{letter-spacing:0;font-size:20px}.move-actions{background:#fffdf8;border:1px solid #c8bea9;border-radius:6px;gap:10px;margin-bottom:8px;padding:10px;display:grid}.move-actions strong{line-height:1.35}.combat-target-actions,.capital-check-actions,.combat-submit-actions,.relic-use-actions,.recover-actions,.generate-relic-actions{background:#fffdf8;border:1px solid #c8bea9;border-radius:6px;gap:10px;margin-bottom:8px;padding:10px;display:grid}.combat-target-actions strong,.capital-check-actions strong,.capital-check-actions span{line-height:1.35}.capital-dice-result{letter-spacing:0;font-size:20px;display:block}.combat-submit-actions strong,.combat-submit-actions span,.relic-use-actions strong,.relic-use-actions span{line-height:1.35}.combat-panel{grid-template-rows:44px minmax(0,1fr) auto auto;gap:10px;height:100%;min-height:0;display:grid}.combat-versus{text-align:center;background:#fffdf8;border:3px solid #111;border-radius:6px;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px;min-height:44px;padding:6px 10px;display:grid}.combat-versus strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.combat-waiting,.combat-clash-log,.combat-selected-deck,.combat-revealed-cards,.combat-result{background:#fffdf8;border:1px solid #c8bea9;border-radius:6px;align-content:start;gap:10px;min-height:0;padding:10px;display:grid}.combat-clash-log{text-align:center;border-color:#111;padding:6px 10px;font-weight:900}.combat-revealed-cards{background:0 0;border:0;grid-template-columns:minmax(0,1fr) minmax(0,1fr);place-items:center;gap:24px;padding:10px 0}.combat-selected-deck{background:0 0;border:0;padding:0 26px 4px}.combat-slot-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;min-height:0;display:grid}.combat-deck-slot{aspect-ratio:2/3;color:#69736d;background:#fffaf0;border:2px dashed #c8bea9;border-radius:6px;place-items:center;min-height:0;font-size:13px;font-weight:900;display:grid;overflow:hidden}.combat-revealed-slot{background:#fffdf8;border:3px solid #111;width:min(100%,170px);max-height:100%}.combat-own-deck-row{grid-template-columns:repeat(3,minmax(0,96px));justify-content:center;gap:12px;display:grid}.combat-own-deck-slot{border:2px solid #111;width:96px}.combat-deck-slot img{object-fit:contain;width:100%;height:100%}.hand-card.combat-selected{outline-offset:2px;outline:3px solid #215928}.hand-card.combat-disabled{opacity:.35}.generate-relic-actions div{grid-template-columns:1fr 1fr;gap:8px;display:grid}.move-button-row{flex-wrap:wrap;gap:8px;display:flex}.move-button-row button{min-width:48px}.label{color:#69736d;text-transform:uppercase;margin:0;font-size:12px;font-weight:900}.compact-events{margin-top:8px}.compact-events .event-row{min-height:30px;padding:5px 0;font-size:13px}.map-frame{background:#5d5d5d;width:100%;height:100%;min-height:0;max-height:100%;display:block;overflow:hidden}.map-board{aspect-ratio:572/780;max-width:100%;height:100%;margin:0 auto;position:relative}.map-board>img{object-fit:contain;width:100%;height:100%;display:block}.player-map-overlay{pointer-events:none;position:absolute;inset:0}.player-map-marker{color:#172018;width:clamp(26px,3.4vw,40px);height:clamp(26px,3.4vw,40px);transform:translate(calc(-50% + var(--marker-offset-x)), calc(-50% + var(--marker-offset-y)));transform-origin:50%;z-index:4;place-items:center;display:grid;position:absolute}.player-map-marker.current-turn{z-index:5}.player-map-marker-icon{background:var(--marker-fill);filter:drop-shadow(0 0 1px #172018)drop-shadow(0 2px 3px #0000006b);grid-area:1/1;width:100%;height:100%;-webkit-mask:url(/assets/player/player.svg) 50%/contain no-repeat;mask:url(/assets/player/player.svg) 50%/contain no-repeat}.player-map-marker.current-turn .player-map-marker-icon{filter:drop-shadow(0 0 1px #172018)drop-shadow(0 0 5px #fffffff2)drop-shadow(0 2px 3px #0000006b)}.player-map-marker-seat{fill:#172018;pointer-events:none;background:#ffffffdb;border-radius:999px;grid-area:1/1;place-items:center;width:48%;height:48%;font-size:clamp(11px,1.35vw,15px);font-weight:900;line-height:1;display:grid}.unit-card-grid{grid-template-rows:repeat(3,minmax(0,1fr));grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;min-height:0;display:grid}.unit-card{background:#f4f0e7;border:1px solid #d8ccb9;border-radius:6px;grid-template-rows:minmax(0,1fr) 22px;min-width:0;min-height:0;margin:0;display:grid;position:relative;overflow:hidden}.unit-card figcaption{color:#334239;background:#f4f0e7;place-items:center;font-size:13px;font-weight:900;line-height:1;display:grid}.unit-card.selected{border-color:#2e6042;box-shadow:0 0 0 2px #2e60423d}.unit-card-button{background:#fffdf8;min-width:0;min-height:0;padding:0;display:block}.unit-card-button:disabled{cursor:not-allowed;filter:grayscale(.75)}.unit-card img{object-fit:contain;background:#fffdf8;width:100%;height:100%;min-height:0;padding:4px}.confirm-popover{z-index:5;background:#fffdf8;border:1px solid #2e6042;border-radius:6px;gap:6px;padding:10px;display:grid;position:absolute;inset:auto 6px 30px;box-shadow:0 12px 24px #17201b2e}.confirm-popover span{font-size:13px;font-weight:700}.confirm-popover div{grid-template-columns:1fr 1fr;gap:6px;display:grid}.confirm-yes,.confirm-no{border-radius:5px;min-height:30px;font-size:13px;font-weight:900}.confirm-yes{color:#fffdf8;background:#2e6042}.confirm-no{color:#334239;background:#fffdf8;border:1px solid #c8bea9}.hand-placeholder{color:#69736d;background:#fffaf0;border:2px dashed #d8ccb9;border-radius:8px;place-items:center;height:100%;font-weight:800;display:grid}.hand-card-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(82px,172px);align-items:center;gap:16px;height:100%;min-height:0;display:grid;overflow:visible}.hand-card-group{align-items:center;gap:8px;min-width:0;padding:2px;display:flex;overflow:auto visible}.available-hand{justify-content:flex-start}.resting-hand{justify-content:flex-end}.hand-card{aspect-ratio:3/4.2;background:#fffdf8;border:1px solid #d8ccb9;border-radius:6px;flex:none;height:100%;max-height:118px;margin:0;position:relative;overflow:hidden;box-shadow:0 2px 5px #17201b1f}.hand-card.recover-confirming{z-index:6;overflow:visible}.hand-card img{object-fit:contain;width:100%;height:100%;display:block}.hand-card-button{cursor:pointer;background:0 0;border:0;border-radius:0;width:100%;min-width:0;height:100%;min-height:0;padding:0;display:block}.hand-card.resting{background:#17201b}.hand-card.resting img{filter:brightness(.45)saturate(.55);opacity:.75}.hand-card.resting .hand-card-button:hover img{filter:brightness(.62)saturate(.72);opacity:.9}.hand-card.recovering{border-color:#4d7257;box-shadow:0 0 0 2px #4d725738}.hand-confirm-popover{background:#fffdf8;border:1px solid #2e6042;border-radius:6px;gap:6px;width:150px;padding:9px;display:grid;position:absolute;top:8px;right:4px;box-shadow:0 10px 22px #1f251e3d}.hand-confirm-popover span{font-size:13px;font-weight:700}.hand-confirm-popover div{grid-template-columns:1fr 1fr;gap:6px;display:grid}.relic-slot{border-left:2px solid #eadfca;justify-content:flex-end;align-items:center;gap:8px;min-width:0;height:100%;padding-left:10px;display:flex;overflow:visible}.relic-card,.empty-relic-slot{aspect-ratio:3/4.2;background:#fffdf8;border:1px solid #d8ccb9;border-radius:6px;height:100%;max-height:118px;margin:0;overflow:hidden;box-shadow:0 2px 5px #17201b1f}.relic-card{position:relative}.relic-card img{object-fit:contain;width:100%;height:100%;display:block}.relic-card.keep-confirming{z-index:7;overflow:visible}.relic-card-button{cursor:pointer;background:0 0;border:0;border-radius:0;width:100%;min-width:0;height:100%;min-height:0;padding:0;display:block}.relic-card-button:hover img{filter:brightness(1.06)}.relic-confirm-popover{background:#fffdf8;border:1px solid #2e6042;border-radius:6px;gap:6px;width:160px;padding:9px;display:grid;position:absolute;bottom:calc(100% - 8px);right:0;box-shadow:0 10px 22px #1f251e3d}.relic-confirm-popover span{font-size:13px;font-weight:700}.relic-confirm-popover div{grid-template-columns:1fr 1fr;gap:6px;display:grid}.empty-relic-slot{background:#f4f0e7;border-style:dashed}@media (width<=840px){.home-grid,.lobby-grid{grid-template-columns:1fr}.topbar,.lobby-header{flex-direction:column;align-items:flex-start}.room-meta{grid-template-columns:1fr}.game-layout{grid-template-rows:auto auto minmax(320px,auto) auto auto;grid-template-columns:1fr;min-height:0}.player-area,.action-area,.map-area,.unit-deck-area,.hand-area{grid-area:auto/1}.unit-card-grid{grid-auto-rows:minmax(130px,auto)}}
