@font-face{font-family:GameSerif;src:url('assets/game-serif.woff?v=058') format('woff');font-display:swap;font-weight:600}
:root{color-scheme:dark;--ink:#0a1419;--paper:#e6ddc6;--gold:#d1b479;--muted:#94a2a3;--line:rgba(203,186,144,.22);--serif:'GameSerif','Yu Mincho','Hiragino Mincho ProN',serif;--sans:'Hiragino Kaku Gothic ProN','Yu Gothic',Meiryo,sans-serif}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#080e13;color:var(--paper);font-family:var(--sans);overscroll-behavior:none}button{font:inherit;font-size:14px;letter-spacing:.08em;color:inherit;background:rgba(18,30,34,.8);border:1px solid var(--line);padding:13px 19px;min-height:46px;cursor:pointer;transition:background .18s,border-color .18s,transform .18s;touch-action:manipulation;border-radius:2px}button:hover:not(:disabled){background:#273a3b;border-color:#b6a271}button:active:not(:disabled){transform:translateY(1px)}button:focus-visible{outline:2px solid #efe2b6;outline-offset:4px}button:disabled{opacity:.33;cursor:default}button.primary{color:#151e20;background:#dbc28c;border-color:#dfc799;font-weight:600}button.primary:hover:not(:disabled){background:#eddbb0}button.primary span{margin-left:20px}button.subtle,button.text-button{border:0;background:transparent}button.text-button{padding:8px 0;text-align:left;color:#b6c4c0;font-size:12px;min-height:36px}button.icon-button{width:46px;padding:8px;font-size:25px}button svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.5}button span{pointer-events:none}[hidden]{display:none!important}h1,h2,h3,p{margin:0}#game{position:relative;width:100%;height:100%;height:100dvh;isolation:isolate;overflow:hidden}#world{position:absolute;width:100%;height:100%;inset:0;touch-action:none}.grain{pointer-events:none;position:absolute;inset:0;z-index:15;opacity:.065;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.74' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E")}.screen{position:absolute;inset:0}.loading{position:absolute;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;flex-direction:column;background:#0b151a;gap:20px;letter-spacing:.2em}.loading small{color:#8b9d9e;font-size:11px}.seal{border:1px solid var(--gold);font-family:var(--serif);color:var(--gold);font-size:28px;display:grid;place-items:center;width:56px;height:56px;transform:rotate(-4deg)}.title-screen{background:linear-gradient(90deg,rgba(6,11,17,.94),rgba(6,11,17,.36) 55%,transparent 80%)}.title-content{position:absolute;left:9%;top:15%;width:440px;max-width:49%}.eyebrow{font-family:var(--serif);font-size:14px;letter-spacing:.36em;color:#cab789}.title-content h1{font-family:var(--serif);font-size:clamp(45px,6.4vw,108px);font-weight:600;letter-spacing:.07em;line-height:1.35;margin-top:20px;text-shadow:0 8px 30px #000;white-space:nowrap;color:#f2e7ce}.title-content h1 span{font-size:.6em;vertical-align:12%}.title-rule{height:1px;width:78%;background:linear-gradient(90deg,#b6a078,transparent);margin:16px 0}.subtitle{font-family:var(--serif);font-size:23px;letter-spacing:.56em;color:#d6b87d}.tagline{margin-top:21px;color:#c3c9c2;font-family:var(--serif);font-size:17px;letter-spacing:.3em}.title-menu{display:flex;flex-direction:column;gap:11px;max-width:288px;margin-top:39px}.title-menu>button{display:flex;justify-content:space-between;text-align:left}.menu-pair{display:flex;gap:11px}.menu-pair button{flex:1}.title-bottom{position:absolute;bottom:max(22px,env(safe-area-inset-bottom));left:5%;right:4%;display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#a9b0a5;letter-spacing:.12em}.title-bottom button{min-height:36px;padding:8px 11px;font-size:11px;border-color:transparent;background:transparent}.hud{position:absolute;top:0;left:0;right:0;z-index:9;display:flex;align-items:center;justify-content:space-between;padding:19px 25px;background:linear-gradient(#09131beb,transparent);pointer-events:none}.hud button{pointer-events:auto}.chapter-mark{display:flex;align-items:center;gap:18px}.chapter-mark>span{writing-mode:vertical-rl;border-left:1px solid #a38859;border-right:1px solid #a38859;padding:6px;color:#c9b380;font-size:11px;letter-spacing:.15em}.chapter-mark h2{font-family:var(--serif);font-size:24px;letter-spacing:.2em;font-weight:600}.hud-right{display:flex;align-items:center;gap:20px}.phase{font-size:12px;letter-spacing:.12em;color:#adcac6}.turn{font-size:11px;color:#99abaa}.turn b{font-family:var(--serif);font-size:29px;color:#e6d8b4;margin-right:2px}.turn>span{margin-right:8px}.story-screen{background:linear-gradient(0deg,rgba(1,7,13,.4),transparent 55%);z-index:12}.story-top{display:flex;align-items:center;justify-content:space-between;padding:22px 6%;color:#c5baa0;font-family:var(--serif);font-size:15px;letter-spacing:.16em;background:linear-gradient(rgba(4,10,15,.65),transparent)}.story-top button{font-family:var(--sans);font-size:11px}.dialogue{position:absolute;left:6%;right:6%;bottom:6%;min-height:182px;background:linear-gradient(105deg,rgba(6,16,23,.98),rgba(9,20,27,.9));border-top:1px solid #887953;border-bottom:1px solid #544c39;padding:25px 36px 36px;box-shadow:0 20px 80px #0005}.dialogue-meta{display:flex;align-items:center;justify-content:space-between;margin-bottom:17px;color:#d6b777;letter-spacing:.22em;font-family:var(--serif)}#storyCount{font-family:var(--sans);font-size:10px;color:#657777;letter-spacing:.1em}.dialogue p{font-family:var(--serif);font-size:clamp(17px,1.9vw,25px);line-height:1.9;letter-spacing:.09em;white-space:pre-line;max-width:92%;min-height:62px}.dialogue button{position:absolute;right:24px;bottom:13px;border:0;background:transparent;min-height:32px;font-size:11px;color:#cab789;padding:4px 8px}.dialogue button span{margin-left:15px}.battle-ui{pointer-events:none;z-index:8}.battle-ui button,.battle-ui aside{pointer-events:auto}.objective{position:absolute;left:27px;top:102px;max-width:275px;background:linear-gradient(90deg,#0b171cdd,#0b171c44);border-left:2px solid #ae925d;padding:13px 17px}.small-label{font-size:10px;letter-spacing:.14em;color:#aabbad}.objective p{margin-top:8px;font-size:13px;line-height:1.7;letter-spacing:.04em}.camera-tools{position:absolute;left:25px;bottom:124px;display:flex;gap:6px;pointer-events:auto}.camera-tools button{width:40px;min-height:40px;padding:4px;font-size:19px;background:#112129df}.camera-tools button:last-child{width:48px;font-size:12px}.camera-tools button[aria-pressed=true]{border-color:#e2b18c;color:#e2b18c}.unit-panel{position:absolute;right:23px;top:120px;width:265px;padding:20px;background:linear-gradient(135deg,#15282aed,#0a171de8);border:1px solid var(--line);box-shadow:0 16px 60px #0004}.unit-heading{display:flex;align-items:center;gap:13px}.unit-portrait{width:61px;height:69px;background-color:#26332f;background-image:url('assets/nobunaga.webp');background-size:590px auto;background-position:-70px -2px;border:1px solid #a58b5644;border-radius:2px;flex-shrink:0}.unit-heading h3{font-family:var(--serif);font-weight:600;font-size:22px;margin:4px 0 6px}.unit-heading p{font-size:10px;color:#90b6b1}.unit-heading .small-label{font-size:9px}.hp-row{display:flex;justify-content:space-between;margin:21px 0 7px;font-size:11px;color:#9fb0a9}.hp-row strong{font-size:12px;font-weight:400;color:#dfe3cc}.hp-track{height:4px;background:#071319}.hp-track i{display:block;width:100%;height:100%;background:#a8c7ad;transition:width .3s}.unit-stats{display:flex;justify-content:space-around;margin:18px 0;padding-bottom:15px;border-bottom:1px solid var(--line)}.unit-stats div{display:flex;flex-direction:column;gap:6px;text-align:center}.unit-stats span{font-size:10px;color:#95a8a2}.unit-stats b{font-family:var(--serif);font-size:22px;font-weight:600;color:#d4c49a}.unit-hint{font-size:11px;line-height:1.8;color:#a9b6ad;min-height:42px}.unit-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:16px}.unit-actions button{font-size:12px;padding:10px 6px;letter-spacing:.03em}.unit-actions button:first-child{grid-column:1/3;border-color:#ae935b66;background:#6c633022}.unit-actions small{display:block;font-size:9px;color:#a8b3a5;margin-top:5px}.battle-footer{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;gap:20px;background:linear-gradient(transparent,#07121be8 25%,#0c1a20);padding:28px 25px max(18px,env(safe-area-inset-bottom));pointer-events:none}.roster{display:flex;gap:10px}.roster button{display:flex;align-items:center;gap:12px;padding:9px 13px;background:#13272cdf;width:162px;text-align:left;border-color:#3a595a}.roster button.active{border-color:#d7bf85;box-shadow:inset 0 -2px #c2aa76}.roster button.done{opacity:.6}.roster .face{width:35px;height:42px;background-image:url('assets/nobunaga.webp');background-size:360px auto;background-position:-45px 0}.roster .face.ranmaru{background-image:url('assets/ranmaru.webp')}.roster .info{display:flex;flex-direction:column;gap:5px;font-family:var(--serif);font-size:15px}.roster small{font-family:var(--sans);font-size:9px;color:#9eb4ae}.battle-message{flex:1;text-align:center;color:#b4c3b9;font-size:12px;line-height:1.7}.battle-message small{display:block;font-size:9px;color:#78918e;margin-top:4px}.end-turn{min-width:170px;min-height:54px}.attack-confirm{position:absolute;left:50%;bottom:129px;transform:translateX(-50%);display:flex;align-items:center;gap:12px;padding:16px 20px;background:#12232bf7;border:1px solid #c49d68;box-shadow:0 20px 50px #0008;pointer-events:auto;min-width:420px}.attack-confirm>div{flex:1;min-width:165px}.attack-confirm small{font-size:10px;color:#aeae99}.attack-confirm p{font-size:12px;margin-top:8px;display:flex;align-items:center;gap:18px}.attack-confirm strong{font-size:23px;color:#e2be8e;font-family:var(--serif)}.attack-confirm b{font-weight:400}.phase-banner{position:absolute;top:42%;left:0;right:0;text-align:center;font-family:var(--serif);font-size:35px;letter-spacing:.45em;background:linear-gradient(90deg,transparent,#0d202aeb,transparent);padding:24px;color:#dbcdac;animation:phaseIn .5s ease-out}.camp-screen{background:linear-gradient(90deg,#08131aee,transparent 80%)}.camp-content{position:absolute;left:8%;top:19%;max-width:410px;width:48%}.camp-content h2{font-family:var(--serif);font-size:40px;line-height:1.4;letter-spacing:.18em;margin:20px 0}.camp-content>p:not(.eyebrow){font-family:var(--serif);line-height:2.2;font-size:16px;color:#c6d0c8;white-space:pre-line}.camp-actions{display:flex;flex-direction:column;gap:13px;margin-top:32px;max-width:300px}.camp-actions button{display:flex;align-items:center;justify-content:space-between;text-align:left}.camp-actions button span{font-size:11px;color:#a3b4aa}.camp-actions button.primary span{color:#344035}.result-screen{display:flex;align-items:center;justify-content:center;text-align:center;background:#061117cd;backdrop-filter:blur(5px)}.result-content{width:min(80%,600px);padding:40px 15px}.result-content h2{font-family:var(--serif);font-size:65px;letter-spacing:.2em;color:#e0c793;margin:23px 0}.result-content>p:not(.eyebrow){color:#b8c7be;line-height:1.9;font-family:var(--serif);white-space:pre-line;font-size:17px}.result-stats{display:flex;justify-content:center;gap:35px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:30px 0;padding:20px 0}.result-stats div{display:flex;flex-direction:column;gap:8px}.result-stats span{font-size:11px;color:#95aaa1}.result-stats b{font-family:var(--serif);font-weight:400;font-size:24px}.toast{position:absolute;top:88px;left:50%;transform:translateX(-50%);padding:13px 23px;font-size:13px;line-height:1.6;background:#162a2ff5;border:1px solid #887955;z-index:40;max-width:90%;width:max-content;box-shadow:0 6px 35px #0006}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}dialog{color:var(--paper);background:#101f27;border:1px solid #857956;width:min(650px,92vw);max-height:85dvh;padding:0;box-shadow:0 30px 140px #000b;overscroll-behavior:contain}dialog::backdrop{background:#03090cbd;backdrop-filter:blur(7px)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:21px 25px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#101f27;z-index:2}.modal-head h2{font-family:var(--serif);font-weight:600;font-size:22px;letter-spacing:.15em}.modal-head button{border:none;background:transparent;font-size:25px}#modalBody{padding:23px 28px;font-size:14px;line-height:1.9;color:#c4d0c8}#modalBody h3{font-family:var(--serif);font-size:21px;color:#d6bc86;font-weight:600;margin:5px 0 13px}#modalBody p+p{margin-top:14px}#modalBody .note{font-size:11px;color:#8fa09b;margin-top:18px}#modalBody button{margin:8px 5px 4px 0}.setting{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:14px 0;border-bottom:1px solid var(--line)}.setting small{display:block;color:#8ca09e;font-size:11px}.setting input{accent-color:#c4ae7b;width:22px;height:22px;cursor:pointer}.setting select{font:inherit;color:#d9dbca;background:#172c31;border:1px solid #5a7069;padding:10px}.modal-character{display:flex;align-items:center;gap:20px;margin-bottom:23px}.modal-character .portrait-big{width:115px;height:145px;background-size:1070px auto;background-position:-130px -7px;flex-shrink:0;background-repeat:no-repeat}.modal-character p{font-size:12px}.chapter-button{display:block;width:100%;text-align:left}#modalBody .journal-entry{padding:13px 0;border-bottom:1px solid var(--line)}.journal-entry h3{font-size:17px!important}.journal-entry p{font-size:12px}@keyframes phaseIn{from{opacity:0;transform:translateX(-25px)}to{opacity:1;transform:translateX(0)}}
@media(max-height:600px) and (orientation:landscape){.title-content{top:8%;left:7%}.title-content h1{font-size:59px;margin-top:8px}.title-rule{margin:6px 0}.subtitle{font-size:18px}.tagline{margin-top:9px;font-size:13px}.title-menu{margin-top:17px;gap:7px;max-width:244px}.title-menu button{min-height:42px;padding:9px 14px}.title-bottom{bottom:6px;font-size:9px}.hud{padding:10px 15px}.chapter-mark h2{font-size:18px}.chapter-mark>span{font-size:9px;padding:3px}.hud-right{gap:13px}.objective{left:17px;top:71px;max-width:210px;padding:8px 12px}.objective p{font-size:11px;margin-top:3px}.objective .text-button{font-size:10px;min-height:28px;padding:4px 0}.unit-panel{top:78px;right:15px;width:208px;padding:12px}.unit-heading{gap:8px}.unit-heading h3{font-size:17px}.unit-portrait{width:41px;height:48px;background-size:440px auto;background-position:-55px 0}.unit-heading .small-label{font-size:8px}.unit-heading p{font-size:9px}.hp-row{margin:10px 0 5px}.unit-stats{margin:9px 0;padding-bottom:6px}.unit-stats div{gap:3px}.unit-stats b{font-size:16px}.unit-hint{font-size:9px;min-height:27px;line-height:1.6}.unit-actions{margin-top:8px;gap:5px;grid-template-columns:1fr 1fr 1fr}.unit-actions button:first-child{grid-column:auto}.unit-actions button{font-size:10px;padding:7px 3px;min-height:45px}.unit-actions small{font-size:8px}.battle-footer{padding:18px 15px 10px;gap:9px}.roster{gap:7px}.roster button{width:119px;min-height:48px;padding:6px 9px;gap:6px}.roster .face{width:28px;height:33px;background-size:300px auto;background-position:-38px 0}.roster .info{font-size:13px;gap:3px}.battle-message{font-size:10px;max-width:230px}.end-turn{min-width:140px;min-height:46px;padding:10px;font-size:12px}.camera-tools{left:15px;bottom:86px;gap:4px}.camera-tools button{width:37px;min-height:37px}.dialogue{bottom:6%;padding:15px 25px 28px;min-height:140px}.dialogue-meta{font-size:13px;margin-bottom:9px}.dialogue p{font-size:18px;line-height:1.75;min-height:48px}.story-top{padding:12px 6%;font-size:13px}.camp-content{top:13%}.camp-content h2{font-size:29px;margin:12px 0}.camp-content>p:not(.eyebrow){font-size:13px;line-height:1.9}.camp-actions{margin-top:15px;gap:8px}.camp-actions button{min-height:44px;padding:10px}.result-content{padding:20px}.result-content h2{font-size:42px;margin:14px 0}.result-content>p:not(.eyebrow){font-size:14px}.result-stats{margin:15px 0;padding:12px 0}.attack-confirm{bottom:89px;min-width:390px;padding:12px}.toast{top:68px;font-size:11px}}
@media(orientation:portrait){.title-content{top:14%;left:8%;width:84%;max-width:none}.title-content h1{font-size:clamp(48px,11vw,86px);margin-top:20px}.title-screen{background:linear-gradient(90deg,#07121beb,rgba(7,18,27,.48))}.title-content .eyebrow{font-size:12px}.title-menu{margin-top:32px;max-width:270px}.tagline{font-size:15px}.title-bottom{font-size:9px}.hud{padding:12px}.chapter-mark{gap:9px}.chapter-mark h2{font-size:18px;letter-spacing:.07em}.hud-right{gap:7px}.hud-right .phase{display:none}.hud-right .turn b{font-size:24px}.hud-right .icon-button{width:40px;min-height:40px}.objective{left:13px;right:13px;top:80px;max-width:none;padding:9px 13px;display:flex;align-items:center;gap:10px}.objective .small-label{display:none}.objective p{font-size:11px;margin:0;flex:1}.objective .text-button{font-size:10px;min-height:30px}.unit-panel{top:auto;bottom:152px;left:13px;right:13px;width:auto;padding:12px;display:grid;grid-template-columns:1fr 1fr;gap:5px 14px}.unit-heading{grid-row:1/4;gap:10px}.unit-heading .small-label{display:none}.unit-heading h3{font-size:19px}.unit-portrait{width:46px;height:58px;background-size:480px auto;background-position:-58px 0}.hp-row{margin:2px 0;font-size:10px}.unit-stats{margin:3px 0 0;padding-bottom:0;border:0;justify-content:space-between}.unit-stats div{flex-direction:row;align-items:center;gap:5px}.unit-stats b{font-size:15px}.unit-stats span{font-size:9px}.unit-hint{grid-column:1/3;min-height:18px;font-size:10px}.unit-actions{grid-column:1/3;grid-template-columns:1fr 1fr 1fr;margin-top:4px;gap:6px}.unit-actions button:first-child{grid-column:auto}.unit-actions button{padding:8px 4px;min-height:46px;font-size:11px}.unit-actions small{display:inline;margin-left:5px;font-size:8px}.battle-footer{flex-wrap:wrap;padding:12px 13px max(15px,env(safe-area-inset-bottom));gap:9px;background:#0d1b22ee}.roster{flex:1;gap:7px}.roster button{width:auto;flex:1;gap:6px;padding:7px 10px;min-height:51px}.roster .face{display:none}.roster .info{font-size:13px;gap:3px}.end-turn{min-width:135px;min-height:51px;padding:10px;font-size:12px}.end-turn span{margin-left:7px!important}.battle-message{width:100%;flex:0 0 100%;order:3;font-size:10px}.battle-message small{display:inline;margin-left:8px}.camera-tools{bottom:128px;left:13px}.camera-tools button{width:42px;min-height:38px;font-size:16px}.attack-confirm{bottom:166px;left:13px;right:13px;transform:none;min-width:0;padding:14px;gap:8px}.attack-confirm>div{min-width:0}.attack-confirm p{flex-direction:column;gap:4px;align-items:flex-start}.attack-confirm button{padding:12px;min-width:58px}.dialogue{left:5%;right:5%;bottom:5%;padding:21px 21px 38px;min-height:220px}.dialogue-meta{font-size:14px}.dialogue p{font-size:18px;line-height:1.85;max-width:100%}.story-top{font-size:11px;padding:16px 5%}.story-top button{font-size:10px}.camp-content{top:16%;left:8%;width:84%;max-width:none}.camp-content h2{font-size:34px}.camp-content>p:not(.eyebrow){font-size:15px;max-width:85%}.camp-screen{background:linear-gradient(90deg,#08131ae8,rgba(8,19,26,.3))}.result-content{width:90%;padding:25px 10px}.result-content h2{font-size:50px}.result-content>p:not(.eyebrow){font-size:15px}.result-stats{gap:26px}.result-stats b{font-size:21px}.modal-head{padding:16px 20px}#modalBody{padding:19px 21px;font-size:13px}.modal-character{gap:12px}.modal-character .portrait-big{width:85px;height:130px;background-size:950px auto;background-position:-122px -3px}.modal-character p{font-size:11px}.toast{top:131px;max-width:94%;font-size:11px;padding:10px 16px}.phase-banner{font-size:25px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* 0.2 — legible square board, equipment and audio controls */
.title-content h1{margin-top:0}.music-toggle{width:42px;padding:5px;min-height:42px;font-size:23px}.music-toggle[aria-pressed=false]{color:#89948d}.objective{top:86px;left:30px;right:315px;max-width:none;display:flex;align-items:center;gap:18px;padding:9px 14px;background:#0b171ce8}.objective p{margin:0;flex:1}.objective .text-button{white-space:nowrap}.unit-panel{top:150px;padding:16px}.unit-stats{margin:14px 0;padding-bottom:10px}.unit-actions{grid-template-columns:repeat(3,1fr);margin-top:12px}.unit-actions button:first-child{grid-column:auto}.unit-actions button{padding:10px 3px;min-height:57px}.unit-hint{min-height:32px;margin-top:10px}.camera-tools{top:168px;left:18px;bottom:auto;flex-direction:column;gap:7px}.camera-tools button,.camera-tools button:last-child{width:44px;min-height:44px}.camera-tools button:nth-last-child(2){font-size:12px}.camera-tools button[aria-pressed=true]{border-color:#e0c38e;color:#eed5a1}.gear-summary{display:flex;align-items:center;justify-content:space-between;gap:7px;width:100%;min-height:37px;padding:8px 10px;text-align:left;font-size:11px;border-color:#93805c70;background:#aa914515}.gear-summary small{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px;color:#ccba93}.gear-summary>span:last-child{font-size:18px}.map-expanded .unit-panel{display:none!important}.map-expanded .objective{right:25px}.camp-content{top:13%}.camp-actions{gap:9px;margin-top:24px}.camp-actions button{min-height:46px}.camp-actions button.primary span{color:#344035}
.gear-tabs,.gear-slots{display:flex;gap:8px}.gear-tabs button,.gear-slots button{flex:1;margin:0!important}.gear-tabs .active,.gear-slots .active{border-color:#d7bd83;background:#6655304a;color:#f0d59e}.gear-overview{display:grid;grid-template-columns:85px 1fr;gap:16px;align-items:center;margin:20px 0}.gear-portrait{height:120px;background-image:url('assets/nobunaga.webp');background-size:700px auto;background-position:-73px -2px;background-repeat:no-repeat;border-left:2px solid #c7ab7277}.gear-portrait.ranmaru{background-image:url('assets/ranmaru.webp')}.gear-overview h3{margin:0 0 8px!important}.gear-overview p{font-size:11px;color:#a8b5a9}.gear-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:14px}.gear-stats div{display:flex;flex-direction:column}.gear-stats span{color:#8ca49d;font-size:10px}.gear-stats strong{font-size:17px;color:#e6d5ac;white-space:nowrap}.gear-stats i{font-style:normal;font-size:14px}.positive{color:#9ed7b5!important}.negative{color:#e9a188!important}.gear-list{display:flex;flex-direction:column;gap:7px;margin:16px 0}.gear-item{display:flex;align-items:center;gap:12px;margin:0!important;text-align:left;min-height:70px;padding:10px 13px}.gear-item.selected{border-color:#ccb278;background:#ac934424}.gear-icon{display:grid;place-items:center;width:36px;height:40px;font-family:var(--serif);font-size:23px;color:#d5bf90;border:1px solid #92794588;flex-shrink:0}.gear-item>span:nth-child(2){flex:1}.gear-item b{display:block;font-size:14px;font-weight:400}.gear-item small{display:block;font-size:11px;color:#95b6aa;letter-spacing:0}.gear-item em{font-style:normal;font-size:10px;color:#c3b892;text-align:right;max-width:85px}.gear-preview{border-top:1px solid var(--line);padding-top:12px}.gear-preview p{font-size:13px;min-height:25px}.gear-preview small{display:block;color:#97aaa2;font-size:11px}.gear-preview>button{width:100%;margin:12px 0 0!important}.volume-setting input[type=range]{width:160px;height:30px}.volume-setting label{flex:1}.camp-screen{overflow-y:auto}.camp-content{padding-bottom:24px}.battle-footer .roster button{min-height:52px}
@media(max-height:600px) and (orientation:landscape){.hud{padding:7px 14px}.hud-right{gap:9px}.hud .icon-button,.music-toggle{min-height:38px;width:38px}.objective{top:58px;left:70px;right:254px;padding:5px 8px;gap:7px}.objective .small-label{display:none}.objective p{font-size:10px;line-height:1.5}.objective .text-button{padding:3px;min-height:28px;font-size:9px}.unit-panel{top:100px;right:14px;width:222px;padding:9px}.unit-portrait{display:none}.unit-heading h3{margin:1px 0 4px;font-size:17px}.unit-heading .small-label{display:none}.unit-heading p{font-size:9px}.hp-row{margin:6px 0 4px;font-size:9px}.unit-stats{margin:6px 0;padding-bottom:5px}.unit-stats b{font-size:16px}.unit-stats div{flex-direction:row;gap:6px;align-items:center}.unit-stats span{font-size:9px}.gear-summary{min-height:31px;padding:4px 8px;font-size:10px}.gear-summary small{font-size:9px}.unit-hint{display:none}.unit-actions{margin-top:7px;gap:4px}.unit-actions button{min-height:44px;padding:6px 3px;font-size:10px}.unit-actions small{font-size:8px}.camera-tools{left:14px;top:112px;gap:5px}.camera-tools button,.camera-tools button:last-child{width:38px;min-height:36px}.battle-footer{padding:13px 14px 8px;gap:9px}.battle-footer .roster button{min-height:48px}.battle-message{font-size:9px}.end-turn{min-height:48px}.camp-content{top:7%}.camp-content h2{margin:8px 0;font-size:27px}.camp-content>p:not(.eyebrow){font-size:12px;line-height:1.7}.camp-actions{margin-top:11px;gap:6px}.camp-actions button{padding:7px 10px;min-height:37px;font-size:12px}.title-menu{gap:6px;margin-top:14px}.title-content h1{font-size:55px}.map-expanded .objective{right:20px}}
@media(orientation:portrait){.objective{left:13px;right:13px;top:75px;padding:7px 10px;gap:8px}.objective p{font-size:10px}.hud-right{gap:4px}.hud .music-toggle{min-height:36px;width:32px;font-size:20px}.hud .icon-button{min-height:36px;width:36px}.unit-panel{top:auto;bottom:150px;left:13px;right:13px;width:auto;padding:10px 12px;gap:4px 12px}.unit-stats{margin:3px 0 0;padding:0}.unit-hint{margin:0;min-height:16px;font-size:9px}.unit-actions{margin-top:3px}.unit-actions button{min-height:42px;padding:6px 2px}.gear-summary{grid-column:1/3;min-height:32px;padding:4px 8px;margin:3px 0}.camera-tools{flex-direction:row;top:auto;bottom:109px;left:13px;gap:5px}.camera-tools button,.camera-tools button:last-child{width:42px;min-height:34px;font-size:14px}.camera-tools button:nth-last-child(2),.camera-tools button:last-child{font-size:11px}.battle-footer{padding:10px 13px max(12px,env(safe-area-inset-bottom));gap:6px}.battle-footer .roster button{min-height:49px}.battle-message{font-size:9px}.camp-content{top:10%}.gear-overview{grid-template-columns:60px 1fr;gap:10px}.gear-portrait{background-size:620px auto;background-position:-76px 0;height:114px}.gear-stats{gap:4px}.gear-stats strong{font-size:14px}.gear-stats i{font-size:12px}.gear-item{padding:8px;gap:8px}.gear-item b{font-size:12px}.gear-item small{font-size:10px}.gear-item em{font-size:9px}.volume-setting input[type=range]{width:125px}.map-expanded .objective{right:13px}.map-expanded .camera-tools{bottom:109px}}
@media(max-height:720px) and (orientation:portrait){.unit-panel{bottom:141px;padding:7px 10px}.unit-hint{display:none}.unit-portrait{height:42px;width:36px;background-size:420px auto;background-position:-49px 0}.unit-heading h3{font-size:17px}.unit-heading p{font-size:8px}.unit-actions button{min-height:36px;font-size:10px}.gear-summary{min-height:29px}.camera-tools{bottom:102px}.camera-tools button,.camera-tools button:last-child{min-height:32px}.battle-footer .roster button,.battle-footer .end-turn{min-height:44px}.battle-message{font-size:8px}.battle-footer{padding-top:8px;gap:5px}}

.reward-text{font-size:12px!important;color:#cfb888!important;margin:-12px 0 22px;line-height:1.7!important}
/* 0.3 — continuous painted environments, portrait drama, readable tactical overlay */
:root{--line:rgba(207,181,121,.28)}
.grain{opacity:.04}.hud{padding:14px 23px}.chapter-mark h2{font-size:23px;letter-spacing:.16em}.objective{top:75px;left:74px;right:266px;padding:8px 13px;background:linear-gradient(90deg,#0a161be8,#17202390);border-left-color:#ceb777}.objective p{font-size:12px}.objective .small-label{font-size:9px}.unit-panel{right:18px;top:132px;width:226px;padding:15px;background:linear-gradient(140deg,#15292cec,#09141beF);border-color:#8f825849}.unit-heading{gap:10px}.unit-heading h3{font-size:20px}.unit-heading .small-label{font-size:8px}.unit-portrait{width:53px;height:64px}.hp-row{margin-top:17px}.unit-stats{margin:13px 0}.unit-actions{grid-template-columns:1fr}.unit-actions button{display:flex;justify-content:space-between;align-items:center;padding:11px 12px;min-height:43px;text-align:left}.unit-actions small{margin:0}.unit-actions button:first-child{border-color:#b99b6377;background:#86713b20}.unit-hint{font-size:10px;margin-top:12px}.camera-tools{left:16px;top:135px}.camera-tools button,.camera-tools button:last-child{width:40px;min-height:40px}.battle-footer{padding:17px 20px 13px;gap:18px}.battle-footer .roster button{width:144px;min-height:51px;background:#0b1c23e8}.battle-message{font-size:11px}.end-turn{min-height:51px}.attack-confirm{bottom:105px}
.story-screen{background:linear-gradient(0deg,#060c16cc,transparent 43%)}.story-top{padding:19px 4%;align-items:flex-start;position:relative;z-index:2}.story-top>div:first-child{display:flex;flex-direction:column;gap:8px}.story-volume{font-size:10px;color:#b99b68;letter-spacing:.35em}.story-top #storyLocation{font-size:12px;color:#d0c8b5}.story-tools{display:flex;gap:8px}.story-tools button{min-height:36px;padding:8px 11px;background:#080f1680;border:1px solid #c4ae7333;color:#c6c4b5;font-size:11px}.story-tools button[aria-pressed=true]{color:#f4d89b;border-color:#e2c788}.story-heading{position:absolute;left:5%;top:20%;display:flex;flex-direction:column;gap:12px;pointer-events:none;opacity:.92;text-shadow:0 2px 12px #000}.story-heading>span{font-size:11px;font-family:var(--serif);color:#cfb582;letter-spacing:.3em}.story-heading h2{font-family:var(--serif);font-weight:600;font-size:clamp(22px,3.1vw,42px);writing-mode:vertical-rl;letter-spacing:.15em;line-height:1.4;max-height:38vh}.story-heading i{height:35px;border-left:1px solid #bd9d65;margin-left:14px}.dialogue{left:12%;right:8%;bottom:4%;padding:22px 30px 14px;min-height:185px;border-top:1px solid #a48a57;border-bottom:1px solid #73634a;background:linear-gradient(115deg,#09141ef5,#111b25ed);box-shadow:0 12px 60px #0007;backdrop-filter:blur(12px)}.dialogue:before{content:'';position:absolute;left:0;top:0;width:3px;height:34px;background:#d6b574}.dialogue-meta{margin-bottom:13px;font-size:17px}.dialogue p{font-size:clamp(18px,1.7vw,25px);letter-spacing:.055em;line-height:1.8;min-height:3.6em;max-width:100%}.dialogue-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:10px;border-top:1px solid #b1985930;padding-top:8px}.dialogue-bottom button{position:static;min-height:33px;padding:4px 6px;font-size:11px}.dialogue-bottom #nextStory{font-size:12px;min-width:70px}.dialogue-bottom>span{font-size:11px;color:#637c80}.scene-enter .dialogue{animation:dialogueIn .4s ease-out}.scene-enter .story-heading{animation:dialogueIn .75s ease-out}.story-journal details{border-bottom:1px solid #c1a77144;padding:11px 0}.story-journal summary{cursor:pointer;color:#dcc490;font-family:var(--serif);font-size:15px;list-style-position:inside}.story-journal article{padding:14px 8px 10px;border-left:1px solid #a58a4e44;margin:12px 0 0 5px}.story-journal b{font-size:11px;letter-spacing:.1em;color:#b69c6b}.story-journal p{white-space:pre-line;font-family:var(--serif);font-size:15px;line-height:1.9;margin-top:5px}.cast-entry{display:flex;gap:17px;padding:15px 0;border-bottom:1px solid var(--line)}.cast-entry h3{margin:0!important}.cast-entry small{font-size:11px;color:#a79d84}.cast-entry p{font-size:13px;margin-top:8px}.cast-seal{width:40px;height:50px;border:1px solid #ad905b77;display:grid;place-items:center;font-family:var(--serif);color:#cfb57d;font-size:22px;flex-shrink:0}.camp-actions{gap:8px;margin-top:21px}.camp-actions button{min-height:44px}.camp-content{top:11%}
@keyframes dialogueIn{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
@media(min-width:1700px){.unit-panel{width:255px;right:28px}.objective{right:305px}.dialogue{left:15%;right:12%;bottom:6%;padding:28px 38px 18px}}
@media(max-height:600px) and (orientation:landscape){.hud{padding:6px 13px}.chapter-mark h2{font-size:18px}.objective{left:55px;right:231px;top:55px;padding:3px 8px}.objective p{font-size:10px}.objective .text-button{min-height:24px}.unit-panel{right:12px;top:91px;width:204px;padding:9px}.unit-heading h3{font-size:17px}.unit-portrait{display:none}.unit-actions{grid-template-columns:repeat(3,1fr);gap:4px}.unit-actions button{display:block;text-align:center;min-height:40px;font-size:10px;padding:6px 3px}.unit-actions small{display:block;font-size:8px;margin-top:3px}.unit-hint{display:none}.hp-row{margin:7px 0 4px}.unit-stats{margin:7px 0}.camera-tools{left:9px;top:94px;gap:4px}.camera-tools button,.camera-tools button:last-child{width:34px;min-height:32px;font-size:15px}.camera-tools button:nth-last-child(-n+2){font-size:10px}.battle-footer{padding:11px 12px 7px;gap:8px}.battle-footer .roster button{width:121px;min-height:46px}.battle-message{font-size:9px}.end-turn{min-height:46px}.story-top{padding:9px 4%}.story-volume{font-size:9px}.story-top>div:first-child{gap:4px}.story-top #storyLocation{font-size:11px}.story-tools button{min-height:31px;padding:6px 8px;font-size:10px}.story-heading{top:22%;left:4%;gap:6px}.story-heading h2{font-size:22px;max-height:43vh}.story-heading i{display:none}.dialogue{bottom:3%;left:12%;right:6%;min-height:133px;padding:12px 20px 6px}.dialogue-meta{font-size:13px;margin-bottom:6px}.dialogue p{font-size:17px;line-height:1.65;min-height:3.3em}.dialogue-bottom{padding-top:2px;margin-top:4px}.dialogue-bottom button{min-height:27px;font-size:10px}.camp-content{top:7%}.camp-actions{gap:5px;margin-top:9px}.camp-actions button{min-height:34px;padding:6px 9px;font-size:11px}}
@media(orientation:portrait){.hud{padding:10px 12px}.chapter-mark h2{font-size:18px}.objective{top:72px;left:13px;right:13px;padding:6px 10px}.objective p{font-size:10px}.objective .small-label{display:none}.unit-panel{left:12px;right:12px;top:auto;bottom:143px;width:auto;padding:9px 12px;grid-template-columns:1fr 1fr;gap:3px 12px}.unit-heading{grid-row:1/4}.unit-portrait{width:39px;height:47px;background-size:410px auto;background-position:-51px 0}.unit-heading h3{font-size:18px}.unit-heading p{font-size:9px}.hp-row{margin:1px 0}.unit-stats{margin:2px 0 0}.unit-stats b{font-size:15px}.unit-hint{display:none}.unit-actions{grid-template-columns:repeat(3,1fr);grid-column:1/3;margin-top:3px}.unit-actions button{min-height:36px;display:block;text-align:center;padding:6px 2px;font-size:11px}.unit-actions small{font-size:8px;display:inline;margin-left:5px}.gear-summary{min-height:28px;margin:3px 0}.camera-tools{left:12px;top:auto;bottom:104px;gap:5px}.camera-tools button,.camera-tools button:last-child{width:40px;min-height:32px;font-size:14px}.camera-tools button:nth-last-child(-n+2){font-size:10px}.battle-footer{padding:9px 12px max(11px,env(safe-area-inset-bottom));gap:5px}.battle-footer .roster button{width:auto;min-height:47px}.end-turn{min-width:133px;min-height:47px}.battle-message{font-size:8px}.attack-confirm{bottom:144px}.story-top{padding:13px 4%;gap:8px}.story-tools{gap:3px}.story-tools button{font-size:9px;min-height:32px;padding:7px}.story-volume{font-size:9px}.story-top #storyLocation{font-size:10px;letter-spacing:.02em}.story-heading{left:6%;top:14%;gap:7px}.story-heading h2{font-size:25px;max-height:37vh}.story-heading i{height:20px}.dialogue{left:4%;right:4%;bottom:max(3%,env(safe-area-inset-bottom));min-height:227px;padding:19px 19px 10px}.dialogue-meta{font-size:15px}.dialogue p{font-size:17px;line-height:1.95;letter-spacing:.025em;min-height:5.85em}.dialogue-bottom{margin-top:8px}.dialogue-bottom button{min-height:33px}.camp-content{top:10%}.camp-actions{gap:8px}}
.unit-portrait{background-size:300% auto;background-repeat:no-repeat;background-position:100% 15%;background-color:#29312e}.roster .face{background-image:url('assets/heroes.webp');background-size:300% auto;background-position:100% 12%;background-repeat:no-repeat}.roster .face.ranmaru{background-image:url('assets/heroes.webp');background-position:50% 12%}body[data-mission="0"] .roster .face.nobunaga{background-position:0 12%}.gear-portrait{background-image:url('assets/heroes.webp');background-size:300% auto;background-position:100% 0}.gear-portrait.ranmaru{background-image:url('assets/heroes.webp');background-position:50% 0}.cast-portrait{display:block;flex-shrink:0;width:74px;height:96px;background-color:#1d292d;background-image:url('assets/cast.webp');background-size:240% auto;background-repeat:no-repeat;border-bottom:1px solid #927f54}.cast-portrait.hideyoshi{background-position:7% 2%}.cast-portrait.kanbei{background-position:94% 0}.cast-portrait.koroku{background-position:7% 92%}.cast-portrait.nene{background-position:94% 93%}.cast-portrait.nobunaga,.cast-portrait.ranmaru{background-image:url('assets/heroes.webp');background-size:300% auto;background-position:0 10%}.cast-portrait.ranmaru{background-position:50% 10%}

#taskStatus{display:block;color:#e4c78e;font-size:11px;line-height:1.8;letter-spacing:.08em}.cast-portrait{width:82px;height:82px}.unit-actions #prepareTask{grid-column:span 2;border-color:#c2a46d;color:#efdaa5}

.roster .face.nobunaga,.gear-portrait.nobunaga{background-position:0 12%}
body[data-mission="4"] .roster .face.nobunaga,body[data-mission="5"] .roster .face.nobunaga,body[data-mission="4"] .gear-portrait.nobunaga,body[data-mission="5"] .gear-portrait.nobunaga{background-image:url('assets/cast-war.webp');background-size:200% 200%;background-position:100% 100%}

/* Military council: one commander, one force; the same board remains legible. */
.strategy-modal{width:min(1020px,96vw);max-width:1020px}.strategy-modal #modalBody{padding:0 26px 25px}.strategy-modal .modal-head{border-bottom:0}.strategy-banner{display:flex;align-items:center;justify-content:space-between;min-height:142px;padding:26px 29px;background:linear-gradient(90deg,#101f23ef,#101f2380),url('assets/scenery-v2.webp') right top/200% 200%;border:1px solid #b79a5f55}.strategy-banner h3{font-size:29px;margin:6px 0!important;letter-spacing:.18em}.strategy-banner small{color:#cdb07a;letter-spacing:.2em}.strategy-banner p{margin:5px 0;color:#d0c7af}.strategy-seal{font-family:var(--serif);font-size:44px;border:1px solid #c0a36a88;color:#d3bb85;padding:8px 13px}.realm-resources{display:grid;grid-template-columns:repeat(4,1fr);margin:18px 0;background:#17272b80;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.realm-resources>div{padding:15px 20px;border-right:1px solid var(--line)}.realm-resources span{display:block;font-size:10px;color:#9cab9d;letter-spacing:.15em}.realm-resources b{font:600 25px var(--serif);color:#e7ce95}.realm-resources small{font:11px sans-serif;margin-left:5px;color:#a6b2a3}.strategy-tabs{display:flex;gap:8px;margin:20px 0}.strategy-tabs button{flex:1;margin:0!important;min-height:43px}.strategy-tabs [aria-pressed=true],.commander-tabs [aria-pressed=true]{border-color:#d4b47a;background:#8c784c28;color:#efdbb0}.commander-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:20px}.commander-tabs button{display:flex;align-items:center;text-align:left;gap:9px;padding:8px;margin:0!important;font-size:13px}.commander-tabs small{display:block;font:10px sans-serif;color:#aebca9;margin-top:5px}.commander-face{flex:none;width:44px;height:53px;background-repeat:no-repeat;background-color:#28332f}.army-editor{display:grid;grid-template-columns:200px 1fr;gap:25px;padding:22px;border:1px solid var(--line);background:#111f2588}.army-identity{text-align:center;align-self:start}.commander-large{display:block;width:175px;height:190px;margin:auto;background-repeat:no-repeat;mask-image:linear-gradient(#000 85%,transparent)}.army-identity small{color:#bdab84;letter-spacing:.15em}.army-identity h3{font-size:23px;letter-spacing:.15em;margin:8px 0!important}.army-identity p{font-size:12px;color:#9ead9f}.army-count{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;color:#a9b6a6;font-size:11px}.army-count b{font:600 16px var(--serif);color:#e6d0a1}.troop-row{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:10px 0;gap:10px}.troop-row label{display:flex;gap:10px;align-items:center;font-size:14px}.troop-row label i{display:grid;place-items:center;flex:none;width:29px;height:36px;border:1px solid var(--troop-color);color:var(--troop-color);font:20px var(--serif)}.troop-row label small{display:block;font-size:10px;color:#98aa9d;line-height:1.6;max-width:200px}.troop-row>div{display:flex;align-items:center;gap:4px}.troop-row button{min-height:35px;width:31px;margin:0!important;padding:0!important;font-size:19px}.troop-row input{width:69px;text-align:center;background:#08151c;border:1px solid #927d5355;color:#ead7b0;padding:9px 3px;font:15px sans-serif;border-radius:0;-moz-appearance:textfield}.troop-row input::-webkit-inner-spin-button{appearance:none}.formation-picker{display:flex;gap:15px;align-items:center;margin:17px 0;font-size:12px}.formation-picker select{flex:1;width:100%;min-width:0;padding:10px 7px;background:#14242a;color:#ddc99f;border:1px solid #ad915d77;font-size:11px}.corps-preview{display:flex;justify-content:space-between;gap:5px;font-size:10px;color:#9bac9e}.corps-preview b{display:block;font:600 20px var(--serif);color:#e2ce9f;margin-top:5px}#saveCorps{width:100%;margin:6px 0 0!important}.realm-report{border-left:2px solid #a48e5b;padding:10px 13px;background:#84704410;font-size:12px;line-height:1.8;color:#b6bfac;margin:20px 0}.strategy-launch{display:flex;align-items:center;justify-content:space-between;gap:15px;padding-top:8px}.strategy-launch b{font-size:15px;color:#ddc89c}.strategy-launch small{display:block;font-size:10px;color:#9fac9d;margin-top:7px}.strategy-launch button{margin:0!important;flex-shrink:0}.council-heading{display:flex;align-items:center;justify-content:space-between;margin:22px 0}.council-heading h3{margin:0!important;font-size:21px}.council-heading p{font-size:11px;color:#b2bca8}.council-heading>span{font-size:12px;color:#bfa87b;white-space:nowrap}.council-heading b{font-size:25px}.building-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.building-card{display:flex;gap:16px;padding:20px 15px;background:linear-gradient(130deg,#22312c,#111d24);border:1px solid #9c885744}.building-mark{display:grid;place-items:center;width:48px;height:60px;flex:none;border:1px solid #bca37066;color:#d3ba82;font:29px var(--serif);background:#a38b4820}.building-card>div{flex:1;min-width:0}.building-card h4{display:flex;justify-content:space-between;align-items:center;font:19px var(--serif);color:#e0cca0;margin:0}.building-card h4 small{font:10px sans-serif;color:#adbaab}.building-card p{font-size:11px;line-height:1.6;min-height:34px;color:#b1b9a8}.building-card strong{display:block;font-size:11px;color:#c7c3a2;font-weight:400}.building-card button{width:100%;margin:14px 0 0!important;padding:9px 5px!important;font-size:10px}.domestic-orders{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:15px}.domestic-orders button{margin:0!important;padding:13px 6px!important}.domestic-orders b{display:block;font-size:13px;font-weight:400}.domestic-orders small{display:block;margin-top:8px;font-size:9px}.strategy-guide{padding:5px 12px;font-size:13px;line-height:2}.strategy-guide li{margin:15px 0}.strategy-guide b{color:#e2c58d}.army-battle #taskStatus{font-size:10px;white-space:nowrap}.army-battle .roster button{width:140px}.army-battle .roster .info{font-size:12px}.army-battle .roster .face{background-size:200% 200%;width:31px;height:39px}.army-battle .objective{flex-wrap:wrap;gap:6px 15px}.army-battle .objective p{flex-basis:60%}.army-battle .objective #taskStatus{flex:1}.army-battle .battle-message{font-size:10px}.army-battle .unit-heading .small-label{font-size:9px}.army-battle #unitStatus{font-size:10px}
@media(max-width:760px){.strategy-modal #modalBody{padding:0 14px 18px}.strategy-banner{min-height:116px;padding:20px}.strategy-banner h3{font-size:25px}.realm-resources>div{padding:12px 9px}.realm-resources b{font-size:20px}.realm-resources span{font-size:9px}.commander-tabs{grid-template-columns:repeat(2,1fr)}.commander-tabs button{font-size:12px}.commander-face{width:36px;height:43px}.army-editor{grid-template-columns:1fr;gap:14px;padding:13px}.army-identity{display:flex;align-items:center;text-align:left;gap:16px}.commander-large{width:77px;height:82px;margin:0}.army-identity h3{font-size:21px}.army-identity p{margin:5px 0}.troop-row label small{max-width:145px;font-size:9px}.troop-row label{font-size:12px;gap:6px}.troop-row input{width:52px}.troop-row button{width:28px}.strategy-tabs button{font-size:11px;padding:10px 4px!important}.building-grid{grid-template-columns:1fr}.building-card p{min-height:0}.domestic-orders{grid-template-columns:1fr 1fr}.domestic-orders button:last-child{grid-column:span 2}.strategy-launch{align-items:stretch;flex-direction:column}.strategy-launch button{width:100%}.council-heading h3{font-size:18px}.council-heading p{font-size:10px}.strategy-guide{padding:0;font-size:12px}.strategy-guide ol{padding-left:22px}}
@media(orientation:portrait){.army-battle .battle-footer .roster{display:grid;grid-template-columns:repeat(4,1fr);flex:0 0 100%;gap:4px}.army-battle .battle-footer .roster button{width:auto;min-width:0;padding:6px 2px;text-align:center;justify-content:center;min-height:45px}.army-battle .roster .info{font-size:10px}.army-battle .roster small{font-size:8px}.army-battle .battle-message{flex:1;order:0;font-size:8px}.army-battle .end-turn{min-width:137px;min-height:40px}.army-battle .unit-panel{bottom:194px}.army-battle .camera-tools{bottom:153px}.army-battle .attack-confirm{bottom:196px}.army-battle .objective{top:72px}.army-battle .objective p{flex-basis:65%}.army-battle .objective #taskStatus{font-size:9px}.army-battle .objective .text-button{font-size:9px}}
@media(max-height:600px) and (orientation:landscape){.army-battle .roster button{width:104px;padding:6px}.army-battle .roster .face{display:none}.army-battle .battle-message{display:none}.army-battle .roster{flex:1}.army-battle .objective{padding:3px 8px}.army-battle .objective #taskStatus{font-size:8px}.army-battle .unit-panel{top:108px}.army-battle .unit-actions button{min-height:35px}.army-battle .unit-stats{margin:4px 0}.army-battle .hp-row{margin-top:3px}}
@media(max-height:600px) and (orientation:landscape){.title-content{top:5%}.title-content h1{font-size:49px}.title-menu{display:grid;grid-template-columns:1fr 1fr;max-width:390px;gap:6px}.title-menu .menu-pair{grid-column:span 2;gap:6px}.title-menu button{font-size:11px;padding:8px 10px;min-height:37px}.title-menu #titleStrategy span{display:none}.title-content .tagline{display:none}}

/* Councils are part of the story: objective, earned preparations, then orders. */
.war-brief{padding:18px 22px 14px;border:1px solid #aa925255;border-top:0;background:linear-gradient(115deg,#1e2b28,#0e1a20)}.war-route{display:flex;list-style:none;padding:0;margin:0 0 16px;gap:8px}.war-route li{flex:1;padding:8px 5px;border-bottom:1px solid #64726866;color:#9caa9d;font-size:11px;text-align:center}.war-route li[aria-current]{border-bottom:2px solid #d4b77d;color:#ebd4a3}.war-brief>p{font-size:12px;line-height:1.9;color:#bbc5b4}.war-brief>strong{display:block;border-left:2px solid #bda16b;padding:7px 12px;font:500 14px/1.8 var(--serif);color:#e6d4ad}.war-support{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:18px}.war-support>div{padding:10px;border:1px solid #87937a33;background:#08151b66;color:#99a394}.war-support>div.ready{border-color:#95ac8066;color:#d6dcba}.war-support span{display:block;font-size:12px}.war-support small{display:block;font:10px/1.65 sans-serif;margin-top:7px;color:#aab4a2}.war-brief .note{font-size:10px;margin-bottom:0}.army-battle #taskStatus{white-space:normal;line-height:1.6}#resultText{white-space:pre-line}.dialogue-bottom #nextStory{white-space:nowrap}
@media(max-width:760px){.war-brief{padding:13px}.war-route{gap:4px}.war-route li{font-size:10px}.war-support{grid-template-columns:repeat(2,1fr)}.war-brief>strong{font-size:12px}.war-brief>p{font-size:11px}.strategy-banner small{letter-spacing:.08em}.strategy-banner h3{font-size:22px;letter-spacing:.08em}}

.result-screen{overflow-y:auto}.result-content{margin:auto;flex-shrink:0}@media(max-height:600px){.result-content{padding:20px 15px}.result-content h2{font-size:38px;margin:12px 0}.result-stats{margin:16px 0;padding:12px 0}.result-content>p:not(.eyebrow){font-size:14px}}

/* Campaign commands remain visible while editing long councils on a phone. */
.strategy-modal{max-height:94dvh;overflow:auto;scroll-padding-top:135px}
.strategy-launch{position:sticky;top:0;z-index:8;background:linear-gradient(120deg,#1b2b31,#111e25);border:1px solid #b69b5d77;border-left:4px solid #cfb36f;padding:12px 16px;margin:16px 0 24px;box-shadow:0 8px 24px #0007}
.strategy-launch button{flex-shrink:0;min-height:46px}.army-entry{border-color:#bca268!important;background:#263c3a99!important}
.sortie-entry button{display:block;width:100%;margin:12px 0!important}.sortie-entry h3{font-size:28px!important}
.title-screen{overflow-y:auto}.title-content{padding-bottom:70px}.title-menu{margin-top:20px;gap:8px}
@media(orientation:portrait){.title-content{top:8%;}.title-content h1{font-size:clamp(58px,15vw,96px)}.title-menu{margin-top:15px;max-width:290px}.title-menu button{min-height:40px;padding:9px 12px}.story-tools{flex-wrap:wrap;justify-content:flex-end;max-width:58vw}.story-tools button{padding:7px 9px;font-size:11px}.story-top{gap:8px}.strategy-launch{padding:10px;gap:3px}.strategy-launch small{font-size:10px}.strategy-launch button{margin:4px 0 0!important}.strategy-modal .modal-head{position:relative}.war-brief{margin-bottom:10px}}
@media(max-height:600px) and (orientation:landscape){.strategy-launch{flex-direction:row}.title-bottom{position:fixed}.title-menu{max-width:450px}.title-menu .army-entry{grid-column:span 2}}

/* Commander equipment stays usable with four active officers on a narrow screen. */
.gear-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.gear-tabs button{min-height:44px;white-space:normal;line-height:1.5;padding:9px 7px}.gear-back{width:100%;text-align:left;margin:0 0 14px!important}.army-identity>div{min-width:0}.army-gear{font-size:11px!important;line-height:1.7;overflow-wrap:anywhere}.gear-overview>div{min-width:0}.gear-overview p{overflow-wrap:anywhere}.gear-preview{position:sticky;bottom:-1px;background:#102126;padding:12px;box-shadow:0 -10px 18px #102126e6}.gear-preview>button{min-height:44px}.gear-preview p{margin:0 0 5px}.gear-preview small{line-height:1.7}

/* Phone combat: a large pannable board and persistent orders, with optional details. */
.command-dock{display:contents}#mobileActions,.mobile-only{display:none}
body.mobile-battle .hud{height:54px;padding:5px 8px;gap:6px;background:#0a171ef5}
body.mobile-battle .chapter-mark{min-width:0;flex:1;gap:0}
body.mobile-battle .chapter-mark>span,body.mobile-battle .hud .phase{display:none}
body.mobile-battle .chapter-mark h2{font-size:17px;letter-spacing:.05em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.mobile-battle .hud-right{gap:5px;flex-shrink:0}
body.mobile-battle .turn{font-size:10px;white-space:nowrap}body.mobile-battle .turn b{font-size:23px}
body.mobile-battle .hud .music-toggle,body.mobile-battle .hud .icon-button{width:44px;height:44px;min-height:44px;padding:8px}
body.mobile-battle .objective{top:54px;left:8px;right:8px;height:48px;max-width:none;padding:2px 8px;gap:8px;flex-wrap:nowrap;background:#0c1c23ee;border-left:2px solid #c9b27b}
body.mobile-battle .objective .small-label,body.mobile-battle .objective #taskStatus{display:none}
body.mobile-battle .objective p{flex:1;flex-basis:auto;min-width:0;font-size:11px;line-height:1.65;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
body.mobile-battle .objective .text-button{width:48px;min-width:48px;height:44px;min-height:44px;padding:2px;font-size:11px;text-align:center;white-space:normal}
body.mobile-battle .camera-tools{left:8px;right:8px;top:106px;bottom:auto;display:flex;flex-direction:row;justify-content:space-between;gap:4px;height:44px}
body.mobile-battle .camera-tools button,body.mobile-battle .camera-tools button:last-child{flex:1;width:auto;max-width:62px;min-width:44px;height:44px;min-height:44px;padding:5px 2px;font-size:18px;background:#13252df2}
body.mobile-battle .camera-tools button:nth-last-child(-n+3){font-size:12px}
body.mobile-battle .mobile-only{display:block}
body.mobile-battle .battle-footer{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;padding:6px 8px max(8px,env(safe-area-inset-bottom));left:0;right:0;bottom:0;align-items:stretch;background:#0b1a22f5;border-top:1px solid #b39c6455}
body.mobile-battle .battle-footer .roster{order:0;display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:5px;flex:none;width:100%}
body.mobile-battle .battle-footer .roster button{width:auto;min-width:0;min-height:44px;height:44px;padding:4px 2px;justify-content:center;text-align:center;gap:0}
body.mobile-battle .roster .face{display:none}body.mobile-battle .roster .info{font-size:12px;line-height:1.3;gap:3px;white-space:nowrap}body.mobile-battle .roster small{font-size:10px;white-space:nowrap}
body.mobile-battle .command-dock{order:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;align-items:stretch}
body.mobile-battle #mobileActions,body.mobile-battle #mobileActions .unit-actions{display:contents}
body.mobile-battle .command-dock button{grid-column:auto;min-width:0;width:auto;min-height:44px;padding:5px 2px;font-size:11px;letter-spacing:0;display:block;text-align:center;line-height:1.5}
body.mobile-battle .command-dock small{display:block;font-size:9px;margin:2px 0 0;color:#a9bbb1}
body.mobile-battle .command-dock .end-turn{min-width:0;min-height:44px;padding:5px 2px;font-size:12px}
body.mobile-battle .battle-message{order:2;display:block;flex:none;width:100%;font-size:10px;line-height:1.5;text-align:center;min-height:15px;max-height:30px;overflow:hidden}
body.mobile-battle .battle-message small{display:none}
body.mobile-battle .unit-panel{left:8px;right:8px;top:auto;bottom:calc(var(--battle-footer-height,132px) + 5px);width:auto;display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;padding:12px;background:#10242afa;z-index:4;max-height:calc(100% - var(--battle-footer-height,132px) - 160px);overflow-y:auto;overscroll-behavior:contain}
body.mobile-battle .unit-heading{grid-row:1/4}body.mobile-battle .unit-portrait{display:block;width:40px;height:48px}body.mobile-battle .unit-heading h3{font-size:20px}
body.mobile-battle .unit-panel .unit-stats{margin:3px 0}body.mobile-battle .unit-panel .gear-summary{min-height:44px;margin:2px 0}
body.mobile-battle .attack-confirm{left:8px;right:8px;bottom:calc(var(--battle-footer-height,132px) + 5px);min-width:0;transform:none;padding:10px;gap:7px}
body.mobile-battle .attack-confirm button{min-height:44px;padding:8px 12px}
body.mobile-battle .toast{bottom:calc(var(--battle-footer-height,132px) + 8px);max-width:calc(100% - 24px);font-size:12px;pointer-events:none}
@media(orientation:landscape){
 body.mobile-battle .hud{right:240px}body.mobile-battle .objective{right:240px}
 body.mobile-battle .battle-footer{left:auto;right:8px;top:8px;bottom:108px;width:220px;padding:6px;align-content:start;overflow-y:auto;pointer-events:auto;overscroll-behavior:contain}
 body.mobile-battle .battle-footer .roster{grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr))}
 body.mobile-battle .command-dock{grid-template-columns:repeat(2,minmax(0,1fr))}
 body.mobile-battle .camera-tools{left:auto;right:8px;top:auto;bottom:8px;width:220px;height:92px;display:grid;grid-template-columns:repeat(3,1fr);gap:4px}
 body.mobile-battle .camera-tools button,body.mobile-battle .camera-tools button:last-child{max-width:none;width:100%}
 body.mobile-battle .unit-panel{left:8px;right:240px;bottom:8px;max-height:calc(100% - 112px)}
 body.mobile-battle .attack-confirm{right:240px;bottom:8px}
 body.mobile-battle .toast{bottom:16px;max-width:calc(100% - 260px);left:calc((100% - 240px)/2)}
}

/* The fitting uses the same painted wardrobe layers as deployed combat. */
.gear-fitting{margin:14px 0;position:relative;border:1px solid #bda37344;background:#08141a;overflow:hidden}.gear-fitting canvas{display:block;width:100%;height:220px;object-fit:contain}.gear-fitting figcaption{position:absolute;right:16px;bottom:12px;color:#dbc69d;font-size:12px;letter-spacing:.12em}@media(max-width:760px){.gear-fitting canvas{height:200px}}

/* Orders remain reachable with the detail panel folded. */
.attack-confirm{flex-wrap:wrap;max-width:560px}.attack-confirm .target-detail{flex-basis:100%}.attack-confirm .attack-modes{display:flex;gap:5px;flex-wrap:wrap;min-width:0;flex-basis:100%}.attack-modes button{font-size:12px;padding:8px 12px;min-height:44px}.attack-modes button[aria-pressed=true]{color:#f3d899;background:#4d4732;border-color:#c8b17d}.attack-confirm #attackDetails{display:block;line-height:1.7;margin-top:6px}.attack-confirm #confirmAttack{margin-left:auto}.fire-orders{padding:16px 0;border-bottom:1px solid #6d745344}.fire-orders button{display:flex;align-items:center;justify-content:space-between;gap:20px;width:100%;min-height:48px;text-align:left}.fire-orders strong{color:#e1bd82;font-weight:500}.unit-actions #rangedOrder{border-color:#baa36c;color:#edd39b}body.mobile-battle.ranged-orders .command-dock{grid-template-columns:repeat(5,minmax(0,1fr))}body.mobile-battle .attack-confirm .target-detail{min-width:0}body.mobile-battle .attack-confirm p{flex-wrap:wrap;gap:8px}body.mobile-battle .attack-confirm #confirmAttack{max-width:60%}
@media(orientation:landscape){body.mobile-battle.ranged-orders .command-dock{grid-template-columns:repeat(2,minmax(0,1fr))}body.mobile-battle .attack-confirm{max-height:calc(100% - 64px);overflow-y:auto}}

/* Council controls keep a full touch target beside the troop count. */
.troop-row button{width:44px;min-height:44px}.troop-row label{min-width:0}.troop-row label small{max-width:160px}.troop-row input{min-height:44px;box-sizing:border-box}
.troop-transfer{margin:18px 0 8px;padding:12px;border:1px solid #a48e5b55;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px}.troop-transfer legend{padding:0 8px;color:#ddc99f;font-size:13px}.troop-transfer label{font-size:11px;color:#aebca9}.troop-transfer select{display:block;width:100%;min-height:44px;margin-top:6px;padding:8px;background:#14242a;color:#ead7b0;border:1px solid #ad915d77}.troop-transfer button{grid-column:1/-1;min-height:44px;margin:2px 0!important}.troop-transfer p{grid-column:1/-1;margin:0!important;font-size:11px;color:#aebca9}.deployed-strength{padding:12px;border-left:2px solid #b69b5d;color:#e2ce9f;font-size:12px;line-height:1.8}
@media(max-width:440px){.troop-row{gap:6px}.troop-row label small{max-width:120px}.troop-row>div{flex-shrink:0;gap:2px}.troop-row input{width:48px}.troop-row label i{width:22px}.troop-row label{gap:4px}}

/* Notifications must never stretch between the mobile top and bottom anchors. */
.toast,body.mobile-battle .toast{height:auto;min-height:0;max-height:5.5em;overflow:hidden;pointer-events:none;line-height:1.5;}
body.mobile-battle .toast{top:auto;width:max-content;max-width:calc(100% - 24px);padding:10px 14px;}

.story-flow section{border-top:1px solid #bda56e44;padding:14px 0;}.story-flow h3{color:#dfc58e;font-size:15px;margin:0 0 8px;}.story-flow p{line-height:1.8;white-space:pre-line;margin:0;}
.story-screen[data-narration="true"] .dialogue{background:linear-gradient(135deg,#0d2029f5,#101a20f5);border-left:3px solid #c5ac72;}
@media(max-width:600px){.story-tools{flex-wrap:wrap;justify-content:flex-end;gap:4px;}.story-tools button{min-height:36px;padding:4px 8px;font-size:11px;}.story-screen[data-narration="true"] #storyText{font-size:clamp(14px,3.7vw,17px);line-height:1.8;}.story-flow p{font-size:14px;}}

.story-screen[data-narration="true"] .dialogue{display:flex;flex-direction:column;max-height:calc(100% - 140px);}.story-screen[data-narration="true"] #storyText{overflow-y:auto;min-height:0;}.story-screen[data-narration="true"] .dialogue-meta,.story-screen[data-narration="true"] .dialogue-bottom{flex-shrink:0;}

.cast-entry>div{min-width:0}.cast-entry .cast-first-seen{color:#9bafa9;font-size:11px;line-height:1.7;border-top:1px solid #8c9d9133;padding-top:8px}
