.tv-tabs{background:var(--surface);border:1px solid var(--line);border-radius:14px;gap:6px;padding:4px;display:flex;position:relative}.tv-tabs button{min-height:44px;color:var(--ink);font:inherit;z-index:1;cursor:pointer;background:0 0;border:0;border-radius:10px;flex:1;font-weight:700;transition:color .2s;position:relative}.tv-tabs button[aria-selected=true]{color:var(--on-brand)}.tv-tabs .tv-pill{width:calc((100% - 8px - 6px * (var(--n) - 1)) / var(--n));background:var(--brand);transform:translateX(calc(var(--k) * (100% + 6px)));border-radius:10px;transition:transform .32s cubic-bezier(.2,.7,.2,1);position:absolute;top:4px;bottom:4px;left:4px}.tv-pick{position:relative}.tv-pick input{border:1px solid var(--line);width:100%;min-height:48px;font:inherit;background:var(--bg);color:var(--ink);border-radius:12px;padding:0 12px;font-size:16px}.tv-pick input:focus{outline:3px solid color-mix(in srgb, var(--brand) 40%, transparent);outline-offset:1px}.tv-list{border:1px solid var(--line);background:var(--surface);z-index:5;border-radius:12px;max-height:320px;margin:6px 0 0;padding:4px;list-style:none;animation:.18s ease-out both tv-drop;position:absolute;left:0;right:0;overflow:auto;box-shadow:0 10px 30px #0000001f}@keyframes tv-drop{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.tv-list button,.tv-row{width:100%;min-height:48px;color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:10px;align-items:center;gap:10px;padding:6px 10px;display:flex}.tv-list button:hover,.tv-list button[aria-selected=true]{background:color-mix(in srgb, var(--brand) 12%, transparent)}.tv-code{background:color-mix(in srgb, var(--brand) 14%, transparent);min-width:52px;color:var(--ink);text-align:center;border-radius:8px;padding:4px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;font-weight:800}.tv-row small,.tv-list small{color:var(--muted);font-size:13px;display:block}.tv-swap{border:1px solid var(--line);background:var(--surface);width:44px;height:44px;color:var(--ink);cursor:pointer;border-radius:50%;justify-self:center;font-size:20px;transition:transform .35s cubic-bezier(.2,.7,.2,1)}.tv-swap.spin{transform:rotate(180deg)}.tv-results{gap:10px;margin:0;padding:0;list-style:none;display:grid}.tv-results>li{animation:.4s cubic-bezier(.2,.7,.2,1) both pl-in;animation-delay:calc(min(var(--i,0), 12) * 45ms)}.tv-train{text-align:left;border:1px solid var(--line);background:var(--surface);width:100%;color:var(--ink);font:inherit;cursor:pointer;border-radius:16px;gap:6px;padding:12px 14px;transition:transform .15s;display:grid}.tv-train:active{transform:scale(.985)}.tv-train .top{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.tv-train .times{font-variant-numeric:tabular-nums;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;display:grid}.tv-train .times b{font-size:20px}.tv-train .line{background:var(--line);border-radius:2px;height:2px;position:relative;overflow:hidden}.tv-train .line:after{content:"";background:var(--brand);transform-origin:0;animation:.7s cubic-bezier(.2,.7,.2,1) .15s both tv-grow;position:absolute;inset:0}@keyframes tv-grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.tv-route{margin:0;padding:0;list-style:none;position:relative}.tv-route:before,.tv-route:after{content:"";background:var(--line);border-radius:3px;width:3px;position:absolute;top:14px;bottom:14px;left:15px}.tv-route:after{background:var(--brand);transform-origin:top;animation:tv-draw var(--dur,1.2s) cubic-bezier(.3, .6, .2, 1) both}@keyframes tv-draw{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.tv-route li{min-height:48px;animation:.35s cubic-bezier(.2,.7,.2,1) both pl-in;animation-delay:calc(min(var(--i,0), 40) * 28ms);grid-template-columns:1fr auto;gap:8px;padding:8px 0 8px 42px;display:grid;position:relative}.tv-route li:before{content:"";border:3px solid var(--brand);background:var(--bg);z-index:1;border-radius:50%;width:15px;height:15px;position:absolute;top:15px;left:9px}.tv-route li.end:before{background:var(--brand)}.tv-route li.hit{font-weight:700}.tv-route li.hit:before{background:var(--accent);border-color:var(--accent);transform:scale(1.15)}.tv-route .tm{text-align:right;font-variant-numeric:tabular-nums;font-size:14px}.tv-route .tm small,.tv-route .nm small{color:var(--muted);font-size:12.5px;font-weight:400;display:block}.tv-skel{gap:10px;display:grid}.tv-skel i{background:linear-gradient(90deg, var(--surface) 0%, color-mix(in srgb, var(--line) 60%, var(--surface)) 50%, var(--surface) 100%);background-size:200% 100%;border-radius:16px;height:74px;animation:1.2s linear infinite tv-shimmer}@keyframes tv-shimmer{to{background-position:-200% 0}}.tv-stale{font-size:14px}.tv-slabs{border:1px solid var(--line);border-radius:12px;height:44px;margin:6px 0 22px;display:flex;position:relative;overflow:hidden}.tv-slabs>span{color:var(--ink);border-right:1px solid var(--bg);text-align:center;place-items:center;font-size:12.5px;font-weight:700;line-height:1.15;transition:opacity .25s;display:grid}.tv-slabs .s0{background:var(--dt-yes-bg)}.tv-slabs .s1{background:color-mix(in srgb, var(--dt-warn-bg) 70%, var(--dt-yes-bg))}.tv-slabs .s2{background:var(--dt-warn-bg)}.tv-slabs .s3{background:var(--dt-no-bg)}.tv-slabs>span.dim{opacity:.45}.tv-marker{background:var(--ink);width:3px;transform:translateX(var(--x,0px));border-radius:3px;transition:transform .45s cubic-bezier(.2,.7,.2,1);position:absolute;top:-6px;bottom:-6px;left:0}.tv-axis{height:18px;color:var(--muted);margin:-16px 0 6px;font-size:12px;position:relative}.tv-axis span{white-space:nowrap;position:absolute;top:0;transform:translate(-50%)}.tv-axis span:first-child{transform:none}.tv-axis span:last-child{transform:translate(-100%)}.tv-hours{grid-template-columns:1fr auto;align-items:center;gap:10px;display:grid}.tv-hours input[type=range]{width:100%;min-height:44px;accent-color:var(--brand)}.tv-count{flex-wrap:wrap;gap:8px;display:flex}.tv-count span{background:var(--surface);border:1px solid var(--line);text-align:center;border-radius:14px;min-width:64px;padding:10px 8px}.tv-count b{font-variant-numeric:tabular-nums;font-size:28px;line-height:1.1;display:block}.tv-count b.tick{animation:.3s ease-out tv-tick}@keyframes tv-tick{0%{opacity:.4;transform:translateY(-6px)}}.tv-count small{color:var(--muted);font-size:12px}.tv-chips{flex-wrap:wrap;gap:8px;display:flex}.tv-chip{border:1px solid var(--line);background:var(--surface);min-height:44px;color:var(--ink);font:inherit;cursor:pointer;border-radius:999px;padding:6px 14px;font-size:14.5px;transition:transform .15s,background-color .2s,border-color .2s}.tv-chip:active{transform:scale(.95)}.tv-chip[aria-pressed=true]{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.tv-lines{gap:8px;margin:0;padding:0;list-style:none;display:grid}.tv-lines li{border:1px solid var(--line);border-radius:14px;gap:4px;padding:10px 12px;animation:.3s cubic-bezier(.2,.7,.2,1) both pl-pop;display:grid}.tv-lines .hd{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.tv-lines .sec{color:var(--muted);font-size:12.5px}.tv-lines label{align-items:center;gap:6px;min-height:36px;font-size:14px;display:inline-flex}.tv-badge{background:var(--dt-no-bg);color:var(--dt-no);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:700;display:inline-block}.tv-badge.ok{background:var(--dt-yes-bg);color:var(--dt-yes)}.tv-road{background:#2b2e34;border-radius:14px;height:64px;margin:4px 0 8px;position:relative;overflow:hidden}.tv-road:before{content:"";opacity:.85;background:repeating-linear-gradient(90deg,#f3d36b 0 18px,#0000 18px 34px);height:3px;margin-top:-1.5px;position:absolute;top:50%;left:0;right:0}.tv-road .plaza{background:var(--accent);transform-origin:bottom;width:8px;animation:.35s cubic-bezier(.2,.7,.2,1) both tv-rise;animation-delay:calc(var(--i,0) * 50ms);border-radius:4px;margin-left:-4px;position:absolute;top:8px;bottom:8px}@keyframes tv-rise{0%{transform:scaleY(0)}}.tv-road .car{width:34px;height:18px;box-shadow:inset 0 -4px 0 var(--brand);background:#fff;border-radius:6px 10px 6px 6px;margin-top:-9px;animation:4.5s linear infinite tv-drive;position:absolute;top:50%;left:0}@keyframes tv-drive{0%{transform:translate(-40px)}to{transform:translateX(var(--road,340px))}}.tv-stepper{grid-template-columns:48px 1fr 48px;align-items:center;gap:6px;display:grid}.tv-stepper button{border:1px solid var(--line);background:var(--surface);min-height:48px;color:var(--ink);cursor:pointer;border-radius:12px;font-size:22px;font-weight:700}.tv-stepper button:active{transform:scale(.94)}.tv-stepper output{text-align:center;font-variant-numeric:tabular-nums;font-size:26px;font-weight:800}.tv-guides{gap:12px;display:grid}.tv-guide{border:1px solid var(--line);border-radius:var(--dt-radius);background:var(--surface);animation:.45s cubic-bezier(.2,.7,.2,1) both pl-in;animation-delay:calc(var(--i,0) * 70ms)}.tv-guide summary{cursor:pointer;grid-template-columns:1fr auto;align-items:center;gap:2px 10px;min-height:56px;padding:12px 16px;list-style:none;display:grid}.tv-guide summary::-webkit-details-marker{display:none}.tv-guide summary strong{font-size:17px}.tv-guide summary span{color:var(--muted);grid-column:1;font-size:14px}.tv-guide summary i{grid-area:1/2/span 2;font-size:20px;font-style:normal;transition:transform .25s}.tv-guide[open] summary i{transform:rotate(45deg)}.tv-guide .body{padding:0 16px 16px}.tv-guide[open] .body{animation:.3s cubic-bezier(.2,.7,.2,1) both pl-pop}.tv-codes{grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr));gap:8px;display:grid}.tv-codes div{border:1px solid var(--line);border-radius:12px;padding:8px 10px}.tv-codes b{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.tv-codes span{color:var(--muted);font-size:13.5px;display:block}@media (prefers-reduced-motion:reduce){.tv-results>li,.tv-route li,.tv-route:after,.tv-train .line:after,.tv-lines li,.tv-road .plaza,.tv-guide,.tv-guide[open] .body,.tv-list,.tv-count b.tick{animation:none!important}.tv-road .car{animation:none;transform:translate(12px)}.tv-skel i{animation:none}.tv-tabs .tv-pill,.tv-marker,.tv-swap{transition:none}}.reduce-motion .tv-results>li,.reduce-motion .tv-route li,.reduce-motion .tv-route:after,.reduce-motion .tv-train .line:after,.reduce-motion .tv-lines li,.reduce-motion .tv-road .plaza,.reduce-motion .tv-road .car,.reduce-motion .tv-guide,.reduce-motion .tv-skel i{animation:none!important}
