:root{color-scheme:dark;--bg:#10171d;--surface:#17212a;--surface-raised:#202e38;--text:#e4ecf3;--muted:#9daebb;--border:#2c3a46;--accent:#97d5c5;--danger:#efaaa2;--shadow:0 14px 36px #050b10a8;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0}body{background:var(--bg);color:var(--text);font-size:15px;line-height:1.45}button,input,select,textarea{font:inherit}button{min-height:40px;padding:.55rem .85rem;border:1px solid #415460;border-radius:6px;background:#24343e;color:var(--text);cursor:pointer}button:hover:not(:disabled){border-color:var(--accent);background:#2b414a}button:disabled{opacity:.48;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,canvas:focus-visible{outline:3px solid var(--accent);outline-offset:3px}a{color:var(--accent)}img{max-width:100%;display:block}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.16}h1{font-size:clamp(1.8rem,3.4vw,3.4rem)}h2{font-size:1.25rem}h3{font-size:1rem}small,.muted{color:var(--muted)}input,select,textarea{min-height:40px;max-width:100%;border:1px solid #465966;border-radius:6px;background:#101a21;color:var(--text);padding:.5rem .65rem}#app,.game-shell{display:flex;flex-direction:column;width:100%;height:100dvh;min-height:0;overflow:hidden}.game-header{height:58px;min-height:58px;display:flex;align-items:center;gap:12px;padding:0 16px;border-bottom:1px solid var(--border);background:#141f27}.game-header img{max-height:42px;width:auto}.game-header h1,.game-header h2,.game-header p{margin:0}.game-header h1{font-size:1.1rem}.resource-bar,.header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.resource-bar{margin-left:auto;color:var(--muted);font-size:.85rem}.header-actions button{min-height:38px}.camp-nav{height:52px;min-height:52px;display:flex;align-items:stretch;gap:4px;padding:4px 12px;overflow-x:auto;overscroll-behavior-inline:contain;border-bottom:1px solid var(--border);background:#121c23}.camp-nav button{flex:none;border-color:transparent;background:transparent;white-space:nowrap}.camp-nav button:hover,.camp-nav button[aria-current=page],.camp-nav button[aria-selected=true],.camp-nav button.active{color:var(--accent);background:#203039;border-color:#405a5d}.workspace{position:relative;flex:1;min-height:0;overflow:hidden}.game-footer{height:26px;min-height:26px;padding:3px 14px;color:var(--muted);border-top:1px solid var(--border);font-size:.72rem;overflow:hidden;white-space:nowrap}.primary{background:var(--accent);border-color:var(--accent);color:#10221e;font-weight:700}.primary:hover:not(:disabled){background:#b9ecdd;color:#10221e}.quiet{background:transparent}.danger{color:#ffd3cd;border-color:#99635e}.danger:hover:not(:disabled){background:#49302f}.inline-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.eyebrow{color:var(--accent);font-size:.73rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.badge,.tag{display:inline-flex;align-items:center;gap:.25em;padding:.2em .55em;border:1px solid #405661;border-radius:999px;background:#1e3038;color:#c7e5dd;font-size:.73rem;line-height:1.2}.stars{color:#eacb7f;letter-spacing:.08em}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.landing{height:100%;min-height:0;display:grid;grid-template-columns:minmax(0,65fr) minmax(280px,35fr);background:radial-gradient(circle at 30% 45%,#29404a,#10171d 67%)}.landing-art,.recruit-art{min-height:0;min-width:0;display:flex;align-items:center;justify-content:center;overflow:hidden}.landing-art img,.recruit-art img{width:100%;height:100%;object-fit:contain}.landing-copy{min-width:0;overflow:auto;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:12px;padding:clamp(20px,4vw,64px);background:linear-gradient(90deg,#10171db0,#17212af2)}.landing-copy p{max-width:48ch;color:#c3d0d8}.landing-copy form{width:100%;display:grid;gap:10px}.landing-copy input{width:100%}
.campaign-screen,.battle-screen{height:100%;min-height:0;display:flex;flex-direction:column}.mission-strip{display:flex;flex:none;gap:8px;overflow-x:auto;padding:9px 12px;border-bottom:1px solid var(--border);background:#141f27}.mission-chip{flex:none;min-width:130px;text-align:left;white-space:nowrap}.mission-chip.selected,.mission-chip[aria-current=true]{border-color:var(--accent);background:#2a4142}.campaign-layout,.battle-layout{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 340px}.board-wrap{position:relative;min-width:0;min-height:0;overflow:hidden;background:#101a1c}.board-wrap canvas{display:block;width:100%;height:100%;touch-action:manipulation}.board-tools{position:absolute;z-index:2;top:12px;right:12px;display:flex;gap:6px}.board-tools button{background:#17242bdd;box-shadow:0 2px 10px #0006}.board-note{position:absolute;z-index:1;bottom:12px;left:12px;max-width:min(75%,460px);padding:7px 10px;border:1px solid #40545a;border-radius:6px;background:#101a20dd;color:#d1dfe1;font-size:.8rem;pointer-events:none}.mission-panel,.battle-panel{min-width:0;min-height:0;overflow:auto;padding:16px;border-left:1px solid var(--border);background:var(--surface)}.mission-panel>*+*,.battle-panel>*+*{margin-top:12px}.objective-callout{padding:12px;border-left:3px solid var(--accent);border-radius:3px;background:#22343a}.objective-callout p:last-child{margin-bottom:0}.rewards{display:flex;gap:6px;flex-wrap:wrap;color:#d9d0ae;font-size:.85rem}.squad-strip{display:flex;gap:6px;overflow-x:auto;padding:4px 0}.squad-slot{flex:none;min-width:68px;min-height:74px;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:4px;border:1px solid var(--border);border-radius:6px;background:#101a21;font-size:.7rem}.squad-slot .paper-doll{width:42px;height:48px}.battle-heading{height:52px;min-height:52px;display:flex;align-items:center;gap:12px;padding:0 14px;border-bottom:1px solid var(--border);background:#141f27}.battle-heading h1,.battle-heading h2,.battle-heading p{margin:0}.battle-heading h1,.battle-heading h2{font-size:1rem}.battle-layout{grid-template-columns:minmax(0,1fr) 300px}.unit-heading{display:flex;align-items:center;gap:12px;min-width:0}.unit-heading h2,.unit-heading h3,.unit-heading p{margin:0}.vitals{display:grid;gap:5px;font-size:.8rem}.vitals progress{width:100%;height:10px;accent-color:var(--accent)}.stat-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 10px;color:#c5d3d9;font-size:.82rem}.stat-list>*{min-width:0}.actions-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.ability-button{min-width:0;text-align:left}.ability-button.selected,.ability-button[aria-pressed=true],.selected{border-color:var(--accent)}.target-card,.forecast{padding:10px;border:1px solid #40555d;border-radius:6px;background:#1d3035}.battle-roster{display:flex;flex-wrap:wrap;gap:5px}.battle-roster button{min-width:48px;padding:4px;font-size:.75rem}.combat-log{max-height:120px;overflow:auto;padding:8px;border:1px solid var(--border);border-radius:6px;background:#101a21;color:var(--muted);font-size:.78rem}.combat-log p{margin:0 0 4px}.phase-banner{position:absolute;z-index:4;top:50%;left:50%;transform:translate(-50%,-50%);max-width:90%;padding:12px 24px;border:1px solid var(--accent);border-radius:8px;background:#14262aea;box-shadow:var(--shadow);color:#e1fff5;font-size:1.25rem;font-weight:700;text-align:center;pointer-events:none}
.scroll-screen{height:100%;min-height:0;overflow:auto;padding:16px}.content-heading{display:flex;align-items:end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}.content-heading h1,.content-heading h2,.content-heading p{margin-bottom:4px}.filter-bar{display:flex;align-items:end;gap:8px;flex-wrap:wrap;margin-bottom:14px}.filter-bar input{min-width:min(260px,100%)}.unit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}.unit-card{display:flex;align-items:center;gap:10px;min-width:0;min-height:100px;padding:8px;text-align:left;background:var(--surface)}.unit-copy{min-width:0;display:grid;gap:3px}.unit-copy strong{overflow-wrap:anywhere}.unit-meta{color:var(--muted);font-size:.78rem}.unit-card.deployed,.deployed{border-color:#82baa9}.unit-card.locked,.locked{filter:saturate(.65)}.pagination{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin:18px 0}.paper-doll{position:relative;flex:none;width:70px;height:85px;display:flex;align-items:center;justify-content:center;overflow:hidden}.paper-doll img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;image-rendering:pixelated}.paper-doll.large{width:110px;height:145px}
.recruit-layout{height:100%;min-height:0;display:grid;grid-template-columns:minmax(0,55fr) minmax(280px,45fr);gap:16px}.recruit-copy{min-width:0;overflow:auto;padding:clamp(16px,3vw,40px)}.recruit-actions{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.odds-table{width:100%;border-collapse:collapse;color:#cad6dc;font-size:.85rem}.odds-table th,.odds-table td{padding:6px;border-bottom:1px solid var(--border);text-align:left}.summon-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.summon-card{min-width:0;padding:10px;border:1px solid #41545a;border-radius:7px;background:#203038;text-align:center;animation:reveal .3s ease-out both}.summon-card .paper-doll{margin:auto}.summon-card.new{border-color:var(--accent)}.summon-card.duplicate{border-color:#686650}.summon-card strong{overflow-wrap:anywhere}@keyframes reveal{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.shop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.shop-card{display:flex;flex-direction:column;gap:8px;padding:14px;border:1px solid var(--border);border-radius:7px;background:var(--surface)}.shop-card h3,.shop-card p{margin:0}.shop-card button{margin-top:auto;align-self:flex-start}.item-stats{color:var(--accent);font-size:.82rem}.journal-entry{margin:0 0 8px;border:1px solid var(--border);border-radius:6px;background:var(--surface)}.journal-entry summary{padding:12px;cursor:pointer;font-weight:700}.journal-entry>:not(summary){margin:0 12px 12px}.dialogue-lines{display:grid;gap:10px}.dialogue-line{padding:10px 12px;border-left:2px solid #719e95;background:#1d2c33}.dialogue-line strong{display:block;color:var(--accent)}.dialogue-line p{margin:3px 0 0}
.game-dialog{width:min(780px,calc(100vw - 24px));max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto;padding:0;border:1px solid #526b72;border-radius:9px;background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.game-dialog::backdrop{background:#050b0ed9}.dialog-heading{position:sticky;z-index:2;top:0;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border);background:#17212af5}.dialog-heading h2,.dialog-heading h3{margin:0}.game-dialog> :not(.dialog-heading){margin:16px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.story-art img{width:100%;height:auto;object-fit:contain}.choice-list{display:grid;gap:8px}.choice-list button{display:grid;gap:3px;text-align:left}.choice-list small{display:block}.unit-detail{display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap}.equipment-list,.settings-list{display:grid;gap:8px}.settings-list label{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:8px 0;border-bottom:1px solid var(--border)}.project-backup-box{padding:14px;border:1px solid #405660;border-radius:7px;background:#122027}.project-backup-box p:last-child{margin-bottom:0}.toast{position:fixed;z-index:100;bottom:44px;left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 24px);padding:10px 16px;border:1px solid #6c9e91;border-radius:7px;background:#19312e;box-shadow:var(--shadow);color:#e8fff8;text-align:center}.error-screen,.loading-screen,.noscript{height:100%;display:grid;place-content:center;gap:12px;padding:24px;text-align:center}.error-screen{color:#ffd3cd}
@media(max-width:700px){.game-header{padding:0 8px;gap:6px}.game-header h1{font-size:.9rem}.game-header img{max-height:32px}.resource-bar{gap:4px;font-size:.72rem}.header-actions{gap:4px}.header-actions button{min-height:36px;padding:.35rem .5rem}.camp-nav{padding-inline:6px}.landing{display:flex;flex-direction:column;overflow:auto}.landing-art{flex:none;height:30vh;min-height:150px}.landing-copy{flex:none;justify-content:flex-start;padding:16px 20px}.landing-copy h1{margin-bottom:0}.campaign-layout,.battle-layout{display:flex;flex-direction:column}.campaign-layout .board-wrap{flex:1;min-height:240px}.mission-panel{flex:none;max-height:210px;border-left:0;border-top:1px solid var(--border);padding:10px 12px}.mission-description{display:none}.battle-layout .board-wrap{flex:1;min-height:210px}.battle-panel{flex:none;max-height:40dvh;border-left:0;border-top:1px solid var(--border);padding:10px 12px}.actions-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.battle-heading{padding-inline:10px}.battle-heading>*{min-width:0}.battle-heading h1,.battle-heading h2{font-size:.9rem}.board-tools{top:6px;right:6px}.board-note{left:6px;bottom:6px;font-size:.72rem}.scroll-screen{padding:12px}.unit-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.recruit-layout{display:flex;flex-direction:column;overflow:auto}.recruit-art{height:30vh;min-height:150px;flex:none}.recruit-copy{overflow:visible;padding:12px}.summon-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.game-footer{padding-inline:8px}}
@media(max-height:520px) and (min-width:701px){.game-header{height:48px;min-height:48px}.camp-nav{height:46px;min-height:46px}.game-footer{display:none}.mission-panel,.battle-panel{padding:10px}}
body.tactics-game{display:flex;flex-direction:column;height:100dvh;min-height:0;overflow:hidden}[hidden]{display:none!important}.home-link{flex:none;display:grid;place-items:center;width:28px;min-height:40px;text-decoration:none;font-size:30px}.game-identity{min-width:0;flex:0 1 auto}.game-identity strong,.game-identity>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-identity strong{font-size:14px}.game-identity>span{color:var(--muted);font-size:11px}.header-actions{flex:none}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:40px;padding:6px}.resource-bar>span{display:flex;align-items:center;gap:5px;white-space:nowrap}.resource-bar small{font-size:10px}.resource-bar svg{width:16px}.camp-nav button{display:flex;align-items:center;gap:8px}.game-footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.game-footer>span{overflow:hidden;text-overflow:ellipsis}.landing-copy h1{font-size:clamp(26px,3vw,44px)}.landing-copy h1 span{display:block;font-size:.58em;line-height:1.5;color:#c8d5df}.landing-copy form button{display:flex;align-items:center;justify-content:center;gap:8px}.mission-panel h1{font-size:24px}.mission-panel h2{font-size:15px;margin-bottom:6px}.mission-chip span{margin-left:7px;font-size:12px}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.board-wrap canvas{touch-action:none}.board-note:empty{display:none}.squad-slot span small{display:block}.rewards>span{display:inline-flex;align-items:center;gap:4px}.rewards svg{width:14px;height:14px}.objective-callout svg{width:16px;height:16px;vertical-align:middle}.battle-heading>div:first-child{flex:1;min-width:0}.battle-heading strong,.battle-heading small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.battle-heading strong{font-size:14px}.battle-heading small{font-size:11px}.battle-heading .inline-actions{flex-wrap:nowrap}.battle-heading #round-label{white-space:nowrap;font-size:12px}.ability-button strong,.ability-button small{display:block}.ability-button strong{font-size:12px}.ability-button small{font-size:10px}.vitals label{display:grid;grid-template-columns:28px 1fr;gap:2px 5px}.vitals label b{text-align:right}.vitals meter{grid-column:1/-1;width:100%;height:10px}.target-card{display:grid;gap:8px}.target-card .forecast{font-size:12px;padding:0;border:0;background:none}.battle-roster button{display:grid;gap:3px;padding:5px 8px}.battle-roster small{font-size:10px}.stat-list div{display:flex;justify-content:space-between;gap:8px}.stat-list dd{margin:0;color:var(--text)}.stat-list dt{text-transform:capitalize}.summon-card{animation-delay:var(--reveal-delay,0ms)}.summon-card>strong,.summon-card>small,.summon-card>.stars{display:block}.summon-card .badge{font-size:10px;margin-top:6px}.shop-card h2{font-size:18px;margin-bottom:0}.item-stats{display:flex;flex-wrap:wrap;gap:8px}.shop-card .inline-actions{margin-top:auto}.game-dialog #dialog-body{margin:0;padding:0 16px 16px}.game-dialog .dialog-heading{margin:0 -16px 14px}.game-dialog .story-art{margin-bottom:14px}.game-dialog .dialog-actions{margin-top:16px}.game-dialog h3{margin-top:18px}.game-dialog details{margin-top:14px}.unit-detail{flex-wrap:nowrap}.unit-detail>div{min-width:0;flex:1}.equipment-list{grid-template-columns:repeat(3,minmax(0,1fr))}.equipment-list label{min-width:0}.equipment-list select{width:100%}.settings-list input[type=checkbox]{width:18px;min-height:18px;accent-color:var(--accent)}.paper-doll.missing{border:1px dashed #50616a;border-radius:5px;color:var(--muted)}.error-screen h1{font-size:28px}.error-screen{align-content:center;justify-items:center}.error-screen p{max-width:55ch}
@media(max-width:700px){.resource-bar small,#save-status{display:none}.mission-panel h1{font-size:19px;margin-bottom:6px}.mission-panel .panel-heading,.mission-panel .squad-strip{display:none}.mission-panel>.eyebrow{margin-bottom:4px}.mission-panel .objective-callout{padding:5px 8px;font-size:12px;margin-top:6px}.mission-panel .rewards{font-size:11px;margin-top:6px}.mission-panel .inline-actions{margin-top:8px}.mission-panel{max-height:210px}.unit-detail .large{width:90px;height:120px}.equipment-list{grid-template-columns:1fr}.battle-heading .inline-actions{gap:4px}.battle-heading #round-label{font-size:11px}.battle-heading .icon-button{width:34px;min-height:40px}.battle-heading .primary{padding:6px 9px;min-height:40px;white-space:nowrap;font-size:12px}.battle-panel>.unit-heading .paper-doll{width:40px;height:45px}.unit-heading h2{font-size:16px}.unit-heading small{font-size:11px}.battle-panel .vitals{grid-template-columns:1fr 1fr;gap:10px}.battle-panel>h3{font-size:12px;margin:8px 0 4px}.battle-panel>*+*{margin-top:8px}.battle-panel .actions-grid{gap:4px}.ability-button{padding:5px 6px;min-height:42px}.battle-panel>.muted{font-size:12px;margin-bottom:0}.unit-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.unit-card{gap:4px}.unit-card .paper-doll{width:48px;height:72px}.unit-copy strong{font-size:12px}.unit-copy small,.unit-copy .stars,.unit-meta{font-size:10px}.filter-bar label{flex:1;min-width:110px}.filter-bar label:first-child{flex-basis:100%}.filter-bar input{width:100%;min-width:0}.game-footer #phase-label{flex:none}.game-footer #context-hint{font-size:10px}.recruit-layout{height:auto}.recruit-art .story-art{width:100%;height:100%}.recruit-art .story-art img{height:100%}.game-dialog .dialog-heading h2{font-size:17px}.game-dialog #dialog-body{padding:0 12px 12px}.game-dialog .dialog-heading{margin:0 -12px 12px}.game-dialog .dialogue-line{padding:8px;font-size:13px}.game-dialog .dialog-actions{justify-content:flex-start}}
@media(max-width:480px){.game-header>.game-logo{display:none}.game-header{gap:6px}.game-identity{max-width:112px}.game-identity strong{font-size:12px}.game-identity>span{display:none}.resource-bar>span:last-child{display:none}.resource-bar{margin-left:auto}.game-footer{height:24px;min-height:24px}.camp-nav button{flex:1;justify-content:center;gap:3px;padding:4px}.camp-nav button svg{width:17px}.camp-nav button span{font-size:10px}.battle-heading>div:first-child{max-width:120px}.battle-heading strong{font-size:12px}.battle-heading small{font-size:10px}.battle-heading [data-action=threat]{display:none}.mission-strip{padding:6px;gap:5px}.mission-chip{min-width:110px;padding:5px 8px;min-height:40px}}
.tactics-game .story-art{height:auto;object-fit:contain;overflow:hidden}.tactics-game .story-art img{height:auto;aspect-ratio:2/1;object-fit:contain}.battle-panel:focus-within{scroll-behavior:auto}.toast{pointer-events:none}
.camp-world{position:relative;width:100%;height:100%;min-height:0;overflow:hidden}.camp-world>canvas{display:block;width:100%;height:100%;touch-action:none}.camp-heading{position:absolute;top:12px;left:12px;padding:8px 12px;display:grid;gap:3px;max-width:calc(100% - 170px);background:#17212aeb;pointer-events:none}.camp-heading strong{font-size:14px}.camp-heading span{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.camp-world-tools{position:absolute;top:12px;right:12px;display:flex;gap:5px}.camp-world-tools button{background:#17212aeb}.camp-interaction{position:absolute;bottom:90px;left:12px;display:flex;align-items:center;gap:8px}.camp-interaction button{display:flex;align-items:center;gap:7px;padding:8px 12px;background:#17212aed}.camp-interaction kbd{border:1px solid var(--border);border-radius:3px;padding:1px 5px;color:var(--muted);font:11px system-ui}.camp-interaction small{padding:3px 6px;border-radius:3px;background:#10171dd9;font-size:11px}.camp-movement-hint{position:absolute;left:50%;bottom:62px;transform:translateX(-50%);white-space:nowrap;margin:0;padding:3px 8px;border-radius:4px;background:#10171ddb;color:#c2d0d9;font-size:11px;pointer-events:none}.tactics-game[data-mode=camp]>.game-footer{display:none}.tactics-dock>button{display:flex;align-items:center;justify-content:center;gap:3px}.tactics-dock>button svg{width:18px;height:18px}.game-dialog.camp-panel{width:min(1100px,calc(100vw - 24px));height:min(760px,calc(100dvh - 24px));max-height:calc(100dvh - 24px);overflow:hidden}.game-dialog.camp-panel #dialog-body{height:100%;display:flex;flex-direction:column;min-height:0}.game-dialog.camp-panel .dialog-heading{flex:none}.camp-panel-content{flex:1;min-height:0;overflow:hidden}.camp-panel-content>.scroll-screen{height:100%;overscroll-behavior:contain}.camp-panel-content .content-heading h1{font-size:28px}.camp-panel-content .campaign-screen{height:100%}.camp-panel-content .mission-strip{padding-inline:0}.camp-panel-content .recruit-layout{height:auto;min-height:100%}
@media(max-width:700px){.camp-heading{top:8px;left:8px;max-width:calc(100% - 146px);padding:6px 8px}.camp-heading strong{font-size:12px}.camp-heading span{font-size:10px}.camp-world-tools{top:8px;right:8px;gap:3px}.camp-world-tools .icon-button{width:38px;min-height:42px}.camp-interaction{left:8px;bottom:92px;gap:5px}.camp-interaction button{font-size:12px;padding:7px 9px;min-height:44px}.camp-interaction kbd{display:none}.camp-movement-hint{font-size:10px;bottom:65px}.tactics-dock>button{padding:5px 7px;min-width:52px;font-size:11px}.game-dialog.camp-panel{width:calc(100vw - 16px);max-width:calc(100vw - 16px);height:calc(100dvh - 16px);max-height:calc(100dvh - 16px)}.camp-panel-content .content-heading h1{font-size:24px}.camp-panel-content .campaign-layout .board-wrap{min-height:180px}.camp-panel-content .mission-panel{max-height:190px;padding:8px}.camp-panel-content .mission-strip{padding-top:4px;padding-bottom:4px}}
html[data-reduced-motion=true] *,html[data-reduced-motion=true] *::before,html[data-reduced-motion=true] *::after{animation:none!important;transition:none!important}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
@media(forced-colors:active){.selected,.deployed,.mission-chip[aria-current=true],.ability-button[aria-pressed=true]{outline:2px solid Highlight;outline-offset:-2px}.toast,.phase-banner,.board-note{border:2px solid CanvasText}}
/* Keep the first actions and save controls within reach on phones. */
@media(max-width:700px){
  .landing{scroll-padding-bottom:calc(16px + env(safe-area-inset-bottom))}
  .landing-art{height:clamp(72px,14dvh,110px);min-height:0}
  .landing-art img{object-fit:cover;object-position:center}
  .landing-copy{gap:6px;padding:12px 16px calc(16px + env(safe-area-inset-bottom))}
  .landing-copy h1{font-size:clamp(22px,6vw,28px);line-height:1.1}
  .landing-copy h1 span{line-height:1.35}
  .landing-copy p{margin:0;font-size:13px;line-height:1.35}
  .landing-copy form{gap:6px}
  .landing-copy small{line-height:1.35}
  .tactics-game button,.tactics-game input:not([type=checkbox]):not([type=radio]),.tactics-game select,.tactics-game summary{min-height:44px}
  .home-link,.icon-button,.battle-heading .icon-button{width:44px;min-width:44px;min-height:44px}
  .header-actions button,.battle-heading .primary,.ability-button,.mission-chip{min-height:44px}
  .camp-nav button{min-width:44px;min-height:44px}
  .settings-list label{min-height:44px}
}
.roster-filters{position:relative;flex:none}
.roster-filters>summary{display:flex;align-items:center;gap:5px;min-height:44px;padding:8px 12px;border:1px solid #526b72;border-radius:6px;background:var(--surface-raised);cursor:pointer;list-style:none}
.roster-filters>summary::-webkit-details-marker{display:none}
.roster-filter-fields{position:absolute;right:0;z-index:8;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:min(360px,calc(100vw - 48px));padding:10px;border:1px solid #526b72;border-radius:6px;background:var(--surface);box-shadow:var(--shadow)}
.roster-filter-fields label,.roster-filter-fields select{width:100%;min-width:0}
.game-dialog.camp-panel[data-camp-panel=company] .content-heading h1,.game-dialog.camp-panel[data-camp-panel=armory] .content-heading h1,.game-dialog.camp-panel[data-camp-panel=chronicle] .content-heading h1{display:none}
.mission-categories{display:flex;flex:none;gap:6px;padding:0 0 6px}.mission-categories button{display:flex;align-items:center;justify-content:center;gap:8px;flex:1;min-width:0;font-size:13px}.mission-categories small{white-space:nowrap}.act-strip{display:flex;flex:none;gap:5px;overflow-x:auto;padding:0 0 5px}.act-strip button{flex:none;white-space:nowrap;font-size:12px}.mission-strip{overscroll-behavior-inline:contain}.act-context{margin-bottom:10px;color:var(--muted);font-size:12px}.act-context summary{cursor:pointer}.act-context p{margin:6px 0}.encounter-notes{display:grid;gap:4px}.encounter-notes:empty{display:none}.encounter-notes small{font-size:11px}.region-list{display:grid;gap:10px}.region-card{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px;border:1px solid var(--border);border-radius:7px;background:var(--surface)}.region-card.selected{border-color:var(--accent)}.region-card>div{min-width:0}.region-card h3,.region-card p{margin:0 0 5px}.region-card p{font-size:13px}.region-card button{flex:none}.journal-act{margin-top:20px}.journal-act>h2{font-size:17px}.journal-act>h2 small{font-size:12px;color:var(--muted)}.battle-story{flex:none;max-height:64px;overflow:auto;padding:6px 12px;border-bottom:1px solid #47675f;background:#1b302d;color:#e3f7ee;font-size:12px}
@media(max-width:700px){.mission-categories{gap:4px}.mission-categories button{gap:4px;font-size:11px;padding:5px 6px}.mission-categories small{font-size:10px}.act-strip button{font-size:11px;padding:5px 8px}.mission-panel .act-context{display:none}.mission-panel .encounter-notes small{font-size:10px}.camp-interaction{max-width:calc(100% - 16px);flex-wrap:wrap}.camp-interaction small{margin-right:4px}.region-card{padding:10px;gap:8px;align-items:flex-start}.region-card button{font-size:12px;padding:7px}.region-card p,.region-card small{font-size:12px}.battle-story{max-height:52px;font-size:11px}}

@media(max-width:700px) and (max-height:700px){.battle-layout .board-wrap{min-height:165px}.battle-panel{max-height:36dvh}.battle-story{max-height:44px}}
