:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#12334a;background:#f3f7fa;font-synthesis:none;--navy:#10334b;--muted:#536879;--line:#d7e2e9;--teal:#08766f}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}a{color:#126777}button,a,input,summary{-webkit-tap-highlight-color:transparent}button,summary{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #d17b12;outline-offset:4px}header{background:var(--navy);color:white;display:flex;justify-content:space-between;align-items:center;padding:18px max(24px,calc((100vw - 1120px)/2));border-bottom:4px solid #55cbd0}.brand{font-size:20px;letter-spacing:-.5px;font-weight:750;color:white;text-decoration:none}.brand span{font-weight:400;color:#a4c2d2}.header-label{font-size:12px;letter-spacing:2px;color:#b4d8e1}main{max-width:1168px;margin:auto;padding:32px 24px 24px}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.eyebrow{font-size:12px;letter-spacing:2px;font-weight:750;color:#36707d;margin:0 0 6px}h1{font-size:clamp(30px,4vw,42px);letter-spacing:-1.4px;margin:0;font-weight:760}h2{font-size:22px;letter-spacing:-.5px;margin:0}h3{font-size:21px;letter-spacing:-.3px;margin:0}p{line-height:1.55}.quiet-link{font-size:14px;text-decoration:none}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}.section-heading h2 span{font-size:16px;font-weight:450;letter-spacing:0;color:var(--muted);margin-left:12px}.text-button{background:transparent;border:0;color:#166375;font-size:14px;padding:8px 0;min-height:40px}.text-button:disabled{opacity:.5;cursor:wait}.status{font-size:14px;line-height:1.6;color:var(--muted);margin:6px 0 14px}.directions{display:grid;grid-template-columns:1fr 1fr;gap:20px}.direction{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden;min-width:0}.direction-title{padding:19px 22px 16px;background:#eaf4f5;border-bottom:1px solid var(--line);display:flex;gap:12px;align-items:center}.direction.fra .direction-title{background:#edf1f9}.direction-symbol{font-size:24px;color:var(--teal);width:34px}.fra .direction-symbol{color:#536b9a}.direction-title p{margin:3px 0 0;font-size:14px;color:var(--muted)}.column-labels{display:grid;grid-template-columns:86px 1fr;gap:12px;padding:10px 22px 6px;font-size:12px;color:#607384}.sailing{padding:13px 22px;border-bottom:1px solid #e7edf2;position:relative}.sailing:last-child{border-bottom:0}.sailing.past{background:#fbfcfd;color:#536879}.sailing.next{background:#f0faf8;border-left:3px solid #139888;padding-left:19px}.sailing.cancelled{background:#fff4f3}.sailing-top{display:grid;grid-template-columns:86px 1fr;gap:12px;align-items:start}.departure-time{font-size:24px;line-height:1.2;letter-spacing:-.8px;font-weight:730;font-variant-numeric:tabular-nums}.departure-time small{display:block;font-size:12px;letter-spacing:0;margin-top:5px;color:#08766f;font-weight:650}.arrival-line{font-size:15px;line-height:1.5;display:flex;gap:8px;justify-content:space-between;align-items:center;flex-wrap:wrap}.arrival-line strong{font-size:18px;font-variant-numeric:tabular-nums;letter-spacing:-.2px;margin-right:5px}.arrival-line+.arrival-line{margin-top:6px}.badge{font-size:12px;padding:3px 7px;border-radius:4px;font-weight:650;white-space:nowrap;background:#edf1f5;color:#516778}.badge.direct{background:#d9f4e9;color:#156149}.badge.fast{background:#e6effe;color:#36568d}.badge.warn{background:#fff0d9;color:#885214}.badge.cancel{background:#ffe0de;color:#9e302a}.sailing-meta{font-size:13px;color:#577080;margin:7px 0 0;display:flex;gap:6px;align-items:center;flex-wrap:wrap}.vessel-dot{width:7px;height:7px;border-radius:50%;display:inline-block;background:#13968c}.vessel-dot.vetle{background:#7954c7}.sailing details{font-size:14px;color:#425e70;margin-top:8px}.sailing summary{font-size:13px;line-height:1.5}.sailing details p{margin:7px 0}.sailing ul{padding-left:20px;margin:8px 0}.sailing li{margin-bottom:6px;line-height:1.5}.source-warning{color:#865318}.empty{font-size:14px;padding:24px;color:var(--muted);line-height:1.7}.notice{padding:12px 16px;border:1px solid #e6c891;background:#fff7e8;border-radius:8px;margin:10px 0;font-size:14px;line-height:1.6;color:#715320}.next-days{margin-top:36px}.day{border-bottom:1px solid var(--line)}.day>summary{list-style:none;display:grid;grid-template-columns:170px 1fr 20px;align-items:center;gap:14px;padding:19px 2px}.day>summary::-webkit-details-marker{display:none}.day>summary:after{content:'+';font-size:24px;color:#307183}.day[open]>summary:after{content:'−'}.day-title{font-size:16px;font-weight:650;text-transform:capitalize}.day-summary{display:flex;gap:24px;font-size:14px;color:var(--muted)}.day>.directions{margin-bottom:22px}.date-section{background:#e8eff4;padding:24px;border-radius:12px;margin:32px 0}.date-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.date-heading p{margin-bottom:0}.date-controls{display:flex;gap:8px}label{display:block;font-size:14px;margin-bottom:6px}input[type=date]{padding:10px 12px;border:1px solid #b6c9d5;border-radius:6px;background:white;color:var(--navy);min-width:160px;min-height:44px}.date-controls button{background:var(--navy);color:white;border:0;border-radius:6px;padding:10px 16px;min-height:44px}.date-controls button:hover{background:#245772}#date-result:not(:empty){margin-top:22px}#date-result h3{margin-bottom:14px}#kart{scroll-margin-top:20px}.map-shell{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:white}#fergeMap{height:390px;background:#dce9ef;z-index:0}.vessels{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:18px 22px}.vessel{display:grid;grid-template-columns:12px 1fr;gap:10px;font-size:14px}.vessel .vessel-dot{width:10px;height:10px;margin-top:6px}.vessel strong{font-size:16px}.vessel p{margin:3px 0 0;color:var(--muted);font-size:13px}.boat-icon{border-radius:50%;background:#087b72;border:3px solid white;box-shadow:0 2px 6px #12334a66;display:grid;place-items:center;color:white;font-size:20px}.boat-icon.vetle{background:#7954c7}.boat-icon.stale{filter:grayscale(1)}.port-label{font-family:inherit;font-size:12px;border:0;box-shadow:0 1px 5px #12334a33}.sources{font-size:14px;color:var(--muted);border-top:1px solid var(--line);margin-top:28px;padding:18px 0}.sources>summary{font-weight:600;color:var(--navy)}.sources>div{max-width:850px}.sources p{margin:12px 0}footer{display:flex;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding-top:18px;color:var(--muted);font-size:12px}.loading{padding:24px;background:white;border:1px solid var(--line);border-radius:12px}.leaflet-popup-content{font-family:inherit;font-size:14px;line-height:1.5}del{font-size:13px;color:var(--muted)}
@media(max-width:760px){header{padding:15px 18px}.header-label{letter-spacing:1px}main{padding:24px 16px}.page-heading{margin-bottom:22px}.quiet-link{max-width:105px;text-align:right;line-height:1.6}.directions{gap:16px;grid-template-columns:1fr}.section-heading h2 span{display:block;margin:5px 0 0;font-size:14px}.direction-title{padding:16px 18px}.sailing{padding:13px 18px}.sailing.next{padding-left:15px}.column-labels{padding-left:18px;padding-right:18px}.date-heading{align-items:stretch;flex-direction:column;gap:14px}.date-section{padding:20px 16px}.day>summary{grid-template-columns:1fr 20px;gap:6px}.day-summary{grid-row:2;gap:18px}.day>summary:after{grid-column:2;grid-row:1/3}.vessels{grid-template-columns:1fr;gap:16px;padding:16px}#fergeMap{height:350px}footer{flex-direction:column}.date-controls input{flex:1;min-width:0}.date-controls button{font-size:14px;padding:10px 12px}.arrival-line{font-size:14px}.sailing-top,.column-labels{grid-template-columns:72px 1fr;gap:9px}.departure-time{font-size:23px}.next-days{margin-top:28px}}
@media(prefers-reduced-motion:no-preference){button{transition:background .15s ease}}
.day-summary>span{flex:1;min-width:0}.day-times{display:block;font-weight:550;line-height:1.8;font-variant-numeric:tabular-nums;color:#294e64}.sailing-meta,.sailing summary{font-size:14px}@media(max-width:760px){.day-summary{grid-column:1/3;display:grid;grid-template-columns:1fr 1fr;gap:16px}.day>summary:after{grid-row:1}.day-title{grid-column:1}}
