/* World labels stay visible without hover. The island lives in the central 76%. */
.world{min-height:0;height:100dvh}
.map-scene{width:max(100vw,calc(100dvh * 1.7778),1600px);height:max(100dvh,calc(100vw / 1.7778),900px)}
.map-texture{background-image:url('./assets/world-ocean.png')}
.castle-pin{padding:5px 10px;gap:0}
.pin-glow{height:16px;width:60px;margin-bottom:2px}
.castle-pin .pin-title{font-size:16px}
.pin-subtitle{font-size:11px;letter-spacing:.4px;padding:5px 12px 3px;background:#102d2beF}
.pin-preview,.castle-pin:hover .pin-preview,.castle-pin:focus-visible .pin-preview{position:static;display:block;opacity:1;transform:none;min-width:144px;padding:5px 10px 8px;background:#102d2bef;border:1px solid #a39b6770;border-top:0;border-radius:0 0 5px 5px;font-size:12px}
.pin-values{display:flex;justify-content:space-between;align-items:center;gap:12px;font-variant-numeric:tabular-nums}
.pin-track{display:block;height:7px;margin-top:5px;background:#c56f65;border:1px solid #e9d2a75c;border-radius:2px;overflow:hidden}
.pin-track>span{display:block;height:100%;width:50%;background:#64a9dc;transition:width .5s linear}
.pin-active{top:-9px;right:4px;font-size:9px}
.region-north{top:18%;left:44%}.region-west{top:43%;left:17%}.region-south{top:80%;left:56%}
.map-water{top:91%;left:15%}
.world-heading{top:96px}.world-heading h1{font-size:28px}.world-heading p,.heading-ornament{display:none}
/* Full viewport battle, with all primary controls visible in one frame. */
.castle-dialog{position:fixed;inset:0;margin:0;width:100vw;max-width:none;height:100dvh;max-height:none;border:0;border-radius:0;overflow:hidden;box-shadow:none}
.castle-dialog[open]{display:flex;flex-direction:column}
.castle-dialog .dialog-close{right:22px;top:18px;font-size:34px;width:40px;height:40px}
.castle-dialog-header{flex:none;padding:18px 32px;min-height:102px}
.castle-dialog-header h2{font-size:32px}.overline{font-size:11px}.castle-dialog-header>div>p:last-child{font-size:13px}
.siege-clock{padding-right:60px}.siege-clock>span{font-size:11px}.siege-clock small{font-size:11px}.siege-clock strong{font-size:32px}
.castle-content{flex:1;min-height:0;grid-template-columns:minmax(0,1fr) minmax(360px,31%)}
.battle-view{min-height:0;display:flex;flex-direction:column;padding:22px 26px 16px}
.battlefield{flex:1;min-height:0;height:auto}
.battle-banner>div{font-size:12px}.battle-banner strong{font-size:30px}.battle-banner>span{font-size:32px}
.army-marker{bottom:36px;left:23%;padding:9px 12px;font-size:13px;font-weight:600;background:#173f63f5;border:2px solid #99d7ff;color:#f0faff;box-shadow:0 3px 15px #071f3899}
.army-marker.red{left:77%;background:#762f2af5;border-color:#ffafa0;color:#fff0e8}
.battle-demo{font-size:10px}.frontline{flex:none;padding:14px 0 6px}.frontline-copy{font-size:12px}.frontline-track{height:12px}.frontline>p{font-size:12px;margin-top:12px}
.faction-select{flex:none;margin-top:8px}.faction{padding:13px}.faction strong{font-size:15px}.faction small{font-size:12px}.faction>b{font-size:16px}.battle-footnote{font-size:11px;margin-top:12px}
.company-view{padding:22px 26px 16px;min-height:0;justify-content:center}
.company-heading h3{font-size:28px}.company-heading>span{font-size:12px}.company-hint{font-size:12px;margin:8px 0 14px}
.mercenaries{gap:8px}.mercenary{padding:9px;gap:12px}.portrait{width:42px;height:44px}.portrait canvas{width:37px;height:41px}
.mercenary-name{font-size:14px}.mercenary-price{font-size:12px}.stepper{gap:7px}.stepper button{width:30px;height:32px;font-size:21px}.stepper output{width:23px;font-size:15px}
.company-price{font-size:13px;margin-top:16px;padding-top:12px}.company-price strong{font-size:24px}.company-price small{font-size:12px}
.battle-returns{gap:10px;margin:16px 0}.battle-returns>div{padding:12px 10px}.battle-returns>div>span{font-size:12px}.battle-returns strong{font-size:18px}.battle-returns small{font-size:11px}.tiny-help{font-size:10px;width:16px;height:16px}
.castle-dialog .gold-button,.castle-dialog .retreat-button{font-size:15px;padding:16px;margin-top:0;min-height:51px}.company-note{font-size:11px;margin-top:12px;line-height:1.5}
.castle-dialog .faction:disabled{opacity:1;cursor:default}.castle-dialog .faction small{color:#777b67}.company-hint,.company-price,.battle-returns>div>span{color:#73785e}.mercenary-price,.battle-returns small,.company-note{color:#7c7d61}
.entry-status{padding:10px;border:1px solid #b9ab78;border-radius:4px;color:#5b654c;background:#eee6c8;font-size:12px;line-height:1.5}
.execution-proof{position:absolute;left:12px;bottom:15px;max-width:90%;padding:5px 8px;background:#132d2be6;border:1px solid #a9a578;color:#e8e3c7;font-size:11px}
.dock-button.referral-beacon{color:#ffe19a;border:1px solid #d4a74c;background:linear-gradient(#80632999,#4b3c21cc);box-shadow:inset 0 0 9px #f8ce6833,0 0 13px #f6c85755;animation:beacon-glow 2.8s ease-in-out infinite}
.referral-beacon>span{text-shadow:0 0 10px #ffd25e;font-size:27px}
@keyframes beacon-glow{50%{box-shadow:inset 0 0 13px #ffe09766,0 0 23px #f6c85799;border-color:#ffe6a0}}
.referral-price{font:600 35px var(--title);color:#8e6a25;margin:18px 0}.referral-price small{font:12px var(--font);color:#8b8866}
.referral-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:20px 0}.referral-stats>div{padding:14px;border:1px solid #c4b27e;border-radius:5px;background:#e9e1c6}.referral-stats strong{display:block;font-size:27px;color:#78602f}.referral-stats span{font-size:11px;color:#77795f}
.referral-link{width:100%;padding:11px;border:1px solid #bfad7e;border-radius:4px;color:#626b50;background:#f7f1dd;font:12px var(--font)}
.referral-panel .menu-kicker{color:#28764b;letter-spacing:2px}
.referral-panel h2{margin-bottom:17px;color:#234d36}
.referral-reward{position:relative;isolation:isolate;overflow:hidden;padding:22px 24px 18px;border:1px solid #61b97c;border-radius:9px;text-align:center;background:radial-gradient(ellipse at 50% 0%,#43875299,transparent 65%),linear-gradient(145deg,#183f2d,#102d23);box-shadow:inset 0 0 0 4px #ffffff05,0 8px 24px #23452b26}
.referral-reward::before,.referral-reward::after{content:'✦';position:absolute;z-index:-1;top:57px;font-size:58px;color:#a4ed8c24;text-shadow:0 0 30px #8eea7c55}.referral-reward::before{left:24px}.referral-reward::after{right:24px}
.referral-reward-eyebrow{font-size:10px;letter-spacing:2.1px;color:#b5dbaf;font-weight:600}
.referral-reward-number{display:block;margin:2px 0 0;font:700 clamp(68px,13vw,90px)/1.05 var(--title);letter-spacing:-4px;color:#b5fa89;text-shadow:0 2px #0a281a,0 0 27px #85ec7455}
.referral-reward-number small{font-size:.57em;letter-spacing:-2px;margin-left:3px}
.referral-reward h3{font:600 25px/1.2 var(--title);color:#e4f7cd;margin:2px 0 10px}
.menu-dialog .referral-reward p{max-width:410px;margin:0 auto;color:#d4e8cd;font-size:14px;line-height:1.6}
.referral-reward-seal{display:block;margin-top:15px;padding-top:12px;border-top:1px solid #8ec57c38;color:#aee18f;font-size:11px;line-height:1.5}
.referral-perks{display:flex;justify-content:center;gap:22px;flex-wrap:wrap;margin:15px 0 0;color:#276441;font-size:12px}.referral-perks span{display:flex;align-items:center;gap:7px}.referral-perks b{font-size:20px;color:#287e47}
.referral-panel .referral-price{margin:18px 0 2px;color:#2c643d;font-size:31px}.referral-panel .referral-price small{color:#638064}
.menu-dialog .referral-promise{color:#526a4d;font-size:12px;margin:0 0 14px}
.menu-dialog .referral-activate{margin-top:14px;padding:15px 12px;font-size:14px;font-weight:600;border-color:#276540;background:linear-gradient(#428957,#2c6c43);color:#f1ffe2;text-shadow:0 1px #214f32;box-shadow:0 2px #1a4f30,inset 0 1px #c0e8a74d,0 0 20px #4d945526}
.referral-activate:not(:disabled):hover{background:linear-gradient(#509e64,#347b4b);box-shadow:0 2px #1a4f30,inset 0 1px #c0e8a766,0 0 22px #4d94554d}
.menu-dialog .referral-availability{margin-top:12px;color:#68775b;font-size:10px;line-height:1.5}
.menu-dialog .referral-conditions{border-top:1px solid #bfc7a3;margin-top:16px;padding-top:12px;color:#69755c;font-size:10px;line-height:1.6}
@media(max-width:480px){.referral-reward{padding:20px 15px 16px}.referral-reward-eyebrow{font-size:9px;letter-spacing:1.5px}.referral-reward h3{font-size:23px}.menu-dialog .referral-reward p{font-size:13px}.referral-reward-seal{font-size:10px}.referral-perks{gap:15px;font-size:11px}.referral-panel .referral-price small{font-size:10px}}
@media(max-height:780px){.menu-dialog:has(.referral-panel){padding-block:22px}.referral-reward{padding-block:16px}.referral-reward-number{font-size:74px}.referral-reward h3{font-size:23px}.referral-reward-seal{margin-top:11px;padding-top:9px}.referral-perks{margin-top:12px}.referral-panel .referral-price{margin-top:14px}.menu-dialog .referral-conditions{margin-top:12px;padding-top:10px}}
@media(prefers-reduced-motion:reduce){.dock-button.referral-beacon{animation:none}}
@media(max-width:700px){.entry-status{font-size:11px;padding:7px}.execution-proof{font-size:9px;bottom:8px;left:7px}.wallet-button b{font-size:11px}}
@media(max-height:780px) and (min-width:701px){
 .castle-dialog-header{min-height:82px;padding-block:12px}.battle-view,.company-view{padding:14px 20px}.company-heading h3{font-size:24px}.company-hint{margin:5px 0 8px}.mercenary{padding:5px 8px}.mercenaries{gap:5px}.company-price{margin-top:10px;padding-top:8px}.battle-returns{margin:10px 0}.battle-returns>div{padding:8px}.company-note{margin-top:8px}.battle-footnote{margin-top:7px}
}
@media(max-width:700px) and (orientation:portrait){
 .world-heading{top:80px}.world-heading h1{font-size:23px}.world-heading>span{font-size:7px}
 .castle-dialog-header{min-height:72px;padding:10px 15px}.castle-dialog-header h2{font-size:23px}.castle-dialog-header .overline{font-size:9px;margin-bottom:2px}.castle-dialog-header>div>p:last-child{display:none}
 .castle-dialog .dialog-close{right:7px;top:12px;width:31px;height:31px;font-size:27px}.siege-clock{padding-right:30px}.siege-clock>span{font-size:9px}.siege-clock strong{font-size:25px}.siege-clock small{display:none}
 .castle-content{grid-template-columns:1fr;grid-template-rows:minmax(160px,1fr) auto;min-height:0}
 .battle-view{padding:8px 12px;display:grid;grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) 30px 44px;gap:5px;border:0}
 .battlefield{height:auto;min-height:0}.battle-banner{top:8px;padding:4px 7px;gap:4px}.battle-banner>div{font-size:9px}.battle-banner strong{font-size:21px}.battle-banner>span{font-size:22px}.banner-blue{left:6px}.banner-red{right:6px}
 .army-marker{left:27%;bottom:22px;font-size:10px;padding:5px 7px;border-width:1px}.army-marker.red{left:73%}.battle-demo{font-size:7px;bottom:5px;left:7px}
 .frontline{padding:0}.frontline-copy{font-size:10px}.frontline-track{height:8px;margin-top:5px}.frontline>p,.battle-footnote{display:none}.frontline-track>span{height:18px;font-size:12px}
 .faction-select{margin:0;gap:8px}.faction{padding:5px 8px;gap:6px}.faction strong{font-size:12px}.faction small{font-size:9px;margin-top:1px}.faction>span{font-size:22px}.faction>b{font-size:12px}
 .company-view{padding:8px 12px 10px;display:grid;grid-template-columns:1fr;gap:6px;border-top:1px solid #c9c3a2}
 .company-heading h3{font-size:20px}.company-heading>span{font-size:11px;padding:2px 5px}.company-hint{display:none}
 .mercenaries{display:grid;grid-template-columns:1fr 1fr;gap:5px}.mercenary{padding:5px;gap:5px}.portrait{width:27px;height:32px;flex-shrink:0}.portrait canvas{width:26px;height:31px}.mercenary-name{font-size:12px}.mercenary-price{font-size:10px;margin-top:2px}.stepper{gap:3px}.stepper button{width:24px;height:27px;font-size:18px}.stepper output{width:15px;font-size:12px}
 .company-price{padding:0;margin:0;border:0;font-size:12px}.company-price strong{font-size:20px}.company-price small{font-size:10px}.battle-returns{margin:0;gap:7px}.battle-returns>div{padding:6px 8px}.battle-returns>div>span{font-size:11px}.battle-returns strong{font-size:17px;margin:3px 0}.battle-returns small{font-size:10px;line-height:1.3}
 .castle-dialog .gold-button,.castle-dialog .retreat-button{padding:10px;font-size:14px;min-height:41px}.company-note{font-size:9px;margin:0;line-height:1.3}
}
@media(max-height:500px) and (orientation:landscape){
 .castle-dialog-header{min-height:56px;padding:6px 18px}.castle-dialog-header h2{font-size:21px}.castle-dialog-header>div>p:last-child,.siege-clock small,.company-hint,.company-note,.battle-footnote,.frontline>p{display:none}.overline{font-size:8px}.siege-clock strong{font-size:22px}.siege-clock>span{font-size:8px}
 .castle-content{grid-template-columns:minmax(0,1fr) 340px}.battle-view,.company-view{padding:8px 12px}.company-heading h3{font-size:19px}.mercenaries{display:grid;grid-template-columns:1fr 1fr;gap:4px}.mercenary{padding:4px;gap:3px}.portrait{display:none}.mercenary-name{font-size:11px}.mercenary-price{font-size:10px}.stepper button{width:23px;height:26px}.stepper output{font-size:12px;width:16px}.company-price{margin-top:6px;padding-top:6px}.battle-returns{margin:7px 0}.battle-returns strong{font-size:16px}.battle-returns>div>span{font-size:10px}.battle-returns small{font-size:9px}.castle-dialog .gold-button,.castle-dialog .retreat-button{padding:9px;min-height:36px;font-size:13px}.faction-select{margin-top:4px}.faction{padding:5px}.faction strong{font-size:11px}.faction small{font-size:9px}.frontline{padding:5px 0}.frontline-copy{font-size:10px}.army-marker{font-size:10px}
}
