:root,:root[data-theme=dark],[data-theme=dark]{--bg:#0b0e14;--bg-elev:#161b26;--bg-elev-2:#1f2633;--border:#2a3242;--text:#f2f5fa;--text-muted:#9aa6b8;--text-dim:#6b7686;--accent:#4da3ff;--route-bg:#e2231a;--route-text:#fff;--due:#ffd23f;--warn:#ff8a4c;--error:#ff6b6b;--shadow:0 1px 0 #ffffff08 inset, 0 8px 24px #00000059}:root[data-theme=light],[data-theme=light]{--bg:#eef1f6;--bg-elev:#fff;--bg-elev-2:#f4f6fa;--border:#d4dae4;--text:#11161f;--text-muted:#56617a;--text-dim:#8893a6;--accent:#1f6fe0;--route-bg:#e2231a;--route-text:#fff;--due:#b8860b;--warn:#c2410c;--error:#c0392b;--shadow:0 1px 2px #1018280f, 0 8px 24px #10182814}[data-theme]{color:var(--text)}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;overflow:hidden}button,input,select{color:inherit;font-family:inherit}a{color:var(--accent)}h1,h2{margin:0;font-weight:700}.btn-primary,.btn-secondary,.btn-ghost{cursor:pointer;border:1px solid #0000;border-radius:10px;padding:.6em 1.1em;font-size:1rem;font-weight:600;transition:background .15s,border-color .15s,opacity .15s}.btn-primary{background:var(--accent);color:#fff}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-secondary{background:var(--bg-elev-2);border-color:var(--border)}.btn-secondary:hover:not(:disabled){border-color:var(--accent)}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{border-color:var(--border);color:var(--text-muted);background:0 0}.btn-ghost:hover{color:var(--text)}.display-screen{background:var(--bg);flex-direction:column;height:100dvh;display:flex}.stop-grid{grid-template-columns:repeat(var(--cols,1), 1fr);flex:1;grid-auto-rows:1fr;gap:clamp(8px,1vw,18px);min-height:0;padding:clamp(8px,1vw,18px);display:grid}.stop-card{background:var(--bg-elev);border:1px solid var(--border);min-height:0;box-shadow:var(--shadow);border-radius:16px;flex-direction:column;display:flex;overflow:hidden}.stop-card.is-stale{opacity:.7}.stop-header{border-bottom:1px solid var(--border);background:var(--bg-elev-2);padding:clamp(10px,1.2vw,20px) clamp(12px,1.4vw,24px)}.stop-title{align-items:center;gap:.6em;display:flex}.stop-name{letter-spacing:-.01em;font-size:clamp(1.1rem,1.9vw,2.3rem);line-height:1.1}.stop-letter{background:var(--text);min-width:1.8em;height:1.8em;color:var(--bg);border-radius:8px;flex:none;place-items:center;padding:0 .35em;font-size:clamp(.9rem,1.3vw,1.6rem);font-weight:800;display:inline-grid}.stop-letter.sm{border-radius:6px;min-width:1.5em;height:1.5em;font-size:.85rem}.stop-towards{color:var(--text-muted);margin:.35em 0 0;font-size:clamp(.8rem,1.1vw,1.25rem)}.page-dots{flex:none;align-items:center;gap:clamp(4px,.5vw,8px);margin-left:auto;padding-left:.5em;display:inline-flex}.page-dot{background:var(--text-dim);opacity:.4;border-radius:50%;width:clamp(7px,.7vw,12px);height:clamp(7px,.7vw,12px);transition:opacity .3s,background .3s}.page-dot.is-active{background:var(--accent);opacity:1}.arrival-list{flex-direction:column;flex:1;justify-content:flex-start;min-height:0;display:flex;overflow:hidden}.arrival-row{border-bottom:1px solid var(--border);flex:1 1 0;grid-template-columns:auto 1fr auto;align-items:center;gap:clamp(8px,1vw,20px);min-height:0;max-height:clamp(64px,12vh,132px);padding:clamp(4px,.7vw,14px) clamp(12px,1.4vw,24px);display:grid}.arrival-row:last-child{border-bottom:none}.route-badge{background:var(--route-bg);min-width:2.2em;color:var(--route-text);letter-spacing:.01em;border-radius:8px;flex:none;place-items:center;padding:.12em .4em;font-size:clamp(1.3rem,2.2vw,2.8rem);font-weight:800;display:inline-grid}.destination{min-width:0;font-size:clamp(1rem,1.6vw,2rem);font-weight:600;overflow:hidden}.destination-text{white-space:nowrap;text-overflow:ellipsis;vertical-align:middle;max-width:100%;display:inline-block;overflow:hidden}.destination-text.is-marquee{text-overflow:clip;max-width:none;animation:destination-marquee var(--marquee-dur,8s) linear infinite;will-change:transform;overflow:visible}@keyframes destination-marquee{0%,15%{transform:translate(0)}85%,to{transform:translateX(var(--marquee-x,0))}}@media (prefers-reduced-motion:reduce){.destination-text.is-marquee{text-overflow:ellipsis;max-width:100%;animation:none;overflow:hidden}}.countdown{font-variant-numeric:tabular-nums;justify-self:end;align-items:baseline;gap:.3em;display:flex}.countdown .times{align-items:baseline;gap:.3em;display:flex}.time-item{align-items:baseline;gap:.3em;display:inline-flex}.time-sep{color:var(--text-dim);font-size:clamp(1rem,1.8vw,2.2rem);font-weight:600}.countdown .mins{font-size:clamp(1.6rem,2.8vw,3.6rem);font-weight:800;line-height:1}.countdown .unit{color:var(--text-muted);font-size:clamp(.8rem,1.1vw,1.3rem)}.countdown .due-label{color:var(--due);text-transform:uppercase;letter-spacing:.04em;font-size:clamp(1.3rem,2.2vw,2.8rem);font-weight:800}.arrival-empty{color:var(--text-dim);margin:0;padding:clamp(10px,1.4vw,24px);font-size:clamp(1rem,1.4vw,1.6rem)}.arrival-list.is-dynamic .arrival-row{max-height:none;padding-top:clamp(2px,.6vh,12px);padding-bottom:clamp(2px,.6vh,12px);container-type:size}.arrival-list.is-dynamic .route-badge{font-size:min(clamp(1.3rem,2.2vw,2.8rem),48cqh)}.arrival-list.is-dynamic .destination{font-size:min(clamp(1rem,1.6vw,2rem),34cqh)}.arrival-list.is-dynamic .countdown .mins{font-size:min(clamp(1.6rem,2.8vw,3.6rem),52cqh)}.arrival-list.is-dynamic .countdown .due-label,.arrival-list.is-dynamic .countdown .time-sep{font-size:min(clamp(1.3rem,2.2vw,2.8rem),42cqh)}.arrival-list.is-dynamic .countdown .unit{font-size:min(clamp(.8rem,1.1vw,1.3rem),22cqh)}.status-bar{border-top:1px solid var(--border);background:var(--bg-elev);color:var(--text-muted);flex:none;justify-content:space-between;align-items:center;padding:.4em clamp(12px,1.4vw,24px);font-size:clamp(.85rem,1.1vw,1.3rem);display:flex}.status-left{align-items:center;gap:.7em;display:flex}.status-center{justify-content:center;align-items:center;display:flex}.datestamp{color:var(--text-muted);font-weight:600}.stop-page-dots{align-items:center;gap:clamp(5px,.6vw,10px);display:inline-flex}.brand{font-weight:600}.status-right{align-items:center;gap:1em;display:flex}.status-warn{color:var(--warn);font-weight:700}.clock{font-variant-numeric:tabular-nums;color:var(--text);font-weight:700}.settings-gear,.fs-btn{border:1px solid var(--border);background:var(--bg-elev-2);width:1.9em;height:1.9em;color:var(--text);cursor:pointer;border-radius:8px;place-items:center;font-size:1.15em;line-height:1;transition:color .15s,border-color .15s,background .15s;display:inline-grid}.settings-gear:hover,.settings-gear:focus-visible,.fs-btn:hover,.fs-btn:focus-visible{color:var(--accent);border-color:var(--accent)}.empty-state{text-align:center;flex-direction:column;align-items:center;gap:1rem;margin:auto;padding:2rem;display:flex}.empty-state h1{font-size:clamp(2rem,5vw,4rem)}.empty-state p{color:var(--text-muted);margin:0;font-size:1.2rem}.preview-screen{height:100dvh;position:relative}.preview-bar{z-index:10;border:1px solid var(--border);background:color-mix(in srgb, var(--bg-elev) 90%, transparent);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:12px;align-items:center;gap:.75rem;padding:.45rem .6rem .45rem .9rem;display:flex;position:fixed;bottom:52px;left:50%;transform:translate(-50%)}.preview-badge{letter-spacing:.04em;text-transform:uppercase;color:var(--warn);font-size:.8rem;font-weight:700}.settings-screen{background:var(--bg);height:100dvh;color:var(--text);overflow-y:auto}.settings-header{z-index:1;background:var(--bg-elev);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:1rem;padding:1rem clamp(16px,4vw,48px);display:flex;position:sticky;top:0}.settings-header h1{font-size:clamp(1.1rem,2.2vw,1.6rem)}.settings-actions{gap:.6rem;display:flex}.settings-body{flex-direction:column;gap:1.25rem;max-width:820px;margin:0 auto;padding:clamp(16px,3vw,32px);display:flex}.settings-section{background:var(--bg-elev);border:1px solid var(--border);border-radius:14px;padding:1.1rem 1.25rem}.settings-section h2{margin-bottom:.75rem;font-size:1.15rem}.section-head{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.opt-group+.opt-group{border-top:1px solid var(--border);margin-top:1.1rem;padding-top:1.1rem}.opt-group-title{text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);margin:0 0 .6rem;font-size:.78rem;font-weight:700}.opt-group .field-grid{margin-bottom:0}.opt-group .warn-text:first-of-type,.opt-group .rate-info:first-of-type{margin-top:.6rem}.section-head h2{margin:0}.hint{color:var(--text-muted);margin:0 0 .75rem;font-size:.9rem;line-height:1.45}.muted{color:var(--text-muted);font-size:.95rem}.error-text{color:var(--error);margin:.5rem 0 0;font-size:.95rem}.warn-text{color:var(--warn);margin:.6rem 0 0;font-size:.9rem;line-height:1.45}.rate-info{color:var(--text-muted);margin:.6rem 0 0;font-size:.85rem}.text-input,select{border:1px solid var(--border);background:var(--bg-elev-2);width:100%;color:var(--text);border-radius:10px;padding:.6em .75em;font-size:1rem}.text-input:focus,select:focus{outline:2px solid var(--accent);outline-offset:1px}.location-controls{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.postcode-form{flex:1;gap:.5rem;min-width:240px;display:flex}.postcode-form .text-input{flex:1}.postcode-form .btn-secondary{white-space:nowrap}.location-current{margin:.85rem 0 0;font-size:1rem}.radius-select{color:var(--text-muted);align-items:center;gap:.5rem;font-size:.9rem;display:flex}.radius-select select{width:auto}.stop-map-wrap{margin-bottom:1rem;position:relative}.stop-map{z-index:0;border:1px solid var(--border);border-radius:12px;width:100%;height:clamp(280px,38vh,460px);position:relative}.map-search-here{z-index:5;border:1px solid var(--accent);background:var(--bg-elev);color:var(--text);cursor:pointer;border-radius:999px;padding:.45em 1em;font-size:.9rem;font-weight:600;position:absolute;top:12px;left:50%;transform:translate(-50%);box-shadow:0 2px 12px #00000073}.map-search-here:hover{background:var(--bg-elev-2)}.stop-pin{background:var(--bg-elev-2);width:30px;height:30px;color:var(--text);border:2px solid var(--text-muted);border-radius:50%;place-items:center;font-size:12px;font-weight:800;line-height:1;display:grid;box-shadow:0 2px 6px #00000080}.stop-pin.is-sel{background:var(--route-bg);color:#fff;border-color:#fff}.map-tip-lines{margin-top:3px}.map-tip-line{background:var(--route-bg);color:#fff;border-radius:4px;margin:2px 2px 0 0;padding:0 4px;font-size:10px;font-weight:700;display:inline-block}.selected-chips{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.chips-hint{margin:0 0 .5rem}.chip{border:1px solid var(--accent);background:color-mix(in srgb, var(--accent) 16%, transparent);color:var(--text);-webkit-user-select:none;user-select:none;border-radius:999px;align-items:center;gap:.4em;padding:.35em .55em;font-size:.9rem;display:inline-flex}.chip.is-dragging{opacity:.45}.drop-line{background:var(--accent);width:3px;min-height:1.8em;box-shadow:0 0 6px color-mix(in srgb, var(--accent) 70%, transparent);pointer-events:none;border-radius:2px;align-self:stretch}.chip-grip{color:var(--text-dim);letter-spacing:-.12em;cursor:grab;touch-action:none;align-items:center;margin:-.2em 0;padding:.2em .15em;font-size:1.05em;line-height:1;display:inline-flex}.chip-grip:active{cursor:grabbing;color:var(--text)}.chip-letter{font-weight:800}.chip-x{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0 .15em;font-size:1.15em;font-weight:700;line-height:1}.chip-x:hover{color:var(--text)}.stop-options{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.stop-option{border:1px solid var(--border);background:var(--bg-elev-2);cursor:pointer;border-radius:10px;align-items:center;gap:.75rem;padding:.6rem .75rem;display:flex}.stop-option.is-selected{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, var(--bg-elev-2))}.stop-option input{flex:none;width:1.15rem;height:1.15rem}.stop-option-main{flex-direction:column;flex:1;gap:.25rem;min-width:0;display:flex}.stop-option-name{align-items:center;gap:.5rem;font-weight:600;display:flex}.stop-option-lines{flex-wrap:wrap;gap:.3rem;display:flex}.line-pill{background:var(--route-bg);color:var(--route-text);border-radius:6px;padding:.05em .45em;font-size:.78rem;font-weight:700}.stop-option-dist{color:var(--text-muted);font-variant-numeric:tabular-nums;flex:none;font-size:.85rem}.field-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.9rem;margin-bottom:.9rem;display:grid}.field{color:var(--text-muted);flex-direction:column;gap:.35rem;font-size:.9rem;display:flex}.field-check{align-items:center;gap:.5rem;padding:.3rem 0;font-size:.95rem;display:flex}.field-check input{width:1.1rem;height:1.1rem}
