:root{--ink:#193d31;--muted:#738175;--gold:#bb8b40;--paper:#f5f3e9;--line:#dedfd1;--green:#204f3d;--light:#e8ecdf;--serif:Georgia,'Times New Roman',serif;--sans:Inter,'Segoe UI',Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}button:focus-visible,a:focus-visible{outline:3px solid #d59c38;outline-offset:4px}button{transition:background .16s,transform .16s,border-color .16s}button:not(:disabled):active{transform:translateY(1px)}button[hidden],[hidden]{display:none!important}.app-shell{max-width:1500px;margin:auto;padding:0 42px}.topbar{height:79px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:16px}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;color:var(--ink);font-size:17px;letter-spacing:2px;font-weight:500}.brand svg{width:35px;height:35px;fill:var(--gold)}.brand b{font-weight:800}.theme-label{font-size:10px;letter-spacing:1.8px;color:var(--muted);display:flex;align-items:center;gap:13px}.tiny-diamond{color:var(--gold);font-size:9px}.bar{color:#b8beb0}.top-actions{display:flex;align-items:center;gap:18px}.text-button{border:none;background:none;padding:6px 0;font-size:12px;color:var(--ink);font-weight:600}.text-button:hover{color:var(--gold)}.text-button span{margin-left:7px}.icon-button{width:34px;height:34px;border:1px solid var(--line);border-radius:7px;background:transparent;color:var(--ink);font-size:16px;display:inline-grid;place-items:center}.icon-button:hover{background:#e6eadc}.heading-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:32px 0 26px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2px;color:var(--gold);margin:0 0 11px}h1{font-family:var(--serif);font-size:clamp(27px,2.75vw,42px);font-weight:400;letter-spacing:-1.2px;margin:0 0 9px}.subtitle{font-size:12px;color:var(--muted);margin:0;letter-spacing:.5px}.chapter-display{text-align:right;font-size:13px}.chapter-display .eyebrow{display:block;color:var(--muted);font-size:9px}.chapter-display>div{font-weight:600}.campaign-dots{display:flex;justify-content:flex-end;gap:7px;margin-top:13px}.campaign-dots i{width:28px;height:3px;border-radius:2px;background:#d5dacb}.campaign-dots i.current{background:var(--gold)}.campaign-dots i.done{background:var(--green)}.mobile-break{display:none}.resource-bar{display:grid;grid-template-columns:1.1fr 1.05fr 1.05fr 1fr;background:#fcfbf5;border:1px solid var(--line);border-radius:11px;margin-bottom:22px;overflow:hidden}.resource{display:flex;align-items:center;gap:12px;min-height:76px;padding:16px 20px;position:relative}.resource+.resource:before{content:'';height:36px;width:1px;background:var(--line);position:absolute;left:0}.resource small{display:block;font-size:8px;letter-spacing:1.1px;font-weight:600;color:var(--muted);margin-bottom:4px}.resource strong{font-size:23px;font-weight:650;font-variant-numeric:tabular-nums}.resource em{font-size:11px;font-style:normal;color:var(--muted);font-weight:400}.resource-icon{width:30px;font-size:27px;text-align:center;font-family:var(--serif)}.gold{color:#ba8d3d}.heart{color:#c77554}.trust{color:#719776}.wave{color:#7e9280}.resource-note{font-size:9px;color:var(--muted);margin-left:auto;max-width:52px;line-height:1.4}.ward-badge{font-size:9px;background:#e3eadd;color:var(--green);padding:5px 7px;border-radius:4px;margin-left:auto}.trust-meter{height:4px;width:47px;background:#e6eadf;margin-left:auto;overflow:hidden;border-radius:3px}.trust-meter span{display:block;background:#65997b;height:100%}.status-pill{font-size:9px;white-space:nowrap;background:#e8ecdf;padding:6px 9px;border-radius:4px;margin-left:auto}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 278px;gap:22px}.battle-area{border:1px solid var(--line);border-radius:12px;background:#fcfbf5;overflow:hidden;align-self:start}.map-header{height:48px;padding:0 21px;display:flex;align-items:center;justify-content:space-between;font-size:9px;letter-spacing:1px}.map-header>div{display:flex;align-items:center;gap:9px}.map-header b{font-weight:650}.map-header-sub{color:var(--muted);letter-spacing:0;margin-left:4px}.map-header>span{color:var(--muted);letter-spacing:0;font-size:10px}.live-dot{width:5px;height:5px;background:#6d9470;border-radius:50%}.board{aspect-ratio:1000/640;position:relative;background:#aab899;overflow:hidden;border-top:1px solid #b5bfa5;border-bottom:1px solid #b5bfa5}canvas{width:100%;height:100%;display:block}.slots{position:absolute;inset:0;pointer-events:none}.slot{position:absolute;width:5.6%;aspect-ratio:1;border-radius:50%;transform:translate(-50%,-50%);background:#ecebda90;border:1px dashed #49664988;pointer-events:auto;color:#436748;font-size:clamp(16px,2vw,24px);display:grid;place-items:center;font-family:var(--serif);line-height:1}.slot:hover,.slot.highlight{background:#fcf1ccbb;border:2px solid #c28e38;box-shadow:0 0 0 5px #e4c57530}.slot.selected{box-shadow:0 0 0 5px #e4c57577;border:2px solid #c6943f}.slot.built{background:transparent;border:none}.slot.built:hover{background:#faf2b534;border:1px solid #e9d193}.slot.built span{opacity:0}.slot:focus-visible{outline-offset:0}.map-key{position:absolute;bottom:16px;left:21px;display:flex;gap:18px;font-size:9px;color:#304c34;background:#eef0debd;padding:8px 11px;border-radius:5px;backdrop-filter:blur(4px);pointer-events:none}.map-key span{display:flex;align-items:center;gap:7px}.map-key i{display:inline-block}.key-route{width:18px;height:5px;border-radius:3px;background:#dcc996;border:1px solid #b2a277}.key-slot{width:9px;height:9px;border-radius:50%;border:1px dashed #526f4b}.map-caption{position:absolute;bottom:22px;right:21px;letter-spacing:2.5px;font-family:var(--serif);font-size:14px;color:#4b6450;pointer-events:none}.map-caption span{margin-left:6px;color:#a7833d}.battle-controls{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:17px 20px;min-height:91px}.wave-brief{display:flex;flex-direction:column;gap:4px}.wave-brief small{font-size:8px;letter-spacing:1.4px;color:var(--muted)}.wave-brief b{font-size:12px;font-weight:600}.wave-brief>span{font-size:10px;color:var(--muted);line-height:1.4;max-width:300px}.play-controls{display:flex;align-items:center;gap:7px}.speed-button{border:1px solid var(--line);border-radius:6px;background:transparent;font-size:11px;font-weight:650;color:var(--ink);height:34px;min-width:34px}.primary-button{border:1px solid var(--green);background:var(--green);color:#fcf8e9;border-radius:6px;padding:13px 17px;font-weight:600;font-size:12px;display:flex;justify-content:space-between;align-items:center;gap:20px}.primary-button:hover{background:#173b2f}.launch-button{height:40px;white-space:nowrap}.primary-button span{font-size:16px;color:#dbc586}.story-strip{border-top:1px solid var(--line);background:#f0f1e7;display:flex;align-items:center;gap:13px;padding:15px 20px}.story-seal{font-size:26px;color:var(--gold)}.story-strip small{font-size:8px;letter-spacing:1.5px;color:var(--gold);font-weight:700}.story-strip p{font-family:var(--serif);font-size:12px;line-height:1.5;margin:4px 0 0;color:#576750}.story-strip .text-button{margin-left:auto;white-space:nowrap}.strategy-panel{border:1px solid var(--line);border-radius:12px;background:#fcfbf5;padding:23px 19px;align-self:start}.panel-heading .eyebrow{font-size:8px;letter-spacing:1.6px;margin-bottom:9px}.panel-heading h2{font-family:var(--serif);font-weight:400;font-size:23px;margin:0 0 8px}.panel-heading p:not(.eyebrow){font-size:10px;color:var(--muted);line-height:1.6;margin:0 0 18px}.tower-shop{display:flex;flex-direction:column;gap:9px}.tower-card{text-align:left;border:1px solid var(--line);border-radius:8px;background:#f8f8f0;padding:12px;position:relative;color:var(--ink);width:100%;display:grid;grid-template-columns:38px 1fr;gap:10px}.tower-card:hover{border-color:#baa467;background:#f5f0df}.tower-card.active{border-color:#ae8c46;background:#f8f1de;box-shadow:inset 0 0 0 1px #ae8c46}.tower-card .tower-icon{background:#e8eadc;border-radius:7px;display:flex;align-items:center;justify-content:center;height:42px}.tower-icon svg{width:29px;height:34px}.tower-card.active .tower-icon{background:#eee2bd}.tower-card h3{font-size:11px;margin:0 0 5px;font-weight:650;display:flex;align-items:center;justify-content:space-between;gap:5px}.tower-card h3 span{color:#a47b36;font-size:11px;font-weight:650}.tower-card p{font-size:9px;line-height:1.5;color:#73816d;margin:0 0 7px}.tower-stats{display:flex;gap:9px;font-size:8px;color:#576b57}.tower-stats b{font-weight:600}.tower-card .card-shortcut{position:absolute;left:4px;top:4px;font-size:7px;color:#7e8c75}.amanah-note{display:flex;gap:10px;margin:20px 0;padding:13px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.amanah-note>span{font-size:22px;color:#729b75}.amanah-note b{font-size:10px;font-weight:600}.amanah-note p{font-size:9px;line-height:1.6;color:var(--muted);margin:5px 0 0}.section-label{font-size:8px;letter-spacing:1px;color:var(--muted);display:flex;justify-content:space-between;font-weight:600;margin-bottom:13px}.section-label span{font-size:7px;letter-spacing:.7px;color:#9ba591}.nation-item{display:flex;align-items:center;gap:10px;padding:8px 0}.nation-mark{width:25px;height:29px;clip-path:polygon(0 0,100% 0,100% 75%,50% 100%,0 75%);display:grid;place-items:center;font-family:var(--serif);font-size:12px;background:#e1e5d7;color:#76836e;border-top:2px solid #b5c0ac}.nation-item.active .nation-mark{background:#e9d7b8;color:#80603c;border-color:#b79760}.nation-item.done .nation-mark{background:#dce9d6;color:#547653;border-color:#88a677}.nation-item b{font-size:10px;font-weight:600}.nation-item small{display:block;font-size:8px;color:var(--muted);margin-top:2px}.nation-item>span:last-child{margin-left:auto;color:#829676;font-size:11px}.tower-detail-icon{display:flex;gap:11px;align-items:center;padding:10px;background:#eef0e3;border-radius:7px;margin-bottom:12px}.tower-detail-icon svg{width:42px;height:49px}.tower-detail-icon b{font-size:12px}.tower-detail-icon p{font-size:10px;line-height:1.5;color:var(--muted);margin:4px 0}.upgrade-option{display:block;text-align:left;padding:12px;width:100%;border:1px solid var(--line);border-radius:7px;background:#f8f8ef;margin-top:8px;color:var(--ink)}.upgrade-option:hover{border-color:var(--gold);background:#f7f0df}.upgrade-option b{font-size:11px;display:flex;justify-content:space-between}.upgrade-option b span{color:#a47b36}.upgrade-option small{font-size:9px;color:var(--muted);display:block;margin-top:5px;line-height:1.5}.upgrade-label{font-size:9px;margin:12px 0 5px;color:var(--gold);font-weight:600;letter-spacing:1px}.detail-actions{display:flex;justify-content:space-between;margin-top:17px;gap:12px}.danger-text{color:#976e53}.tower-selected-tip{color:var(--muted);font-size:9px;line-height:1.6;margin:14px 0 0}.toast{position:absolute;left:50%;bottom:65px;transform:translateX(-50%) translateY(8px);background:#183f32eb;color:#fcf9eb;font-size:11px;padding:11px 17px;border-radius:7px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;max-width:90%;text-align:center;box-shadow:0 4px 16px #18352922}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}footer{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:18px 0 24px;font-size:9px;color:#8a957f}footer>span{display:flex;align-items:center;gap:6px}.footer-dot{width:4px;height:4px;border-radius:50%;background:#92a084}footer .text-button{font-size:10px;color:#839076}dialog{padding:0;border:none;background:#fcfaf0;color:var(--ink);border-radius:15px;width:min(620px,calc(100% - 32px));max-height:calc(100dvh - 40px);box-shadow:0 30px 100px #0a231c66;overflow:auto}dialog::backdrop{background:#13372b80;backdrop-filter:blur(5px)}.dialog-inner{padding:32px 36px}.dialog-top{display:flex;justify-content:space-between;align-items:center;gap:10px}.dialog-top .eyebrow{margin:0;font-size:9px}.dialog-close{border:1px solid #dedfd0;border-radius:50%;background:none;color:var(--ink);height:27px;width:27px;display:grid;place-items:center;font-size:17px}.dialog-crest{font-family:var(--serif);font-size:43px;color:var(--gold);margin:18px 0 13px;line-height:1}.dialog-inner h2{font-family:var(--serif);font-size:35px;font-weight:400;letter-spacing:-.8px;margin:13px 0 12px;line-height:1.13}.dialog-lead{font-size:12px;line-height:1.85;color:#63715d;margin:0 0 18px}.dialog-lead strong{color:var(--ink);font-weight:600}.royal-quote{padding:16px 19px;border-left:2px solid var(--gold);background:#f1f0e2;margin:20px 0;font-family:var(--serif);font-size:17px;line-height:1.55}.royal-quote small{display:block;font-family:var(--sans);letter-spacing:1.2px;font-size:8px;color:#8b956f;margin-top:9px}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px;margin-top:19px}.choice-card{text-align:left;background:#f5f4e7;border:1px solid #d9ddc8;border-radius:9px;padding:16px;color:var(--ink);display:block;width:100%}.choice-card:hover{background:#eee8cf;border-color:#b79755}.choice-card strong{display:block;font-size:12px;margin-bottom:8px}.choice-card p{font-size:10px;line-height:1.65;color:#71806b;margin:0 0 10px}.choice-card span{font-size:9px;color:#9a763b;display:block;line-height:1.7;font-weight:600}.dialog-footnote{font-size:9px;line-height:1.6;color:#919a84;margin:19px 0 0}.dialog-footer{border-top:1px solid var(--line);margin-top:23px;padding-top:18px;display:flex;align-items:center;justify-content:space-between;gap:15px}.dialog-footer .primary-button{min-width:180px}.chapter-pills{display:flex;gap:8px;margin:16px 0 19px}.chapter-pill{font-size:9px;flex:1;border:1px solid #dcded0;border-radius:5px;padding:10px 8px;color:#737f67;display:flex;gap:7px;align-items:center}.chapter-pill i{font-style:normal;color:#b89550;font-family:var(--serif);font-size:14px}.how-list{display:grid;gap:12px;margin:22px 0}.how-step{display:flex;gap:13px}.how-step>span{width:26px;height:26px;flex-shrink:0;display:grid;place-items:center;background:#e4e8d8;border-radius:50%;color:#63805b;font-size:11px}.how-step b{font-size:12px}.how-step p{font-size:11px;line-height:1.7;color:var(--muted);margin:5px 0}.kbd{font-family:monospace;background:#e9eadd;border:1px solid #d9ddca;border-bottom-width:2px;border-radius:3px;padding:1px 4px;font-size:10px}.victory-stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #dedfcf;border-radius:8px;overflow:hidden;margin:22px 0}.victory-stats>div{padding:14px;text-align:center}.victory-stats>div+div{border-left:1px solid #dedfcf}.victory-stats b{font-family:var(--serif);font-size:26px;font-weight:400;display:block}.victory-stats small{font-size:8px;display:block;letter-spacing:.5px;color:var(--muted);margin-top:4px}.treaty-list{margin:20px 0}.treaty-row{display:flex;gap:12px;padding:11px 0;border-bottom:1px solid #e0e3d3}.treaty-row>span{color:#77936c}.treaty-row b{font-size:11px}.treaty-row p{font-size:10px;color:var(--muted);margin:4px 0;line-height:1.6}.learning-reflection{background:#e9eedf;border-radius:8px;padding:16px;margin-top:19px}.learning-reflection b{font-size:11px}.learning-reflection p{font-size:11px;line-height:1.8;color:#697861;margin:6px 0 0}.resume-badge{color:#68805c;background:#e5edda;font-size:9px;padding:6px 9px;border-radius:4px}.small-outline{background:transparent;border:1px solid var(--line);border-radius:6px;padding:10px 14px;color:var(--ink);font-size:11px}.dialog-body-line{font-size:11px;line-height:1.8;color:var(--muted)}.story-chapter{padding:12px 0;border-bottom:1px solid var(--line)}.story-chapter b{font-size:12px}.story-chapter p{font-size:11px;line-height:1.7;color:var(--muted);margin:7px 0}.small-label{font-size:9px;color:var(--gold);letter-spacing:.8px}.test-chip{display:inline-block;border:1px solid #d8ddcd;border-radius:4px;padding:6px 9px;font-size:9px;color:var(--muted)}
@media(min-width:1550px){.app-shell{padding:0 35px}}@media(max-width:1180px){.app-shell{padding:0 26px}.game-layout{grid-template-columns:minmax(0,1fr) 248px;gap:16px}.strategy-panel{padding:20px 15px}.resource{padding:14px;gap:8px}.resource-note{display:none}.resource small{font-size:7px}.wave-brief>span{max-width:240px}.launch-button{font-size:10px;padding:10px;gap:10px}.battle-controls{padding:14px}.map-header-sub{display:none}.status-pill{font-size:8px}.resource strong{font-size:21px}.heading-row{padding-top:25px}}
@media(max-width:900px){.game-layout{grid-template-columns:1fr}.strategy-panel{display:grid;grid-template-columns:1fr 1fr;gap:14px 22px}.panel-heading{grid-column:1/-1}.panel-heading p:not(.eyebrow){margin-bottom:0}.tower-shop,#towerDetail{grid-column:1/-1}.tower-shop{flex-direction:row}.tower-card{grid-template-columns:1fr}.tower-card .tower-icon{width:36px;position:absolute;right:10px;top:10px;opacity:.35}.tower-card h3{padding-right:20px;flex-direction:column;align-items:flex-start}.tower-card p{max-width:160px}.amanah-note{margin:0;border:0;padding:5px 0}.nation-panel{padding:5px 0}.tower-detail-icon{margin-bottom:10px}.upgrade-options{display:flex;gap:10px}.upgrade-option{flex:1;margin:0}.resource-bar{margin-bottom:15px}.resource{padding:12px 14px;min-height:71px}.ward-badge{position:absolute;right:10px;bottom:8px;padding:2px 4px;font-size:7px}.trust-meter{display:none}.status-pill{position:absolute;bottom:9px;right:8px;padding:3px 5px;font-size:7px}.resource small{font-size:7px}.resource-icon{font-size:23px;width:22px}.heading-row{padding:24px 0 20px}.battle-controls{padding:17px 20px}.launch-button{font-size:12px;padding:12px 16px;gap:20px}.map-header-sub{display:block}.strategy-panel h2{font-size:21px}}
@media(max-width:600px){.app-shell{padding:0 14px}.topbar{height:64px}.brand{font-size:13px;letter-spacing:1.2px;gap:7px}.brand svg{width:28px;height:28px}.theme-label{display:none}.top-actions{gap:12px}.text-button{font-size:10px}.heading-row{padding:24px 0 18px;align-items:flex-start;gap:12px}h1{font-size:29px;line-height:1.16;letter-spacing:-.7px}.mobile-break{display:block}.subtitle{font-size:10px}.chapter-display{font-size:9px;max-width:115px;margin-top:3px}.chapter-display .eyebrow{font-size:7px;letter-spacing:1px;margin-bottom:8px}.campaign-dots i{width:22px}.resource-bar{grid-template-columns:1fr 1fr;border-radius:8px}.resource{min-height:66px;padding:12px;gap:10px}.resource:nth-child(3),.resource:nth-child(4){border-top:1px solid var(--line)}.resource:nth-child(3):before{display:none}.resource small{font-size:7px}.resource strong{font-size:20px}.status-pill{position:static;font-size:7px;margin-left:auto;align-self:flex-start}.ward-badge{position:static;font-size:7px;align-self:flex-start;padding:4px 5px}.map-header{height:39px;padding:0 12px;font-size:8px}.map-header-sub{display:none}.map-header>span{font-size:8px}.slot{width:7%;font-size:19px;min-width:25px}.map-key{bottom:10px;left:10px;gap:10px;font-size:7px;padding:5px 7px}.map-caption{right:12px;bottom:12px;font-size:10px;letter-spacing:1.5px}.battle-controls{padding:14px 12px;flex-wrap:wrap;gap:13px}.wave-brief{flex:1}.wave-brief>span{font-size:9px;max-width:none}.wave-brief b{font-size:11px}.play-controls{width:100%;justify-content:flex-end}.launch-button{flex:1;justify-content:center;height:40px}.story-strip{padding:12px;gap:9px}.story-strip p{font-size:11px}.story-strip small{font-size:7px}.story-seal{font-size:21px}.strategy-panel{padding:18px 13px;gap:14px}.tower-shop{gap:6px}.tower-card{padding:10px 8px}.tower-card h3{font-size:10px;padding-right:0}.tower-card h3 span{font-size:10px}.tower-card p{font-size:8px}.tower-stats{font-size:7px;gap:6px;flex-wrap:wrap}.tower-icon{display:none!important}.nation-panel{grid-column:1/-1}.amanah-note{grid-column:1/-1;border-top:1px solid var(--line);padding-top:12px}.nation-panel #nationList{display:flex;gap:8px}.nation-item{flex:1;gap:6px}.nation-item b{font-size:9px}.nation-item small{font-size:7px}.nation-item>span:last-child{display:none}.nation-mark{width:20px;height:24px;font-size:10px}.section-label{margin-bottom:5px}.detail-actions .text-button{font-size:10px}.upgrade-options{flex-direction:column}.dialog-inner{padding:24px 23px}.dialog-inner h2{font-size:29px}.dialog-lead{font-size:11px}.choice-grid{gap:8px}.choice-card{padding:13px 11px}.choice-card strong{font-size:11px}.choice-card p{font-size:9px}.choice-card span{font-size:8px}.royal-quote{font-size:16px}.dialog-footer{flex-wrap:wrap}.dialog-footer .primary-button{flex:1}.dialog-crest{margin:16px 0 9px}.chapter-pill{font-size:8px;padding:8px 5px;gap:4px}.toast{font-size:10px;width:max-content;max-width:90%;bottom:44px}footer{font-size:8px;align-items:flex-start;line-height:1.6}footer>span{max-width:230px}footer .text-button{font-size:9px;white-space:nowrap}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}dialog::backdrop{backdrop-filter:none}}
.volume-label{display:flex;align-items:center;gap:7px;font-size:10px;color:var(--muted)}.volume-label input{width:65px;accent-color:var(--green)}.mission-panel{margin:18px 0;padding-top:16px;border-top:1px solid var(--line)}.mission-item{display:flex;gap:9px;margin:12px 0}.mission-item>span{color:var(--gold)}.mission-item b{font-size:10px}.mission-item p{font-size:9px;line-height:1.5;color:var(--muted);margin:4px 0}.mission-item small{font-size:8px;color:#a07d3c}.section-label .text-button{font-size:8px;padding:0}.tower-shop{gap:8px}.registration-screen{position:fixed;inset:0;background:#f2f3e9;z-index:1000;display:grid;place-items:center;padding:24px;overflow:auto}.registration-card{width:min(540px,100%);background:#fcfaf0;border:1px solid var(--line);border-radius:18px;padding:36px;box-shadow:0 22px 70px #173b3015}.registration-card h1{font-size:38px}.registration-card p{font-size:13px;line-height:1.7;color:var(--muted)}.registration-card label{font-size:12px;display:block;margin-top:18px}.registration-card input[type=text],.registration-card textarea,.registration-card select{width:100%;border:1px solid var(--line);border-radius:6px;background:#fffefa;padding:11px;margin-top:7px;font:inherit;color:var(--ink)}.registration-card textarea{min-height:90px}.consent-row{display:flex!important;align-items:flex-start;gap:10px;line-height:1.6}.consent-row input{margin-top:4px;accent-color:var(--green)}.login-status{min-height:28px;font-size:12px;color:#926a41!important}.google-login{margin:22px 0 10px}.player-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;font-size:11px;color:var(--muted)}.player-bar>div{display:flex;gap:16px}.survey-fields{display:grid;gap:12px}.survey-fields label{display:block;font-size:12px}.survey-fields select,.survey-fields textarea{display:block;width:100%;padding:9px;margin-top:5px;border:1px solid var(--line);border-radius:5px;font:inherit}.survey-fields textarea{min-height:90px}.survey-status{font-size:12px;min-height:18px;color:var(--green)}@media(max-width:900px){.mission-panel{grid-column:1/-1;margin:0}.tower-shop{flex-wrap:wrap}.tower-card{flex:1 1 29%}}@media(max-width:600px){.volume-label{font-size:0}.volume-label input{width:48px}.top-actions{gap:10px}.registration-card{padding:25px}.registration-card h1{font-size:30px}.tower-card{flex-basis:40%}.player-bar{flex-wrap:wrap}}
/* Phone controls: keep tap targets usable and text inside narrow viewports. */
.mobile-tower-picker{display:none}.strategy-panel{scroll-margin-top:12px}
button,input,select{touch-action:manipulation}.registration-screen{display:flex}.registration-card{margin:auto;flex-shrink:0}.player-bar span{overflow-wrap:anywhere}
@media(max-width:600px){
  .topbar{height:auto;min-height:64px;padding:12px 0;flex-wrap:wrap;gap:10px}.top-actions{margin-left:auto}.icon-button,.speed-button,.launch-button,.dialog-close{min-width:44px;min-height:44px}.text-button,.small-outline{min-height:44px}.volume-label input{height:44px;width:58px}
  .heading-row{flex-direction:column;gap:14px}h1{font-size:29px}.chapter-display{max-width:none;text-align:left;display:flex;align-items:center;gap:9px;flex-wrap:wrap}.chapter-display .eyebrow{margin:0}.campaign-dots{margin:0}.campaign-dots i{width:17px}
  .mobile-tower-picker{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px;padding:8px 12px;font-size:11px;background:#f0f1e7}.mobile-tower-picker select{font:inherit;font-size:16px;max-width:100%;min-height:44px;border:1px solid var(--line);border-radius:6px;padding:8px;background:#fffefa;color:var(--ink);flex:1 1 190px}
  .slot{width:44px;min-width:44px;min-height:44px;font-size:20px}.map-key,.map-caption{display:none}.resource{min-width:0;padding:10px;gap:6px}.resource-icon{width:20px;flex-shrink:0}.resource em{font-size:10px}.status-pill{position:absolute;right:7px;bottom:5px;padding:2px 4px}.ward-badge{position:absolute;right:7px;bottom:5px}.section-label{align-items:center}.detail-actions{flex-wrap:wrap}
  .registration-screen{padding:12px}.registration-card{padding:24px}.registration-card input[type=text],.survey-fields select,.survey-fields textarea{font-size:16px;min-height:44px}.consent-row input{width:20px;height:20px;flex-shrink:0}.google-login{max-width:100%}.dialog-inner{padding:22px 18px}.choice-grid{grid-template-columns:1fr}.chapter-pills{flex-wrap:wrap}.chapter-pill{flex-basis:30%}.player-bar>div{flex-wrap:wrap;gap:8px}.story-strip{align-items:flex-start}.story-strip .text-button{flex-shrink:0}.tower-card{min-width:0}.nation-item{min-width:0}.nation-item b{overflow-wrap:anywhere}
}
@media(max-width:380px){.top-actions{width:100%;justify-content:space-between}.resource small{font-size:6px}.resource strong{font-size:18px}.app-shell{padding:0 10px}}
@media(max-height:500px) and (orientation:landscape){dialog{max-height:calc(100dvh - 16px)}.registration-screen{padding:8px}.registration-card{padding:20px}}
body.registration-active{overflow:hidden}
.region-strip{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:16px 18px;margin:0 0 18px;border:1px solid var(--line);border-radius:9px;background:#eaf0de}.region-strip small,.region-strip b,.region-strip span{display:block}.region-strip small{font-size:8px;letter-spacing:1.5px;color:#788951}.region-strip b{font:20px var(--serif);margin:5px 0}.region-strip span{font-size:10px;color:var(--muted)}.region-strip button{flex-shrink:0}.board{overflow:auto;overscroll-behavior:contain;touch-action:pan-x pan-y;scrollbar-width:thin}.world-scene{position:relative;aspect-ratio:1000/640}.world-scene>canvas{position:absolute;inset:0}.world-scene .slot{width:var(--slot-size,5.6%);min-width:44px;min-height:44px;max-width:60px}.world-scene.overview .slots{display:none}.map-navigation{display:flex;align-items:center;gap:18px;padding:12px 18px;background:#f1f3e8;border-bottom:1px solid var(--line)}.mini-map{width:145px;flex-shrink:0}.mini-map canvas{width:100%;height:auto;aspect-ratio:220/132;border:1px solid #b4c0a0;border-radius:5px}.mini-map small{display:block;font-size:8px;color:var(--muted);line-height:1.5;margin-top:5px}.map-nav-controls{min-width:0;flex:1}.map-nav-controls>div{display:flex;gap:7px;flex-wrap:wrap}.map-nav-controls .small-outline{min-height:44px;font-size:10px;padding:8px 10px}.pan-buttons{margin-top:7px;align-items:center}.pan-buttons .icon-button{min-width:44px;min-height:44px}.pan-buttons span{font-size:9px;line-height:1.5;color:var(--muted);flex:1 1 100px}.battle-toast{position:fixed;bottom:20px;z-index:20}.region-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:20px 0}.region-card{position:relative;overflow:hidden;text-align:left;color:var(--ink);background:#edf0e1;border:1px solid #b6c0a0;border-radius:9px;padding:18px;min-height:160px}.region-card:before{content:'';display:block;height:32px;margin:-18px -18px 14px;background:linear-gradient(135deg,#a9bf91,#d5c7a4)}.region-card.biome-coast:before{background:linear-gradient(135deg,#8fc6b8,#dcd0a2)}.region-card.biome-highland:before{background:linear-gradient(135deg,#8a9b86,#dedccc)}.region-card.biome-forest:before{background:linear-gradient(135deg,#3e7650,#a3b985)}.region-card.biome-capital:before{background:linear-gradient(135deg,#aba783,#d8b96b)}.region-card strong{display:block;font:18px var(--serif)}.region-card p{font-size:10px;line-height:1.7;color:var(--muted)}.region-card small{font-size:10px;line-height:1.7;color:#526b49}.region-number{position:absolute;top:7px;right:12px;font:18px var(--serif);color:#244a35}.region-card:disabled{opacity:.55}.dialog-footer{flex-wrap:wrap}.dialog-footer>span{font-size:10px;color:var(--muted)}@media(max-width:600px){.region-strip{padding:12px;gap:10px}.region-strip b{font-size:17px}.region-strip .small-outline{font-size:10px;padding:8px}.map-navigation{flex-wrap:wrap;gap:9px;padding:12px}.mini-map{width:110px}.map-nav-controls{flex-basis:100%}.region-cards{grid-template-columns:1fr}.map-header{height:auto;min-height:39px;gap:8px;flex-wrap:wrap;padding:9px 12px}.map-header b{font-size:9px}.map-header>span{white-space:normal}}
.tactics-panel{padding:16px 20px;border-top:1px solid var(--line);background:#f8f7ed}.intel-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.intel-heading b{font-size:12px}.intel-heading span{font-size:10px;background:#e5ecd9;padding:5px 8px;border-radius:5px}.intel-panel p{font-size:12px;margin:9px 0 5px}.intel-panel small{font-size:11px;line-height:1.6;color:var(--muted)}.command-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:13px}.command-button{text-align:left;border:1px solid #b4bd9f;border-radius:8px;background:#f0f1e1;color:var(--ink);padding:12px;min-height:76px}.command-button b,.command-button span,.command-button small{display:block}.command-button b{font-size:12px}.command-button span{font-size:11px;margin:5px 0}.command-button small{font-size:10px;color:#69774d}.command-button.command-active{background:#e1ebc9;border-color:#73904b;opacity:1}.command-note{font-size:10px;color:var(--muted);line-height:1.6;margin:10px 0 0}.field-label{display:block;font-size:12px;margin:16px 0 8px}.field-label select{display:block;width:100%;min-height:44px;font:inherit;font-size:16px;border:1px solid var(--line);border-radius:6px;background:#fffefa;color:var(--ink);padding:9px;margin-top:7px}@media(max-width:600px){.tactics-panel{padding:14px 12px}.command-button{padding:10px}.command-button b{font-size:11px}.command-button span{font-size:10px}}
.audio-controls{display:flex;flex-direction:column;gap:2px}.audio-buttons{display:flex;align-items:center;gap:12px}#soundStatus{font-size:9px;color:var(--muted);text-align:right}@media(max-width:600px){.audio-buttons{gap:10px}.top-actions{align-items:center}#testSoundBtn{min-width:44px}#soundStatus{font-size:9px}}
