@font-face{font-family:Oswald;src:url('./assets/oswald.ttf') format('truetype');font-display:swap}
@font-face{font-family:WorkSans;src:url('./assets/work-sans.ttf') format('truetype');font-display:swap}
@font-face{font-family:PlexMono;src:url('./assets/ibm-plex-mono.ttf') format('truetype');font-display:swap}
:root{--bg:#0c1c24;--surface:#142a34;--ink:#edf1e9;--muted:#b6c7c8;--accent:#f5c94b;--accent-ink:#17242b;--paper:#ebeee8;--paper-ink:#17242b;--line:rgba(237,241,233,.24);--ease:cubic-bezier(.22,1,.36,1)}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:WorkSans,Arial,sans-serif;font-size:16px;line-height:1.6;overflow-x:clip}
button,input,select{font:inherit}button{cursor:pointer}a{color:inherit}
.container{width:min(100% - 64px,1360px);margin-inline:auto}
.mono,.eyebrow{font-family:PlexMono,monospace;text-transform:uppercase;letter-spacing:.1em;font-size:12px;font-weight:600;line-height:1.45}
.site-header{border-bottom:1px solid var(--line);position:relative;z-index:2;background:var(--bg)}
.header-inner{min-height:78px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.brand{display:inline-flex;align-items:center;gap:12px;text-decoration:none;min-height:48px;font-family:Oswald,Impact,sans-serif;font-size:29px;font-weight:600;letter-spacing:-.03em;text-transform:uppercase;line-height:1;transition:color 180ms var(--ease)}
.brand-mark{width:28px;height:28px;border:3px solid var(--accent);border-radius:50%;position:relative;flex:none}
.brand-mark::before,.brand-mark::after{content:"";position:absolute;width:20px;height:3px;background:var(--accent);transform:rotate(-45deg);left:2px;top:10px}
.brand-mark::after{width:7px;left:19px;top:0}
.header-right{display:flex;align-items:center;gap:32px}.header-date{color:var(--muted)}
.header-link{min-height:48px;display:inline-flex;align-items:center;gap:8px;text-decoration:none;border-bottom:1px solid var(--accent);font-weight:600;transition:color 180ms var(--ease)}.header-link span{color:var(--accent)}
.hero{position:relative;overflow:clip;background:var(--bg)}
.hero::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(235,238,232,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(235,238,232,.035) 1px,transparent 1px);background-size:48px 48px;mask-image:linear-gradient(90deg,transparent 10%,#000 100%);pointer-events:none}
.hero-inner{min-height:558px;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(390px,.95fr);gap:28px;align-items:stretch;position:relative}
.hero-copy{padding-block:58px 66px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;position:relative;z-index:1}
.hero .eyebrow{color:var(--accent);margin:0 0 20px}h1,h2,h3,p{margin-top:0}
h1{font-family:Oswald,Impact,sans-serif;text-transform:uppercase;font-size:clamp(88px,10.2vw,150px);line-height:.95;letter-spacing:-.045em;font-weight:600;margin:0 0 24px;max-width:7ch}
h1 span{display:block;color:var(--accent)}
.hero-lede{font-size:18px;line-height:1.58;max-width:41ch;margin-bottom:26px}
.primary-link{background:var(--accent);color:var(--accent-ink);display:inline-flex;align-items:center;justify-content:space-between;gap:34px;min-height:54px;padding:12px 20px;text-decoration:none;font-weight:700;transition:transform 180ms var(--ease),background-color 180ms var(--ease)}
.primary-link .arrow{font-size:22px;line-height:1}.hero-footnote{margin-top:24px;color:var(--muted)}
.signal-board{margin-block:42px;border:1px solid rgba(237,241,233,.38);background:rgba(18,42,52,.92);min-height:474px;position:relative;display:flex;flex-direction:column;box-shadow:16px 16px 0 rgba(5,15,20,.36);animation:board-arrive 650ms var(--ease) both;animation-delay:90ms}
.signal-board::before,.signal-board::after{content:"";position:absolute;width:12px;height:12px;border:2px solid var(--accent);border-radius:50%;background:var(--bg);z-index:1}.signal-board::before{top:-6px;left:-6px}.signal-board::after{bottom:-6px;right:-6px}
.board-head{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);padding:18px 24px;color:var(--muted)}.board-head strong{color:var(--accent);font-weight:600}
.board-title{padding:20px 24px 8px;display:flex;align-items:baseline;justify-content:space-between;gap:12px}.board-title span:first-child{font-family:Oswald,Impact,sans-serif;font-size:26px;line-height:1;text-transform:uppercase;letter-spacing:-.02em}.board-title span:last-child{color:var(--muted)}
.signal-routes{padding:8px 24px 16px;display:grid;gap:4px;flex:1}.signal-row{display:grid;grid-template-columns:124px 1fr;align-items:center;gap:20px;transition:opacity 200ms var(--ease)}
.signal-day{display:flex;align-items:baseline;gap:8px;white-space:nowrap}.signal-day strong{font-family:Oswald,Impact,sans-serif;font-size:82px;line-height:1;color:var(--ink);letter-spacing:-.04em}.signal-day small{font-family:PlexMono,monospace;font-size:11px;letter-spacing:.1em;color:var(--muted)}
.signal-track{height:62px;position:relative;display:flex;align-items:center;justify-content:space-between;gap:4px}.signal-track::before{content:"";position:absolute;left:0;right:0;top:50%;height:2px;background:var(--accent);transform-origin:left;animation:track-draw 800ms var(--ease) both;animation-delay:180ms}.signal-row.sun .signal-track::before{animation-delay:300ms}
.signal-track i{width:13px;height:13px;border:3px solid var(--accent);border-radius:50%;background:var(--surface);position:relative;z-index:1;display:block;flex:none;transition:background-color 180ms var(--ease)}.signal-track i:first-child,.signal-track i:last-child{background:var(--accent);width:18px;height:18px}
.route-meta{grid-column:2;display:flex;justify-content:space-between;gap:12px;margin-top:-15px;color:var(--muted)}.board-footer{display:flex;justify-content:space-between;gap:16px;padding:16px 24px;background:var(--accent);color:var(--accent-ink)}.board-footer span:last-child{text-align:right}
.day-sat .signal-row.sun,.day-sun .signal-row.sat{opacity:.28}
.intro-strip{background:var(--accent);color:var(--accent-ink);overflow:clip}.intro-inner{min-height:60px;display:flex;align-items:center;justify-content:space-between;gap:20px}.intro-inner span:last-child{font-family:Oswald,Impact,sans-serif;font-size:23px;text-transform:uppercase;line-height:1}
.browse{background:var(--paper);color:var(--paper-ink);padding-block:96px 132px}.browse-heading{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:end;margin-bottom:44px}.browse-heading .eyebrow{color:#47606c;margin-bottom:18px}.browse h2{font-family:Oswald,Impact,sans-serif;font-size:clamp(50px,6vw,82px);line-height:.98;letter-spacing:-.035em;text-transform:uppercase;margin:0}.browse-description{font-size:18px;line-height:1.55;max-width:35ch;margin:0 0 4px auto}
.control-panel{border:1px solid #839398;background:#f7f8f3;padding:24px;display:grid;grid-template-columns:minmax(0,2fr) minmax(190px,1fr) auto;align-items:end;gap:16px}.field{display:grid;gap:8px;min-width:0}.field label{font-family:PlexMono,monospace;font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:600}.input-shell,.select-shell{position:relative}.input-shell::before{content:"⌕";position:absolute;left:15px;top:50%;transform:translateY(-53%);font-size:28px;line-height:1;color:#45606b;pointer-events:none}.select-shell::after{content:"⌄";position:absolute;right:16px;top:50%;transform:translateY(-60%);font-size:23px;pointer-events:none}
input,select{width:100%;height:50px;border:1px solid #7a8b90;border-radius:0;background:#fff;color:var(--paper-ink);padding:0 16px;font-size:16px;appearance:none}input{padding-left:46px}input::placeholder{color:#66777e;opacity:1}
.saved-toggle{height:50px;white-space:nowrap;border:1px solid var(--paper-ink);background:transparent;color:var(--paper-ink);padding:0 18px;font-weight:700;transition:background-color 180ms var(--ease),color 180ms var(--ease),transform 180ms var(--ease)}.saved-toggle[aria-pressed="true"]{background:var(--paper-ink);color:var(--ink)}.saved-toggle .star{font-size:18px;vertical-align:-1px;margin-right:6px}
.browse-tools{display:flex;align-items:end;justify-content:space-between;gap:24px;border-bottom:2px solid var(--paper-ink);padding-block:28px 17px}.day-filters{display:flex;flex-wrap:wrap;gap:8px}.day-button{min-height:44px;border:1px solid #84949a;background:transparent;color:var(--paper-ink);padding:8px 16px;font-family:PlexMono,monospace;font-size:12px;letter-spacing:.04em;text-transform:uppercase;transition:background-color 180ms var(--ease),color 180ms var(--ease),transform 180ms var(--ease)}.day-button[aria-pressed="true"]{background:var(--paper-ink);color:var(--ink);border-color:var(--paper-ink)}#result-count{color:#495f69;margin:0;text-align:right}
.event-list{display:grid}.event-row{display:grid;grid-template-columns:140px minmax(0,1.5fr) minmax(170px,.55fr) 86px;gap:24px;align-items:center;border-bottom:1px solid #9eadae;padding-block:26px;position:relative;transition:background-color 180ms var(--ease),padding-left 180ms var(--ease)}.event-row::before{content:"";position:absolute;left:0;top:0;bottom:0;width:0;background:var(--accent);transition:width 180ms var(--ease)}.event-row:focus-within{outline:2px solid #355769;outline-offset:-2px;background:#f8f8f2}
.row-date{display:flex;align-items:baseline;gap:9px}.row-date strong{font-family:Oswald,Impact,sans-serif;font-size:49px;line-height:1;letter-spacing:-.04em;font-weight:500}.row-date span{font-family:PlexMono,monospace;text-transform:uppercase;font-size:11px;line-height:1.4;letter-spacing:.06em;color:#445c66}.row-main{min-width:0}.row-category{font-family:PlexMono,monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#49636b;margin:0 0 5px}.event-row.is-saved .row-category::after{content:" / SAVED";color:#926600;font-weight:700}.row-title{border:0;background:transparent;color:var(--paper-ink);font-family:Oswald,Impact,sans-serif;font-size:clamp(23px,2.25vw,31px);line-height:1.15;text-align:left;padding:0;min-height:44px;display:inline-flex;align-items:center;letter-spacing:-.018em;transition:color 180ms var(--ease),transform 180ms var(--ease)}.row-summary{font-size:15px;line-height:1.5;color:#42545b;max-width:65ch;margin:5px 0 0}.row-place{font-size:14px;line-height:1.45;color:#3b5059}.row-place strong{display:block;color:var(--paper-ink);font-weight:700}.row-end{text-align:right;display:grid;justify-items:end;gap:8px}.row-price{font-family:PlexMono,monospace;font-size:13px;text-transform:uppercase}.row-arrow{width:44px;height:44px;border:1px solid var(--paper-ink);background:transparent;color:var(--paper-ink);padding:0;display:grid;place-items:center;font-size:23px;line-height:1;transition:background-color 180ms var(--ease),color 180ms var(--ease),transform 180ms var(--ease)}.event-row[hidden]{display:none}
.empty-state{border:1px dashed #819298;text-align:center;padding:64px 24px;margin-top:24px;background:#f7f8f3}.empty-state[hidden]{display:none}.empty-state h3{font-family:Oswald,Impact,sans-serif;text-transform:uppercase;font-size:36px;line-height:1.1;margin-bottom:8px}.empty-state p{margin-inline:auto;max-width:44ch;color:#455a63}.reset-button{border:1px solid var(--paper-ink);background:var(--paper-ink);color:var(--ink);min-height:48px;padding:10px 20px;font-weight:700;transition:transform 180ms var(--ease),background-color 180ms var(--ease)}
.closing{padding-block:94px 96px;background:var(--bg);border-top:1px solid var(--line)}.closing-inner{display:grid;grid-template-columns:1fr auto;align-items:end;gap:28px}.closing .eyebrow{color:var(--accent)}.closing h2{font-family:Oswald,Impact,sans-serif;font-size:clamp(48px,7vw,92px);line-height:.98;letter-spacing:-.035em;text-transform:uppercase;margin:12px 0 0;max-width:11ch}.closing-note{max-width:25ch;color:var(--muted);margin:0 0 5px}.site-footer{border-top:1px solid var(--line);padding-block:20px 26px;color:var(--muted)}.footer-inner{display:flex;justify-content:space-between;gap:16px}
dialog{border:0;padding:0;background:var(--paper);color:var(--paper-ink);width:min(720px,calc(100% - 28px));max-height:min(92vh,900px);overflow:auto;box-shadow:0 28px 90px rgba(0,0,0,.48)}dialog::backdrop{background:rgba(3,12,18,.78)}.detail-top{background:var(--bg);color:var(--ink);padding:24px 32px 34px;position:relative}.detail-topline{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:34px}.detail-kicker{color:var(--accent)}.close-button{width:46px;height:46px;border:1px solid rgba(237,241,233,.6);background:transparent;color:var(--ink);font-size:27px;line-height:1;transition:background-color 180ms var(--ease),color 180ms var(--ease),transform 180ms var(--ease)}.detail-top h2{font-family:Oswald,Impact,sans-serif;font-size:clamp(43px,5.4vw,70px);line-height:1.02;letter-spacing:-.03em;text-transform:uppercase;margin:0;max-width:14ch}.detail-content{padding:30px 32px 34px}.detail-facts{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;border-bottom:1px solid #9cabad;padding-bottom:26px;margin-bottom:26px}.fact span{display:block;font-family:PlexMono,monospace;text-transform:uppercase;letter-spacing:.09em;font-size:11px;color:#4a626b;margin-bottom:5px}.fact strong{display:block;font-size:16px;line-height:1.4}.detail-body{font-size:17px;line-height:1.65;max-width:60ch}.detail-body p{margin-bottom:16px}.detail-actions{border-top:1px solid #9cabad;padding-top:24px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}.save-button{min-height:50px;padding:11px 20px;border:1px solid var(--paper-ink);background:var(--accent);color:var(--accent-ink);font-weight:700;transition:transform 180ms var(--ease),background-color 180ms var(--ease),color 180ms var(--ease)}.save-button[aria-pressed="true"]{background:var(--paper-ink);color:var(--ink)}.detail-hint{font-size:13px;color:#4a626b;margin:0}
button:focus,input:focus,select:focus,a:focus{outline:2px solid var(--accent);outline-offset:3px}.browse button:focus,.browse input:focus,.browse select:focus,dialog button:focus{outline-color:#34596b}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline-width:3px}button:active,.primary-link:active,.header-link:active,.brand:active{transform:scale(.97)}.row-title:active{transform:translateX(2px)}
@media (hover:hover) and (pointer:fine){.brand:hover{color:var(--accent)}.header-link:hover{color:var(--accent)}.primary-link:hover{background:#ffda6e;transform:translateY(-2px)}.saved-toggle:hover{background:var(--paper-ink);color:var(--ink)}.day-button:hover{background:#d8e0dc}.day-button[aria-pressed="true"]:hover{background:#2f4853}.event-row:hover{background:#f8f8f2;padding-left:10px}.event-row:hover::before{width:4px}.row-title:hover{color:#926600}.event-row:hover .row-arrow{background:var(--paper-ink);color:var(--ink);transform:translateX(2px)}.reset-button:hover{background:#38535e}.close-button:hover{background:var(--accent);color:var(--accent-ink)}.save-button:hover{background:#ffda6e}.save-button[aria-pressed="true"]:hover{background:#38535e}.signal-row:hover .signal-track i{background:var(--accent)}}
@keyframes board-arrive{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes track-draw{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media (max-width:1020px){.hero-inner{grid-template-columns:minmax(0,1fr) minmax(300px,.9fr)}h1{font-size:clamp(78px,10vw,110px)}.signal-row{grid-template-columns:94px 1fr;gap:10px}.signal-day strong{font-size:65px}.event-row{grid-template-columns:110px minmax(0,1fr) 140px 64px;gap:16px}}
@media (max-width:760px){.container{width:min(100% - 40px,1360px)}.header-inner{min-height:68px}.header-date{display:none}.brand{font-size:25px}.hero-inner{grid-template-columns:1fr;gap:0}.hero-copy{padding-block:54px 26px}h1{font-size:clamp(76px,16vw,120px);max-width:none}.hero-lede{font-size:16px;max-width:38ch}.signal-board{margin-block:22px 52px;min-height:330px}.signal-row{grid-template-columns:110px 1fr;gap:16px}.signal-day strong{font-size:70px}.browse{padding-block:72px 92px}.browse-heading{grid-template-columns:1fr;gap:14px;margin-bottom:30px}.browse-description{margin:0;max-width:42ch;font-size:16px}.control-panel{grid-template-columns:1fr 1fr}.control-panel .field:first-child{grid-column:1/-1}.event-row{grid-template-columns:92px minmax(0,1fr) 58px;gap:12px;padding-block:22px}.row-place{grid-column:2;grid-row:2}.row-end{grid-column:3;grid-row:1 / span 2}.row-date strong{font-size:42px}.row-summary{font-size:14px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.closing{padding-block:72px}}
@media (max-width:520px){.header-right{gap:0}.header-link{font-size:13px}.brand{gap:8px}.brand-mark{width:24px;height:24px}.hero-copy{padding-top:44px}h1{font-size:clamp(72px,18.2vw,90px);line-height:.94;margin-bottom:20px}.hero .eyebrow{margin-bottom:15px}.hero-lede{margin-bottom:20px}.hero-footnote{margin-top:18px}.signal-board{min-height:300px;margin-top:26px}.board-head,.board-title,.signal-routes,.board-footer{padding-inline:16px}.board-head{padding-block:12px}.board-title{padding-block:15px 4px}.board-title span:first-child{font-size:22px}.signal-row{grid-template-columns:88px 1fr;gap:8px}.signal-day{gap:5px}.signal-day strong{font-size:57px}.signal-day small{font-size:10px}.signal-track i{width:10px;height:10px;border-width:2px}.signal-track i:first-child,.signal-track i:last-child{width:14px;height:14px}.route-meta{font-size:10px}.board-footer{font-size:10px}.intro-inner{min-height:50px}.intro-inner span:last-child{font-size:19px}.browse{padding-top:64px}.browse h2{font-size:58px}.control-panel{padding:16px;grid-template-columns:1fr}.control-panel .field:first-child{grid-column:auto}.saved-toggle{width:100%}.browse-tools{align-items:flex-start;flex-direction:column;gap:12px;padding-top:24px}#result-count{text-align:left}.day-button{padding-inline:11px;font-size:11px}.event-row{grid-template-columns:65px minmax(0,1fr) 44px;column-gap:10px}.row-date{display:block}.row-date strong{display:block;font-size:39px}.row-date span{font-size:10px}.row-title{font-size:24px;line-height:1.12}.row-place{font-size:13px}.row-price{font-size:11px}.row-end{gap:14px}.closing-inner{grid-template-columns:1fr}.closing h2{font-size:59px}.footer-inner{display:block}.detail-top{padding:18px 22px 28px}.detail-topline{margin-bottom:22px}.detail-content{padding:24px 22px 28px}.detail-facts{gap:16px}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
