select,input{font:inherit;color:#e7efdf;background:#123039;border:1px solid #416064;border-radius:5px;padding:10px;max-width:100%}label{font-size:13px;color:var(--muted)}.island-switch{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px;gap:12px;flex-wrap:wrap}.island-switch select{margin-left:12px}.island-switch>span{font-size:12px;color:var(--muted)}.scene-weather{position:absolute;right:16px;bottom:16px;background:#0b2a30db;border:1px solid #668275;border-radius:5px;padding:8px 13px;font-size:11px}.queue{display:flex;gap:20px;align-items:center;justify-content:space-between;border:1px solid #7c6a40;background:#283b33;border-radius:8px;padding:17px 20px;margin:18px 0}.queue strong{font-size:14px;color:var(--gold)}.queue small{display:block;margin-top:7px}.queue.warning{background:#402e26;border-color:#986346}.production{color:var(--green)!important}.danger{color:#ee9e7f!important}.stepper{display:flex;align-items:center;gap:18px}.stepper button{width:35px;margin:0;padding:6px;font-size:16px}.stepper b{color:var(--gold)}.world-map{height:530px;position:relative;border:1px solid #537578;border-radius:12px;overflow:hidden;background:radial-gradient(ellipse at 15% 20%,#32777a 0,transparent 35%),radial-gradient(ellipse at 85% 75%,#1c6570 0,transparent 40%),repeating-linear-gradient(30deg,#ffffff03 0px,#ffffff03 1px,transparent 1px,transparent 30px),#123b4b;box-shadow:inset 0 0 100px #05192399}.world-map:before{content:'';position:absolute;inset:18px;border:1px solid #a5b79b33;pointer-events:none}.world-map svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.world-map svg path{fill:none;stroke:#d4c69450;stroke-width:.3;stroke-dasharray:1.2 1.2}.map-caption{position:absolute;top:25px;left:30px}.map-caption h2{font:25px Georgia;margin:7px 0;color:#e8d5a3}.map-caption small{font-size:9px;letter-spacing:3px}.map-island{position:absolute;transform:translate(-50%,-50%);background:none;border:0;color:#efe7c7;padding:7px;min-width:78px;width:110px;text-shadow:0 2px 3px #000;font-weight:500}.map-island>span{display:block;font-size:46px;filter:drop-shadow(0 8px 4px #0006)}.map-island>small{display:block;font-size:10px;color:#f0e7c9;letter-spacing:0;line-height:1.25;margin:5px 0}.map-island>b{font-size:8px;letter-spacing:1px;background:#09242bd9;border:1px solid #8aa47c66;padding:3px 6px;border-radius:3px;color:var(--gold)}.map-island.selected{border:1px solid #ddbd70;border-radius:60px;background:#c0a66a18}.map-island.home{color:#a1dfb5}.compass{position:absolute;bottom:20px;left:30px;color:#c7bc8c;font:65px Georgia;text-align:center;line-height:1}.compass small{display:block;font-size:12px;color:#c7bc8c}.expedition-layout{display:grid;grid-template-columns:1fr 1fr;gap:16px}.fleet-picker{display:grid;gap:10px;max-height:270px;overflow-y:auto}.fleet-picker label{display:flex;align-items:center;gap:9px;padding:10px;background:#0c242a;border-radius:5px;color:#d4e1d3}.fleet-picker input{accent-color:var(--gold);width:17px;height:17px}.metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:15px;margin-top:20px}.metrics>span{font-size:24px;color:var(--gold)}.metrics small{display:block;font-size:10px;margin-top:5px}.mission{display:flex;gap:20px;align-items:center;margin:16px 0}.mission>span{font-size:40px}.mission h3{margin:0 0 8px}.mission-list{margin-top:20px}.footnote{color:var(--muted);font-size:11px;margin-top:20px}.trade{max-width:740px}.trade form{display:grid;gap:15px;grid-template-columns:1fr 1fr}.trade form label{display:grid;gap:7px}.trade form button{align-self:end;height:41px;margin:0}.xp{max-width:100%}.res{white-space:nowrap}main{margin-top:0}.card button:disabled{font-size:11px}nav{margin-top:20px;gap:3px}nav button{padding:11px 10px}.aside-bottom{padding-top:30px}#content:empty{min-height:500px}.fleet-banner button{margin-top:10px}.gather-bar button:disabled{opacity:.55}.workers .card p{min-height:42px}@media(max-width:1100px){header{gap:15px}.brand{font-size:18px;letter-spacing:1px}#resources{gap:14px}.res{font-size:16px}.res small{font-size:8px;margin-left:5px;letter-spacing:0}header>.quiet{display:none}.world-map{height:470px}.map-island{width:90px}.map-island>span{font-size:37px}.map-caption h2{font-size:20px}.expedition-layout{grid-template-columns:1fr}.workers{grid-template-columns:repeat(3,1fr)}.workers .card{padding:12px}.workers h3{font-size:16px}}@media(max-width:800px){.shell{grid-template-columns:170px 1fr}main{padding:22px 16px}.res{font-size:14px}.world-map{height:460px}.map-island{width:76px;min-width:0}.map-island>span{font-size:30px}.map-island>small{font-size:9px}.map-caption{left:20px}.map-caption h2{font-size:17px}.queue{align-items:flex-start;flex-direction:column;gap:10px;padding:14px}.queue .quiet{padding:7px 10px}.workers{grid-template-columns:1fr}.stepper button{width:40px}.workers .card p{min-height:0}.island-switch select{margin:7px 0 0;display:block}}@media(max-width:700px){.shell{display:block}.res{font-size:16px}.captain{display:flex;position:absolute;right:15px;top:12px}.captain .portrait,.captain small,.captain h2{display:none}.captain b{font-size:10px}.brand{margin-right:40px}.island-switch select{display:inline-block;margin:0 0 0 8px}nav button{padding:10px 8px}.world-map{height:490px}.map-island>span{font-size:30px}.map-island>small{font-size:8px}.map-island>b{font-size:7px}.map-caption h2{font-size:19px}.compass{left:17px;font-size:42px}.workers{grid-template-columns:repeat(3,1fr)}.workers .card{padding:11px 7px}.workers h3{font-size:14px}.workers p{font-size:10px;line-height:1.5}.stepper{gap:9px}.stepper button{width:27px;font-size:13px}.trade form{grid-template-columns:1fr}.scene-label{font-size:15px;padding:8px 10px;left:12px;top:12px}.scene-label small{font-size:8px}.scene-weather{font-size:9px;right:10px;bottom:10px}.page-title{align-items:center}.metrics>span{font-size:22px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

.portrait{font-size:0;background:#17383f url(assets/captain.jpg) center/cover}.fleet-banner{position:relative;overflow:hidden;min-height:260px;padding-left:48%}.fleet-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}.fleet-banner:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,#0b242b33 25%,#0b242bf2 60%);pointer-events:none}.fleet-banner>div{position:relative;z-index:1}.chest-art{display:block;width:85px;height:85px;object-fit:cover;border-radius:100%;margin:0 auto 14px}.slot{padding-top:25px}@media(max-width:700px){.fleet-banner{padding:150px 20px 25px}.fleet-banner:after{background:linear-gradient(0deg,#0b242b,transparent 180%)}.fleet-art{object-position:left center}.chest-art{width:65px;height:65px}}

.header-controls{display:flex;flex-direction:column;gap:5px;min-width:100px}.header-controls select{font-size:11px;padding:6px;background:#123039}.header-controls .quiet{display:block;padding:4px 7px;font-size:10px;color:var(--gold);white-space:nowrap}header{gap:20px}header>#backup{display:none}#auth{max-width:540px;text-align:center;padding:28px 38px;max-height:94vh;overflow-y:auto}.auth-captain{width:80px;height:80px;border-radius:100%;display:block;margin:0 auto 18px}#auth h1{font-size:30px}#auth p{font-size:13px;color:var(--muted);line-height:1.6}.auth-tabs{display:flex;gap:10px;margin:20px 0}.auth-tabs button{flex:1}#auth-form{text-align:left;display:grid;gap:13px}#auth-form label{display:grid;gap:6px}#auth-form input{width:100%}#auth-error{min-height:17px;margin:0}#auth>.quiet{margin-top:15px}.admin-row{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid var(--border);padding:12px 0;align-items:center}.admin-row button{width:auto!important;margin:0}.auth-language{margin-bottom:15px;float:right;font-size:11px;padding:5px}.request-pending #content button{opacity:.65}.header-controls #account-status{max-width:140px;overflow:hidden;text-overflow:ellipsis}@media(max-width:1100px){header{gap:12px;padding-left:18px;padding-right:18px}.brand{font-size:16px}.brand small{font-size:7px;letter-spacing:2px}#resources{gap:12px}}@media(max-width:700px){header{position:relative;justify-content:space-between;padding:15px}.brand{font-size:18px;order:0;margin-right:0}.brand small{font-size:8px}.header-controls{order:1;min-width:88px}.header-controls select{font-size:10px}#resources{order:2;gap:20px;flex-basis:100%;margin-top:6px}.captain{right:120px;top:17px}#auth{padding:24px}#auth h1{font-size:26px}.auth-captain{width:65px;height:65px}.footnote{font-size:10px}.map-island{width:65px}}

@media(max-width:700px){.captain{display:none}.brand{font-size:15px;letter-spacing:.8px;max-width:calc(100% - 102px)}.header-controls{min-width:90px;max-width:100px}.header-controls #account-status{font-size:9px;max-width:100px}.header-controls select{max-width:100px}header .brand small{font-size:6px;letter-spacing:1.8px}}

.chapter-tabs{display:flex;gap:10px;margin-bottom:14px;overflow-x:auto;padding-bottom:5px}.chapter-tabs button{font-size:11px;white-space:nowrap}.chapter-2{background:radial-gradient(ellipse at 20% 20%,#607981,transparent 50%),radial-gradient(ellipse at 70% 60%,#324b6a,transparent 50%),#142b40}.chapter-3{background:radial-gradient(ellipse at 70% 20%,#624045,transparent 60%),radial-gradient(ellipse at 20% 80%,#3d3156,transparent 50%),#1a2339}

.island-scene{aspect-ratio:1.5;background-size:100% 100%}.plot{background:transparent;border:0;padding:0;min-width:0;box-shadow:none;text-align:center;transform:translate(-50%,-65%);z-index:1;overflow:visible}.plot:hover{filter:brightness(1.15);z-index:3}.plot-building{width:clamp(45px,8vw,125px);height:clamp(45px,8vw,125px);object-fit:contain;display:block;filter:drop-shadow(0 8px 4px #19371b66)}.plot-name{display:block;background:#09282cdc;color:#f0dfb2;border:1px solid #83915f99;padding:3px 5px;border-radius:4px;font-size:9px;white-space:nowrap;position:absolute;top:89%;left:50%;transform:translateX(-50%);max-width:145px}.plot-level{position:absolute;right:3px;bottom:10px;background:#143b38;border:1px solid #c0a45b;color:var(--gold);font-size:10px;font-weight:700;border-radius:5px;padding:3px 5px}.plot.empty{opacity:.85;transform:translate(-50%,-35%)}.plot-add{display:grid;place-items:center;width:38px;height:32px;font-size:23px;background:#173e3ac4;border:1px dashed #e1ca7f;border-radius:50%;color:#f2dfa5;margin:auto;box-shadow:0 4px 9px #102e3c55}.plot.empty .plot-name{top:100%;opacity:0;pointer-events:none}.plot.empty:hover .plot-name,.plot.empty:focus-visible .plot-name{opacity:1}.plot.empty .plot-level{display:none}.building-card-art{width:110px;height:110px;object-fit:contain;display:block;margin:-8px auto 12px}.card:has(.building-card-art){position:relative}.card:has(.building-card-art) .badge{position:relative;z-index:1}.scene-label{z-index:4}.scene-weather{z-index:4}@media(min-width:1550px){.island-scene{height:auto;aspect-ratio:1.5;max-height:none}}@media(max-width:700px){.island-scene{aspect-ratio:1.5}.plot-building{width:51px;height:51px}.plot-name{display:none}.plot-level{font-size:8px;bottom:0;right:0;padding:2px 3px}.plot-add{width:27px;height:22px;font-size:18px}.scene-label{font-size:12px;left:8px;top:8px;padding:6px 8px}.scene-label small{font-size:7px}.scene-weather{font-size:8px;right:6px;bottom:6px;padding:4px 6px}.building-card-art{width:90px;height:90px}.plot.empty:focus-visible .plot-name{display:block}}

.auth-tabs button{padding:9px 7px;font-size:12px}#recovery{max-width:650px;text-align:center}#recovery p{color:var(--muted);font-size:14px;line-height:1.6}.recovery-codes{display:grid;gap:8px;margin:25px 0}.recovery-codes code{font-family:Consolas,monospace;padding:10px;background:#09222b;border:1px solid var(--border);border-radius:5px;color:var(--gold);font-size:14px;user-select:all;overflow-wrap:anywhere}#recovery button{margin:5px}#recovery-form{max-width:460px;display:grid;gap:12px;margin:25px 0}#recovery-form label{display:grid;gap:7px}#recovery-form button{margin:0}@media(max-width:700px){.recovery-codes code{font-size:10px}#recovery{padding:22px}#recovery h1{font-size:28px}}

.reel{background:radial-gradient(#24444c,#071920);overflow:hidden;border-color:#b0904f;position:relative}.reel img{width:100%;height:100%;object-fit:contain;display:block}.slot{background:radial-gradient(ellipse at top,#30413a,#0d252f 70%)}.spinning .reel img{animation:reel-roll .12s infinite linear}@keyframes reel-roll{0%{transform:translateY(-20%);filter:blur(2px)}100%{transform:translateY(20%);filter:blur(3px)}}@media(prefers-reduced-motion:reduce){.spinning .reel img{animation:none;filter:none}}

.symbol-guide{max-width:760px;margin:25px auto}.symbol-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;text-align:center;margin:22px 0}.symbol-grid img{width:64px;height:64px;object-fit:contain;display:block;border-radius:50%;margin:0 auto 8px}.symbol-grid strong,.symbol-grid small{display:block;font-size:11px;margin-top:5px}.symbol-grid strong{color:var(--gold)}@media(max-width:700px){.symbol-grid{grid-template-columns:repeat(3,1fr);gap:18px}.symbol-grid img{width:58px;height:58px}}

#building-detail{max-width:650px;padding:28px;max-height:90vh;overflow-y:auto}.building-close{position:absolute;top:12px;right:12px;font-size:24px;padding:3px 12px;line-height:1.2}.building-detail-heading{display:flex;align-items:center;gap:20px;padding-right:25px}.building-detail-heading>img{width:120px;height:120px;object-fit:contain}.building-detail-heading h2{font-size:28px;margin:8px 0 12px}.building-detail-heading small{color:var(--gold);letter-spacing:2px;font-size:9px}.building-description{color:var(--muted);font-size:14px;line-height:1.7}.building-comparison{width:100%;border-collapse:collapse;margin:22px 0;font-size:13px}.building-comparison th,.building-comparison td{padding:13px 10px;border-bottom:1px solid var(--border);text-align:left}.building-comparison thead th{color:var(--muted);font-size:11px;font-weight:500}.building-comparison tbody th{font-weight:500;color:#c8d8ce;width:48%}.building-comparison td:last-child{color:var(--gold)}.building-upgrade-cost{margin-top:24px;padding:16px;background:#0b242b;border:1px solid var(--border);border-radius:8px}.building-upgrade-cost>strong{font-size:12px;color:var(--muted)}.building-costs{display:flex;gap:18px;flex-wrap:wrap;margin-top:12px;color:#e6d2a5;font-size:16px}.building-upgrade{width:100%;margin-top:15px;font-size:16px}.building-blocked{font-size:13px;color:#e7b58a;background:#432f25;padding:12px;border-radius:5px}.building-upgrade:disabled{opacity:.5}@media(max-width:700px){#building-detail{padding:22px 16px;max-height:88vh}.building-detail-heading{gap:12px}.building-detail-heading>img{width:85px;height:85px}.building-detail-heading h2{font-size:23px}.building-comparison th,.building-comparison td{padding:11px 6px;font-size:12px}.building-comparison thead th{font-size:10px}.building-costs{font-size:14px;gap:13px}}

/* Builders remain visible for the whole server-controlled construction queue. */
.plot.constructing{z-index:3;overflow:visible}
.plot.constructing .plot-add{opacity:.2}
.plot.constructing .plot-building{opacity:.55}
.construction-site{position:absolute;inset:0;pointer-events:none}
.scaffold{position:absolute;left:16%;right:16%;top:8%;height:62%;border:4px solid #b78043;border-bottom:0;background:repeating-linear-gradient(0deg,transparent 0 19px,#b78043 20px 23px,transparent 24px 30px);transform:skewY(-5deg);filter:drop-shadow(0 2px 2px #0009)}
.builder{position:absolute;top:38%;font-size:27px;filter:drop-shadow(0 2px 2px #000);animation:builder-work .7s ease-in-out infinite alternate}
.builder-one{left:5%}.builder-two{right:3%;animation-delay:-.35s}
.builder i{display:inline-block;font-style:normal;font-size:19px;transform-origin:bottom left;animation:hammer-work .7s ease-in-out infinite alternate}
.builder-two i{animation-delay:-.35s}
.construction-progress{position:absolute;left:10%;right:10%;top:74%;height:7px;border:1px solid #e6c277;background:#15212d;border-radius:5px;overflow:hidden}
.construction-progress i{display:block;height:100%;background:#ffd76c;transition:width 1s linear}
@keyframes builder-work{to{transform:translateY(3px) rotate(-4deg)}}
@keyframes hammer-work{to{transform:rotate(-55deg)}}
@media(prefers-reduced-motion:reduce){.builder,.builder i{animation:none}.construction-progress i{transition:none}}

.plot.constructing{width:clamp(65px,8vw,125px);height:clamp(65px,8vw,125px);opacity:1}.plot.constructing .plot-name{opacity:1}.plot.constructing .plot-level{display:block;bottom:-18px;right:0}.plot.constructing .plot-add{margin:20px auto}.plot.constructing .builder{font-size:24px}.plot.constructing .builder-one{left:-4%}.plot.constructing .builder-two{right:-4%}@media(max-width:700px){.plot.constructing{width:50px;height:50px}.plot.constructing .builder{font-size:17px}.plot.constructing .builder i{font-size:12px}.plot.constructing .plot-level{bottom:-12px;font-size:7px}.scaffold{border-width:2px}}

/* Pre-rendered 3D pirate crew; separately clipped workers animate around stable timber. */
.plot.constructing{width:clamp(90px,12vw,170px);height:clamp(75px,10vw,140px)}
.plot.constructing .plot-building{position:absolute;width:68%;height:75%;left:17%;top:5%;opacity:.6}
.plot.constructing .plot-add{visibility:hidden}
.crew-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 3px 2px #13241470);pointer-events:none}
.crew-scaffold{clip-path:polygon(24% 0,100% 0,100% 50%,78% 50%,78% 100%,24% 100%)}
.crew-worker-left{clip-path:inset(0 76% 0 0);animation:pirate-hammer .85s ease-in-out infinite;transform-origin:18% 86%}
.crew-worker-right{scale:-1 1;clip-path:inset(50% 0 0 78%);animation:pirate-carry 1.4s ease-in-out infinite;transform-origin:88% 90%}
.plot.constructing .plot-name{top:95%}
.plot.constructing .plot-level{bottom:-35px;right:8px}
.construction-progress{top:89%;left:25%;right:25%;height:5px}
.construction-dust{position:absolute;left:24%;top:71%;width:9px;height:9px;border-radius:50%;background:#deb37c;filter:blur(2px);animation:pirate-dust .85s ease-out infinite;pointer-events:none}
@keyframes pirate-hammer{0%,100%{transform:rotate(0)}45%{transform:rotate(-4deg) translateY(-1px)}65%{transform:rotate(2deg)}}
@keyframes pirate-carry{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px) rotate(1deg)}}
@keyframes pirate-dust{0%,45%{opacity:0;transform:scale(.3)}65%{opacity:.65}100%{opacity:0;transform:translate(4px,-9px) scale(2)}}
@media(max-width:700px){.plot.constructing{width:74px;height:62px}.plot.constructing .plot-level{bottom:-22px;font-size:7px}.construction-progress{height:3px}.construction-dust{width:5px;height:5px}}
@media(prefers-reduced-motion:reduce){.crew-art,.construction-dust{animation:none}.construction-dust{display:none}}

.plot-building{transform:scale(var(--building-scale,1));transform-origin:50% 85%}
.plot.battle-damaged .plot-building{filter:sepia(.35) saturate(.55) brightness(.6) drop-shadow(0 4px 3px #0008)}
.plot.building-ruins .plot-building{transform:scale(.75,.4) rotate(-12deg);transform-origin:50% 100%;opacity:.7}
.battle-smoke{position:absolute;left:48%;top:15%;width:10px;height:10px;pointer-events:none;z-index:5}
.battle-smoke i{position:absolute;width:18px;height:20px;background:#3f3933;border-radius:50%;filter:blur(3px);animation:battle-smoke-rise 3s ease-out infinite;opacity:0}
.battle-smoke i:nth-child(2){animation-delay:-1s}.battle-smoke i:nth-child(3){animation-delay:-2s}
@keyframes battle-smoke-rise{0%{transform:translate(0,0) scale(.4);opacity:.7}100%{transform:translate(15px,-65px) scale(2.4);opacity:0}}
.building-art-progression{display:flex;align-items:center;justify-content:center;gap:12px;padding:8px;background:#061d2466;border-radius:12px}
.building-art-progression figure{margin:0;flex:1;text-align:center}.building-art-progression img{width:100%;height:125px;object-fit:contain}.building-art-progression figcaption{color:var(--gold);font-size:12px}
@media(prefers-reduced-motion:reduce){.battle-smoke i{animation:none;opacity:.4}.battle-smoke i:nth-child(2){transform:translate(5px,-15px)}.battle-smoke i:nth-child(3){transform:translate(10px,-30px)}}

.faction-art{display:block;width:100%;height:210px;object-fit:contain}.army-banner{display:flex;align-items:center;gap:24px;padding:22px;border:1px solid #547368;background:linear-gradient(120deg,#173c38,#0b232e);border-radius:16px}.army-banner>img{width:140px;height:180px;object-fit:contain}.army-banner h2{color:var(--gold);font-size:28px;margin:4px 0}.army-cards{margin:20px 0}.army-cards .card{position:relative}.unit-art{display:block;width:100%;height:165px;object-fit:contain}.army-cards input{width:100%;margin:6px 0 12px}.troop-picker{border-top:1px solid #44625d;margin-top:16px;padding-top:10px}.troop-picker label{display:flex;align-items:center;gap:8px;padding:5px 0}.troop-picker img{width:42px;height:50px;object-fit:contain}.troop-picker span{flex:1;font-size:12px}.troop-picker small{display:block;opacity:.7}.troop-picker input{width:65px}.factions button{width:100%}@media(max-width:600px){.army-banner{padding:14px;gap:10px}.army-banner>img{width:90px;height:140px}.army-banner h2{font-size:23px}.faction-art{height:175px}}

.garrison-unit{position:absolute;width:40px;height:48px;z-index:2;background:transparent;border:0;padding:0;box-shadow:none;transform:translate(-50%,-50%)}.garrison-unit img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 2px 1px #0008)}.garrison-unit b{position:absolute;bottom:0;right:0;background:#153c34;color:#f1d48c;border:1px solid #8d865d;border-radius:4px;font-size:9px;padding:1px 4px}@media(max-width:700px){.garrison-unit{width:26px;height:32px}.garrison-unit b{font-size:7px;padding:0 2px}}

@media(min-width:1100px){.army-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.army-cards .unit-art{height:140px}.army-cards h3{font-size:19px}}

.island-scene{isolation:isolate}.waterfall-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;mix-blend-mode:screen}.scene-label,.scene-weather{pointer-events:none}
@media(prefers-reduced-motion:reduce){.waterfall-layer{display:none}}

/* Island camera: the world scales as one plane so scenery, buildings and water stay aligned. */
.island-camera-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:5px 0 12px;flex-wrap:wrap}.camera-buttons{display:flex;align-items:center;gap:6px}.camera-buttons button{margin:0;padding:8px 12px;min-width:34px}.camera-buttons output{font-size:11px;color:var(--gold);width:43px;text-align:center;font-variant-numeric:tabular-nums}.island-camera-toolbar small{font-size:11px;color:var(--muted)}
.island-viewport{position:relative;overflow:hidden;border:1px solid #4d7276;border-radius:14px;background:#123d4d;height:560px;touch-action:none;cursor:grab;isolation:isolate;contain:layout paint}.island-viewport:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.island-viewport.is-dragging{cursor:grabbing}.island-viewport .island-scene{position:absolute;left:0;top:0;margin:0;border:0;border-radius:0;max-height:none;transform-origin:0 0;will-change:transform;user-select:none}.island-viewport img{-webkit-user-drag:none;user-select:none}.island-viewport button{touch-action:none}
.garrison-idle{animation:garrison-idle 2.8s ease-in-out infinite;animation-delay:var(--idle-delay,0s);transform-origin:50% 95%}
@keyframes garrison-idle{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-1px) rotate(.7deg)}}
@media(max-width:700px){.camera-buttons button{padding:8px}.island-camera-toolbar small{font-size:10px}.island-viewport{border-radius:10px}.island-viewport .plot-name{display:block;font-size:7px;max-width:95px;padding:2px 3px}.island-viewport .plot.empty .plot-name{display:none}}
@media(prefers-reduced-motion:reduce){.garrison-idle{animation:none}}
.map-mode-tabs{margin-bottom:18px}.player-sea{background:radial-gradient(ellipse at 70% 40%,#2d7d8370,transparent 55%),repeating-linear-gradient(135deg,#d6e7b508 0 1px,transparent 1px 52px),#123b4b}.player-sea .map-caption{top:12px}.player-sea .map-caption h2{margin:4px 0;font-size:22px}.player-island{width:110px;min-width:0;padding:5px;position:absolute}.player-island>span{position:relative;font-size:43px}.player-island>span i{position:absolute;right:9px;bottom:0;font-size:17px;font-style:normal}.player-island small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-island.protected>b{color:#b4e1ee;border-color:#63a0b0}.player-island.selected{background:#e1c47a24;border-color:#edd49b}.player-sea-empty{position:absolute;left:22%;right:12%;top:40%;text-align:center;color:#d3dfce;line-height:1.7}.player-map-pagination{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:12px 0 20px}.player-map-pagination small{color:var(--muted);font-size:11px;text-align:center}.player-map-pagination button{margin:0}.player-map-gate{max-width:650px}.player-map-gate p{line-height:1.8}.player-sea .home{width:65px}@media(max-width:700px){.player-island{width:58px;padding:3px}.player-island>span{font-size:31px}.player-island>span i{font-size:11px;right:0}.player-island small{font-size:8px;margin:3px 0}.player-island b{font-size:7px;padding:2px}.player-map-pagination{flex-wrap:wrap;gap:8px}.player-map-pagination button{font-size:10px;padding:9px}.player-map-pagination small{order:3;width:100%}.player-sea .home{width:45px}.player-sea .home>span{font-size:26px}}
.player-island em{display:block;font-style:normal;font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#a8c2b6;margin:1px 0 5px}@media(max-width:700px){.player-island em{font-size:7px;margin-bottom:3px}}
.equipment-cards{margin:15px 0 28px}.equipment-cards .card{padding:16px}.equipment-cards h3{font-size:19px}.equipment-cards .badge{display:inline-block}.equipment-cards p{font-size:12px;line-height:1.7}.equipment-cards .cost{font-size:11px}@media(min-width:1100px){.equipment-cards{grid-template-columns:repeat(4,minmax(0,1fr))}}
.geo-map{height:580px;background:#082b42 url('assets/world/ocean.jpg') center/cover;touch-action:none;cursor:grab;isolation:isolate;box-shadow:inset 0 0 80px #00172899,0 15px 40px #0003}.geo-map.is-dragging{cursor:grabbing}.geo-grid{position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,transparent 0 calc(25% - 1px),#e5dbad25 calc(25% - 1px) 25%),repeating-linear-gradient(90deg,transparent 0 calc(16.666% - 1px),#e5dbad25 calc(16.666% - 1px) 16.666%);z-index:0}.geo-island{position:absolute;width:86px;min-width:0;background:transparent;border:0;padding:0;transform:translate(-50%,-50%);z-index:2;box-shadow:none;text-shadow:0 2px 3px #000;touch-action:none}.geo-island img{display:block;width:80px;height:74px;object-fit:contain;filter:drop-shadow(0 5px 5px #0009);pointer-events:none;-webkit-user-drag:none}.geo-island small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#061f32dd;border:1px solid #b9a56a88;border-radius:4px;font-size:9px;letter-spacing:0;padding:3px;color:#f2e5bd;line-height:1.2}.geo-island b{position:absolute;right:0;top:3px;font-size:9px;background:#0c3043eb;border:1px solid #b3ba81;border-radius:20px;padding:3px 5px;color:#f7dc98}.geo-island.own small{background:#214e39ee;border-color:#9fcd90}.geo-island.selected img{filter:drop-shadow(0 0 7px #ffe9a3) drop-shadow(0 5px 5px #0009)}.geo-island:hover{z-index:4;filter:brightness(1.12)}.geo-cluster{position:absolute;transform:translate(-50%,-50%);width:66px;height:66px;min-width:0;padding:0;background:#0a344a77;border:1px solid #d4c38a99;border-radius:50%;z-index:3}.geo-cluster img{width:100%;height:100%;object-fit:contain}.geo-cluster b{position:absolute;right:-2px;bottom:0;border-radius:20px;background:#e6cc8e;color:#173242;padding:4px;font-size:11px}.geo-caption,.geo-origin{position:absolute;pointer-events:none;background:#052236d9;border:1px solid #a6b88c77;padding:9px 13px;border-radius:6px;color:#e1d4a4;z-index:5}.geo-caption{left:14px;top:14px;font:20px Georgia}.geo-caption small{display:block;font:9px Arial;letter-spacing:2px;margin-top:4px}.geo-origin{right:12px;bottom:12px;font-size:10px}.geo-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin:12px 0}.geo-toolbar>div{display:flex;gap:5px}.geo-toolbar button{margin:0;padding:8px 11px;min-width:34px}.geo-toolbar small{color:var(--muted);font-size:10px}.geo-jump{display:flex;align-items:end;gap:10px;margin:14px 0;flex-wrap:wrap}.geo-jump label{display:grid;gap:5px;max-width:145px}.geo-jump input{width:100%;font-variant-numeric:tabular-nums}.geo-jump button{margin:0}.spawn-choice{padding:18px;border:1px solid #d5ba73;border-radius:9px;background:linear-gradient(120deg,#304837,#143140)}.spawn-choice h3{color:#ead297;margin-top:0}.spawn-choice p{font-size:13px;line-height:1.6}.spawn-choice strong{margin-right:18px}.spawn-pin{position:absolute;transform:translate(-50%,-100%);font-size:45px;color:#ffe2a0;filter:drop-shadow(0 2px 2px #000);pointer-events:none;z-index:6}.world-map .sea-routes{z-index:1;overflow:hidden}.world-map .sea-routes path{stroke:#ffdf94;stroke-width:.3;stroke-dasharray:.9 .7;fill:none;filter:drop-shadow(0 1px 1px #000)}.geo-ship{position:absolute;transform:translate(-50%,-50%);font-size:26px;pointer-events:none;z-index:5;filter:drop-shadow(0 3px 2px #000)}.voyage-progress{margin:14px 0}.voyage-progress p{font-size:13px}.voyage-progress small{color:var(--muted)}.voyage-track{height:9px;background:#061e2a;border-radius:8px;overflow:hidden;margin:14px 0}.voyage-track i{height:100%;display:block;background:linear-gradient(90deg,#a97b35,#f7de91);transition:width 1s linear}.mission-list .voyage-progress{display:block}@media(max-width:700px){.geo-map{height:500px}.geo-island{width:48px}.geo-island img{width:48px;height:44px}.geo-island small{font-size:7px;padding:2px}.geo-island b{font-size:7px;top:0;padding:2px}.geo-cluster{width:47px;height:47px}.geo-caption{font-size:15px;padding:7px}.geo-caption small{font-size:7px;letter-spacing:1px}.geo-toolbar{gap:7px}.geo-toolbar button{padding:8px}.geo-jump{gap:6px}.geo-jump label{max-width:110px}.geo-jump button{font-size:11px;padding:10px}.geo-origin{font-size:8px}.spawn-choice{padding:12px}}@media(prefers-reduced-motion:reduce){.voyage-track i{transition:none}}
.geo-ship img{display:block;width:76px;height:76px;object-fit:contain;filter:drop-shadow(0 5px 3px #00131ca6);transform:scaleX(var(--ship-facing,1))}@media(max-width:700px){.geo-ship img{width:58px;height:58px}}
.world-preview-art{display:flex;align-items:center;justify-content:space-around;gap:10px;background:#07304a url(assets/world/ocean.jpg) center/cover;border-radius:10px;padding:22px 10px;margin-bottom:20px}.world-preview-art figure{margin:0;text-align:center;flex:1;min-width:0}.world-preview-art img{width:100%;max-width:155px;aspect-ratio:1;object-fit:contain;filter:drop-shadow(0 5px 5px #0008)}.world-preview-art figcaption{font-size:11px;color:#f3dfae;text-shadow:0 2px 2px #000}.player-map-gate{max-width:850px}
.geo-island.npc small{background:#4b3519eb;border-color:#e5ca80}.geo-island.npc b{background:#825c21;color:#fff2b5;border-color:#f1d58c}.geo-island .geo-castle{position:absolute;left:15px;top:-6px;width:60px;height:65px;object-fit:contain;filter:drop-shadow(0 3px 2px #0009)}.npc-notice{border-left:3px solid #d0b06a;padding:10px 12px;background:#ceb16d13;line-height:1.7}.ranking-banner{display:flex;gap:30px;align-items:center;justify-content:space-between;background:linear-gradient(120deg,#284b3f,#102d3c);border:1px solid #bc9f62;border-radius:14px;padding:24px;margin-bottom:22px}.ranking-banner>div:first-child{min-width:150px}.ranking-banner small{letter-spacing:2px;color:#c8b683;font-size:10px}.ranking-banner h2{font-size:46px;color:var(--gold);margin:8px 0}.ranking-banner h2 span{font:16px Arial;color:var(--muted)}.ranking-banner h3{color:var(--gold);margin:0 0 10px}.ranking-banner p{color:var(--muted);font-size:13px;line-height:1.7}.ranking-table-wrap{overflow:auto;border:1px solid #48645f;border-radius:10px}.ranking-table{border-collapse:collapse;width:100%;font-size:13px;min-width:620px}.ranking-table th{text-align:left;background:#17383e;color:var(--gold);padding:14px 12px}.ranking-table td{padding:13px 12px;border-top:1px solid #314c4b}.ranking-table td b{color:var(--gold)}.ranking-table tbody tr:nth-child(even){background:#15333455}.ranking-table .ranking-me{background:#bfa45723!important;box-shadow:inset 3px 0 #e3c374}.ranking-pages{display:flex;align-items:center;justify-content:space-between;margin:15px 0;gap:12px}.ranking-pages span{font-size:12px;color:var(--muted)}@media(max-width:700px){.geo-island .geo-castle{width:39px;height:40px;left:5px;top:-5px}.ranking-banner{padding:16px;gap:16px;align-items:flex-start;flex-direction:column}.ranking-banner h2{font-size:36px}.ranking-banner>div:first-child{min-width:0}.ranking-table{font-size:11px;min-width:540px}.ranking-table td,.ranking-table th{padding:11px 8px}}

/* Expanded island keeps controls outside the moving world. Native fullscreen uses the same layout. */
.island-screen-mode{overflow:hidden}.island-screen-mode .island-camera-toolbar{position:fixed;inset:0 0 auto;margin:0;min-height:64px;padding:10px 16px;background:#09232d;z-index:100;box-sizing:border-box}.island-screen-mode .island-viewport{position:fixed;inset:64px 0 0;width:100vw;height:calc(100dvh - 64px)!important;border:0;border-radius:0;z-index:99}.island-screen-mode .camera-buttons{flex-wrap:wrap}.island-screen-mode .island-camera-toolbar small{display:none}@media(max-width:480px){.island-screen-mode .camera-buttons{gap:3px}.island-screen-mode .camera-buttons button{padding:7px 5px;font-size:11px}}

.sound-panel{position:fixed;right:18px;bottom:16px;z-index:110;color:#e9e6ce;font-size:12px}.sound-panel summary{list-style:none;cursor:pointer;padding:10px 14px;background:#0c2b34ed;border:1px solid #8b794c;border-radius:9px;box-shadow:0 4px 18px #0005}.sound-panel summary::-webkit-details-marker{display:none}.sound-controls{position:absolute;bottom:48px;right:0;width:245px;max-width:calc(100vw - 36px);padding:17px;background:#0c2b34fa;border:1px solid #5b7778;border-radius:12px;box-shadow:0 8px 30px #0007;display:grid;gap:10px}.sound-controls label{color:#bed4d2}.sound-controls input{width:100%;padding:0;accent-color:#dfbb66;cursor:pointer}.sound-controls small{color:#91b4b8;line-height:1.5}.sound-controls .quiet{display:block!important}.sound-panel summary:focus-visible{outline:2px solid #dfbb66;outline-offset:3px}@media(max-width:700px){.sound-panel{right:10px;bottom:10px}.sound-panel summary{padding:8px 10px;font-size:11px}}

.fishery-summary{margin-top:16px;background:linear-gradient(120deg,#123d43,#142c33)}.fishery-summary small{display:block;color:var(--muted);margin-top:10px}.food-plan{border-top:1px solid var(--border);padding-top:15px;margin-top:15px}.food-plan select{max-width:100%;margin-top:7px}.food-plan small{color:var(--muted)}#resources{flex-wrap:wrap}.res{white-space:nowrap}

.messages-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:18px}.message-notice{font-size:12px;color:var(--muted);line-height:1.7}.message-peers{padding:12px;border:1px solid var(--border);border-radius:10px;background:#102c35}.message-peers button{display:block;width:100%;text-align:left;margin-bottom:8px}.message-peers small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:5px;color:var(--muted)}.message-peers b{float:right;color:var(--gold)}.message-log{display:flex;flex-direction:column;gap:10px;min-height:120px}.message-bubble{padding:10px 14px;background:#254046;border-radius:12px;max-width:90%;align-self:flex-start}.message-bubble.mine{background:#31544d;align-self:flex-end}.message-bubble small{font-size:10px;color:var(--muted)}.message-bubble p{white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0;color:#eef0e6}#message-form{border-top:1px solid var(--border);margin-top:20px;padding-top:16px}#message-form label{display:grid;gap:8px}#message-form textarea{width:100%;resize:vertical;max-height:220px;background:#09232d;color:#eef0e6;border:1px solid #527477;border-radius:7px;padding:12px;font:inherit}#message-form [role=status]{color:#ffb179}@media(max-width:700px){.messages-layout{grid-template-columns:1fr}.message-peers{max-height:180px;overflow:auto;display:block}.message-bubble{max-width:100%}}

.cargo-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(240px,1fr);gap:18px}.cargo-layout form,.cargo-voyage form{display:grid;gap:12px}.cargo-layout label,.cargo-voyage form label{display:grid;gap:6px}.cargo-troops{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.cargo-troops input{width:100%}.cargo-fleet{display:grid;gap:8px;max-height:230px;overflow:auto}.cargo-ship{display:flex!important;align-items:center;gap:8px;padding:8px;background:#0b252d;border-radius:6px}.cargo-voyage{overflow:hidden}.cargo-danger{border:2px solid #d39449!important}.cargo-sea{height:110px;position:relative;background:radial-gradient(ellipse,#217a89,#0a3345);border-radius:10px;margin:15px 0}.cargo-home,.cargo-destination,.cargo-boat{position:absolute;top:45%;transform:translate(-50%,-50%);font-size:28px}.cargo-home{left:8%}.cargo-destination{left:92%}.cargo-boat{z-index:2}.cargo-pirate{position:absolute;top:8px;transform:translateX(-50%);font-size:24px}.cargo-sea i{position:absolute;left:8%;right:8%;top:45%;border-top:2px dashed #dfcd8e80}.cargo-voyage details{margin-top:15px}.cargo-voyage summary{cursor:pointer;color:var(--gold)}.geo-cargo-ship{position:absolute;transform:translate(-50%,-50%);z-index:6;padding:5px;background:#14373ddd;border:1px solid #dfb461;font-size:17px}.geo-cargo-ship small{display:block;font-size:10px}@media(max-width:850px){.cargo-layout{grid-template-columns:1fr}}

.build-rush{display:grid;gap:8px;max-width:100%;padding:12px;border:1px solid #b38d49;border-radius:10px}.build-rush small{color:#9bb9bb;line-height:1.6}.queue{flex-wrap:wrap}

.battle-stages{margin:16px 0}.battle-phases{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}.battle-phase{padding:14px;border:1px solid #45666b;border-radius:10px;background:#102d35}.battle-phase strong,.battle-phase small{display:block}.battle-phase small{margin-top:8px;color:#9ebfc0}.phase-lost{border-color:#d06b56}.phase-won{border-color:#5caa8b}.phase-blocked{opacity:.6}.battle-phase p{margin:10px 0}
#aftermath{width:min(1100px,95vw);max-width:95vw;background:#0c2832;color:#f6e4bc;border:1px solid #b99c55;border-radius:14px}#aftermath::backdrop{background:#000b}.aftermath-scene{position:relative;width:100%;aspect-ratio:3/2;background-size:100% 100%;overflow:hidden;border-radius:10px}.aftermath-building{position:absolute;transform:translate(-50%,-75%);width:12%;text-align:center}.aftermath-building img{width:100%;filter:drop-shadow(0 4px 3px #0008)}.aftermath-building.hit img{filter:brightness(.65) saturate(.6) drop-shadow(0 4px 3px #0008)}.aftermath-building small{display:block;background:#0c3034e8;font-size:clamp(7px,1vw,12px);border-radius:4px}.aftermath-building .battle-smoke{left:50%;top:0}
