:root{color-scheme:dark;--navy:#081b28;--ink:#eaf5f6;--muted:#a7c0cb;--cyan:#67e5d3;--gold:#e9bd7b;--line:#31515f;font-family:Inter,"Segoe UI",Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--navy);color:var(--ink);font-size:14px}button,input{font:inherit}button{cursor:pointer}button:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:4px}button:disabled{cursor:not-allowed}h1,h2,p{margin:0}h1{font-size:27px;line-height:1.18;letter-spacing:-.8px;font-weight:600}h2{font-size:21px;letter-spacing:-.45px;font-weight:600}.topbar{padding:19px 24px;display:flex;align-items:center;gap:18px;border-bottom:1px solid var(--line);background:linear-gradient(100deg,#173844,#0a202e)}.brand{display:flex;align-items:center;gap:12px;flex:1}.mark{width:35px;height:39px;border:1px solid #b99b64;display:grid;place-items:center;color:var(--gold);font-size:25px}.brand strong{font-size:14px;letter-spacing:4px}.brand div>span{display:block;color:var(--muted);font-size:12px;margin-top:5px}.sample-badge{color:#081b28;background:var(--gold);font-size:11px;font-weight:800;padding:7px 10px;border-radius:3px;letter-spacing:1px;white-space:nowrap}.reset{display:flex;align-items:center;gap:15px;padding:9px 12px;border:1px solid #527584;border-radius:4px;background:#112d3b;color:var(--ink)}.reset:hover{background:#244854}.intro{display:flex;align-items:end;justify-content:space-between;gap:32px;padding:25px 25px 22px}.eyebrow{color:var(--cyan);font-size:10px;font-weight:700;letter-spacing:1.8px;margin-bottom:10px}.intro>p{color:var(--muted);max-width:355px;font-size:13px;line-height:1.65}.instructions{margin:0 24px 24px;padding:16px 20px;list-style:none;display:grid;grid-template-columns:.95fr 1fr 1.3fr;gap:22px;border:1px solid #3b625f;background:#173c3f6b;border-radius:6px}.instructions li{display:flex;align-items:start;gap:12px;color:var(--muted);font-size:12px;line-height:1.6}.instructions b{flex:0 0 27px;height:27px;border-radius:50%;background:var(--cyan);display:grid;place-items:center;color:#072630;font-size:13px}.instructions strong{display:block;color:#e4fff9;font-size:13px;margin-bottom:3px}.workspace{display:grid;grid-template-columns:275px 1fr;border-block:1px solid var(--line)}.queue-panel{padding:23px 19px;background:#102936;border-right:1px solid var(--line)}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:21px}.panel-title .eyebrow{margin-bottom:8px}.count{display:grid;place-items:center;min-width:30px;height:30px;background:#244a56;color:var(--cyan);border-radius:5px;font-weight:600}.vessel{position:relative;width:100%;text-align:left;border:1px solid #466575;border-radius:6px;background:#193643;color:var(--ink);padding:15px 14px;margin:0 0 12px;cursor:grab;transition:border-color .15s,background .15s;user-select:none}.vessel:hover{border-color:#8cded0}.vessel.selected{border:2px solid var(--cyan);padding:14px 13px;background:#164748;box-shadow:0 0 0 3px #60e5d30c}.vessel:active{cursor:grabbing}.vessel.dragging{opacity:.55}.card-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:13px}.drag-handle{display:flex;align-items:center;gap:7px;color:#b5eee6;font-size:10px;font-weight:750;letter-spacing:1.1px}.drag-handle b{font-size:24px;line-height:16px;letter-spacing:0}.selected-label{font-size:10px;font-weight:750;color:var(--cyan)}.vessel strong{display:block;font-size:16px;font-weight:600;margin:0 0 9px}.vessel-dimensions{display:block;font-size:12px;color:#bed2db}.vessel-status{display:block;font-size:11px;color:var(--gold);margin-top:12px}.queue-note{display:flex;gap:10px;color:#9bb8c4;font-size:12px;line-height:1.7;margin-top:18px}.queue-note>span{color:var(--gold);font-size:31px;line-height:1}.queue-note strong{color:#d6e7eb;font-weight:500}.harbour{min-width:0;padding:23px 24px;background:linear-gradient(#0e2b3aee,#0a2333ee),repeating-linear-gradient(0deg,transparent,transparent 25px,#367380 26px)}.schematic{font-size:10px;color:#93b4c3;text-align:right;line-height:1.7}.selection{display:flex;align-items:center;gap:16px;padding:15px;border:1px solid #3b6370;border-radius:5px;background:#0b202c;margin-bottom:15px}.heading-icon{flex-shrink:0;width:45px;height:45px;border:1px solid #426a78;border-radius:50%;display:grid;place-items:center;background:#112e3b}.heading-icon svg{width:28px;height:28px;overflow:visible}.selected-info{flex:1;min-width:0}.selected-info>strong{font-size:14px;font-weight:600}.voyage{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px 16px;margin-top:11px}.voyage span{color:#98b8c6;font-size:10px;line-height:1.5}.voyage b{display:block;font-size:12px;font-weight:550;color:#e3f3f4;margin-top:3px}.legend{display:flex;flex-wrap:wrap;gap:10px 17px;font-size:10px;color:#b0c9d3;margin:17px 0}.legend span{display:flex;align-items:center;gap:6px}.legend i{width:7px;height:7px;border-radius:2px}.eligible-dot{background:var(--cyan)}.assigned-dot{background:var(--gold)}.blocked-dot{background:#597583}.quay{display:flex;justify-content:space-between;gap:10px;background:#385663;border:1px solid #6d8a91;padding:8px 12px;font-size:10px;font-weight:600;letter-spacing:1.8px;color:#e4edf0}.quay span:last-child{font-size:8px;letter-spacing:1px;color:#bcced4}.berths{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:15px 8px 0}.berth{position:relative;border:1px dashed #587b89;border-top:6px solid #718d95;border-radius:0 0 7px 7px;min-height:169px;background:#12323f;padding:12px;text-align:left;color:var(--ink);transition:background .15s,box-shadow .15s}.berth.eligible{background:linear-gradient(#134c49,#103d3d);border-color:#62d6c5;border-top-color:var(--cyan);box-shadow:0 0 22px #36e3c208}.berth.over{background:#1c6d5e;box-shadow:0 0 0 4px var(--cyan)}.berth.assigned{background:linear-gradient(#4c4230,#29342e);border-color:var(--gold);border-top-color:var(--gold)}.berth-head{display:flex;justify-content:space-between;align-items:center;gap:6px}.berth-code{font-size:19px;font-weight:650;letter-spacing:1px}.berth-type{font-size:9px;color:var(--muted)}.berth-limits{font-size:10px;color:#b7ccd4;line-height:1.7;margin:8px 0}.berth-fit{font-size:10px;min-height:15px;line-height:1.5;color:#b4c8d1}.eligible .berth-fit{color:#9af7dd}.assigned .berth-fit{color:#f1d3a5;font-weight:650}.assign{margin-top:11px;width:100%;padding:8px 4px;border:1px solid #5adfc6;border-radius:4px;background:#5fd7c3;color:#092630;font-size:11px;font-weight:750;min-height:33px}.assign:hover{background:#a0ffe9}.assign:disabled{border-color:#41606d;background:#1b3946;color:#95aebc;font-weight:500}.assigned .assign{background:#e9bd7b;border-color:#e9bd7b}.assigned .assign:disabled{background:#5b5140;border-color:#88734e;color:#e3ccaa}.fairway{display:flex;justify-content:space-between;gap:15px;padding:18px 8px 17px;color:#709aa9;font-size:9px;letter-spacing:2px}.fairway span:last-child{letter-spacing:0;font-size:10px;text-align:right;color:#98b8c5}.notice{margin:18px 24px 0;padding:13px 17px;border-left:3px solid var(--cyan);background:#153940;color:#d4f4ed;font-size:13px;line-height:1.6}.notice.error{border-left-color:var(--gold);background:#3a342b;color:#ffe0af}.energy{display:grid;grid-template-columns:1fr 1fr;gap:38px;padding:28px 25px}.energy h2{font-size:22px}.energy>div>p:not(.eyebrow){font-size:12px;color:var(--muted);line-height:1.8;margin-top:12px;max-width:350px}.energy-controls label{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}.energy-controls output{color:var(--gold);font-weight:600}.energy input{width:100%;accent-color:var(--cyan);margin:15px 0 17px;min-height:22px}.energy-results{display:grid;grid-template-columns:1fr 1fr;gap:18px}.energy-results span{display:block;color:#abc6d1;font-size:11px}.energy-results strong{display:block;font-weight:550;font-size:23px;color:var(--gold);margin-top:6px}.energy-results>div+div strong{color:var(--cyan)}details{font-size:11px;color:#9bb7c5;margin-top:17px;line-height:1.75}summary{cursor:pointer;color:#c6dce5}details p{margin-top:10px}footer{border-top:1px solid var(--line);padding:15px 24px;font-size:10px;color:#8babbc;line-height:1.8;letter-spacing:.3px}body.drag-active .eligible{outline:2px solid #77f3dc;outline-offset:3px}body.drag-active .eligible .berth-fit{font-weight:750}body.drag-active .harbour{box-shadow:inset 0 0 80px #50f0be12}
@media(max-width:1000px){.workspace{grid-template-columns:235px 1fr}.queue-panel{padding:20px 14px}.harbour{padding:20px 16px}.berths{gap:9px;padding-inline:0}.berth{padding:10px}.instructions{gap:15px;padding:15px}.intro{gap:24px}.intro>p{max-width:285px}.voyage{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px}.selection{gap:12px}.berth-code{font-size:17px}.energy{gap:25px}}
@media(max-width:760px){.topbar{padding:16px;gap:10px;flex-wrap:wrap}.brand strong{font-size:12px;letter-spacing:3px}.brand div>span{font-size:10px}.mark{width:28px;height:33px;font-size:21px}.sample-badge{font-size:9px;padding:7px 8px}.reset{font-size:11px;gap:7px;padding:8px}.intro{display:block;padding:22px 18px}.intro>p{max-width:none;margin-top:13px;font-size:12px}h1{font-size:24px}.instructions{grid-template-columns:1fr;margin:0 18px 22px;gap:14px;padding:16px}.instructions li{font-size:11px}.instructions strong{font-size:12px}.instructions b{width:25px;height:25px;flex-basis:25px}.workspace{grid-template-columns:1fr}.queue-panel{border-right:0;border-bottom:1px solid var(--line);padding:22px 18px}.panel-title{margin-bottom:16px}#queue{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.vessel{padding:12px 10px;margin:0}.vessel.selected{padding:11px 9px}.vessel strong{font-size:13px;line-height:1.5}.vessel-dimensions{font-size:10px;line-height:1.7}.drag-handle{font-size:9px}.drag-handle b{font-size:19px}.card-top{flex-wrap:wrap;gap:8px;margin-bottom:10px}.selected-label{font-size:9px}.vessel-status{font-size:10px;line-height:1.6}.queue-note{font-size:11px;margin-top:15px}.queue-note br{display:none}.harbour{padding:22px 18px}.selection{padding:14px;gap:12px}.berths{gap:10px}.berth{min-height:167px;padding:10px}.berth-head{display:block}.berth-type{display:block;margin-top:4px}.berth-limits{font-size:10px}.assign{font-size:10px}.berth-fit{font-size:10px;min-height:30px}.fairway{font-size:8px;padding-block:18px}.fairway span:last-child{font-size:9px;max-width:190px}.notice{margin:18px;font-size:12px}.energy{grid-template-columns:1fr;gap:22px;padding:14px 18px 25px}.energy>div>p:not(.eyebrow){max-width:none}.energy-results strong{font-size:25px}footer{padding:14px 18px;font-size:9px}.quay span:last-child{font-size:7px;letter-spacing:.5px}.schematic{font-size:9px}}
@media(max-width:430px){.reset{margin-left:auto}.brand{min-width:160px}.topbar{gap:10px 12px}.sample-badge{margin-left:auto}.reset{width:100%;justify-content:center}.queue-panel,.harbour{padding-inline:14px}.instructions,.notice{margin-inline:14px}.intro{padding-inline:14px}#queue{grid-template-columns:1fr}.vessel{padding:13px 14px;display:grid;grid-template-columns:1fr 1fr;gap:5px 14px}.vessel.selected{padding:12px 13px}.card-top{grid-column:1/-1;flex-wrap:nowrap;margin:0 0 3px}.vessel strong{font-size:14px;margin:0;align-self:center}.vessel-dimensions{font-size:10px;text-align:right}.vessel-status{grid-column:1/-1;margin-top:4px}.berths{grid-template-columns:1fr;gap:11px}.berth{min-height:0;display:grid;grid-template-columns:1fr 1fr;gap:7px 12px;padding:12px}.berth-head{display:flex;align-items:center}.berth-type{margin-top:0}.berth-limits{margin:0;text-align:right}.berth-fit{align-self:center;min-height:0;font-size:11px}.assign{margin:0;min-height:38px;font-size:12px}.berth-code{font-size:20px}.selected-info>strong{font-size:13px}.voyage b{font-size:11px}.legend{gap:9px 12px;font-size:9px}.energy{padding-inline:14px}.quay span:last-child{max-width:135px;text-align:right;line-height:1.5}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* Limassol geographic planning demonstration */
.workspace{grid-template-columns:230px minmax(0,1fr)}.queue-panel{padding:24px 15px}.harbour{padding:0;min-width:0}.harbour>.panel-title{padding:20px 22px 0}.harbour>.selection{margin:0 18px 14px}.harbour>.legend{padding:0 20px}.map-scroll{overflow:auto;overscroll-behavior:contain}.map-canvas{position:relative;min-width:780px;width:100%;aspect-ratio:16/10;background:#163d4f;isolation:isolate;overflow:hidden}.map-canvas>img{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;user-select:none;opacity:.86}.map-caption{position:absolute;left:22px;top:20px;display:flex;flex-direction:column;gap:8px;color:#f2f8f7;font-size:14px;letter-spacing:2px}.map-caption span{font-size:8px;letter-spacing:1.4px;color:#e9bd7b}.compass{position:absolute;right:24px;top:20px;text-align:center;font-size:10px;color:#d6ecec}.compass span{display:block;font-size:35px;color:#e9bd7b}.map-berth{position:absolute;transform:translate(-50%,-50%);width:6.2%;height:14%;min-width:48px;min-height:68px;background:#102c399c;border:1px dashed #83b2c077;border-radius:10px;color:#bad0d6;z-index:3;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.map-berth.eligible{border:2px solid #66eed9;background:#205c5970;box-shadow:0 0 18px #66eed944,inset 0 0 16px #66eed91c;color:#d3fff3}.map-berth.assigned{border:2px solid #e9bd7b;background:#3b332673;color:#ffe0aa}.map-berth-code{font-size:12px;font-weight:750;position:absolute;top:-18px;color:#defbf6;text-shadow:0 2px 3px #00131f}.map-berth-water{height:74%;display:grid;place-items:center}.map-berth-water svg{height:100%;max-height:70px;width:27px;opacity:.4}.target-plus{font-size:22px}.map-fit{font-size:6px;letter-spacing:.4px;font-weight:700;position:absolute;bottom:-13px;white-space:nowrap}.map-berth.over{outline:3px solid #fff;outline-offset:5px;background:#429c8377}.map-yacht{position:absolute;transform:translate(-50%,-50%);z-index:5;padding:0;width:65px;height:76px;border:0;background:transparent;color:#f5f8f5;cursor:grab}.map-hull{display:block;height:64px;width:25px;margin:auto;filter:drop-shadow(0 0 8px #8cfff780);transform-origin:50% 50%;pointer-events:none}.map-hull svg{width:100%;height:100%}.map-yacht.selected .map-hull{filter:drop-shadow(0 0 8px #e9bd7b)}.map-yacht.berthed{width:45px;height:64px}.map-yacht.berthed .map-hull{height:49px}.map-yacht.berthed .yacht-label{top:70px;left:50%;transform:translateX(-50%)}.yacht-label{position:absolute;left:70%;top:15px;white-space:nowrap;font-size:11px;font-weight:600;background:#081c2cce;padding:6px 9px;border:1px solid #53808e77;border-radius:5px;pointer-events:none}.yacht-label small{display:block;font-size:7px;margin-top:4px;letter-spacing:.7px;color:#e9bd7b}.map-yacht.dragging{opacity:.35}.map-prompt{position:absolute;left:22px;bottom:35px;padding:13px 17px;background:#071c2ce8;border-left:2px solid #e9bd7b;font-size:13px;line-height:1.7;color:#e4f2ef}.map-prompt small{font-size:11px;color:#9dbbc6}.map-credit{position:absolute;right:0;bottom:0;z-index:2;background:#e9f2f0;color:#17384a;padding:3px 6px;font-size:9px}.map-selection-note{padding:13px 20px;color:#b2cdd5;background:#0b2534;font-size:11px;line-height:1.6}.berth-details{padding:12px 20px;margin:0}.berth-details>.quay{margin-top:15px}.watch-demo{margin:20px 24px;padding:15px 18px;border:1px solid #365765;border-radius:7px}.watch-demo>summary{color:#e9bd7b;font-size:14px;font-weight:600}.watch-demo video{width:100%;max-height:720px;background:#091c29;margin-top:15px;border-radius:7px}.watch-demo p{color:#9bbac4;font-size:11px}.instructions{margin-bottom:18px}.intro{padding-block:20px}.energy{padding-block:22px}body.drag-active .map-berth.eligible{outline:2px solid #b0fff0;outline-offset:4px}
@media(max-width:1000px){.workspace{grid-template-columns:200px minmax(0,1fr)}.map-canvas{min-width:720px}.queue-panel{padding-inline:12px}.vessel{padding:14px 10px}.vessel.selected{padding:13px 9px}}
@media(max-width:760px){.workspace{grid-template-columns:1fr}.queue-panel{padding:18px}.map-canvas{min-width:780px}.map-scroll{max-width:100%;border-block:1px solid #3a5c68}.harbour>.panel-title{padding-top:20px}.watch-demo{margin:16px}.map-selection-note{font-size:11px}.map-prompt{font-size:12px}}
