.operations-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 18px;padding:7px;border-radius:18px;background:#e8f2f7}
.operations-tabs a{flex:1 1 190px;padding:11px 14px;border-radius:12px;color:#164763;font-size:13px;font-weight:900;text-align:center;text-decoration:none;text-transform:uppercase}
.operations-tabs a:hover,.operations-tabs a.is-active{background:#06355c;color:#fff;box-shadow:0 5px 12px rgba(6,53,92,.16)}
.ops-page{--navy:#06355c;--cyan:#009bdd;--yellow:#ffd400;margin-bottom:28px;padding:28px;border:1px solid #cbdfea;border-radius:28px;background:#fffaf0;color:var(--navy);box-shadow:0 13px 28px rgba(6,53,92,.09)}
.ops-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:22px}
.ops-hero p{margin:0 0 7px;color:var(--cyan);font-size:13px;font-weight:900;letter-spacing:.14em}.ops-hero h1{margin:0!important;font:900 clamp(29px,4vw,48px)/.95 "Lilita One",Impact,sans-serif!important;text-transform:uppercase}.ops-hero span{display:block;margin-top:10px;color:#607d91;font-weight:700}.ops-hero>b{padding:10px 14px;border-radius:999px;background:#e2f5ff;color:#0879b3;font-size:11px;white-space:nowrap}
.ops-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:10px;align-items:end;margin-bottom:20px;padding:15px;border-radius:18px;background:#eaf3f7}
.ops-filters label{display:flex;min-width:0;flex-direction:column;gap:6px;color:#365e75;font-size:11px;font-weight:900;text-transform:uppercase}.ops-filters input,.ops-filters select{width:100%;min-height:43px;padding:8px 10px;border:1px solid #b7ceda;border-radius:10px;background:#fff;color:#123f59;font:700 14px inherit}.ops-filters button{min-height:43px;padding:9px 16px;border:0;border-radius:11px;background:var(--yellow);color:#123a55;font-weight:900;cursor:pointer}
.ops-summary{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 17px}.ops-summary span{padding:7px 10px;border-radius:999px;background:#edf5f8;font-size:11px;font-weight:900}
.ops-loading{padding:28px;border:1px dashed #a8c1ce;border-radius:16px;color:#638094;text-align:center;font-weight:800}
.port-board-groups{display:grid;gap:16px}.port-board-group{border:1px solid #cadde6;border-radius:18px;overflow:hidden;background:#fff}.port-board-group h2{display:flex;justify-content:space-between;margin:0;padding:13px 16px;background:#06355c;color:#fff;font-size:15px;text-transform:uppercase}.port-board-group h2 span{color:#ffd400}.port-board-row{display:grid;grid-template-columns:1.25fr 1.1fr .85fr .85fr .8fr;gap:9px;align-items:center;padding:12px 15px;border-top:1px solid #e2edf2}.port-board-row strong{font-size:16px}.port-board-row small{display:block;color:#7891a0}.port-board-route{font-weight:800}.port-board-time{font-family:"Courier New",monospace;font-weight:900}.port-board-status{justify-self:start;padding:6px 9px;border-radius:999px;background:#e7f1f5;font-size:10px;font-weight:900;text-transform:uppercase}.port-board-status.is-underway,.port-board-status.is-arriving{background:#dff3ff;color:#0879b3}.port-board-status.is-at_port{background:#dff8ec;color:#147557}.port-board-status.is-completed{background:#eceff1;color:#677680}
.punctuality-page .ops-filters{grid-template-columns:.7fr 1.2fr 1fr 1fr auto}.punctuality-insight{margin:0 0 18px;padding:18px 20px;border-left:6px solid #ffd400;border-radius:0 16px 16px 0;background:#fff3bd;color:#5f4800;font-size:18px;font-weight:900}.punctuality-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:18px}.punctuality-kpi{padding:18px;border-radius:17px;background:#073b61;color:#fff}.punctuality-kpi span{display:block;color:#9fc4d9;font-size:10px;font-weight:900;text-transform:uppercase}.punctuality-kpi strong{display:block;margin-top:6px;color:#ffd400;font-size:29px}.punctuality-table-wrap{overflow:auto;border:1px solid #c9dde7;border-radius:16px}.punctuality-table{width:100%;min-width:830px;border-collapse:collapse;background:#fff}.punctuality-table th,.punctuality-table td{padding:11px 13px;border-bottom:1px solid #e1ecf1;text-align:left}.punctuality-table th{background:#0c496f;color:#fff;font-size:11px;text-transform:uppercase}.punctuality-table td{font-size:13px}.punctuality-table tbody tr:last-child td{border-bottom:0}
.fleet-map-legend{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.fleet-map-legend span{padding:7px 11px;border-radius:999px;background:#e8f1f5;font-size:11px;font-weight:900}.fleet-map-legend .is-underway{color:#ffe000;background:#164b69}.fleet-map-legend .is-port{color:#087a58;background:#ddf6eb}.fleet-map-legend .is-stale{color:#a96100;background:#fff0d1}.fleet-map-legend .is-none{color:#75828a;background:#eceff1}.fleet-map-layout{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(270px,.8fr);gap:14px}.fleet-map-canvas{position:relative;min-height:600px;border:7px solid #0b2d43;border-radius:22px;background:#075779;overflow:hidden}.fleet-map-canvas svg{display:block;width:100%;height:100%;min-height:600px}.fleet-map-layout aside{max-height:614px;padding:15px;border-radius:20px;background:#0c344d;color:#fff;overflow:auto}.fleet-map-layout aside h2{margin:0 0 12px;color:#ffd400;font-size:18px;text-transform:uppercase}.fleet-map-list{display:grid;gap:7px}.fleet-vessel-item{width:100%;padding:10px;border:1px solid #31586e;border-radius:12px;background:#082a3e;color:#fff;text-align:left;cursor:pointer}.fleet-vessel-item strong,.fleet-vessel-item small{display:block}.fleet-vessel-item small{margin-top:3px;color:#a7c1d0}.fleet-vessel-item i{display:inline-block;width:8px;height:8px;margin-right:6px;border-radius:50%;background:#788995}.fleet-vessel-item.is-underway i{background:#ffd400}.fleet-vessel-item.is-at_port i{background:#36d59d}.fleet-vessel-item.is-stale i{background:#ff9e2c}.fleet-map-card{position:absolute;right:15px;bottom:15px;max-width:310px;padding:15px;border-radius:16px;background:rgba(3,29,46,.94);color:#fff;box-shadow:0 8px 25px rgba(0,0,0,.35)}.fleet-map-card strong,.fleet-map-card span{display:block}.fleet-map-card strong{color:#ffd400;font-size:20px}.fleet-map-card a{display:inline-block;margin-top:8px;color:#71d6ff}.map-land{fill:#f1e7ce;stroke:#cabd9f;stroke-width:2}.map-port{fill:#fff;stroke:#0b4669;stroke-width:2}.map-port-label{fill:#dbeaf1;font:700 10px sans-serif}.map-vessel{stroke:#fff;stroke-width:3;cursor:pointer}.map-vessel.is-underway{fill:#ffd400}.map-vessel.is-at_port{fill:#35d49c}.map-vessel.is-stale{fill:#ff9e2c;opacity:.7}.map-vessel.is-no_signal{fill:#8a979e;opacity:.45}
@media(max-width:900px){.ops-filters,.punctuality-page .ops-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.ops-filters button{grid-column:1/-1}.port-board-row{grid-template-columns:1fr 1fr;gap:6px}.port-board-row>*:last-child{grid-column:1/-1}.punctuality-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.fleet-map-layout{grid-template-columns:1fr}.fleet-map-layout aside{max-height:350px}}
@media(max-width:560px){.operations-tabs a{flex-basis:calc(50% - 8px);font-size:10px}.ops-page{padding:18px 10px;border-radius:20px}.ops-hero{flex-direction:column}.ops-hero h1{font-size:31px!important}.ops-filters,.punctuality-page .ops-filters{grid-template-columns:1fr}.port-board-row{grid-template-columns:1fr;padding:12px}.port-board-row>*:last-child{grid-column:auto}.punctuality-kpis{grid-template-columns:1fr 1fr}.fleet-map-canvas,.fleet-map-canvas svg{min-height:480px}}

/* QEMB Marine 6.3.1 — carte réelle, couche nautique et ferries par compagnie. */
.fleet-company-legend{display:flex;flex-wrap:wrap;gap:8px;margin:-5px 0 14px}.fleet-company-legend span{padding:7px 11px;border:1px solid #d5e3e9;border-radius:999px;background:#fff;font-size:11px;font-weight:900}.fleet-company-legend .company-corsica-ferries{border-color:#e4bd00;background:#fff7c7;color:#173f57}.fleet-company-legend .company-corsica-linea{border-color:#e30613;background:#fff0f1;color:#b8000a}.fleet-company-legend .company-la-meridionale{border-color:#0878bd;background:#edf8ff;color:#075f96}.fleet-company-legend .company-moby{border-color:#25aee5;background:#eaf9ff;color:#08769e}
.fleet-map-canvas{isolation:isolate;min-height:620px;cursor:grab;touch-action:none;user-select:none;background:radial-gradient(circle at 50% 45%,#117dad 0,#075779 48%,#063858 100%)}.fleet-map-canvas.is-dragging{cursor:grabbing}.fleet-map-canvas #fleet-map-fallback{position:absolute;z-index:0;inset:0;width:100%;height:100%;min-height:0;transition:opacity .35s}.fleet-map-canvas.has-tiles #fleet-map-fallback{opacity:0}.fleet-map-surface,.fleet-map-tiles,.fleet-map-seamarks,.fleet-map-routes,.fleet-map-markers{position:absolute;inset:0}.fleet-map-surface{z-index:1;will-change:transform}.fleet-map-tiles{z-index:1}.fleet-map-seamarks{z-index:2;pointer-events:none}.fleet-map-routes{z-index:3;width:100%;height:100%;min-height:0!important;pointer-events:none;overflow:visible}.fleet-map-markers{z-index:4;pointer-events:none}.fleet-map-tile{position:absolute;width:256px;height:256px;max-width:none;border:0;pointer-events:none}.fleet-map-canvas.is-marine .fleet-map-tiles{filter:brightness(.82) saturate(.9) contrast(1.08)}
.fleet-map-mode{position:absolute;z-index:8;top:14px;left:14px;display:flex;padding:4px;border-radius:999px;background:rgba(255,255,255,.94);box-shadow:0 4px 15px rgba(0,29,48,.28)}.fleet-map-mode button{min-width:82px;padding:8px 12px;border:0;border-radius:999px;background:transparent;color:#174b68;font-size:11px;font-weight:900;cursor:pointer}.fleet-map-mode button.is-active{background:#075b86;color:#fff}.fleet-map-controls{position:absolute;z-index:8;top:14px;right:14px;display:grid;overflow:hidden;border-radius:12px;background:rgba(255,255,255,.95);box-shadow:0 4px 15px rgba(0,29,48,.28)}.fleet-map-controls button{width:41px;height:38px;border:0;border-bottom:1px solid #d5e1e7;background:transparent;color:#063b5d;font-size:23px;font-weight:900;cursor:pointer}.fleet-map-controls button:last-child{border-bottom:0;font-size:19px}.fleet-map-controls button:hover,.fleet-map-mode button:hover{background:#e4f4fa}.fleet-map-mode button.is-active:hover{background:#075b86}
.fleet-map-attribution{position:absolute;z-index:8;right:8px;bottom:7px;padding:3px 7px;border-radius:5px;background:rgba(255,255,255,.87);color:#244f65;font-size:9px;pointer-events:auto}.fleet-map-attribution a{color:inherit}.fleet-map-attribution .marine-credit{display:none}.fleet-map-canvas.is-marine .fleet-map-attribution .marine-credit{display:inline}.fleet-map-tile-status{position:absolute;z-index:8;left:50%;bottom:12px;transform:translateX(-50%);padding:7px 11px;border-radius:10px;background:rgba(4,43,65,.92);color:#fff;font-size:10px;font-weight:800;white-space:nowrap}
.fleet-map-marker{position:absolute;width:40px;height:32px;padding:0;border:0;background:transparent;transform:translate(-50%,-50%) scale(var(--map-vessel-scale,1));pointer-events:auto;cursor:pointer;filter:drop-shadow(0 1px 2px rgba(0,20,35,.48))}.fleet-ferry-icon{position:absolute;z-index:2;left:5px;top:8px;width:30px;height:15px;overflow:visible;transform:rotate(calc(var(--ship-heading) - 90deg));transform-origin:50% 50%;transition:transform .3s}.fleet-ferry-hull{fill:var(--ship-color);stroke:#fff;stroke-width:1.6;stroke-linejoin:round}.fleet-ferry-deck{fill:rgba(255,255,255,.92)}.fleet-ferry-windows{fill:var(--ship-ink)}.fleet-ferry-wake{fill:none;stroke:#fff;stroke-width:1.2;stroke-linecap:round;opacity:.78}.fleet-map-marker:not(.is-underway) .fleet-ferry-wake{display:none}.fleet-vessel-halo{position:absolute;z-index:3;left:4px;top:20px;width:7px;height:7px;border:1px solid #fff;border-radius:50%;background:#8a979e;box-shadow:0 1px 2px rgba(0,20,35,.45)}.fleet-map-marker.is-underway .fleet-vessel-halo{background:#54d8ff;animation:fleetPulse 2s ease-out infinite}.fleet-map-marker.is-at_port .fleet-vessel-halo{background:#25d796}.fleet-map-marker.is-stale{opacity:.76}.fleet-map-marker.is-stale .fleet-vessel-halo{background:#ff9e2c}.fleet-map-marker.is-no_signal{opacity:.5}.fleet-map-marker.is-selected{z-index:9;filter:drop-shadow(0 0 4px #fff) drop-shadow(0 2px 3px rgba(0,20,35,.55));transform:translate(-50%,-50%) scale(var(--map-vessel-scale,1)) scale(1.28)}
@keyframes fleetPulse{0%{box-shadow:0 0 0 0 rgba(84,216,255,.55)}70%,100%{box-shadow:0 0 0 3px rgba(84,216,255,0)}}
.fleet-map-trail,.fleet-map-planned-route{fill:none;stroke-linecap:round;stroke-linejoin:round}.fleet-map-trail{stroke:#fff;stroke-width:2;stroke-dasharray:1 7;opacity:.55}.fleet-map-trail.is-stale{stroke:#ffad42;opacity:.36}.fleet-map-trail.is-selected{stroke:#57dcff;stroke-width:3;opacity:.9}.fleet-map-planned-route{stroke:#ffd400;stroke-width:3;stroke-dasharray:9 9;opacity:.88;filter:drop-shadow(0 1px 2px rgba(0,30,48,.65))}
.fleet-vessel-item i{background:var(--company-color)!important;box-shadow:0 0 0 2px rgba(255,255,255,.2)}.fleet-vessel-item.is-selected{border-color:var(--company-color);background:#10506f;box-shadow:inset 4px 0 0 var(--company-color)}.fleet-map-card{z-index:10;border-left:5px solid var(--card-company,#ffd400);user-select:text}.fleet-map-card strong{color:var(--card-company,#ffd400)}.fleet-map-card p b{color:#fff}.fleet-map-card-close{position:absolute;top:7px;right:8px;width:28px;height:28px;border:0;border-radius:50%;background:#234d62;color:#fff;font-size:20px;line-height:1;cursor:pointer}
.ops-hero>b.is-connected{background:#dff8ec;color:#147557}
@media(max-width:900px){.fleet-map-canvas{min-height:570px}.fleet-map-layout aside{max-height:310px}}
@media(max-width:560px){.fleet-map-canvas,.fleet-map-canvas #fleet-map-fallback{min-height:500px}.fleet-map-mode{top:9px;left:9px}.fleet-map-mode button{min-width:66px;padding:7px 9px;font-size:10px}.fleet-map-controls{top:9px;right:9px}.fleet-map-controls button{width:38px;height:36px}.fleet-map-card{right:8px;bottom:32px;left:8px;max-width:none}.fleet-company-legend span{font-size:9px;padding:6px 8px}}
@media(prefers-reduced-motion:reduce){.fleet-map-marker.is-underway .fleet-vessel-halo{animation:none}}

/* QEMB 6.3.4 — carte vectorielle locale et marqueurs géographiques natifs. */
.fleet-map-gl{position:absolute;z-index:1;inset:0}.fleet-map-gl,.fleet-map-gl .maplibregl-map,.fleet-map-gl .maplibregl-canvas-container,.fleet-map-gl .maplibregl-canvas{width:100%;height:100%}.fleet-map-gl .maplibregl-canvas{min-height:0!important}.fleet-map-canvas.is-marine .fleet-map-gl{background:#052e46}.fleet-map-canvas .maplibregl-ctrl-logo{display:none}
#fleet-map svg{width:auto;height:auto;min-height:0}
.qemb-vessel-marker{width:1px;height:1px;padding:0;border:0;background:transparent;overflow:visible;cursor:pointer;filter:drop-shadow(0 1px 2px rgba(0,20,35,.58))}.qemb-vessel-marker:focus-visible{outline:2px solid #fff;outline-offset:9px}.qemb-vessel-icon{position:absolute;z-index:2;right:4px;top:-4px;width:16px!important;height:8px!important;min-height:0!important;max-width:none!important;overflow:visible;transform:rotate(calc(var(--ship-heading) - 90deg));transform-origin:50% 50%;transition:transform .25s,filter .2s}.qemb-ferry-hull{fill:var(--ship-color);stroke:#fff;stroke-width:2.1;stroke-linejoin:round}.qemb-ferry-deck{fill:rgba(255,255,255,.94)}.qemb-ferry-windows{fill:var(--ship-ink)}.qemb-ferry-wake{fill:none;stroke:#fff;stroke-width:1.5;stroke-linecap:round;opacity:.72}.qemb-vessel-marker:not(.is-underway) .qemb-ferry-wake{display:none}.qemb-vessel-status{position:absolute;z-index:3;left:-3px;top:-3px;width:6px;height:6px;border:1px solid #fff;border-radius:50%;background:#89969d;box-shadow:0 1px 3px rgba(0,20,35,.55)}.qemb-vessel-marker.is-underway .qemb-vessel-status{background:#54d8ff}.qemb-vessel-marker.is-at_port .qemb-vessel-status{background:#25d796}.qemb-vessel-marker.is-stale{opacity:.8}.qemb-vessel-marker.is-stale .qemb-vessel-status{background:#ff9e2c}.qemb-vessel-marker.is-no_signal{opacity:.52}.qemb-vessel-marker.is-selected .qemb-vessel-icon{filter:drop-shadow(0 0 3px #fff);transform:rotate(calc(var(--ship-heading) - 90deg)) scale(1.18)}.qemb-vessel-marker.is-selected .qemb-vessel-status{box-shadow:0 0 0 3px rgba(255,255,255,.72),0 1px 3px rgba(0,20,35,.55)}
.qemb-port-marker{width:1px;height:1px;overflow:visible;pointer-events:none}.qemb-port-marker span{position:absolute;left:-4px;top:-4px;width:8px;height:8px;border:2px solid #fff;border-radius:50%;background:#08af91;box-shadow:0 1px 3px rgba(0,28,46,.65)}.qemb-port-marker b{position:absolute;left:8px;top:-8px;padding:2px 4px;border-radius:4px;background:rgba(4,43,65,.78);color:#fff;font-size:9px;line-height:1.1;letter-spacing:.02em;white-space:nowrap;text-shadow:0 1px 2px #03283e}.fleet-map-attribution span{font-weight:800}
@media(max-width:560px){#fleet-map svg{min-height:0}.qemb-port-marker b{font-size:8px}.qemb-vessel-icon{width:15px!important;height:7.5px!important}}
