#mobility-simulation{--m-accent:#83deec;--m-muted:#b1c6d1;background:#091c2b;color:#eff7fa;border:1px solid #355364;border-radius:20px;padding:clamp(18px,3vw,42px);margin:30px 0;font-family:system-ui,sans-serif}#mobility-simulation *{box-sizing:border-box}.mobility-heading{display:flex;justify-content:space-between;gap:24px;align-items:center}.mobility-kicker,.mobility-map-top,.mobility-boundary{font-size:11px;letter-spacing:1.5px;font-weight:700}.mobility-heading h2{font-size:clamp(40px,5vw,66px);line-height:1.02;margin:18px 0;color:#fff}.mobility-heading h2 span{color:var(--m-accent)}.mobility-heading p,.mobility-map-note{color:var(--m-muted);line-height:1.7}.mobility-badge{border:1px solid #426e81;padding:16px;color:var(--m-accent);font-size:11px;line-height:1.8;border-radius:8px}.mobility-badge small{display:block;color:var(--m-muted)}.mobility-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:26px}#mobility-simulation button,#mobility-simulation select{font:inherit;padding:10px 13px;border:1px solid #607d8b;border-radius:6px;color:#eff7fa;background:#142e3f;cursor:pointer}#mobility-simulation :is(button,select,input,summary,a):focus-visible{outline:3px solid #83deec;outline-offset:3px}#mobility-simulation #mobility-play{background:var(--m-accent);color:#09202c;font-weight:750}#mobility-simulation button:disabled{opacity:.5;cursor:wait}.mobility-toolbar label{font-size:13px}#mobility-audio-status{font-size:12px;color:var(--m-muted);min-height:18px}.mobility-layout{display:grid;grid-template-columns:1fr 1.1fr;gap:28px;margin:24px 0}.mobility-map{border:1px solid #32566a;border-radius:12px;padding:20px;background:radial-gradient(ellipse at 30% 90%,#154559,transparent 70%),#0c2232;min-width:0}.mobility-map-top{display:flex;justify-content:space-between;color:var(--m-muted);gap:12px;font-size:10px}#mobility-clock{white-space:nowrap;color:#83deec}.mobility-network{max-width:360px;margin:24px auto 0;text-align:center}.mobility-node{padding:12px;border:1px solid #527b8c;border-radius:7px;background:#102d3c;font-size:14px;transition:border-color .4s,background .4s}.mobility-node small{display:block;color:#c0d4dd;font-size:11px;margin-top:5px}.mobility-wire{height:20px;width:2px;background:#83deec;margin:auto}.mobility-boundary{color:#efc58d;border-block:1px dashed #927956;margin:14px -8px;padding:10px 0;font-size:9px}.mobility-node.alert{border-color:#ff987f;background:#442924}.mobility-node.isolated{border-color:#efc58d;background:#373224}.mobility-map-note{font-size:11px;margin-bottom:0}.mobility-harbor{width:100%;height:auto;margin:16px 0 0;display:block}.mobility-vessel{display:flex;flex-wrap:wrap;gap:6px 12px;justify-content:space-between;font-size:10px;padding:12px 0;border-bottom:1px solid #355364;color:#a7eac5}.mobility-story{min-width:0}.mobility-story h3{font-size:28px;line-height:1.2;margin:14px 0;color:#fff}.mobility-story>p{line-height:1.75}#mobility-caption{min-height:210px;color:#d0e0e9;font-size:15px}.mobility-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;border-block:1px solid #355364;padding:20px 0}.mobility-metrics strong{display:block;color:var(--m-accent);font-size:clamp(22px,2.2vw,30px)}.mobility-metrics span{display:block;color:var(--m-muted);font-size:11px;margin-top:6px}#mobility-action{font-size:13px;color:#efc58d}#mobility-stages{display:flex;gap:8px;flex-wrap:wrap}#mobility-stages button{flex:1;font-size:12px;text-align:left;min-width:120px}#mobility-stages button[aria-current=step]{border-color:var(--m-accent);color:var(--m-accent)}.mobility-evidence{border-top:1px solid #355364;margin-top:25px;padding-top:20px;font-size:13px;color:#c7dbe5;line-height:1.75}.mobility-evidence summary{cursor:pointer;color:#fff}.mobility-evidence a{color:var(--m-accent)}.mobility-evidence table{width:100%;border-collapse:collapse;text-align:left;font-size:12px}.mobility-evidence th,.mobility-evidence td{padding:10px 6px;border-bottom:1px solid #355364}.mobility-evidence caption{text-align:left;color:#efc58d;margin:12px 0}.mobility-evidence h4{color:#fff;margin-bottom:4px}@media(max-width:800px){.mobility-layout{grid-template-columns:1fr}.mobility-heading{display:block}.mobility-badge{display:inline-block;margin-top:10px}#mobility-caption{min-height:0}.mobility-toolbar{align-items:flex-start}.mobility-map{padding:15px}}@keyframes mobility-flow{0%,100%{opacity:.35}50%{opacity:1;box-shadow:0 0 12px #83deec}}@media(prefers-reduced-motion:no-preference){#mobility-simulation.is-playing .mobility-wire,#mobility-simulation.is-playing .mobility-beacon{animation:mobility-flow 1.8s ease-in-out infinite}}@media(prefers-reduced-motion:reduce){#mobility-simulation *{transition:none!important;animation:none!important}}


.mobility-network{max-width:none}.mobility-fleets{display:grid;grid-template-columns:1fr 1fr;gap:10px}.mobility-metrics{grid-template-columns:repeat(2,1fr)}.mobility-road{height:50px;border-block:1px dashed #527b8c;margin:18px 0;position:relative;overflow:hidden}.mobility-truck{position:absolute;top:12px;width:34px;height:20px;background:#83deec;border-radius:3px;color:#09202c;font-size:10px;text-align:center;padding-top:3px}.mobility-truck:nth-child(2){left:45%;background:#efc58d}.mobility-truck:nth-child(3){left:80%}.mobility-map[data-disrupted=true] .mobility-truck{background:#efc58d}.mobility-cost{display:flex;gap:12px;align-items:center;flex-wrap:wrap;font-size:13px;margin:18px 0}.mobility-cost input{width:95px;padding:8px;background:#142e3f;color:#fff;border:1px solid #607d8b;border-radius:5px}.mobility-totals{font-size:13px;line-height:1.8;color:#c7dbe5}.mobility-totals strong{color:#83deec}.mobility-evidence{overflow-wrap:anywhere}@keyframes mobility-travel{from{transform:translateX(-100px)}to{transform:translateX(480px)}}@media(prefers-reduced-motion:no-preference){#mobility-simulation.is-playing .mobility-truck{animation:mobility-travel 7s linear infinite}#mobility-simulation.is-playing .mobility-truck:nth-child(2){animation-delay:-3s}#mobility-simulation.is-playing .mobility-truck:nth-child(3){animation-delay:-5s}}

/* Stage 1 intro preserves the map layout and leaves captions and controls visible. */
.mobility-map{position:relative;overflow:hidden;isolation:isolate}
.mobility-intro{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:2;opacity:0;pointer-events:none;transition:opacity 1s ease;background:#091c2b}
.mobility-intro.is-visible{opacity:1}
