/* Shared public/staff marina viewport. No global styles or runtime dependencies. */
.mm-app { --mm-ink:#173f35; --mm-muted:#64796f; --mm-line:#d6e0d8; color:var(--mm-ink); font-family:var(--font-body,Arial,sans-serif); max-width:1480px; margin:0 auto; min-width:0; }
.mm-app *, .mm-app *::before,.mm-app *::after { box-sizing:border-box; }
.mm-app button,.mm-app input,.mm-app select { font:inherit; }
.mm-app button { cursor:pointer; }
.mm-app button:focus-visible,.mm-app a:focus-visible,.mm-app input:focus-visible,.mm-app select:focus-visible,.mm-stage:focus-visible { outline:3px solid #b87d20; outline-offset:3px; }
.mm-title { display:flex; align-items:center; justify-content:space-between; gap:20px; margin:5px 0 22px; }
.mm-title h1 { font:600 34px/1.12 var(--font-display,Georgia,serif); margin:5px 0 8px; color:#183d31; }
.mm-title p { margin:0; font-size:14px; color:var(--mm-muted); }
.mm-title .mm-eyebrow { font-size:10px; font-weight:700; letter-spacing:.2em; color:#886a35; }
.mm-modes { display:flex; gap:4px; padding:4px; background:#dfe8df; border-radius:10px; flex-shrink:0; }
.mm-modes button { min-height:44px; border:0; background:transparent; border-radius:7px; padding:10px 18px; color:#355f4f; font-weight:650; font-size:13px; }
.mm-modes button[aria-pressed=true] { background:#174c3d; color:#fff; box-shadow:0 2px 6px #183e3020; }
.mm-workspace { background:#fff; border:1px solid var(--mm-line); border-radius:13px; box-shadow:0 5px 18px #234e3010; overflow:hidden; }
.mm-toolbar { display:flex; align-items:center; flex-wrap:wrap; gap:14px; padding:14px 16px; }
.mm-docks { display:flex; gap:3px; background:#f0f4ef; border-radius:8px; padding:4px; }
.mm-docks button { min-width:44px; min-height:44px; border:0; padding:10px 14px; border-radius:5px; font-size:12px; color:#476453; background:transparent; white-space:nowrap; font-weight:650; }
.mm-docks button[aria-pressed=true] { background:#225340; color:white; }
.mm-search { position:relative; display:flex; flex:1; gap:0; min-width:215px; margin:0; }
.mm-search input { width:100%; min-width:0; height:46px; padding:10px 12px; color:#244d3c; background:#fafcf9; border:1px solid #cbd8ce; border-right:0; border-radius:7px 0 0 7px; font-size:14px; }
.mm-search>button { flex:none; height:46px; padding:9px 16px; border:1px solid #225340; border-radius:0 7px 7px 0; background:#225340; color:white; font-weight:650; font-size:13px; }
.mm-filter select { max-width:160px; height:46px; border:1px solid #cbd8ce; background:#fafcf9; color:#3e604c; border-radius:7px; padding:8px 10px; font-size:12px; }
.mm-results { position:absolute; left:0; right:0; top:calc(100% + 6px); background:white; border:1px solid #cbd8ce; box-shadow:0 8px 25px #12342522; z-index:8; border-radius:8px; padding:5px; }
.mm-results button { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:10px; min-height:44px; border:0; border-radius:4px; width:100%; text-align:left; background:white; color:#244b3c; }
.mm-results button:hover { background:#eff5ee; }.mm-results span { font-size:12px; color:#69806e; }.mm-results p { margin:12px; font-size:13px; }
.mm-stage { position:relative; height:620px; min-height:320px; overflow:hidden; touch-action:none; cursor:grab; background:#192e28; isolation:isolate; }
.mm-grabbing { cursor:grabbing; }.mm-surface,.mm-svg { width:100%; height:100%; display:block; }.mm-surface { position:absolute; inset:0; }
.mm-svg { user-select:none; -webkit-user-select:none; }.mm-aerial-image { filter:brightness(1.12) saturate(1.07); }
.mm-slip { cursor:pointer; }.mm-slip .mm-label-face { fill:#fffdf4; stroke:#477563; stroke-width:1.3; }.mm-slip text { fill:#143d30; text-anchor:middle; dominant-baseline:central; font:700 22px Arial,sans-serif; pointer-events:none; }.mm-slip text.mm-long { font-size:18px; }
.mm-chart-map .mm-slip text { font-size:18px; }.mm-chart-map .mm-slip text.mm-long { font-size:15px; }
.mm-bay { fill:#c7dfce; fill-opacity:.08; stroke:#fff5de; stroke-width:1.4; stroke-opacity:.3; }
.mm-leader { stroke:#ffefd0; stroke-width:1.3; stroke-opacity:.85; pointer-events:none; }.mm-anchor { fill:#f6e6b4; stroke:#173b2b; stroke-width:1.6; pointer-events:none; }
.mm-slip.mm-approx .mm-label-face { stroke:#c99428; stroke-width:2.2; stroke-dasharray:6 3; }
.mm-slip.mm-status-O .mm-label-face { fill:#1c5a42; }.mm-slip.mm-status-O text { fill:#fff; }.mm-slip.mm-status-O .mm-bay { fill:#29815b; fill-opacity:.32; }
.mm-slip.mm-status-R .mm-label-face { fill:#f7e6bc; stroke:#bc8a32; }.mm-slip.mm-status-R .mm-bay { fill:#e9b959; fill-opacity:.3; }
.mm-slip.mm-status-T .mm-label-face { fill:#d3e9f4; stroke:#477c99; }.mm-slip.mm-status-T .mm-bay { fill:#66b1d3; fill-opacity:.3; }
.mm-slip.mm-selected .mm-label-face { fill:#ffe3a1; stroke:#543b0b; stroke-width:3; stroke-dasharray:none; }.mm-slip.mm-selected text { fill:#3c2d0c; }.mm-slip.mm-selected .mm-bay { fill:#ffdd7a; fill-opacity:.4; stroke:#ffe2a1; stroke-width:3; stroke-opacity:1; }
.mm-slip:hover .mm-label-face,.mm-slip:focus-visible .mm-label-face { stroke:#b27313; stroke-width:3; }.mm-slip:focus-visible { outline:none; }
.mm-work-dot { fill:#b76720; stroke:white; stroke-width:1.4; pointer-events:none; }
.mm-filtered { opacity:.13; pointer-events:none; }
.mm-svg:not(.mm-detail) .mm-slip:not(.mm-selected) { visibility:hidden; pointer-events:none; }
.mm-svg.mm-detail .mm-dock-pin { visibility:hidden; pointer-events:none; }
.mm-dock-pin { cursor:pointer; }.mm-dock-pin rect { fill:#173f33; fill-opacity:.96; stroke:#d9c38f; stroke-width:1.3; vector-effect:non-scaling-stroke; }.mm-dock-pin text { fill:#fff8e9; text-anchor:middle; dominant-baseline:central; font-family:Arial,sans-serif; font-weight:700; pointer-events:none; }.mm-dock-pin:hover rect,.mm-dock-pin:focus-visible rect { fill:#70521c; stroke:#fff0b8; }
.mm-chart-structure .cm-structure { fill:#365c52; stroke:#365c52; stroke-width:1.8; }
.mm-chart-structure .cm-pier-label { fill:#fff; font:700 18px Arial,sans-serif; text-anchor:middle; dominant-baseline:central; pointer-events:none; }
.mm-chart-structure .cm-landmark { fill:#536b5a; font:15px Arial,sans-serif; text-anchor:middle; dominant-baseline:central; }
.mm-chart-structure .cm-minimum { fill:#85642d; font:15px Arial,sans-serif; text-anchor:middle; dominant-baseline:central; }
.mm-map-tools { position:absolute; right:16px; bottom:44px; display:flex; flex-direction:column; gap:5px; z-index:3; }
.mm-map-tools button { width:48px; height:48px; background:#fffdf6; color:#183f32; border:1px solid #bdcbbf; border-radius:8px; box-shadow:0 3px 8px #142e2626; font:500 25px Arial,sans-serif; }
.mm-map-tools button:hover { background:#ffedbe; }
.mm-map-tag { position:absolute; left:14px; top:14px; color:#fff8e7; background:#15392dec; padding:8px 10px; border:1px solid #fff3d326; border-radius:5px; font-size:9px; font-weight:700; letter-spacing:.12em; pointer-events:none; }
.mm-zoom-note { position:absolute; left:14px; bottom:12px; color:#fff9ea; background:#173a2ced; border-radius:5px; padding:6px 9px; font-size:10px; pointer-events:none; }
.mm-load-error { position:absolute; top:55px; left:14px; right:14px; padding:14px; background:#fff3d8; color:#543d18; border-radius:7px; font-size:13px; }.mm-load-error button { border:1px solid #9c7738; background:white; padding:7px; border-radius:4px; margin-left:10px; }
.mm-selection { display:flex; justify-content:space-between; align-items:center; gap:14px; border-top:1px solid #ccd8ca; padding:13px 16px; background:#fafbf5; }
.mm-selected-main { min-width:0; }.mm-selected-main>div { display:flex; align-items:center; gap:12px; }.mm-selected-main strong { font-size:21px; color:#254c37; }.mm-selected-main span { font-size:12px; color:#6a7e69; }.mm-selected-main p { margin:4px 0 0; font-size:11px; color:#71816b; line-height:1.5; }
.mm-selected-actions { display:flex; align-items:center; gap:6px; flex-shrink:0; }.mm-selected-actions button,.mm-call { display:inline-flex; align-items:center; justify-content:center; min-width:44px; min-height:44px; padding:8px 12px; border:1px solid #c9d7c8; border-radius:6px; background:white; color:#355740; text-decoration:none; font-size:13px; }.mm-selected-actions .mm-record-button { background:#254f3a; color:white; border-color:#254f3a; font-weight:600; }
.mm-bottom { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:8px; padding:9px 16px; border-top:1px solid #e1e7de; }
.mm-key { display:flex; gap:14px; flex-wrap:wrap; color:#657961; font-size:10px; }.mm-key span { display:flex; align-items:center; gap:6px; }.mm-key i { width:11px; height:11px; background:#fffdf4; border:1px solid #6c8b72; border-radius:3px; display:inline-block; }.mm-key i.mm-key-assigned { background:#1c5a42; }.mm-key i.mm-key-reserved { background:#f7e6bc; border-color:#bc8a32; }.mm-key i.mm-key-transient { background:#d3e9f4; border-color:#477c99; }.mm-key i.mm-key-approx { border:2px dashed #bb8a29; }
.mm-reset { min-height:44px; background:transparent; border:0; color:#5a735c; font-size:11px!important; text-decoration:underline; text-underline-offset:3px; }
.mm-directory { margin-top:18px; border:1px solid #d8e1d3; border-radius:9px; background:#fafcf6; }.mm-directory summary { padding:15px 18px; cursor:pointer; color:#36583f; font-size:13px; }.mm-count { float:right; color:#7a8b71; font-size:11px; }
.mm-directory-items { padding:0 14px 14px; display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:8px; }.mm-directory-items button { display:flex; flex-direction:column; gap:3px; min-height:55px; background:white; border:1px solid #d7e2d0; border-radius:6px; color:#35583d; padding:9px; text-align:left; }.mm-directory-items b { font-size:14px; }.mm-directory-items span { font-size:10px; color:#78906f; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:100%; }
.mm-method { margin-top:14px; padding:15px 2px; color:#74836c; border-top:1px solid #dbe3d2; font-size:12px; }.mm-method summary { color:#5a7253; cursor:pointer; }.mm-method p { max-width:1000px; line-height:1.65; margin:12px 0; }.mm-attribution { font-size:10px; }.mm-method a { color:#476c44; text-decoration:underline; }
.mm-sr { position:absolute; width:1px; height:1px; padding:0; margin:-1px; clip:rect(0,0,0,0); overflow:hidden; white-space:nowrap; border:0; }
.mm-app [hidden] { display:none!important; }
.mm-public-section { padding:28px 22px; background:#f0ecdf; }.mm-public-help { max-width:1000px; margin:22px auto 0; font-size:13px; color:#5a7155; text-align:center; }.mm-public-help a { color:#315a36; font-weight:600; }
@media(max-width:1000px) { .mm-toolbar { gap:10px; }.mm-docks { flex:1; }.mm-docks button { flex:1; }.mm-search { min-width:230px; }.mm-filter { margin-left:auto; }.mm-stage { height:560px; }.mm-directory-items { grid-template-columns:repeat(4,minmax(0,1fr)); } }
@media(max-width:600px) {
 .mm-title { flex-wrap:wrap; gap:15px; margin:4px 0 16px; }.mm-title h1 { font-size:29px; }.mm-title p { font-size:12px; }.mm-title .mm-eyebrow { font-size:9px; }
 .mm-modes { width:100%; }.mm-modes button { flex:1; font-size:12px; }
 .mm-toolbar { padding:10px; gap:9px; }.mm-docks { width:100%; flex-basis:100%; }.mm-docks button { padding:9px 6px; }.mm-docks button span { display:none; }
 .mm-search { flex-basis:100%; min-width:0; }.mm-search input { font-size:16px; }.mm-filter { width:100%; }.mm-filter select { max-width:none; width:100%; height:44px; }
 .mm-stage { height:54svh; min-height:330px; max-height:490px; }.mm-map-tools { right:10px; bottom:45px; }.mm-map-tools button { width:48px; height:48px; }
 .mm-map-tag { left:10px; top:10px; font-size:8px; padding:7px; }.mm-zoom-note { left:10px; bottom:10px; font-size:9px; max-width:calc(100% - 20px); }
 .mm-selection { padding:12px; align-items:flex-start; flex-direction:column; gap:10px; }.mm-selected-main p { font-size:10px; }.mm-selected-actions { width:100%; }.mm-record-button,.mm-call { flex:1; }
 .mm-bottom { padding:8px 10px; gap:3px; }.mm-key { gap:10px; font-size:9px; }.mm-reset { font-size:10px!important; }.mm-directory { margin-top:14px; }.mm-directory-items { grid-template-columns:repeat(3,minmax(0,1fr)); }
 .mm-public-section { padding:20px 12px; }.mm-public-help { text-align:left; font-size:12px; }
}
@media(prefers-reduced-motion:reduce) { .mm-app * { scroll-behavior:auto!important; transition:none!important; } }
@media print { .mm-toolbar,.mm-map-tools,.mm-modes,.mm-search,.mm-zoom-note,.mm-directory,.mm-method,.mm-reset { display:none!important; }.mm-stage { height:145mm; }.mm-workspace { box-shadow:none; }.mm-app { print-color-adjust:exact; -webkit-print-color-adjust:exact; } }

body.marina-map-page { overflow-x:clip; }
.mm-slip.mm-selected.mm-approx .mm-label-face { stroke-dasharray:6 3; }
.mm-slip.mm-approx .mm-bay { stroke:#d5a33a; stroke-dasharray:8 5; stroke-opacity:.8; }
