:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;color:#172a3e;background:#ecf2f5}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer}.workspace{display:flex;width:100vw;height:100vh;min-height:560px;overflow:hidden}.sidebar{width:390px;min-width:340px;display:flex;flex-direction:column;background:#fff;z-index:5;box-shadow:8px 0 32px #1227441a}.brand{height:78px;display:flex;align-items:center;gap:12px;padding:0 25px;border-bottom:1px solid #e6edf1}.brand-mark{display:grid;place-items:center;width:37px;height:37px;border-radius:11px;background:#123249;color:#b1e8e3;font-size:26px}.brand strong{display:block;font-size:14px;letter-spacing:.01em}.brand span{display:block;color:#8393a1;font-size:10px;letter-spacing:.15em;margin-top:4px;font-weight:800}.sidebar-scroll{overflow:auto;padding:24px 25px;flex:1}.eyebrow{font-size:10px;font-weight:800;letter-spacing:.16em;color:#268487;display:flex;justify-content:space-between;align-items:center}.phase{letter-spacing:.05em;color:#8d9aa7;background:#f1f5f6;padding:5px 7px;border-radius:5px}h1{font-size:27px;letter-spacing:-.045em;line-height:1.1;margin:18px 0 8px}.intro{color:#687b8d;font-size:13px;line-height:1.6;margin:0 0 23px}.route-rows{position:relative}.route-rows:before{content:"";position:absolute;left:14px;top:33px;bottom:33px;border-left:2px dashed #d8e2e8}.route-row{display:flex;align-items:flex-start;gap:11px;position:relative;margin-bottom:12px}.point-badge{flex:none;width:30px;height:30px;border:4px solid #fff;border-radius:50%;box-shadow:0 0 0 1px #d9e3ea;background:#d99f45;margin-top:15px;z-index:1}.point-badge.departure{background:#dd4f4f}.point-badge.arrival{background:#22a56a}.row-content{min-width:0;flex:1}.row-content label{font-size:11px;color:#637587;font-weight:700;display:block;margin-bottom:5px}.input-wrap{position:relative}.route-input{width:100%;border:1px solid #dbe5ea;border-radius:8px;height:40px;padding:0 11px;background:#fff;color:#183248;font-size:13px;outline:none}.route-input:focus,.route-row.active .route-input{border-color:#208a9a;box-shadow:0 0 0 3px #20a1ac1c}.route-input::placeholder{color:#a8b6c0}.row-actions{display:flex;gap:3px;align-items:center;padding-top:31px}.row-actions button{border:0;background:none;color:#9aaab6;padding:3px;font-size:14px}.row-actions button:hover{color:#244b62}.suggestions{position:absolute;left:0;right:0;top:42px;background:#fff;border:1px solid #dce6eb;border-radius:8px;box-shadow:0 16px 36px #1730472b;max-height:220px;overflow:auto;z-index:30}.suggestions button{display:block;width:100%;border:0;background:#fff;padding:10px;text-align:left;color:#23384b}.suggestions button:hover{background:#eef6f7}.suggestions small{display:block;margin-top:3px;color:#8797a5}.add-stop{margin:4px 0 6px 41px;border:1px dashed #7fb7bc;color:#187782;background:#f4fbfb;border-radius:8px;padding:9px 14px;font-size:12px;font-weight:700}.hint{color:#9aa9b5;font-size:11px;margin:5px 0 22px 42px;line-height:1.5}.primary{width:100%;border:0;border-radius:9px;height:45px;background:#173b53;color:#fff;font-size:13px;font-weight:700;padding:0 16px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 7px 17px #173b5333}.primary:hover{background:#225a73}.primary:disabled{opacity:.55;cursor:wait}.message{font-size:12px;line-height:1.5;color:#bb4d44;min-height:20px;margin-top:10px}.results{margin-top:10px}.route-card{border:1px solid #e0e9ef;background:#fff;border-radius:12px;padding:16px;margin-bottom:12px;box-shadow:0 5px 18px #1a405008}.card-head{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:800}.route-color{display:inline-block;width:15px;height:4px;border-radius:4px;margin-right:7px;vertical-align:middle}.distance{font-size:29px;letter-spacing:-.055em;font-weight:750;margin:13px 0 2px}.distance small{font-size:12px;font-weight:600;color:#8b9aa7;letter-spacing:0}.metrics{display:flex;gap:10px;border-bottom:1px solid #edf2f4;padding:11px 0 14px}.metric{flex:1;font-size:11px;color:#7b8c99}.metric strong{display:block;color:#22394b;font-size:14px;margin-top:4px}.metric .pending{color:#9badb9;font-size:12px}.settings{display:grid;grid-template-columns:1fr 1fr;gap:11px;margin-top:14px}.settings label{font-size:11px;color:#788b99}.settings input{display:block;width:100%;height:34px;border:1px solid #dce6eb;border-radius:7px;padding:5px 8px;margin-top:5px;color:#1e394d}.voyage-days{display:flex;align-items:center;justify-content:space-between;background:#eff8f7;border-radius:8px;margin-top:14px;padding:12px;color:#34636a;font-size:12px}.voyage-days strong{color:#174755;font-size:18px}.passages{font-size:11px;color:#8193a1;margin-top:10px;line-height:1.5}.sidebar-footer{padding:12px 25px;border-top:1px solid #ebf0f2;color:#9aa9b5;font-size:10px}.map-area{position:relative;flex:1;min-width:0}.map-area #map{position:absolute;inset:0}.map-toolbar{position:absolute;left:22px;top:20px;display:flex;gap:8px;align-items:center}.segmented{display:flex;background:#fff;padding:4px;border-radius:9px;box-shadow:0 4px 18px #21405e26}.segmented button{border:0;background:transparent;color:#6f8290;border-radius:6px;padding:8px 12px;font-size:12px;font-weight:700}.segmented button.active{background:#173b53;color:#fff}.tool-button{border:0;background:#fff;color:#617888;border-radius:9px;padding:12px;font-size:12px;font-weight:700;box-shadow:0 4px 18px #21405e26}.tool-button:disabled{cursor:not-allowed}.soon{font-size:9px;color:#a2adb6;margin-left:4px}.map-legend{position:absolute;right:20px;top:20px;display:flex;gap:13px;background:#fff;padding:11px 13px;border-radius:9px;box-shadow:0 4px 18px #21405e26;font-size:11px;color:#5b7282}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}.blue{background:#3b85c7}.red{background:#dd4f4f}.green{background:#22a56a}.coordinates{position:absolute;right:20px;bottom:28px;background:#183a4de6;color:#fff;border-radius:7px;padding:9px 12px;font-variant-numeric:tabular-nums;font-size:11px}.data-notice{position:absolute;left:22px;bottom:28px;max-width:390px;background:#fffef4e8;color:#79664b;border:1px solid #f5ebd0;border-radius:7px;padding:9px 12px;font-size:11px;line-height:1.4}.port-detail{position:absolute;right:20px;top:70px;width:260px;background:#fff;padding:16px;border-radius:11px;box-shadow:0 12px 35px #193c5c36;font-size:12px}.port-detail strong{font-size:15px}.port-detail p{margin:7px 0;color:#678091}.port-detail button{float:right;border:0;background:none;color:#657b8a}.hidden{display:none}.maplibregl-popup-content{padding:8px 11px;font-size:12px;color:#244359;border-radius:7px}@media(max-width:760px){.workspace{flex-direction:column;overflow:auto;height:auto;min-height:100vh}.sidebar{width:100%;min-width:0;box-shadow:none}.sidebar-scroll{overflow:visible}.map-area{min-height:62vh}.map-legend{display:none}.data-notice{bottom:70px;right:15px;left:15px;max-width:none}.map-toolbar{left:15px;top:15px}.port-detail{right:15px}.sidebar-footer{display:none}}
.map-status{position:absolute;z-index:4;left:22px;top:70px;max-width:420px;background:#fff5ed;color:#8c3e30;border:1px solid #f2c4ac;border-radius:8px;box-shadow:0 8px 24px #1730472b;padding:12px 14px;font-size:12px;line-height:1.5}
.map-status[hidden]{display:none}
.route-validation{font-size:11px;line-height:1.5;color:#8a613b;background:#fff8e9;border:1px solid #f1e3c9;border-radius:7px;padding:9px 10px;margin-top:12px}
/* Optional zone preference and versioned map overlays. */
.avoid-options{border:1px solid #e1e9ed;border-radius:9px;margin:0 0 14px;padding:11px 13px 12px}.avoid-options legend{font-size:11px;font-weight:800;color:#38576a;padding:0 4px}.avoid-options label{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#244257}.avoid-options input,.zone-controls input{accent-color:#217f8b}.avoid-options small,.zone-controls small{display:block;color:#788b99;line-height:1.4;font-size:10px;margin-top:5px}.zone-controls{position:absolute;left:22px;top:74px;width:218px;background:#fffc;border:1px solid #e3e8ef;border-radius:10px;padding:12px 13px;box-shadow:0 4px 18px #21405e26;font-size:11px;color:#36546a;z-index:2;backdrop-filter:blur(6px)}.zone-controls strong{display:block;margin-bottom:7px;font-size:11px}.zone-controls label{display:flex;align-items:center;gap:5px;padding:3px 0;cursor:pointer}.zone-swatch{width:11px;height:11px;border-radius:3px;display:inline-block;flex:none}.zone-swatch.eca{background:#1b9694}.zone-swatch.jwc{background:#d8655f}.zone-swatch.load-line{background:#895fc5}.zone-coverage{font-size:10px;color:#9a7882;line-height:1.4;margin-top:2px}.result-note{background:#fff6eb;color:#805b35;padding:9px 10px;border-radius:7px;font-size:11px;line-height:1.45}.data-notice a{color:inherit;text-decoration:underline}.route-validation{font-size:10px;color:#8b8090;line-height:1.5;margin-top:10px}
@media(max-width:760px){.zone-controls{left:15px;top:68px}.map-area{min-height:72vh}}
/* Keep all layer switches next to the theme switch and leave the map exposed. */
.map-toolbar{z-index:5;max-width:calc(100% - 42px);overflow-x:auto;white-space:nowrap;scrollbar-width:none}
.map-toolbar::-webkit-scrollbar{display:none}
.zone-controls{position:static;display:flex;align-items:center;gap:12px;width:auto;flex:none;padding:4px 12px;min-height:40px;white-space:nowrap;backdrop-filter:none}
.zone-controls label{display:inline-flex;align-items:center;gap:4px;padding:0;font-size:12px;font-weight:700}
.zone-controls input{margin:0 2px 0 0}
.zone-swatch.eca{background:#0f9d58}.zone-swatch.jwc{background:#db4437}
.map-legend{top:72px}
@media(max-width:760px){.map-toolbar{left:15px;right:15px;max-width:none}.zone-controls{left:auto;top:auto}}

/* Keep point symbols immediately beside the zone switches in one compact row. */
.map-toolbar .map-legend{position:static;display:flex;align-items:center;flex:none;gap:12px;min-height:40px;white-space:nowrap;padding:8px 12px}
.engine-control{display:block;margin:0 0 14px;font-size:11px;font-weight:700;color:#637587}
.engine-control select{display:block;width:100%;height:39px;margin-top:6px;padding:0 10px;border:1px solid #dbe5ea;border-radius:8px;background:#fff;color:#183248;font:inherit;font-size:12px}

/* Keep the first route's distance and voyage days in view on a laptop display. */
.brand{height:56px;padding:0 20px}
.brand-mark{width:32px;height:32px;font-size:22px}
.sidebar-scroll{padding:14px 20px 18px}
.sidebar-scroll h1{font-size:20px;letter-spacing:-.035em;margin:0 0 4px}
.intro{font-size:12px;line-height:1.4;margin:0 0 14px}
.route-rows:before{left:12px;top:29px;bottom:29px}
.route-row{gap:9px;margin-bottom:9px}
.point-badge{width:26px;height:26px;margin-top:13px}
.row-content label{margin-bottom:3px}
.route-input{height:36px}
.row-actions{padding-top:26px}
.add-stop{margin:0 0 7px 35px;padding:6px 10px;font-size:11px}
.planner-help{margin:0 0 10px 35px;color:#718492;font-size:11px;line-height:1.4}
.planner-help summary{cursor:pointer}
.planner-help p{margin:5px 0 0}
.primary{height:39px;box-shadow:0 4px 12px #173b5326}
.message{min-height:0;margin-top:8px}
.message:empty{display:none}
.results{margin-top:8px}
.results:empty{display:none}
.route-card{padding:12px;margin-bottom:10px}
.distance{font-size:26px;margin:7px 0 0}
.metrics{padding:7px 0 9px}
.metric strong{margin-top:1px}
.zone-coverage{line-height:1.3}
.settings{gap:9px;margin-top:10px}
.settings input{height:31px;margin-top:3px}
.voyage-days{margin-top:10px;padding:8px 10px}
.sidebar-footer{padding:7px 20px}

/* Make the main action clear without pushing the route summary below the fold. */
#generate{height:47px;border-radius:11px;background:#08658c;color:#fff;font-size:16px;font-weight:800;letter-spacing:.01em;box-shadow:0 7px 18px #08658c52;transition:background-color .16s ease,border-radius .16s ease,box-shadow .16s ease,transform .16s ease}
#generate span{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:#ffffff30;font-size:19px;line-height:1;transition:transform .16s ease}
#generate:not(:disabled):hover{background:#064d6c;border-radius:16px;box-shadow:0 11px 24px #064d6c66;transform:translateY(-2px)}
#generate:not(:disabled):hover span{transform:translate(2px,-2px)}
#generate:not(:disabled):active{border-radius:10px;box-shadow:0 3px 9px #064d6c55;transform:translateY(0)}
#generate:focus-visible{outline:3px solid #a45c00;outline-offset:3px}
#generate:disabled,#generate:disabled:hover{background:#08658c;box-shadow:none;transform:none}
@media(prefers-reduced-motion:reduce){#generate,#generate span{transition:none}#generate:not(:disabled):hover,#generate:not(:disabled):active,#generate:not(:disabled):hover span{transform:none}}

/* Product navigation follows the compact rail in Universal Platform. The
   calculator controls remain in their own panel beside the map. */
.workspace{position:relative;padding-left:64px}
.product-nav{position:absolute;inset:0 auto 0 0;width:64px;min-width:0;display:flex;flex-direction:column;overflow:hidden;background:#1e2a38;color:#fff;z-index:6;transition:width .25s ease}
.product-nav:hover,.product-nav:focus-within{width:230px}
.product-nav-header{height:56px;flex:none;display:flex;align-items:center;gap:12px;padding:0 12px;border-bottom:1px solid #ffffff1c}
.product-nav-brand{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:9px;background:#2a3b52;color:#b1e8e3;font-size:22px;font-weight:800}
.product-nav-title{font-size:13px;font-weight:800;letter-spacing:.01em;white-space:nowrap;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease}
.product-nav-menu{display:flex;flex:1;min-height:0;flex-direction:column;gap:4px;padding:10px;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:#60788b #1e2a38}
.product-nav-link{display:flex;align-items:center;gap:12px;flex:none;min-height:44px;padding:10px;color:#fff;border-radius:8px;text-decoration:none;font-size:13px;font-weight:700;white-space:nowrap}
.product-nav-link:hover{background:#2a3b52}
.product-nav-link[aria-current="page"]{background:#3b4f6c}
.product-nav-link[aria-current="page"]:hover{background:#465e7b}
.product-nav-link:focus-visible{outline:2px solid #b1e8e3;outline-offset:-2px}
.product-nav-icon{display:grid;place-items:center;width:24px;height:24px;flex:none;color:#fff}
.product-nav-icon svg{display:block;width:20px;height:20px}
.product-nav-label{opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease}
.product-nav:hover .product-nav-title,.product-nav:focus-within .product-nav-title,.product-nav:hover .product-nav-label,.product-nav:focus-within .product-nav-label{opacity:1;visibility:visible}

/* The two future products have real destinations while their tools are built. */
.product-workspace{background:#ecf2f5}
.product-placeholder{flex:1;min-width:0;min-height:0;display:flex;align-items:center;justify-content:center;padding:32px}
.product-placeholder-card{width:min(100%,640px);background:#fff;border:1px solid #dae5eb;border-radius:16px;padding:40px;box-shadow:0 12px 35px #193c5c12}
.product-placeholder-card h1{margin:14px 0;font-size:32px}
.product-placeholder-card p{max-width:48ch;color:#617688;line-height:1.65}
.product-placeholder-card .eyebrow{color:#187782;font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}
.product-placeholder-card a{display:inline-flex;align-items:center;margin-top:12px;padding:11px 15px;border-radius:8px;background:#173b53;color:#fff;font-weight:700;text-decoration:none}
.product-placeholder-card a:hover{background:#225a73}
.product-placeholder-card a:focus-visible{outline:3px solid #a45c00;outline-offset:3px}

@media(max-width:760px){
  .workspace{padding-left:0}
  .product-nav,.product-nav:hover,.product-nav:focus-within{position:relative;inset:auto;width:100%;flex:0 0 auto;min-height:56px;flex-direction:row;align-items:center;overflow:hidden;transition:none}
  .product-nav-header{height:44px;padding:0 8px;border:0;border-right:1px solid #ffffff24}
  .product-nav-brand{width:32px;height:32px;font-size:18px}
  .product-nav-title{display:none}
  .product-nav-menu{min-width:0;flex:1;flex-direction:row;gap:2px;padding:5px 8px;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}
  .product-nav-link{min-height:40px;gap:6px;padding:7px 9px;font-size:11px}
  .product-nav-icon{width:18px;height:18px}
  .product-nav-icon svg{width:18px;height:18px}
  .product-nav-label{opacity:1;visibility:visible}
  .product-placeholder{padding:20px;min-height:calc(100vh - 56px)}
  .product-placeholder-card{padding:28px}
}
@media(hover:none) and (min-width:761px){
  .workspace{display:grid;padding-left:0;grid-template-columns:390px minmax(0,1fr);grid-template-rows:56px minmax(0,1fr)}
  .product-nav,.product-nav:hover,.product-nav:focus-within{position:relative;inset:auto;grid-column:1/-1;grid-row:1;width:auto;min-height:56px;flex-direction:row;align-items:center;transition:none}
  .product-nav-header{height:44px;padding:0 8px;border:0;border-right:1px solid #ffffff24}
  .product-nav-title{display:none}
  .product-nav-menu{min-width:0;flex:1;flex-direction:row;align-items:center;gap:3px;padding:5px 8px;overflow-x:auto;overflow-y:hidden}
  .product-nav-label{opacity:1;visibility:visible}
  .sidebar{grid-column:1;grid-row:2;min-height:0}
  .map-area,.product-placeholder{grid-column:2;grid-row:2}
  .product-workspace{grid-template-columns:1fr}
  .product-workspace .product-placeholder{grid-column:1}
}
@media(prefers-reduced-motion:reduce){.product-nav,.product-nav-title,.product-nav-label{transition:none}}

/* Voyage Estimator: independent scrolling keeps the calculator map layout untouched. */
.voyage-workspace{min-height:0}
.voyage-save-estimate{display:inline-flex;align-items:center;margin-top:14px;padding:11px 15px;border:1px solid #0b6686;border-radius:9px;background:#0b6686;color:#fff;font-size:12px;font-weight:800;cursor:pointer}
.voyage-save-estimate:hover{background:#084d68}
.voyage-save-status{margin:8px 0 0;color:#365d6e;font-size:12px;line-height:1.45}

/* Route calculation and report export feedback. Keep the map and panel dimensions stable. */
#generate.is-loading{opacity:1;background:#146c86;cursor:progress}
#generate.is-loading>span{display:none}
#generate.is-loading::after,.route-report-button.is-loading::after{content:"";display:inline-block;flex:none;width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:route-spin .75s linear infinite}
.message.is-loading{color:#226b81;font-weight:700}
.route-card{animation:route-card-in .28s ease-out both}
.distance-number{white-space:nowrap}
.copy-distance{display:inline-flex;vertical-align:middle;align-items:center;justify-content:center;width:25px;height:25px;margin-left:5px;padding:3px;border:0;border-radius:6px;background:transparent;color:#587e92;cursor:pointer}
.copy-distance:hover{color:#075d79;background:#e7f2f5}
.copy-distance:focus-visible{outline:2px solid #0d8ba6;outline-offset:2px}
.metric .copy-distance{width:21px;height:21px;margin-left:2px;padding:2px}
.copy-distance-feedback{font-size:10px;font-weight:700;letter-spacing:0;color:#21765e;white-space:nowrap}
.metric .copy-distance-feedback{display:block}
.route-gap-warning{margin:8px 0 6px;padding:8px 9px;border:1px solid #ebc6a9;border-left:4px solid #c96c35;border-radius:7px;background:#fff2e8;color:#823f22;font-size:11px;font-weight:750;line-height:1.4}
.route-gap-warning[hidden]{display:none}
.route-experimental-note{margin:8px 0 6px;padding:8px 9px;border:1px solid #e8cfa0;border-left:4px solid #b78829;border-radius:7px;background:#fff9e9;color:#715225;font-size:11px;font-weight:650;line-height:1.4}
.route-experimental-note[hidden]{display:none}
.route-report-actions{display:flex;align-items:center;flex-wrap:wrap;gap:9px;margin-top:12px}
.route-report-button{display:inline-flex;align-items:center;gap:8px;border:1px solid #b9d4df;border-radius:7px;padding:8px 10px;background:#eef8fa;color:#0b627f;font-size:11px;font-weight:800}
.route-report-button:hover{background:#def0f5;border-color:#70aebc;box-shadow:0 3px 9px #173b5320}
.route-report-button:disabled{cursor:progress;opacity:.8}
.route-report-status{color:#536f7e;font-size:11px;line-height:1.4}
.route-report-button:focus-visible,#generate:focus-visible{outline:3px solid #188e9d;outline-offset:2px}
.map-loading{position:absolute;z-index:3;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:10px;padding:11px 15px;border:1px solid #d5e5eb;border-radius:10px;background:#fffffff2;color:#265a70;box-shadow:0 10px 28px #15384a26;font-size:12px;font-weight:800;white-space:nowrap;pointer-events:none}
.map-loading[hidden]{display:none}
.map-loading-spinner{width:17px;height:17px;border:2px solid #2694ab;border-right-color:transparent;border-radius:50%;animation:route-spin .75s linear infinite}
.map-legend .legend-divider{height:18px;border-left:1px solid #d8e4ea}
.map-legend .route-key{display:inline-block;width:17px;height:4px;margin-right:5px;border-radius:3px;vertical-align:middle}
.map-legend .route-key.shortest{background:#4285f4}
.map-legend .route-key.hra{background:#db4437}
.map-legend .route-key.eca{background:#0f9d58}
.map-legend .route-key.ais-gap{background:repeating-linear-gradient(90deg,#bc7518 0 4px,transparent 4px 7px)}
.map-legend #ais-gap-key[hidden]{display:none}
/* Keep every key visible on narrower maps, with the point and route keys together. */
.map-toolbar{width:calc(100% - 42px);flex-wrap:wrap;overflow:visible}
@media(max-width:760px){.map-toolbar{width:calc(100% - 30px)}}
@keyframes route-spin{to{transform:rotate(360deg)}}
@keyframes route-card-in{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){#generate.is-loading::after,.route-report-button.is-loading::after,.map-loading-spinner,.route-card{animation:none}}

/* Route entry can use searched ports or a sequence drawn directly on the map. */
#route-intro{margin-bottom:9px}
.route-entry-modes{display:flex;gap:3px;margin-bottom:12px;padding:3px;border:1px solid #dbe8ed;border-radius:9px;background:#f1f6f8}
.route-entry-modes button{flex:1;min-width:0;min-height:34px;border:0;border-radius:6px;background:transparent;color:#577181;font-size:11px;font-weight:800;line-height:1.2;padding:7px 6px}
.route-entry-modes button:hover{color:#165f79;background:#e8f2f5}
.route-entry-modes button.active,.route-entry-modes button[aria-pressed="true"]{color:#fff;background:#176b88;box-shadow:0 2px 6px #173b5328}
.route-entry-modes button:focus-visible,.draw-actions button:focus-visible{outline:3px solid #188e9d;outline-offset:2px}
.draw-route-controls[hidden],#auto-route-controls[hidden]{display:none}
#endpoint-controls-parking[hidden]{display:none}
.endpoint-heading{display:flex;align-items:center;gap:7px;min-width:0;margin:0 0 5px}
.endpoint-heading > label{flex:none;margin:0;white-space:nowrap;color:#466376;font-size:11px;font-weight:800}
#add-stop{display:block;width:calc(100% - 35px);height:36px;margin:0 0 7px 35px;padding:6px 10px;text-align:center}
#add-stop:hover{border-color:#328d98;background:#e8f7f8;color:#125f70}
#add-stop:focus-visible{outline:3px solid #188e9d;outline-offset:2px}
.route-row:has(.endpoint-heading) > .point-badge{margin-top:43px}
.route-rows:has(.endpoint-heading):before{top:56px}
.origin-options{display:flex;gap:2px;flex:none;width:min(204px,calc(100% - 70px));min-width:0;margin-left:auto;padding:2px;border:1px solid #dbe8ed;border-radius:7px;background:#f3f7f9}
.origin-options button{flex:1;min-width:0;min-height:27px;border:0;border-radius:5px;background:transparent;color:#567182;font-size:10px;font-weight:800;line-height:1.15;padding:4px 3px}
.origin-options button:hover{color:#165f79;background:#e8f2f5}
.origin-options button.active,.origin-options button[aria-pressed="true"]{color:#fff;background:#176b88}
.origin-options button:focus-visible,.ais-actions button:focus-visible,#ais-search:focus-visible,#arrival-ais-search:focus-visible{outline:3px solid #188e9d;outline-offset:2px}
@media(max-width:360px){.sidebar-scroll{padding-left:14px;padding-right:14px}.endpoint-heading{gap:5px}.origin-options button{font-size:9px;padding:4px 2px}}
.input-wrap.has-ais-search{display:flex;gap:6px;align-items:stretch}
.input-wrap.has-ais-search .route-input{flex:1;min-width:0;width:0}
#ais-search,#arrival-ais-search{flex:none;min-width:62px;padding:0 11px;border:1px solid #176b88;border-radius:8px;background:#176b88;color:#fff;font-size:11px;font-weight:800;white-space:nowrap}
#ais-search:hover:not(:disabled),#arrival-ais-search:hover:not(:disabled){background:#10506d;box-shadow:0 3px 10px #176b8840}
#ais-search:disabled,#arrival-ais-search:disabled{opacity:.58;cursor:wait}
.vessel-heading-marker{width:32px;height:54px;filter:drop-shadow(0 2px 3px #173b5370);cursor:help}
.vessel-heading-marker svg{width:100%;height:100%;overflow:visible;display:block}
.vessel-heading-marker path{fill:#1677c6;stroke:#fff;stroke-width:2.5;stroke-linejoin:round}
.vessel-location-marker{width:20px;height:20px;border-radius:50%;border:3px solid #fff;background:#1677c6;box-shadow:0 0 0 3px #1677c655,0 2px 8px #173b5370;cursor:help}
.ais-status{margin:5px 0 6px;border-left:3px solid #8ab9c4;padding:4px 0 4px 8px;color:#45677a;font-size:11px;line-height:1.4;overflow-wrap:anywhere}
.ais-status:empty{display:none}
.ais-status[data-state="error"],.ais-status[data-state="stale"]{border-color:#cb7855;color:#935642}
.ais-status[data-state="ready"]{border-color:#2a9d77;color:#326b58}
.ais-actions{display:flex;gap:6px;margin:2px 0 3px}
.ais-actions:not(:has(button:not([hidden]))){display:none}
.ais-actions button{min-width:0;border:1px solid #bcd4dc;border-radius:7px;background:#f1f8f9;color:#17657b;padding:6px 9px;font-size:11px;font-weight:800}
.ais-actions button:hover:not(:disabled){border-color:#76adba;background:#deeff3}
.ais-actions button:disabled{opacity:.55;cursor:wait}
#ais-search[hidden],#ais-refresh[hidden],#arrival-ais-search[hidden],#arrival-ais-refresh[hidden]{display:none}
.draw-route-controls{margin:0 0 12px}
.draw-instructions{color:#486779;font-size:12px;line-height:1.45;margin:0 0 9px}
.draw-waypoints{max-height:180px;overflow-y:auto;margin:0 0 10px;padding:0 0 0 28px;border:1px solid #dbe7eb;border-radius:8px;background:#f8fbfc;font-size:11px;color:#315064;font-variant-numeric:tabular-nums}
.draw-waypoints:empty{display:none}
.draw-waypoints li{padding:8px 10px 8px 0;border-bottom:1px solid #e6eef1;overflow-wrap:anywhere}
.draw-waypoints li:last-child{border-bottom:0}
.draw-waypoints li::marker{font-weight:800;color:#16818b}
.draw-waypoints li>span:first-child{display:inline-block;max-width:100%}
.draw-point-actions{display:inline-flex;gap:3px;margin-left:7px;vertical-align:middle}
.draw-point-actions button{border:0;border-radius:4px;background:#e8f1f4;color:#155d73;padding:3px 5px;font-size:10px;font-weight:800}
.draw-point-actions button:hover{background:#d4e8ee}
.draw-point-actions button:focus-visible{outline:2px solid #188e9d;outline-offset:2px}
.draw-actions{display:flex;gap:7px}
.draw-actions button{flex:1;min-width:0;border:1px solid #bad3dd;border-radius:7px;background:#eef7f8;color:#17657b;padding:7px 6px;font-size:11px;font-weight:800}
.draw-actions button:hover:not(:disabled){border-color:#74aebb;background:#deeff3}
.draw-actions button:disabled{opacity:.5;cursor:not-allowed}
.draw-status{min-height:16px;margin:8px 0 0;color:#4b6d7b;font-size:11px;line-height:1.4}
.draw-warning{margin:9px 0 0;padding:8px 9px;border:1px solid #f0dfba;border-radius:7px;background:#fff8e8;color:#775d35;font-size:10px;line-height:1.45}
.voyage-page{flex:1;min-width:0;min-height:0;overflow:auto;padding:26px clamp(20px,3.4vw,54px) 28px}
.voyage-heading,.voyage-layout,.voyage-footer{max-width:1500px;margin-inline:auto}
.voyage-heading{display:flex;align-items:end;justify-content:space-between;gap:22px;margin-bottom:23px}
.voyage-heading h1{margin:7px 0 5px;font-size:clamp(27px,3vw,38px)}
.voyage-heading p:not(.eyebrow){font-size:13px;line-height:1.5;color:#687b8d;margin:0}
.voyage-heading a{display:inline-flex;align-items:center;gap:9px;flex:none;padding:10px 13px;border:1px solid #cfdee4;background:#fff;color:#175873;border-radius:8px;font-size:12px;font-weight:800;text-decoration:none}
.voyage-heading a:hover{border-color:#0d7191;background:#f3fafb}
.voyage-heading a:focus-visible,.voyage-workspace button:focus-visible,.voyage-workspace summary:focus-visible,.voyage-workspace input:focus-visible{outline:3px solid #0d8ba6;outline-offset:2px}
.voyage-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(340px,.8fr);gap:22px;align-items:start}
.voyage-form,.voyage-summary{min-width:0}
.voyage-panel{background:#fff;border:1px solid #dbe7ed;border-radius:14px;box-shadow:0 6px 20px #102f4c0b;padding:19px 22px;margin-bottom:17px}
.voyage-panel-head{display:flex;align-items:flex-start;gap:11px;margin-bottom:17px}
.voyage-panel-step{flex:none;display:grid;place-items:center;width:29px;height:29px;border-radius:8px;background:#eaf6f6;color:#167d88;font-size:11px;font-weight:800}
.voyage-panel h2{font-size:17px;letter-spacing:-.025em;margin:1px 0 4px;color:#1d3649}
.voyage-panel-head p,.voyage-output>p:not(.eyebrow){margin:0;font-size:11px;line-height:1.5;color:#748795}
.voyage-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}
.voyage-fields-ports{margin-bottom:17px}
.voyage-field{min-width:0}
.voyage-field>label{display:flex;justify-content:space-between;gap:7px;align-items:center;margin-bottom:5px;font-size:11px;font-weight:800;color:#38546a}
.voyage-field label small{font-weight:600;color:#77909e;white-space:nowrap}
.voyage-required{font-size:10px;color:#20758d;font-weight:600}
.voyage-field>input,.voyage-autocomplete>input{height:39px;width:100%;border:1px solid #ccdce4;border-radius:8px;padding:7px 10px;background:#fff;color:#173448;font-size:12px}
.voyage-field>input::placeholder,.voyage-autocomplete>input::placeholder{color:#9aaab4}
.voyage-field>small{display:block;font-size:10px;line-height:1.45;color:#748795;margin:6px 0 0}
.voyage-autocomplete{position:relative}
.voyage-suggestions{position:absolute;inset:42px 0 auto;max-height:230px;overflow:auto;z-index:12;border:1px solid #cddde5;border-radius:8px;background:#fff;box-shadow:0 11px 24px #17304728}
.voyage-suggestions[hidden]{display:none}
.voyage-suggestions button{display:block;width:100%;border:0;background:#fff;text-align:left;padding:10px;color:#213d51;font-size:12px;line-height:1.35}
.voyage-suggestions button:hover,.voyage-suggestions button[aria-selected="true"]{background:#eaf6f7}
.voyage-avoid{display:flex;flex-wrap:wrap;gap:6px 18px;border:1px solid #dfe9ee;border-radius:9px;padding:9px 12px 10px;margin:0 0 13px;font-size:12px;color:#334e60}
.voyage-avoid legend,.voyage-route-options legend{padding:0 4px;font-size:11px;font-weight:800;color:#38546a}
.voyage-avoid label{display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.voyage-avoid input{accent-color:#16828a}
.voyage-avoid small{width:100%;color:#708592;font-size:10px;line-height:1.4}
.voyage-route-status{font-size:12px;line-height:1.5;padding:11px 12px;background:#edf7f8;color:#255f69;border-radius:8px;margin-bottom:13px}
.voyage-route-options{border:0;margin:0 0 14px;padding:0}
.voyage-route-options[hidden]{display:none}
#voyage-route-choices{display:grid;gap:7px;margin-top:8px}
.voyage-route-choice{display:flex;align-items:center;gap:9px;border:1px solid #d9e6eb;border-radius:8px;padding:9px 10px;cursor:pointer}
.voyage-route-choice:has(input:checked){background:#f0f9fa;border-color:#60afb5}
.voyage-route-choice input{flex:none;accent-color:#167f89}
.voyage-route-choice strong,.voyage-route-choice small{display:block}
.voyage-route-choice strong{font-size:12px;color:#28475d}
.voyage-route-choice small{font-size:10px;line-height:1.4;color:#748795;margin-top:2px}
.voyage-route-notes p,.voyage-estimate-warning{background:#fff6e9;border:1px solid #f1dfbd;border-radius:8px;color:#775b2f;padding:9px 10px;font-size:11px;line-height:1.5;margin:6px 0 13px}
.voyage-sea-preview{margin-top:14px;border-radius:8px;background:#f0f6f8;color:#385c70;padding:10px 11px;font-size:11px;line-height:1.6}
.voyage-tip,.voyage-optional p{font-size:11px;line-height:1.5;color:#748795;margin:14px 0 0}
.voyage-optional{border-top:1px solid #e5edf1;margin-top:17px;padding-top:14px}
.voyage-optional summary{font-size:12px;font-weight:800;color:#176b84;cursor:pointer}
.voyage-optional p{margin:9px 0 12px}
.voyage-calculate{display:flex;align-items:center;justify-content:space-between;width:100%;height:47px;border:0;border-radius:10px;background:#08658c;color:#fff;font-size:16px;font-weight:800;padding:0 18px;box-shadow:0 6px 16px #08658c40}
.voyage-calculate:hover{background:#064d6c;box-shadow:0 9px 20px #064d6c55}
.voyage-form-message{font-size:12px;line-height:1.5;color:#a34834;margin:9px 0}
.voyage-summary{position:sticky;top:0}
.voyage-output{padding:23px}
.voyage-output .eyebrow{font-size:10px;margin:0 0 8px}
.voyage-output>h2{font-size:24px;margin:0 0 8px}
.voyage-output>p:not(.eyebrow){font-size:12px;line-height:1.6}
#estimate-results[hidden]{display:none}
.voyage-estimate-note{font-size:11px;line-height:1.5;color:#4e7378;background:#edf7f8;border-radius:8px;padding:9px 10px;margin:12px 0}
.voyage-headline{margin:16px 0 21px;display:grid;gap:2px}
.voyage-result-row{display:flex;justify-content:space-between;gap:12px;align-items:baseline;padding:7px 0;border-bottom:1px solid #ebf0f3;font-size:11px;color:#6e8290}
.voyage-result-row strong{font-size:12px;color:#243c4e;font-variant-numeric:tabular-nums;white-space:nowrap}
.voyage-headline .voyage-result-row{font-size:12px}
.voyage-headline .voyage-result-row strong{font-size:14px}
.voyage-result-row.is-total{color:#174754;font-weight:800;border-bottom:0;background:#e8f6f3;border-radius:6px;padding:9px 8px;margin:7px -8px 0}
.voyage-result-row.is-total strong{font-size:17px;color:#087081}
.voyage-result-section{margin-top:20px}
.voyage-result-section h3{font-size:12px;color:#456273;text-transform:uppercase;letter-spacing:.07em;margin:0 0 5px}
.voyage-result-section .voyage-result-row.is-total strong{font-size:13px}
.voyage-footer{font-size:11px;line-height:1.5;color:#758898;margin-top:10px}
@media(max-width:1100px){.voyage-layout{grid-template-columns:minmax(0,1fr)}.voyage-summary{position:static}.voyage-fields-ports{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.voyage-page{overflow:visible;padding:18px 15px 28px}.voyage-heading{align-items:start;flex-direction:column;gap:12px}.voyage-layout{gap:8px}.voyage-panel{padding:16px}.voyage-fields-ports{grid-template-columns:1fr}}
@media(max-width:520px){.voyage-fields{grid-template-columns:1fr}.voyage-fields-ports{grid-template-columns:1fr}.voyage-heading h1{font-size:28px}}
@media(hover:none) and (min-width:761px){.voyage-workspace .voyage-page{grid-column:1;grid-row:2}}

/* EU ETS estimator: activity-based form and sticky planning summary. */
.ets-workspace{min-height:0}
.ets-page{flex:1;min-width:0;min-height:0;overflow:auto;padding:26px clamp(20px,3.4vw,54px) 28px}
.ets-heading,.ets-layout,.ets-footer{max-width:1500px;margin-inline:auto}
.ets-heading{display:flex;align-items:end;justify-content:space-between;gap:22px;margin-bottom:23px}
.ets-heading h1{margin:7px 0 5px;font-size:clamp(27px,3vw,38px)}
.ets-heading p:not(.eyebrow){font-size:13px;line-height:1.5;color:#687b8d;margin:0}
.ets-heading a{display:inline-flex;align-items:center;gap:9px;flex:none;padding:10px 13px;border:1px solid #cfdee4;background:#fff;color:#175873;border-radius:8px;font-size:12px;font-weight:800;text-decoration:none}
.ets-heading a:hover{border-color:#0d7191;background:#f3fafb}
.ets-workspace button:focus-visible,.ets-workspace input:focus-visible,.ets-workspace select:focus-visible,.ets-heading a:focus-visible{outline:3px solid #0d8ba6;outline-offset:2px}
.ets-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(340px,.8fr);gap:22px;align-items:start}
.ets-form,.ets-summary{min-width:0}
.ets-panel{background:#fff;border:1px solid #dbe7ed;border-radius:14px;box-shadow:0 6px 20px #102f4c0b;padding:19px 22px;margin-bottom:17px}
.ets-panel-head{display:flex;align-items:flex-start;gap:11px;margin-bottom:17px}
.ets-step{flex:none;display:grid;place-items:center;width:29px;height:29px;border-radius:8px;background:#eaf6f6;color:#167d88;font-size:11px;font-weight:800}
.ets-panel h2{font-size:17px;letter-spacing:-.025em;margin:1px 0 4px;color:#1d3649}
.ets-panel-head p,.ets-output>p:not(.eyebrow){margin:0;font-size:11px;line-height:1.5;color:#748795}
.ets-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px 16px}
.ets-field{min-width:0}
.ets-field>label{display:flex;justify-content:space-between;gap:7px;align-items:center;margin-bottom:5px;font-size:11px;font-weight:800;color:#38546a}
.ets-field label small{font-weight:600;color:#77909e;text-align:right}
.ets-field>input,.ets-field>select,.ets-autocomplete>input{height:39px;width:100%;border:1px solid #ccdce4;border-radius:8px;padding:7px 10px;background:#fff;color:#173448;font-size:12px}
.ets-field>small{display:block;font-size:10px;line-height:1.45;color:#748795;margin:6px 0 0}
.ets-field input::placeholder{color:#9aaab4}
.ets-checkbox{display:flex;align-items:center;gap:8px;margin-top:18px;color:#28485b;font-size:12px;font-weight:700}
.ets-checkbox input,.ets-avoid input,.ets-route-choices input{accent-color:#167f89}
.ets-tip,.ets-eligibility{font-size:11px;line-height:1.55;color:#687f8e;margin:12px 0 0}
.ets-eligibility{background:#f4f7fa;border-radius:8px;padding:10px 11px;color:#486479}
.ets-activities{display:grid;gap:14px}
.ets-activity{border:1px solid #d9e7eb;border-radius:11px;background:#fbfdfe;padding:17px}
.ets-activity-head{display:flex;align-items:start;justify-content:space-between;gap:16px;margin-bottom:14px}
.ets-activity-type{font-size:9px;font-weight:800;letter-spacing:.1em;color:#16818b}
.ets-activity h3{font-size:15px;margin:3px 0 0;color:#253e51}
.ets-remove{border:0;background:#f4eded;color:#a14d43;padding:7px 9px;border-radius:7px;font-size:11px;font-weight:700;cursor:pointer}
.ets-remove:hover{background:#f9ded9}
.ets-port-fields{margin-bottom:14px}
.ets-autocomplete{position:relative}
.ets-suggestions{position:absolute;inset:42px 0 auto;max-height:230px;overflow:auto;z-index:12;border:1px solid #cddde5;border-radius:8px;background:#fff;box-shadow:0 11px 24px #17304728}
.ets-suggestions[hidden]{display:none}
.ets-suggestions button{display:block;width:100%;border:0;background:#fff;text-align:left;padding:10px;color:#213d51;font-size:12px;line-height:1.35;cursor:pointer}
.ets-suggestions button:hover,.ets-suggestions button[aria-selected="true"]{background:#eaf6f7}
.ets-avoid{display:flex;flex-wrap:wrap;gap:6px 16px;border:1px solid #dfe9ee;border-radius:9px;padding:9px 11px 10px;margin:0 0 15px;font-size:11px;color:#334e60}
.ets-avoid legend,.ets-route-choices legend{padding:0 4px;font-size:11px;font-weight:800;color:#38546a}
.ets-avoid label{display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.ets-avoid small{width:100%;color:#748795;font-size:10px}
.ets-route-status,.ets-days-preview,.ets-scope-note{font-size:11px;line-height:1.5;color:#527183;margin:9px 0}
.ets-route-status{padding:9px 10px;border-radius:8px;background:#edf7f8;color:#32606d}
.ets-route-choices{border:0;padding:0;margin:10px 0}
.ets-route-choices[hidden]{display:none}
.ets-route-choices>div{display:grid;gap:6px}
.ets-route-choices label{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid #d9e6eb;border-radius:8px;color:#314c5f;font-size:11px;cursor:pointer}
.ets-route-choices label:has(input:checked){border-color:#60afb5;background:#f0f9fa}
.ets-use-route,.ets-fill-fuel,.ets-add-actions button{border:1px solid #bcd4de;border-radius:8px;background:#f2f9fa;color:#155d74;padding:8px 10px;font-size:11px;font-weight:800;cursor:pointer}
.ets-use-route:hover,.ets-fill-fuel:hover,.ets-add-actions button:hover{border-color:#5aa2ad;background:#e2f4f5}
.ets-use-route[hidden]{display:none}
.ets-days-preview{margin:10px 0 13px;background:#f1f6f8;padding:8px 10px;border-radius:8px}
.ets-fuel-fields{padding-top:12px;border-top:1px solid #e4edf0}
.ets-fill-fuel{margin-top:11px}
.ets-scope-fields{margin-top:17px}
.ets-scope-note{margin-bottom:0}
.ets-gases{margin-top:15px;padding:11px;background:#fff7ed;border:1px solid #f1dfbd;border-radius:8px}
.ets-gases[hidden]{display:none}
.ets-gases>p{margin:0 0 10px;color:#715d43;font-size:11px;line-height:1.5}
.ets-add-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.ets-calculate{display:flex;align-items:center;justify-content:space-between;width:100%;height:47px;border:0;border-radius:10px;background:#08658c;color:#fff;font-size:16px;font-weight:800;padding:0 18px;box-shadow:0 6px 16px #08658c40;cursor:pointer}
.ets-calculate:hover{background:#064d6c;box-shadow:0 9px 20px #064d6c55}
.ets-form-message{font-size:12px;line-height:1.5;color:#a34834;margin:9px 0}
.ets-summary{position:sticky;top:0}
.ets-output{padding:23px}
.ets-output .eyebrow{font-size:10px;margin:0 0 8px}
.ets-output>h2{font-size:24px;margin:0 0 8px}
.ets-output>p:not(.eyebrow){font-size:12px;line-height:1.6}
#ets-results[hidden]{display:none}
.ets-headline{margin:16px 0 20px}
.ets-result-line{display:flex;justify-content:space-between;gap:12px;align-items:baseline;padding:7px 0;border-bottom:1px solid #ebf0f3;font-size:11px;color:#6e8290}
.ets-result-line strong{font-size:12px;color:#243c4e;font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}
.ets-headline .ets-result-line{font-size:12px}
.ets-headline .ets-result-line strong{font-size:14px}
.ets-result-line.is-total{color:#174754;font-weight:800;border-bottom:0;background:#e8f6f3;border-radius:6px;padding:9px 8px;margin:7px -8px 0}
.ets-result-line.is-total strong{font-size:17px;color:#087081}
.ets-breakdown{margin-top:20px}
.ets-breakdown h3{font-size:12px;color:#456273;text-transform:uppercase;letter-spacing:.07em;margin:0 0 5px}
.ets-result-activity{border-top:1px solid #e5edf1;padding:11px 0 2px}
.ets-result-activity h4{font-size:11px;line-height:1.4;color:#2a4f61;margin:0 0 4px;overflow-wrap:anywhere}
.ets-result-warning{background:#fff6e9;border:1px solid #f1dfbd;border-radius:8px;color:#775b2f;padding:9px 10px;font-size:11px;line-height:1.5;margin:12px 0 0}
.ets-footer{font-size:11px;line-height:1.5;color:#758898;margin-top:10px}
@media(max-width:1100px){.ets-layout{grid-template-columns:minmax(0,1fr)}.ets-summary{position:static}}
@media(max-width:760px){.ets-page{overflow:visible;padding:18px 15px 28px}.ets-heading{align-items:start;flex-direction:column;gap:12px}.ets-layout{gap:8px}.ets-panel{padding:16px}}
@media(max-width:520px){.ets-fields{grid-template-columns:1fr}.ets-heading h1{font-size:28px}}
@media(hover:none) and (min-width:761px){.ets-workspace .ets-page{grid-column:1;grid-row:2}}

/* The coordinates have a reserved slot; the selected port card extends across
   the theme slot while the coordinates move to the lower-left map corner. */
.workspace:not(.product-workspace) > .sidebar{width:350px;min-width:315px;flex:0 0 350px}
@media(hover:none) and (min-width:761px){.workspace:not(.product-workspace){grid-template-columns:350px minmax(0,1fr)}}
.map-appearance{position:absolute;top:20px;right:16px;z-index:9;display:flex;width:104px;min-height:40px}
.map-appearance button{flex:1;min-width:0;padding:8px 6px;font-size:11px}
.map-overlay{--overlay-card-width:236px;--appearance-slot-width:104px;--port-card-width:calc(var(--overlay-card-width) + var(--appearance-slot-width) + 8px);position:absolute;top:20px;left:16px;right:16px;z-index:8;display:grid;grid-template-columns:var(--overlay-card-width) minmax(0,1fr) var(--overlay-card-width) var(--appearance-slot-width);column-gap:8px;row-gap:8px;align-items:start;pointer-events:none}
.map-overlay:has(.port-detail:not(.hidden)){z-index:10;bottom:0;align-content:start}
.map-area:has(.port-detail:not(.hidden)) .data-notice{bottom:76px}
.map-overlay .map-toolbar{display:contents}
.map-overlay .zone-controls{grid-column:1;grid-row:1;display:flex;flex-wrap:nowrap;width:var(--overlay-card-width);max-width:100%;gap:4px;padding:4px 6px;pointer-events:auto}
.zone-swatch.local-sox{background:#067da4}
.map-overlay .zone-controls{flex-wrap:wrap;align-content:center;gap:1px 7px;padding:3px 6px}
.map-overlay .zone-controls label{gap:2px;white-space:nowrap;font-size:11px;line-height:1.2}
.map-overlay .zone-controls .zone-swatch{width:8px;height:8px}
.map-overlay .map-legend{grid-column:2;grid-row:1;display:flex;flex-wrap:wrap;gap:7px 8px;justify-self:stretch;width:100%;min-width:0;max-width:100%;min-height:40px;white-space:normal;padding:8px 9px;pointer-events:none}
.map-overlay .coordinates{grid-column:3;grid-row:1;position:static;justify-self:stretch;display:flex;align-items:center;justify-content:center;width:var(--overlay-card-width);max-width:100%;height:40px;padding:0 9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#183a4de6;color:#fff;border-radius:7px;font-size:11px;pointer-events:none}
.map-overlay:has(.port-detail:not(.hidden)) .coordinates{grid-column:auto;grid-row:auto;position:absolute;left:0;bottom:28px;justify-self:start;width:min(var(--overlay-card-width),100%)}
.map-overlay .port-detail{position:static;grid-column:3 / 5;grid-row:1;justify-self:end;width:var(--port-card-width);max-width:100%;max-height:calc(100vh - 40px);overflow:auto;padding:7px 9px;background:#fff;border:1px solid #dce9ee;border-top:2px solid #168d9b;border-radius:9px;box-shadow:0 10px 26px #16384e30;pointer-events:auto}
.map-overlay .port-detail:not(.expanded):not(.hidden){display:flex;align-items:center;gap:6px;height:40px;overflow:hidden}
.map-overlay .port-detail.expanded{width:var(--port-card-width);padding:12px 14px;border-top-width:3px;border-radius:12px;box-shadow:0 14px 36px #16384e38}
@media(min-width:1071px){.map-overlay .port-detail.expanded{position:absolute;top:0;right:0}}
.port-detail:not(.expanded) .port-detail-heading,.port-detail:not(.expanded) .port-detail-meta{display:contents}
.port-detail:not(.expanded) .port-detail-title{flex:1;min-width:0}
.port-detail:not(.expanded) .port-detail-summary{display:none}
.port-detail-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;min-width:0}
.port-detail-title{min-width:0;display:flex;flex-direction:column;gap:3px}
.port-detail-title > span{display:none;font-size:9px;font-weight:800;letter-spacing:.12em;color:#208694}
.port-detail.expanded .port-detail-title > span{display:block}
.port-detail-name-line{display:flex;align-items:baseline;min-width:0;gap:5px;white-space:nowrap}
.port-detail-name-line strong{flex:0 1 auto}
.port-detail-name-line .port-detail-inline-code{flex:none;color:#336d7b;font-size:10px;font-weight:800;letter-spacing:.01em}
.port-detail-name-line .port-detail-inline-country{min-width:0;flex:0 10 auto;overflow:hidden;text-overflow:ellipsis;color:#61798a;font-size:10px}
.port-detail-name-line .port-detail-inline-country::before{content:'·';padding-right:5px;color:#a1b1bc}
.port-detail.expanded .port-detail-name-line{white-space:normal}
.port-detail.expanded .port-detail-name-line .port-detail-inline-code,.port-detail.expanded .port-detail-name-line .port-detail-inline-country{display:none}
.port-detail-heading strong{min-width:0;font-size:13px;line-height:1.4;color:#1b3d52;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.port-detail.expanded .port-detail-heading strong{font-size:16px;line-height:1.2;overflow-wrap:anywhere;white-space:normal}
.port-detail .port-detail-close{float:none;flex:none;display:grid;place-items:center;width:21px;height:21px;padding:0;border-radius:6px;line-height:1;color:#6a8290;background:#f2f6f8}
.port-detail .port-detail-close:hover{background:#dcecf1;color:#173b53}
.port-detail-meta{display:flex;align-items:center;justify-content:space-between;gap:5px;margin-top:3px}
.port-detail.expanded .port-detail-meta{margin-top:8px;gap:8px}
.port-detail-summary{display:flex;min-width:0;gap:6px;align-items:center;overflow:hidden;color:#61798a;font-size:11px;white-space:nowrap}
.port-detail-summary span{min-width:0;overflow:hidden;text-overflow:ellipsis}
.port-detail-summary span:first-child{flex:none;font-weight:800;color:#35596b}
.port-detail-summary span+span::before{content:'·';padding-right:6px;color:#a1b1bc}
.port-detail:not(.expanded) .port-detail-summary span:nth-child(n+3){display:none}
.port-detail .port-detail-toggle{float:none;display:inline-flex;flex:none;align-items:center;margin:0;padding:4px 6px;border:0;border-radius:6px;background:#ebf6f8;color:#096e84;font-size:10px;font-weight:800;white-space:nowrap}
.port-detail.expanded .port-detail-toggle{padding:6px 8px;font-size:11px}
.port-detail .port-detail-toggle:hover{background:#d6eef2;color:#075a70}
.port-detail .port-detail-toggle:focus-visible,.port-detail .port-detail-close:focus-visible,.port-detail-link:focus-visible{outline:2px solid #188e9d;outline-offset:2px}
.port-detail-extra[hidden]{display:none}
.port-detail-extra{margin-top:12px;padding-top:4px;border-top:1px solid #e5edf1}
.port-detail-grid{margin:0}
.port-detail-row{display:grid;grid-template-columns:minmax(0,48fr) minmax(0,52fr);gap:10px;align-items:start;padding:8px 0;border-bottom:1px solid #edf2f4;font-size:12px;line-height:1.35}
.port-detail-row dt{color:#60798a;font-weight:700}
.port-detail-row dd{margin:0;color:#1d3b4e;font-weight:700;text-align:right;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.port-detail-link{display:inline-flex;margin:10px 0 0;color:#096e84;font-size:11px;font-weight:800;text-decoration:none}
.port-detail-link:hover{text-decoration:underline}
.port-detail .port-detail-note{margin:10px 0 0;color:#71899a;font-size:11px;line-height:1.45}
@media(max-width:1320px){
  .map-overlay .map-legend{grid-column:1 / 4;grid-row:2}
  .map-overlay:has(.port-detail:not(.hidden)) .map-legend{grid-column:1 / 3;grid-row:2}
}
@media(max-width:1070px){
  .map-overlay{grid-template-columns:minmax(0,1fr) var(--appearance-slot-width)}
  .map-overlay .zone-controls{grid-column:1;grid-row:1;width:min(var(--overlay-card-width),100%)}
  .map-overlay .coordinates{grid-column:1;grid-row:2;justify-self:start;width:min(var(--overlay-card-width),100%)}
  .map-overlay .map-legend{grid-column:1;grid-row:3;width:100%}
  .map-overlay .port-detail{grid-column:1 / -1;grid-row:2;justify-self:end;width:min(var(--port-card-width),100%)}
  /* Leave the lower-left readout clear even below the 56px touch navigation bar. */
  .map-overlay .port-detail.expanded{width:min(var(--port-card-width),100%);max-height:calc(100vh - 200px)}
  .map-overlay:has(.port-detail:not(.hidden)) .map-legend{grid-column:1;grid-row:3}
}
@media(max-width:760px){
  .workspace:not(.product-workspace) > .sidebar{width:100%;min-width:0;flex:none}
  .map-appearance{top:15px;right:15px}
  .map-overlay{top:15px;left:15px;right:15px}
  .map-overlay .zone-controls{flex-wrap:wrap}
  .map-overlay .map-legend{gap:5px 9px}
  .map-overlay .port-detail{max-height:calc(72vh - 40px)}
  .map-overlay .port-detail.expanded{max-height:calc(72vh - 160px)}
}

/* The worldwide Summer area is nearly transparent on the map. This key makes
   the seven legal geography classes and their seasonal variants distinct. */
.zone-swatch.load-line{background:linear-gradient(90deg,#c97827 0 25%,#99aaa4 25% 50%,#477ab8 50% 75%,#6653b4 75% 100%)}
.load-line-guide[hidden]{display:none!important}
.load-line-guide{position:relative;flex:0 1 308px;min-width:0;width:308px;max-width:100%;max-height:100%;overflow:auto;padding:10px 12px;border:1px solid #d8e2ea;border-top:3px solid #6653b4;border-radius:10px;background:#fffffff2;box-shadow:0 8px 22px #16384e32;color:#244359;font-size:11px;line-height:1.35}
.load-line-guide-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px}
.load-line-guide-heading strong{font-size:12px}
.load-line-guide button{border:1px solid #af9bce;border-radius:6px;background:#f5f0fd;padding:5px 7px;color:#513988;font-size:10px;font-weight:800}
.load-line-guide button[aria-pressed="true"]{background:#654e9c;color:white;border-color:#654e9c}
.load-line-guide button:focus-visible,.load-line-guide input:focus-visible,.load-line-guide summary:focus-visible{outline:2px solid #654e9c;outline-offset:2px}
.load-line-keys{display:grid;grid-template-columns:1fr 1fr;gap:5px 8px;padding-bottom:7px}
.load-line-keys span{display:flex;align-items:center;gap:5px;min-width:0}
.load-line-key{display:inline-block;flex:none;width:10px;height:10px;border-radius:2px;border:1px solid #32496035}
.load-line-key.tropical{background:#c97827}.load-line-key.summer{background:#99aaa4}.load-line-key.winter{background:#477ab8}.load-line-key.winter-north-atlantic{background:#6653b4}.load-line-key.seasonal-tropical{background:#e3aa3e}.load-line-key.seasonal-winter{background:#81a4d3}.load-line-key.seasonal-winter-north-atlantic{background:#ad88d5}
.load-line-guide details{border-top:1px solid #e5e9ee;padding:7px 0 0}
.load-line-guide summary{cursor:pointer;color:#514277;font-weight:700}
.load-line-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0}
.load-line-fields label{display:block;font-size:10px;color:#566877;font-weight:700}
.load-line-fields input{display:block;width:100%;height:30px;margin-top:4px;padding:4px 5px;border:1px solid #cdd7df;border-radius:5px;background:#fff;color:#203b4b;font-size:11px}
.load-line-help{margin:0 0 7px;color:#687b87;font-size:10px}
.load-line-result{border-top:1px solid #e5e9ee;padding-top:8px;color:#576e7c;line-height:1.4}
.load-line-result.loading::before{content:'';display:inline-block;width:11px;height:11px;margin-right:7px;border:2px solid #6653b4;border-right-color:transparent;border-radius:50%;animation:route-spin .75s linear infinite;vertical-align:-2px}
.load-line-result strong{display:block;color:#253e51;font-size:12px}
.load-line-result p{margin:4px 0 0}
.load-line-result .load-line-warning{color:#885430}
.load-line-popup strong{display:block;margin-bottom:3px}
.load-line-popup div+div{margin-top:4px}
/* Bottom dock shares the coordinate row and grows upward when details open. */
.map-area{container-type:inline-size;container-name:map-controls}
.map-bottom-controls{position:absolute;left:16px;right:16px;bottom:28px;z-index:7;display:flex;flex-direction:column-reverse;align-items:flex-start;gap:8px;max-height:calc(100% - 128px);pointer-events:none}
.map-bottom-row{display:flex;align-items:stretch;width:100%;min-height:0;flex-shrink:1;pointer-events:none}
.map-bottom-row .load-line-guide{pointer-events:auto}
.map-bottom-controls .data-notice{position:static;flex-shrink:0;max-width:min(390px,100%);max-height:90px;overflow:auto;margin:0;pointer-events:auto}
.map-area:has(.port-detail:not(.hidden)) .map-bottom-row{padding-left:244px}
.map-area:has(.port-detail:not(.hidden)) .map-bottom-controls .data-notice{margin-left:244px;max-width:calc(100% - 244px)}
.map-area:not(:has(.load-line-guide:not([hidden]))) .map-bottom-row{display:none}
.map-area:has(.port-detail:not(.hidden)):not(:has(.load-line-guide:not([hidden]))) .map-bottom-controls{bottom:76px}
#load-line-body[hidden]{display:none}
#load-line-inspect{margin-bottom:8px}
.load-line-guide.collapsed{height:40px;padding:7px 9px;overflow:hidden;border-top-width:2px;border-radius:9px;box-shadow:0 10px 26px #16384e30}
.load-line-guide.collapsed .load-line-guide-heading{height:100%;margin:0}
.load-line-guide.collapsed .load-line-guide-heading strong{font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.load-line-guide #load-line-toggle{flex:none;padding:4px 6px;border:0;background:#f0ebf8;white-space:nowrap}
@container map-controls (max-width:600px){
  .map-area:has(.port-detail:not(.hidden)) .map-bottom-row{padding-left:0;margin-bottom:48px}
  .map-area:has(.port-detail:not(.hidden)) .map-bottom-controls .data-notice{margin-left:0;max-width:min(390px,100%)}
}
@media(max-width:760px){.map-bottom-controls{left:15px;right:15px}.map-bottom-controls .data-notice{max-height:70px}}
@media(prefers-reduced-motion:reduce){.load-line-result.loading::before{animation:none}}

/* Clear every location without shrinking the port/coordinate field. */
.input-wrap .route-input{padding-right:32px}
.clear-point{position:absolute;right:4px;top:4px;width:28px;height:28px;display:grid;place-items:center;border:0;border-radius:6px;background:transparent;color:#698493;font-size:20px;line-height:1;padding:0}
.clear-point:hover{background:#e5f0f3;color:#183d52}
.clear-point:focus-visible{outline:2px solid #188e9d;outline-offset:1px}
.input-wrap.has-ais-search{padding-right:32px}
.input-wrap.has-ais-search .route-input{padding-right:11px}
.draw-point-actions button{min-width:26px;min-height:24px;font-size:16px}

.vessel-heading-marker,.vessel-location-marker{cursor:grab}
