/* European mobilisation — premium naval map layout */
.locations#locations{position:relative;isolation:isolate;overflow:hidden;min-height:100svh;padding:clamp(7rem,10vw,10rem) 4vw 7rem;background:radial-gradient(circle at 87% 12%,rgba(42,91,129,.22),transparent 30%),linear-gradient(135deg,#061321 0%,#081a2b 52%,#050e19 100%);color:#f5f4ef}
.locations#locations:before{content:"";position:absolute;inset:0;z-index:-2;background-image:linear-gradient(rgba(125,175,207,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(125,175,207,.045) 1px,transparent 1px);background-size:25vw 25vw;mask-image:linear-gradient(115deg,#000,rgba(0,0,0,.5) 62%,transparent)}
.locations-watermark{position:absolute;z-index:-1;left:3.5vw;top:.4rem;color:transparent;-webkit-text-stroke:1px rgba(125,175,207,.1);font:800 clamp(12rem,23vw,27rem)/1 'Montserrat',sans-serif;letter-spacing:-.1em;white-space:nowrap;user-select:none}
.locations#locations .locations-head{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,.65fr);align-items:end;gap:7vw;max-width:1650px;margin:0 auto}
.locations#locations .locations-head>div{min-width:0}
.locations#locations .eyebrow{margin:0 0 1.4rem;color:#a8c9df;font:600 .72rem/1 'Inter',sans-serif;letter-spacing:.32em}
.locations#locations .locations-head h2{margin:0;color:#f6f4ef;font:800 clamp(3.5rem,5.1vw,6rem)/.94 'Montserrat',sans-serif;letter-spacing:-.06em;text-transform:none}
.locations#locations .locations-head h2 em{color:#f6f4ef;font-style:normal;font-weight:800;-webkit-text-stroke:0}
.locations-summary{position:relative;margin:0 0 .35rem;padding:1rem 0 1rem 2rem;border-left:2px solid rgba(199,222,235,.78);color:rgba(224,235,241,.78);font:400 clamp(1rem,1.25vw,1.25rem)/1.45 'Inter',sans-serif}
.locations-summary:after{content:"";display:block;width:2.7rem;height:2px;margin-top:1.4rem;background:#c99a54}
.locations-layout{display:grid;grid-template-columns:minmax(430px,.78fr) minmax(0,1.22fr);align-items:center;gap:3vw;max-width:1650px;margin:clamp(3.2rem,5vw,5rem) auto 0}
.locations#locations .location-list{margin:0}
.locations#locations .location-list article{position:relative;display:grid;grid-template-columns:52px minmax(0,1fr) 90px 74px;align-items:center;gap:.9rem;min-height:108px;padding:1.25rem .8rem 1.25rem 1.3rem;border-top:1px solid rgba(147,190,216,.27);transition:background-color .45s ease,transform .55s cubic-bezier(.16,.8,.22,1)}
.locations#locations .location-list article:last-child{border-bottom:1px solid rgba(147,190,216,.27)}
.locations#locations .location-list article:first-child:before{content:"";position:absolute;left:0;top:13px;bottom:13px;width:3px;background:#d09b50;box-shadow:0 0 18px rgba(208,155,80,.3)}
.locations#locations .location-list article:hover{background:rgba(77,142,181,.06);transform:translateX(7px)}
.locations#locations .location-list article>span{color:#9ec4dc;font:400 .95rem/1 'Inter',sans-serif}
.locations#locations .location-list article:first-child>span,.locations#locations .location-list article:first-child b{color:#d6a35d}
.locations#locations .location-list h3{margin:0;color:#f4f3ef;font:750 clamp(1.25rem,1.55vw,1.75rem)/1 'Montserrat',sans-serif;letter-spacing:-.035em;text-transform:none}
.locations#locations .location-list p{margin:.55rem 0 0;color:#9db8ca;font:500 .68rem/1.25 'Inter',sans-serif;letter-spacing:.14em;text-transform:uppercase}
.locations#locations .location-list time,.locations#locations .location-list b{color:#e5edf1;font:500 .66rem/1.2 'Inter',sans-serif;letter-spacing:.13em;text-transform:uppercase;white-space:nowrap}
.locations#locations .location-list b{color:#a8c6d8}
.locations-map{position:relative;overflow:hidden;margin:0;border:1px solid rgba(126,178,209,.32);background:#071827;box-shadow:0 25px 70px rgba(0,7,14,.24)}
.locations-map:before{content:"";position:absolute;z-index:2;inset:0;background:linear-gradient(100deg,transparent 38%,rgba(101,186,234,.08) 50%,transparent 62%);transform:translateX(-120%);animation:locationsScan 8s ease-in-out infinite;pointer-events:none}
.locations-map img{display:block;width:100%;height:auto;aspect-ratio:952/534;object-fit:cover;filter:saturate(.88) contrast(1.04)}
.mobilisation-routes{position:absolute;z-index:3;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.mobilisation-routes path{fill:none;vector-effect:non-scaling-stroke}
.route-bases use{stroke:rgba(112,187,231,.34);stroke-width:1;stroke-dasharray:5 8}
.route-flows path{stroke:#78c9f5;stroke-width:1.7;stroke-linecap:round;stroke-dasharray:2 16;animation:routeFlow 1.35s linear infinite}
.route-flows path:nth-child(2){animation-duration:1.65s}.route-flows path:nth-child(3){animation-duration:1.15s}
.route-particles circle{fill:#d8f1ff;filter:drop-shadow(0 0 6px #6ec6f6)}
.route-origins circle{fill:#d6a35d;stroke:#ffe2a8;stroke-width:2;filter:drop-shadow(0 0 8px rgba(214,163,93,.9));transform-box:fill-box;transform-origin:center;animation:originPulse 2.2s ease-in-out infinite}
.route-origins circle:nth-child(2){animation-delay:1.1s}
.route-destinations circle{fill:rgba(7,24,39,.92);stroke:#dceef8;stroke-width:2;transform-box:fill-box;transform-origin:center;animation:destinationPulse 2.4s ease-out infinite}
.route-destinations circle:nth-child(2){animation-delay:.65s}.route-destinations circle:nth-child(3){animation-delay:1.25s}
@keyframes locationsScan{0%,20%{transform:translateX(-120%)}65%,100%{transform:translateX(120%)}}
@keyframes originPulse{0%,100%{transform:scale(.85);opacity:.82}50%{transform:scale(1.28);opacity:1}}
@keyframes routeFlow{to{stroke-dashoffset:-36}}
@keyframes destinationPulse{0%{opacity:1;transform:scale(.72)}70%,100%{opacity:.18;transform:scale(2.2)}}
@media(max-width:1050px){.locations#locations .locations-head{grid-template-columns:1fr}.locations-summary{max-width:620px}.locations-layout{grid-template-columns:1fr}.locations#locations .location-list{order:2}.locations-map{order:1}.locations#locations .location-list article{grid-template-columns:52px minmax(0,1fr) 95px 75px}.locations-watermark{font-size:34vw}}
@media(max-width:650px){.locations#locations{padding:6rem 6vw}.locations#locations .locations-head h2{font-size:clamp(2.5rem,11vw,4rem);line-height:.98}.locations-summary{padding-left:1.25rem;font-size:1rem}.locations-layout{margin-top:2.5rem;gap:2rem}.locations-map{margin:0 -2vw}.locations#locations .location-list article{grid-template-columns:34px minmax(0,1fr) auto;gap:.65rem;min-height:92px;padding:1rem .2rem 1rem .8rem}.locations#locations .location-list time{display:none}.locations#locations .location-list h3{font-size:1.2rem}.locations#locations .location-list p{font-size:.58rem;letter-spacing:.08em}.locations#locations .location-list b{font-size:.58rem}.locations-watermark{top:2rem;font-size:37vw}}
@media(prefers-reduced-motion:reduce){.locations-map:before,.route-flows path,.route-origins circle,.route-destinations circle{animation:none}.route-particles{display:none}.locations#locations .location-list article{transition:none}}

/* Explicit path rendering avoids inherited black fill in SVG use shadows. */
.mobilisation-routes path,.mobilisation-routes use{fill:none!important}
.route-flows path{vector-effect:non-scaling-stroke;stroke:#78c9f5;stroke-width:1.7;stroke-dasharray:2 16;stroke-linecap:round}

/* Northern Adriatic destination, matching the home map's coordinate system. */
.route-flows path:nth-child(3){animation-duration:1.45s;animation-delay:-.7s}.route-flows path:nth-child(4){animation-duration:1.7s;animation-delay:-1.2s}
