:root{color:#f4f4f4;font-synthesis:none;--ink:#f4f4f4;--paper:#050505;--muted:#c9c9c9;--dim:#8d8d8d;--shadow:#2d2d2d;background:#050505;font-family:Courier New,Courier,monospace}*{box-sizing:border-box}body{background:linear-gradient(#ffffff09 50%, transparent 50%) 0 0 / 100% 4px, radial-gradient(circle at 50% -20%, #3b3b3b 0, var(--paper) 48%);min-height:100vh;margin:0}body:before{content:"";pointer-events:none;z-index:10;background:radial-gradient(circle,#0000 58%,#000c);position:fixed;inset:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{color:var(--dim);cursor:not-allowed;box-shadow:none}.app-shell{width:min(920px,100% - 28px);margin:0 auto;padding:28px 0 48px}.top-bar{border:2px solid var(--ink);text-transform:uppercase;justify-content:space-between;align-items:center;margin-bottom:24px;padding:12px;display:flex}.brand{color:var(--ink);letter-spacing:.08em;margin:0;font-weight:900}.app-store-link{width:fit-content;margin:24px auto 0;line-height:0;display:flex}.app-store-link img{width:auto;height:42px}.app-store-link:focus-visible{outline:2px solid var(--ink);outline-offset:4px}button,.refresh-button{border:2px solid var(--ink);background:var(--paper);box-shadow:5px 5px 0 var(--ink);color:var(--ink);text-transform:uppercase;padding:12px 14px;font-weight:900;transition:transform .12s,box-shadow .12s;display:inline-block}button:hover:not(:disabled){background:var(--ink);color:var(--paper);box-shadow:3px 3px 0 var(--ink);transform:translate(2px,2px)}.refresh-button{justify-content:center;align-items:center;width:44px;height:44px;padding:0;font-size:1.15rem;display:inline-flex}.panel{border:3px double var(--ink);box-shadow:12px 12px 0 var(--shadow);background:#0b0b0b;padding:clamp(18px,4vw,34px)}.placeholder{gap:18px;display:grid}.placeholder h1,h1,h2{text-transform:uppercase;margin:0}h1{text-shadow:3px 3px #676767;font-size:clamp(1.8rem,6vw,4.6rem);line-height:.95}h2{font-size:clamp(1.6rem,5vw,3.5rem);line-height:.95}.placeholder p,.selected-platform,.hint,.empty,.last-updated{color:var(--muted)}.monitor{gap:18px;display:grid}.monitor-header{grid-template-columns:1fr auto;align-items:start;gap:16px;display:grid}.station-label{color:var(--ink);letter-spacing:.16em;text-transform:uppercase;margin:0 0 10px;font-size:.78rem;font-weight:900}.selected-platform{text-transform:uppercase;margin:8px 0 0;font-weight:900}.status{border:2px solid var(--ink);text-transform:uppercase;padding:14px 16px}.status:before{content:"> "}.status[data-type=success]{background:var(--ink);color:var(--paper)}.status[data-type=warning]{border-style:dashed}.status[data-type=error]{background:repeating-linear-gradient(45deg, var(--paper), var(--paper) 8px, var(--shadow) 8px, var(--shadow) 16px)}.departure-list{gap:14px;margin:0;padding:0;list-style:none;display:grid}.departure-card{border:2px solid var(--ink);grid-template-columns:auto 1fr auto;align-items:center;gap:16px;padding:16px;display:grid}.line-badge{background:var(--route-color,var(--ink));border:2px solid var(--ink);color:var(--route-text-color,var(--paper));justify-content:center;align-items:center;min-width:70px;min-height:58px;padding:8px 12px;font-size:1.65rem;font-weight:900;display:inline-flex}.departure-main,.departure-time{gap:5px;display:grid}.departure-main strong{color:var(--ink);text-transform:uppercase;font-size:clamp(1.15rem,4vw,1.9rem)}.departure-main span,.departure-time span,.departure-time small{color:var(--muted)}.departure-time{text-align:right;justify-items:end}.departure-time strong{color:var(--ink);font-size:clamp(2rem,7vw,4.2rem);line-height:.8}.departure-time span{text-transform:uppercase;font-weight:900}.departure-time small{font-weight:900}.delay{color:var(--ink);margin-left:8px;font-weight:900;text-decoration:underline}.arrival-icon{border:5px solid var(--ink);border-top:0;border-left:0;width:44px;height:30px;margin-right:6px;display:block;position:relative;transform:rotate(-45deg)}.arrival-icon:after{border-bottom:10px solid #0000;border-left:14px solid var(--ink);content:"";border-top:10px solid #0000;position:absolute;top:20px;right:-15px;transform:rotate(45deg)}.matrix-text{--dot-color:currentColor;--dot-size:.14em;--dot-gap:.045em;--glyph-gap:.17em;align-items:start;gap:var(--glyph-gap);vertical-align:-.06em;white-space:nowrap;line-height:1;display:inline-flex}.matrix-glyph{gap:var(--dot-gap);grid-template-columns:repeat(var(--glyph-columns), var(--dot-size));grid-template-rows:repeat(var(--glyph-rows), var(--dot-size));display:inline-grid}.matrix-dot{height:var(--dot-size);opacity:0;width:var(--dot-size);border-radius:1px}.matrix-dot.is-lit{background:var(--dot-color);box-shadow:0 0 calc(var(--dot-size) * 1.2) color-mix(in srgb, var(--dot-color) 74%, transparent);opacity:1}.last-updated{text-align:right;margin:0}[hidden]{display:none!important}@media (width<=680px){.top-bar,.monitor-header,.departure-card{grid-template-columns:1fr}.top-bar{gap:14px}.departure-time{text-align:left;justify-items:start}}@media (orientation:landscape) and (width>=760px){:root{--matrix-amber:#f1c21b;--matrix-source-width:1508;--matrix-source-height:482;--matrix-px:min(.066313vw, .207469vh);--matrix-dot-pitch:calc(var(--matrix-px) * 6.4);--matrix-dot-size:calc(var(--matrix-px) * 4.8);--matrix-dot-gap:calc(var(--matrix-dot-pitch) - var(--matrix-dot-size));--matrix-glyph-gap:calc(var(--matrix-px) * 7.6)}body{background:#07080d;justify-content:center;align-items:center;min-height:100vh;display:flex;overflow:hidden}body:before{display:none}.app-shell{width:min(100vw,312.863vh);padding:0}.top-bar,.monitor-header,.status,.last-updated{display:none!important}body:not(.has-monitor):not(.matrix-reference-page){align-items:initial;background:linear-gradient(#ffffff09 50%, transparent 50%) 0 0 / 100% 4px, radial-gradient(circle at 50% -20%, #3b3b3b 0, var(--paper) 48%);display:block;overflow:auto}body:not(.has-monitor):not(.matrix-reference-page):before{display:block}body:not(.has-monitor):not(.matrix-reference-page) .app-shell{width:min(920px,100% - 28px);margin:0 auto;padding:28px 0 48px}body:not(.has-monitor):not(.matrix-reference-page) .top-bar{display:flex!important}body:not(.has-monitor):not(.matrix-reference-page) .placeholder{display:grid!important}.monitor{aspect-ratio:1508/482;box-shadow:inset 0 0 calc(var(--matrix-px) * 34) #000000f5;background:#07080d;border:0;border-radius:0;width:100%;min-height:0;padding:0;position:relative}.monitor:before,.monitor:after{content:"";pointer-events:none;position:absolute}.monitor:before{z-index:2;background:linear-gradient(90deg,#0000008c,#0000 4% 96%,#0000008c),linear-gradient(#ffffff09,#0000 22%,#0000002e 100%);inset:0}.monitor:after{background:radial-gradient(circle at center, #f1c21b0f 0 calc(var(--matrix-px) * .9), transparent calc(var(--matrix-px) * 1)) 0 0 / var(--matrix-dot-pitch) var(--matrix-dot-pitch);opacity:.38;z-index:0;inset:0}.departure-list{z-index:1;background:0 0;width:100%;height:100%;min-height:0;padding:0;display:block;position:relative;overflow:hidden}.departure-card{color:var(--matrix-amber);height:var(--matrix-row-height-pct);min-height:var(--matrix-row-height-pct);text-shadow:none;left:0;right:0;top:var(--matrix-row-top-pct);border:0;align-items:stretch;gap:0;padding:0;display:block;position:absolute}.departure-card:nth-child(n+5){display:none}.line-badge{color:var(--matrix-amber);font-size:initial;background:0 0;border:0;min-width:0;min-height:0;padding:0;line-height:1;display:flex}.departure-main,.departure-time{display:block}.departure-main strong,.departure-time strong{color:var(--matrix-amber);font-size:initial;text-transform:none;font-weight:400;line-height:1;display:block}.departure-main>span,.departure-time small,.time-unit{display:none}.departure-time{text-align:right}.departure-card:not(.is-arriving) .departure-time strong:after{content:none}.matrix-text{--dot-color:var(--matrix-amber);--dot-size:var(--matrix-dot-size);--dot-gap:var(--matrix-dot-gap);--glyph-gap:var(--matrix-glyph-gap);filter:drop-shadow(0 0 calc(var(--matrix-px) * 1.5) #f1c21bbd) drop-shadow(0 0 calc(var(--matrix-px) * 5) #f1c21b57);height:calc(var(--dot-size) * var(--glyph-visual-rows,9) + var(--dot-gap) * (var(--glyph-visual-rows,9) - 1));align-items:start}.matrix-text--destination{max-width:100%;overflow:hidden}.matrix-text--line{--glyph-gap:0px}.matrix-text--right{justify-content:flex-end;width:100%}.matrix-text--time,.matrix-text--icon{justify-content:flex-end;min-width:100%}.matrix-text--icon{--glyph-visual-rows:11;opacity:.82}.matrix-field{align-items:flex-start;height:100%;display:flex;position:absolute}.line-badge.matrix-field,.departure-main .matrix-field,.departure-time.matrix-field{align-items:flex-start;display:flex}.matrix-field--number{justify-content:flex-end;width:4.77454%;left:7.42706%}.matrix-field--destination{justify-content:flex-start;width:68.3024%;max-width:68.3024%;left:14.7215%;overflow:hidden}.matrix-field--time{justify-content:flex-end;width:4.77454%;left:87.0027%}.matrix-dot{border-radius:calc(var(--matrix-px) * .7)}.matrix-dot.is-lit{box-shadow:0 0 calc(var(--matrix-px) * 2.5) calc(var(--matrix-px) * .9) #f1c21b80, 0 0 calc(var(--matrix-px) * 7) #f1c21b61}.matrix-text--icon .matrix-dot.is-lit{box-shadow:0 0 calc(var(--matrix-px) * 2.5) #f1c21b80, 0 0 calc(var(--matrix-px) * 5) #f1c21b4d}.matrix-reference-page .matrix-row--1.matrix-row--single-digit .matrix-field--number .matrix-text{transform:translate(calc(var(--matrix-px) * -3), calc(var(--matrix-px) * -.5))}.matrix-reference-page .matrix-row--1 .matrix-field--destination .matrix-text{transform:translate(calc(var(--matrix-px) * 1), calc(var(--matrix-px) * -2)) scale(.883, 1.4);transform-origin:0 0}.matrix-reference-page .matrix-row--2 .matrix-field--destination .matrix-text{transform:translate(calc(var(--matrix-px) * 2), 0) scale(1.056, 1.055);transform-origin:0 0}.matrix-reference-page .matrix-row--3 .matrix-field--destination .matrix-text{transform:translate(calc(var(--matrix-px) * 3), calc(var(--matrix-px) * -1)) scale(.892, 1.18);transform-origin:0 0}.matrix-reference-page .matrix-row--4 .matrix-field--destination .matrix-text{transform:translate(calc(var(--matrix-px) * 3), 0) scale(.938, 1.073);transform-origin:0 0}.matrix-reference-page .matrix-row--2.matrix-row--single-digit .matrix-field--number .matrix-text{transform:translateX(calc(var(--matrix-px) * -2))}.matrix-reference-page .matrix-row--3.matrix-row--multi-digit .matrix-field--number .matrix-text{transform:translateX(calc(var(--matrix-px) * 2))}.matrix-reference-page .matrix-row--4.matrix-row--multi-digit .matrix-field--number .matrix-text{transform:translateX(calc(var(--matrix-px) * 3))}.matrix-reference-page .matrix-row--1 .matrix-text--icon{transform:translateX(calc(var(--matrix-px) * -3));transform-origin:0 0}.matrix-reference-page .matrix-row--2 .matrix-text--icon{transform:translateX(calc(var(--matrix-px) * -4));transform-origin:0 0}.matrix-reference-page .matrix-row--3 .matrix-field--time .matrix-text{transform:translateX(calc(var(--matrix-px) * -1))}.matrix-reference-page .matrix-row--4 .matrix-field--time .matrix-text{transform:translateY(calc(var(--matrix-px) * -5))}.matrix-reference-page .matrix-row--1 .matrix-field--destination .matrix-dot.is-lit{box-shadow:0 0 calc(var(--matrix-px) * 1.5) #f1c21b5c, 0 0 calc(var(--matrix-px) * 3) #f1c21b2e}.matrix-reference-page .matrix-row--2 .matrix-field--destination .matrix-dot.is-lit{box-shadow:0 0 calc(var(--matrix-px) * 2.2) calc(var(--matrix-px) * .35) #f1c21b70, 0 0 calc(var(--matrix-px) * 5) #f1c21b47}}
