:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#f4f8f7;background:#07101a;font-synthesis:none;text-rendering:optimizeLegibility;--bg: #07101a;--surface: #0d1925;--surface-raised: #122230;--surface-soft: #162735;--line: rgba(203, 225, 223, .12);--line-bright: rgba(203, 225, 223, .2);--text: #f4f8f7;--muted: #92a7aa;--mint: #54e6ba;--mint-deep: #23b88f;--mint-ink: #05231c;--amber: #ffc86a;--red: #ff7a83;--shadow: 0 24px 70px rgba(0, 0, 0, .3)}*{box-sizing:border-box}html{min-width:300px;min-height:100%;background:var(--bg);scroll-behavior:smooth}body{min-width:300px;min-height:100vh;margin:0;overflow-x:hidden;background:radial-gradient(circle at 8% -5%,rgba(37,151,132,.19),transparent 31rem),radial-gradient(circle at 105% 20%,rgba(31,72,104,.21),transparent 30rem),var(--bg)}body:before{position:fixed;inset:0;z-index:-1;background-image:linear-gradient(rgba(255,255,255,.015) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.012) 1px,transparent 1px);background-size:32px 32px;content:"";pointer-events:none;-webkit-mask-image:linear-gradient(to bottom,black,transparent 70%);mask-image:linear-gradient(to bottom,black,transparent 70%)}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}button:not(:disabled){cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,h1:focus-visible{outline:3px solid rgba(84,230,186,.75);outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:10px;left:10px;z-index:100;padding:10px 14px;color:var(--mint-ink);background:var(--mint);border-radius:10px;font-weight:800;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.app-shell{width:min(100%,680px);min-height:100vh;margin:0 auto;padding-bottom:calc(92px + env(safe-area-inset-bottom))}.app-header{display:flex;align-items:center;justify-content:space-between;min-height:82px;padding:max(16px,env(safe-area-inset-top)) 18px 12px}.brand{display:inline-flex;padding:0;align-items:center;gap:11px;color:var(--text);font:inherit;text-align:left;background:transparent;border:0;text-decoration:none}.brand-mark{display:grid;width:42px;height:42px;place-items:center;color:var(--mint-ink);background:linear-gradient(145deg,#78f2cc,#3bd1a6);border:1px solid rgba(255,255,255,.4);border-radius:14px;box-shadow:0 8px 24px #28cd9e33}.brand-mark svg{width:23px}.brand>span:last-child{display:flex;flex-direction:column}.brand strong{font-size:1.02rem;letter-spacing:-.025em}.brand small{margin-top:1px;color:var(--muted);font-size:.68rem}.network-status{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 11px;color:#b6c9c9;background:#0e1e2ac7;border:1px solid var(--line);border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.02em;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.network-status.offline{color:var(--amber)}.network-status svg{width:14px;height:14px}.status-dot{width:7px;height:7px;background:var(--mint);border-radius:50%;box-shadow:0 0 0 4px #54e6ba1a,0 0 12px #54e6ba99}main{display:grid;min-height:calc(100vh - 190px);align-content:start;gap:16px;padding:13px 16px 0}.routes-section{min-width:0}.section-heading-row{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:14px;padding-inline:2px}.eyebrow{margin:0 0 4px;color:var(--mint);font-size:.64rem;font-weight:850;letter-spacing:.15em}h1,h2,h3,p{margin-top:0}h1{margin-bottom:0;font-size:clamp(1.42rem,6vw,1.8rem);line-height:1.1;letter-spacing:-.045em}h2{margin-bottom:0;font-size:1.02rem;line-height:1.25;letter-spacing:-.025em}.carousel-buttons{display:none;gap:6px}.carousel-buttons button,.icon-button,.quiet-icon{display:grid;flex:0 0 auto;width:42px;height:42px;padding:0;place-items:center;color:#b6c8ca;background:#132330e0;border:1px solid var(--line);border-radius:13px}.carousel-buttons button:first-child svg{transform:rotate(180deg)}.carousel-buttons button:disabled,.icon-button:disabled{opacity:.32;cursor:default}.carousel-buttons svg,.icon-button svg,.quiet-icon svg{width:19px;height:19px}.routes-track{display:flex;gap:12px;margin-inline:-16px;padding:2px 48px 5px 16px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-padding-left:16px;scroll-snap-type:x mandatory;scrollbar-width:none}.routes-track::-webkit-scrollbar{display:none}.route-card{position:relative;flex:0 0 calc(100% - 31px);min-width:0;padding:15px 14px 14px;overflow:hidden;background:linear-gradient(120deg,rgba(84,230,186,.07),transparent 45%),linear-gradient(145deg,#112331,#0d1b28);border:1px solid var(--line-bright);border-radius:24px;box-shadow:0 14px 38px #00000029;scroll-snap-align:center;scroll-snap-stop:always}.route-card:after{position:absolute;top:-70px;right:-60px;width:180px;height:150px;background:radial-gradient(circle,rgba(84,230,186,.09),transparent 68%);content:"";pointer-events:none}.route-card.legacy-duplicate,.route-card.duplicate-relation{border-color:#ffc86a4d}.route-card.route-draft{border-color:#54e6ba6b;box-shadow:0 14px 38px #00000029,0 0 0 1px #54e6ba14 inset}.route-card-topline{display:flex;align-items:center;justify-content:space-between;min-height:27px;margin-bottom:5px}.route-number{color:#829a9e;font-size:.61rem;font-weight:850;letter-spacing:.14em}.route-card-meta,.route-alarm-count{display:flex;align-items:center}.route-card-meta{gap:5px}.route-duplicate-badge{padding:4px 6px;color:var(--amber);background:#ffc86a14;border:1px solid rgba(255,200,106,.18);border-radius:999px;font-size:.7rem;font-weight:850;letter-spacing:.06em}.route-duplicate-note,.route-draft-note{position:relative;z-index:1;margin:3px 2px 8px;color:#aebfc1;font-size:.7rem;line-height:1.45}.route-duplicate-note{color:#d9bd86}.route-alarm-count{gap:5px;color:#9fdcca;font-size:.58rem;font-weight:760}.route-alarm-count svg{width:13px;height:13px}.quiet-icon{position:relative;z-index:1;width:30px;height:30px;background:transparent;border-color:transparent;border-radius:9px}.quiet-icon:hover{color:var(--red);background:#ff7a8317}.quiet-icon svg{width:16px;height:16px}.station-grid{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 38px minmax(0,1fr);align-items:center;gap:4px}.station-button{display:flex;min-width:0;min-height:94px;padding:12px 4px 10px;flex-direction:column;align-items:flex-start;text-align:left;background:none;border:0;border-radius:14px}.station-button:hover{background:#ffffff09}.station-button>span{margin-bottom:8px;color:#8ca3a6;font-size:.68rem;font-weight:650}.station-button strong{display:-webkit-box;width:100%;overflow:hidden;color:#f5f8f8;font-size:clamp(.94rem,4.5vw,1.08rem);line-height:1.15;letter-spacing:-.025em;text-overflow:ellipsis;-webkit-box-orient:vertical;-webkit-line-clamp:2}.station-button small{margin-top:7px;color:#668087;font-size:.59rem}.station-button-to{align-items:flex-end;text-align:right}.station-select-field{display:flex;min-width:0;min-height:94px;padding:10px 2px 8px;flex-direction:column;justify-content:center}.station-select-field>span:first-child{margin-bottom:7px;color:#8ca3a6;font-size:.68rem;font-weight:650}.station-select-control{position:relative;display:flex;min-width:0;align-items:center}.station-select-control select{width:100%;min-width:0;min-height:48px;padding:8px 30px 8px 10px;overflow:hidden;color:#f5f8f8;background:#ffffff09;border:1px solid rgba(203,225,223,.12);border-radius:12px;outline:0;font:inherit;font-size:clamp(.78rem,3.8vw,.94rem);font-weight:720;line-height:1.2;text-overflow:ellipsis;appearance:none}.station-select-control select:focus-visible{border-color:#54e6ba8c;box-shadow:0 0 0 3px #54e6ba14}.station-select-control select:disabled{opacity:.55}.station-select-control option{color:#f5f8f8;background:#112331}.station-select-control svg{position:absolute;right:9px;width:14px;color:var(--mint);transform:rotate(90deg);pointer-events:none}.station-select-field>small{margin-top:6px;color:#91a7aa;font-size:.6rem}.swap-button{position:relative;z-index:2;display:grid;width:38px;height:38px;padding:0;place-items:center;color:var(--mint);background:#172c39;border:1px solid rgba(84,230,186,.25);border-radius:50%;box-shadow:0 0 0 6px #09161fd1}.swap-button:before,.swap-button:after{position:absolute;top:50%;z-index:-2;width:16px;height:1px;background:#54e6ba2e;content:""}.swap-button:before{right:100%}.swap-button:after{left:100%}.swap-button svg{width:18px;height:18px}.route-controls{display:flex;align-items:center;justify-content:space-between;min-height:39px;padding:5px 3px 0}.carousel-dots{display:flex;align-items:center;gap:6px}.carousel-dots button{width:18px;height:18px;padding:0;background:transparent;border:0;border-radius:99px}.carousel-dots button:after{display:block;width:5px;height:5px;margin:auto;background:#3e535c;border-radius:inherit;content:"";transition:width .2s ease,background .2s ease}.carousel-dots button.active:after{width:17px;background:var(--mint)}.add-route-button{display:inline-flex;align-items:center;gap:5px;min-height:36px;padding:0 6px;color:#a9bebf;background:transparent;border:0;border-radius:9px;font-size:.7rem;font-weight:750}.add-route-button:hover{color:var(--mint);background:#54e6ba0d}.add-route-button svg{width:16px}.add-route-button:disabled,.compact-add-button:disabled{opacity:.45;cursor:default}.route-departures-button{position:relative;z-index:1;display:flex;width:100%;min-height:36px;margin-top:4px;padding:0 10px;align-items:center;justify-content:space-between;color:#a8c2c1;background:#ffffff06;border:1px solid rgba(203,225,223,.08);border-radius:12px;font-size:.7rem;font-weight:760}.route-departures-button:hover{color:var(--mint);background:#54e6ba0d;border-color:#54e6ba29}.route-departures-button:disabled,.swap-button:disabled,.quiet-icon:disabled{opacity:.45;cursor:default}.route-departures-button svg{width:15px;height:15px}.route-departures-button.save-route-draft{justify-content:center;gap:8px;color:#071914;background:var(--mint);border-color:var(--mint);font-weight:850}.station-board{position:relative;overflow:hidden;background:radial-gradient(circle at 88% -12%,rgba(84,230,186,.13),transparent 18rem),linear-gradient(155deg,#101f2c,#091722 72%);border:1px solid var(--line-bright);border-radius:28px;box-shadow:0 24px 70px #00000052}.station-board:before{position:absolute;inset:0;opacity:.26;background-image:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px);background-size:100% 4px;content:"";pointer-events:none}.board-heading{position:relative;display:flex;min-height:112px;padding:20px 19px 16px;align-items:flex-start;justify-content:space-between;gap:15px}.board-heading h1{font-size:clamp(1.55rem,7vw,2rem)}.board-heading>div>p:last-child{margin:8px 0 0;color:#92a7aa;font-size:.72rem}.board-refresh{display:grid;width:43px;height:43px;flex:0 0 auto;padding:0;place-items:center;color:var(--mint);background:#54e6ba13;border:1px solid rgba(84,230,186,.18);border-radius:14px}.board-refresh:disabled{opacity:.38}.board-refresh svg{width:19px}.board-columns,.board-row{position:relative;display:grid;grid-template-columns:78px minmax(0,1fr) minmax(78px,auto);column-gap:11px}.board-columns{min-height:27px;padding:0 16px;align-items:center;color:#8ca3a6;background:#00000024;border-block:1px solid rgba(255,255,255,.045);font-size:.7rem;font-weight:820;letter-spacing:.12em;text-transform:uppercase}.board-columns span:last-child{text-align:right}.board-list{position:relative}.board-row{width:100%;min-height:108px;padding:13px 16px;align-items:center;color:var(--text);text-align:left;background:transparent;border:0;border-bottom:1px solid rgba(203,225,223,.075);transition:background .18s ease}.board-row:last-child{border-bottom:0}.board-row:hover,.board-row:focus-visible{background:#54e6ba0b}.board-row.is-next:after{position:absolute;top:17px;bottom:17px;left:0;width:3px;background:var(--mint);border-radius:0 99px 99px 0;box-shadow:0 0 15px #54e6bab3;content:""}.board-time,.board-direction,.board-wait{display:flex;min-width:0;flex-direction:column}.board-time strong{color:#f4faf8;font-size:1.36rem;font-weight:760;line-height:1;letter-spacing:-.055em;font-variant-numeric:tabular-nums}.board-time small{margin-top:5px;color:#92a7aa;font-size:.7rem}.board-direction strong{overflow:hidden;font-size:.79rem;white-space:nowrap;text-overflow:ellipsis}.board-direction small{margin-top:3px;overflow:hidden;color:#9ab0b1;font-size:.72rem;white-space:nowrap;text-overflow:ellipsis}.board-direction small span{color:var(--mint)}.board-direction em{margin-top:6px;overflow:hidden;color:#8ca3a6;font-size:.7rem;font-style:normal;white-space:nowrap;text-overflow:ellipsis}.board-direction .board-arrival{color:#a9d8cd;font-weight:700}.board-direction .board-arrival time{color:#dff8f1;font-variant-numeric:tabular-nums}.board-direction .board-train{margin-top:3px}.board-wait{align-items:flex-end;text-align:right}.board-wait strong{max-width:108px;padding:7px 8px;color:var(--mint);background:#54e6ba13;border:1px solid rgba(84,230,186,.13);border-radius:10px;font-size:.7rem;font-weight:850;line-height:1.2}.board-wait strong svg{width:16px;height:16px}.board-wait small{margin-top:6px;color:#92a7aa;font-size:.7rem}.board-row.is-empty .board-time strong,.board-row.is-empty .board-direction strong{color:#8ca3a6}.board-empty-state{display:flex;min-height:245px;padding:28px 22px;flex-direction:column;align-items:center;justify-content:center;color:#849b9e;text-align:center}.board-empty-state>span{display:grid;width:48px;height:48px;margin-bottom:12px;place-items:center;color:var(--mint);background:#54e6ba14;border:1px solid rgba(84,230,186,.14);border-radius:15px}.board-empty-state svg{width:23px}.board-empty-state strong{color:#dce8e6;font-size:.87rem}.board-empty-state p{max-width:300px;margin:7px 0 15px;font-size:.68rem;line-height:1.55}.board-empty-state button,.stations-empty-state button{display:inline-flex;min-height:42px;padding:0 13px;align-items:center;gap:7px;color:#061510;background:var(--mint);border:0;border-radius:13px;font-size:.67rem;font-weight:850}.board-empty-state button svg,.stations-empty-state button svg{width:15px}.board-foot{position:relative;display:flex;min-height:48px;padding:7px 15px;align-items:center;justify-content:space-between;gap:10px;background:#00000029;border-top:1px solid rgba(255,255,255,.045)}.board-foot>span{display:inline-flex;align-items:center;gap:6px;color:#92a7aa;font-size:.7rem}.board-foot i{width:6px;height:6px;background:var(--mint);border-radius:50%;box-shadow:0 0 9px #54e6baa6}.board-foot button{display:inline-flex;padding:6px 0;align-items:center;gap:4px;color:#a4b9b9;background:transparent;border:0;font-size:.7rem;font-weight:750}.board-foot button svg{width:13px}.route-limit-notice{margin:0;padding:11px 13px;color:var(--amber);background:#ffc86a13;border:1px solid rgba(255,200,106,.2);border-radius:14px;font-size:.7rem;line-height:1.5}.departure-card,.alarms-card{overflow:hidden;background:linear-gradient(155deg,#122330f7,#0a1722fa);border:1px solid var(--line);border-radius:26px;box-shadow:var(--shadow)}.departure-card{position:relative;min-height:355px;padding:18px}.departure-card:before{position:absolute;top:-120px;left:25%;width:350px;height:240px;background:radial-gradient(circle,rgba(84,230,186,.1),transparent 68%);content:"";pointer-events:none}.departure-card-head,.alarms-head{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:10px}.departure-card-head>div{min-width:0}.departure-card-head h2{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.departure-card-head h2 span{padding-inline:2px;color:var(--mint)}.departure-summary{display:grid;grid-template-columns:1fr minmax(70px,.7fr) 1fr;align-items:center;margin-top:18px}.departure-summary>div:not(.train-line){display:flex;flex-direction:column}.departure-summary>div:last-child{align-items:flex-end;text-align:right}.departure-summary span{color:var(--muted);font-size:.66rem}.departure-summary strong{margin:2px 0 0;font-size:1.44rem;font-weight:780;letter-spacing:-.045em}.departure-summary small{color:#7f989c;font-size:.64rem}.departure-summary em{color:#536a70;font-size:.9rem;font-style:normal}.train-line{display:flex;align-items:center;padding-inline:6px}.train-line>span{flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(84,230,186,.32))}.train-line>span:last-child{background:linear-gradient(90deg,rgba(84,230,186,.32),transparent)}.train-line i{display:grid;flex:0 0 auto;width:30px;height:30px;place-items:center;color:var(--mint);background:#54e6ba1a;border-radius:50%}.train-line svg{width:16px;height:16px}.countdown-block{position:relative;display:flex;margin:17px 0 16px;padding:17px 7px 13px;flex-direction:column;align-items:center;background:#040d1578;border:1px solid rgba(84,230,186,.12);border-radius:20px;box-shadow:inset 0 1px #ffffff05}.countdown-label{margin-bottom:5px;color:#6f898c;font-size:.57rem;font-weight:800;letter-spacing:.17em}.countdown{color:#eafff8;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:clamp(2.5rem,13.6vw,4.8rem);font-weight:650;line-height:1;letter-spacing:-.085em;text-shadow:0 0 26px rgba(84,230,186,.16);font-variant-numeric:tabular-nums}.countdown-units{display:grid;width:min(82%,330px);margin-top:7px;grid-template-columns:repeat(3,1fr);color:#637d81;font-size:.57rem;text-align:center;text-transform:uppercase}.train-details{display:flex;align-items:center;justify-content:space-between;gap:12px}.train-details>span{display:flex;min-width:0;align-items:center;gap:8px;color:var(--mint)}.train-details>span>svg{flex:0 0 auto;width:18px}.train-details>span>span{display:flex;min-width:0;flex-direction:column}.train-details small{color:#758f92;font-size:.56rem}.train-details strong{max-width:120px;overflow:hidden;color:#cbd8d9;font-size:.69rem;white-space:nowrap;text-overflow:ellipsis}.train-details button{display:flex;min-height:40px;padding:0 4px 0 10px;align-items:center;color:#a9bcbe;background:transparent;border:0;border-radius:10px;font-size:.67rem;font-weight:700}.train-details button:hover{color:var(--mint);background:#54e6ba0d}.train-details button svg{width:15px}.course-reset-button{display:block;min-height:34px;margin:8px auto 0;padding:0 12px;color:#7f999b;background:transparent;border:0;border-radius:10px;font-size:.62rem;font-weight:720}.course-reset-button:hover{color:var(--mint);background:#54e6ba0d}.freshness-row{display:flex;min-height:24px;margin:14px -18px -18px;padding:8px 18px;align-items:center;color:#6e878b;background:#020a1038;border-top:1px solid rgba(255,255,255,.035);font-size:.58rem}.freshness-row>span:first-child{width:6px;height:6px;margin-right:6px;background:var(--mint);border-radius:50%}.freshness-row>span.stale:first-child{background:var(--amber)}.timer-loading{display:grid;min-height:270px;place-content:center;gap:12px}.timer-loading span{display:block;width:210px;height:14px;background:linear-gradient(90deg,#ffffff08,#ffffff14,#ffffff08);background-size:200% 100%;border-radius:8px;animation:shimmer 1.4s linear infinite}.timer-loading span:nth-child(2){width:270px;height:62px}.timer-loading span:nth-child(3){width:160px;justify-self:center}@keyframes shimmer{to{background-position:-200% 0}}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:spin .8s linear infinite}.empty-state{display:flex;min-height:270px;padding:30px 20px;flex-direction:column;align-items:center;justify-content:center;color:var(--muted);text-align:center}.empty-state>svg{width:37px;height:37px;margin-bottom:12px;color:var(--mint)}.empty-state h3{margin-bottom:5px;color:var(--text);font-size:.96rem}.empty-state p{max-width:290px;margin-bottom:14px;font-size:.72rem;line-height:1.5}.error-state>svg{color:var(--amber)}.secondary-button{min-height:40px;padding:0 15px;color:var(--mint);background:#54e6ba14;border:1px solid rgba(84,230,186,.18);border-radius:12px;font-size:.7rem;font-weight:750}.route-confirmation{display:flex;padding:16px;align-items:flex-start;gap:12px;color:#c9d8d7;background:#ff7a830e;border:1px solid rgba(255,122,131,.16);border-radius:16px}.route-confirmation-icon{display:grid;width:38px;height:38px;flex:0 0 auto;place-items:center;color:#ff9ca3;background:#ff7a831a;border-radius:12px}.route-confirmation-icon svg{width:18px}.route-confirmation strong{color:#fff1f2;font-size:.82rem}.route-confirmation p{margin:5px 0 0;color:#aebfbe;font-size:.7rem;line-height:1.55}.route-confirmation-actions{display:grid;margin-top:14px;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:8px}.route-confirmation-actions>button{min-height:46px;padding:0 11px;border-radius:13px;font-size:.68rem;font-weight:800}.route-confirmation-danger{display:flex;align-items:center;justify-content:center;gap:7px;color:#fff1f2;background:#cd3d49cc;border:1px solid rgba(255,156,163,.24)}.route-confirmation-danger svg{width:16px}.route-confirmation-actions>button:disabled{opacity:.52}.alarms-card{padding:18px}.alarms-head{justify-content:flex-start}.alarms-head .icon-button{margin-left:auto}.alarm-title-icon{display:grid;width:41px;height:41px;place-items:center;color:var(--mint);background:#54e6ba17;border:1px solid rgba(84,230,186,.14);border-radius:13px}.alarm-title-icon svg{width:20px}.alarm-course-context{display:flex;min-height:54px;margin:16px 0 0;padding:9px 11px;align-items:center;gap:10px;background:#54e6ba09;border:1px solid rgba(84,230,186,.1);border-radius:14px}.alarm-course-context>span{display:grid;width:32px;height:32px;flex:0 0 auto;place-items:center;color:var(--mint);background:#54e6ba17;border-radius:10px}.alarm-course-context svg{width:17px}.alarm-course-context p{display:flex;min-width:0;margin:0;flex-direction:column}.alarm-course-context strong{overflow:hidden;font-size:.71rem;white-space:nowrap;text-overflow:ellipsis}.alarm-course-context small{margin-top:3px;overflow:hidden;color:#748c8f;font-size:.56rem;white-space:nowrap;text-overflow:ellipsis}.alarm-countdown{display:grid;min-height:68px;margin:11px 0 0;padding:10px 12px;grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:12px;background:#030d156b;border:1px solid rgba(84,230,186,.12);border-radius:15px}.alarm-countdown>span{color:#839a9d;font-size:.7rem;font-weight:820;letter-spacing:.12em}.alarm-countdown time{justify-self:end;color:#eafff8;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:clamp(1.35rem,7vw,1.8rem);font-weight:700;line-height:1;letter-spacing:-.06em;font-variant-numeric:tabular-nums;text-shadow:0 0 20px rgba(84,230,186,.16)}.alarm-countdown small{grid-column:2;justify-self:end;margin-top:-4px;color:#718a8d;font-size:.7rem}.alarm-days{display:flex;margin:11px 2px -5px;align-items:center;gap:6px;color:#789094;font-size:.58rem}.alarm-days strong{color:#b9ccca;font-size:.62rem;font-weight:760}.alarm-pills{display:flex;margin:17px 0 15px;gap:8px;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}.alarm-pill{position:relative;display:grid;min-width:102px;min-height:78px;padding:10px 7px;grid-template-columns:auto auto;grid-template-rows:auto auto;place-content:center;align-items:baseline;column-gap:3px;color:#d8e4e3;background:#ffffff06;border:1px solid var(--line);border-radius:17px}.alarm-pill>span{position:absolute;top:7px;left:8px;display:grid;width:16px;height:16px;place-items:center;color:currentColor;background:color-mix(in srgb,currentColor 12%,transparent);border-radius:50%;font-size:.52rem;font-weight:800}.alarm-pill strong{font-size:1.42rem;line-height:1;font-variant-numeric:tabular-nums}.alarm-pill small{color:#83999c;font-size:.58rem}.alarm-pill em{grid-column:1 / -1;max-width:88px;margin-top:5px;overflow:hidden;color:#72898c;font-size:.54rem;font-style:normal;text-transform:uppercase;white-space:nowrap;text-overflow:ellipsis}.alarm-tone-early{--tone: var(--mint)}.alarm-tone-warning{--tone: var(--amber)}.alarm-tone-critical{--tone: var(--red)}.alarm-pill.alarm-tone-early,.alarm-editor.alarm-tone-early{color:var(--mint);border-color:#54e6ba29}.alarm-pill.alarm-tone-warning,.alarm-editor.alarm-tone-warning{color:var(--amber);border-color:#ffc86a29}.alarm-pill.alarm-tone-critical,.alarm-editor.alarm-tone-critical{color:var(--red);border-color:#ff7a8329}.alarm-empty{display:flex;min-height:76px;margin:14px 0;padding:14px;align-items:center;justify-content:center;gap:9px;color:#788f93;background:#ffffff05;border:1px dashed rgba(143,169,171,.14);border-radius:15px;font-size:.65rem;line-height:1.45;text-align:center}.alarm-empty svg{width:20px;flex:0 0 auto;color:#779a98}.alarm-empty p{margin:0}.alarm-empty-pick{min-height:100px;flex-direction:column}.alarm-empty-pick p{max-width:330px}.primary-button{display:inline-flex;min-height:52px;padding:0 20px;align-items:center;justify-content:center;gap:9px;color:var(--mint-ink);background:linear-gradient(135deg,#72edc6,#41d3a9);border:0;border-radius:16px;box-shadow:0 10px 25px #2cc2962b,inset 0 1px #fff6;font-size:.78rem;font-weight:850}.primary-button:hover:not(:disabled){filter:brightness(1.06);transform:translateY(-1px)}.primary-button:active:not(:disabled){transform:translateY(0)}.primary-button:disabled{opacity:.42;filter:grayscale(.5);cursor:default}.primary-button.success{background:#b5e9d8}.primary-button svg{width:19px;height:19px}.full-width{width:100%}.button-spinner,.mini-spinner{display:inline-block;width:17px;height:17px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}.alarm-mode{display:flex;margin:10px 0 0;align-items:center;justify-content:center;gap:6px;color:#91a7aa;font-size:.7rem}.alarm-mode>span{width:6px;height:6px;background:#5a6e72;border-radius:50%}.alarm-mode-push{color:#9bdac7}.alarm-mode-push>span{background:var(--mint);box-shadow:0 0 9px #54e6ba99}.alarm-mode-local{color:var(--amber)}.alarm-mode-local>span{background:var(--amber)}.alarm-mode-denied,.alarm-mode-error{color:var(--red)}.alarm-mode-denied>span,.alarm-mode-error>span{background:var(--red)}.trust-note{margin:11px 1px 0;color:#91a7aa;font-size:.7rem;line-height:1.5;text-align:center}.stations-card,.alarm-library{padding:18px;background:linear-gradient(155deg,#122330f7,#0a1722fa);border:1px solid var(--line);border-radius:26px;box-shadow:var(--shadow)}.compact-heading{align-items:center}.compact-add-button{display:inline-flex;min-height:40px;padding:0 12px;align-items:center;gap:6px;color:var(--mint);background:#54e6ba12;border:1px solid rgba(84,230,186,.16);border-radius:13px;font-size:.66rem;font-weight:780}.compact-add-button svg{width:16px}.monitored-stations{display:grid;gap:7px}.stations-empty-state,.routes-empty-state{display:flex;min-height:155px;padding:20px;flex-direction:column;align-items:center;justify-content:center;color:#81989b;background:#ffffff05;border:1px dashed rgba(203,225,223,.11);border-radius:17px;text-align:center}.stations-empty-state>span,.routes-empty-state>svg{display:grid;width:36px;height:36px;margin-bottom:9px;place-items:center;color:var(--mint)}.stations-empty-state>span svg{width:24px}.routes-empty-state>svg{width:27px}.stations-empty-state strong,.routes-empty-state strong{color:#cddcda;font-size:.76rem}.stations-empty-state p,.routes-empty-state p{max-width:310px;margin:6px 0 13px;font-size:.62rem;line-height:1.5}.routes-empty-state{width:calc(100% - 32px);min-height:190px;flex:0 0 calc(100% - 32px);scroll-snap-align:center}.stations-guidance{margin:9px 2px 0;color:var(--amber);font-size:.68rem;line-height:1.45}.monitored-station{display:grid;min-height:59px;padding:8px 8px 8px 4px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:7px;background:#ffffff06;border:1px solid rgba(203,225,223,.08);border-radius:15px}.monitored-station>span:nth-child(2){display:flex;min-width:0;flex-direction:column}.monitored-station strong{overflow:hidden;font-size:.73rem;white-space:nowrap;text-overflow:ellipsis}.monitored-station small{margin-top:3px;color:#9bb0b2;font-size:.75rem}.monitored-station button{display:grid;width:35px;height:35px;padding:0;place-items:center;color:#768e92;background:transparent;border:0;border-radius:10px}.monitored-station button:hover{color:var(--red);background:#ff7a8312}.monitored-station button svg{width:15px}.stations-note{margin:11px 2px 0;color:#91a7aa;font-size:.7rem;line-height:1.5}.alarm-total{display:inline-flex;min-height:34px;padding:0 10px;align-items:center;gap:5px;color:#9ed9c8;background:#54e6ba0f;border:1px solid rgba(84,230,186,.13);border-radius:99px;font-size:.58rem;font-weight:780}.alarm-total svg{width:14px}.alarm-plan-list{display:grid;gap:7px}.alarm-plan-list>button{display:grid;width:100%;min-height:70px;padding:9px 10px;grid-template-columns:52px minmax(0,1fr) auto 17px;align-items:center;gap:9px;color:var(--text);text-align:left;background:#ffffff06;border:1px solid rgba(203,225,223,.08);border-radius:16px}.alarm-plan-list>button:hover,.alarm-plan-list>button.selected{background:#54e6ba0d;border-color:#54e6ba2e}.alarm-plan-list time{color:var(--mint);font-size:1.03rem;font-weight:780;font-variant-numeric:tabular-nums}.alarm-plan-list>button>span:nth-of-type(1){display:flex;min-width:0;flex-direction:column}.alarm-plan-list>button>span:nth-of-type(1) strong,.alarm-plan-list>button>span:nth-of-type(1) small{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.alarm-plan-list>button>span:nth-of-type(1) strong{font-size:.68rem}.alarm-plan-list>button>span:nth-of-type(1) small{margin-top:4px;color:#91a7aa;font-size:.7rem}.alarm-plan-count{display:flex;min-width:31px;flex-direction:column;align-items:center;color:#a8bfbe}.alarm-plan-count strong{font-size:.82rem}.alarm-plan-count small{color:#91a7aa;font-size:.68rem}.alarm-plan-list svg{width:15px;color:#667f83}.alarm-library-empty{display:flex;min-height:145px;padding:20px;flex-direction:column;align-items:center;justify-content:center;color:#758d91;background:#ffffff05;border:1px dashed rgba(203,225,223,.1);border-radius:17px;text-align:center}.alarm-library-empty svg{width:28px;margin-bottom:9px;color:var(--mint)}.alarm-library-empty strong{color:#cbd9d8;font-size:.76rem}.alarm-library-empty p{max-width:310px;margin:6px 0 0;font-size:.6rem;line-height:1.5}.alarm-route-picker{display:grid;gap:6px;margin-top:15px;padding-top:12px;border-top:1px solid rgba(203,225,223,.07)}.alarm-route-picker>p{margin:0 2px 2px;color:#91a7aa;font-size:.7rem;font-weight:720}.alarm-route-picker>button{display:flex;min-height:42px;padding:0 10px;align-items:center;justify-content:space-between;gap:10px;color:#b8c9c8;text-align:left;background:#ffffff05;border:1px solid rgba(203,225,223,.07);border-radius:12px;font-size:.7rem}.alarm-route-picker>button span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.alarm-route-picker>button span span{color:var(--mint)}.alarm-route-picker>button svg{width:14px;flex:0 0 auto}.alarm-route-empty{margin:2px;color:#91a7aa;font-size:.7rem;line-height:1.5}.app-nav{position:fixed;right:0;bottom:0;left:0;z-index:30;display:grid;width:min(100%,680px);min-height:calc(66px + env(safe-area-inset-bottom));margin:0 auto;padding:7px 12px max(7px,env(safe-area-inset-bottom));grid-template-columns:repeat(3,1fr);gap:7px;background:#08121be6;border:1px solid rgba(203,225,223,.1);border-bottom:0;border-radius:22px 22px 0 0;box-shadow:0 -15px 45px #00000057;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.app-nav button{display:flex;min-height:49px;padding:4px 8px;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:#6f898d;background:transparent;border:0;border-radius:15px;font-size:.7rem;font-weight:760}.app-nav button.active{color:var(--mint);background:#54e6ba13}.app-nav svg{width:20px;height:20px}.install-card{display:grid;padding:15px;grid-template-columns:auto 1fr auto;gap:12px;background:linear-gradient(135deg,#1a343ef0,#0d202bf5);border:1px solid rgba(84,230,186,.14);border-radius:21px}.install-icon{display:grid;width:41px;height:41px;place-items:center;color:var(--mint);background:#54e6ba17;border-radius:13px}.install-icon svg{width:20px}.install-card strong{display:block;margin-bottom:3px;font-size:.76rem}.install-card p{margin-bottom:8px;color:#879da0;font-size:.62rem;line-height:1.45}.install-card>div button{min-height:32px;padding:0;color:var(--mint);background:transparent;border:0;font-size:.66rem;font-weight:800}.install-dismiss{align-self:start;width:30px;height:30px;padding:0;color:#6f878a;background:transparent;border:0;border-radius:8px;font-size:1.2rem}footer{display:flex;margin-top:27px;padding:16px 18px;align-items:center;justify-content:space-between;gap:15px;color:#526b70;border-top:1px solid rgba(255,255,255,.04);font-size:.55rem}footer span{display:flex;align-items:center;gap:5px;color:#6d8488;font-weight:800}footer svg{width:14px}footer p{margin:0;text-align:right}.sheet-layer{position:fixed;inset:0;z-index:50;display:flex;padding-top:10vh;align-items:flex-end;justify-content:center;background:#01070cb3;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);animation:fade-in .18s ease-out}.sheet{width:min(100%,680px);max-height:90vh;padding:8px 18px max(22px,env(safe-area-inset-bottom));overflow-y:auto;background:radial-gradient(circle at 80% 0,rgba(84,230,186,.08),transparent 18rem),#101e2a;border:1px solid var(--line-bright);border-bottom:0;border-radius:29px 29px 0 0;box-shadow:0 -24px 70px #00000073;animation:sheet-up .24s cubic-bezier(.2,.8,.2,1)}@keyframes fade-in{0%{opacity:0}}@keyframes sheet-up{0%{transform:translateY(35px);opacity:.6}}.sheet-handle{width:40px;height:4px;margin:0 auto 14px;background:#36505a;border-radius:99px}.sheet-header{display:flex;margin-bottom:18px;align-items:flex-start;justify-content:space-between;gap:12px}.sheet-header h2{font-size:1.22rem}.sheet-header p{max-width:470px;margin:5px 0 0;color:var(--muted);font-size:.68rem;line-height:1.5}.search-field{display:grid;min-height:54px;padding:0 14px;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;color:#7e979a;background:#040e1680;border:1px solid var(--line-bright);border-radius:16px}.search-field:focus-within{border-color:#54e6ba75;box-shadow:0 0 0 3px #54e6ba12}.search-field svg{width:20px}.search-field input{min-width:0;height:50px;color:var(--text);background:transparent;border:0;outline:0;font-size:1rem}.search-field input::placeholder{color:#60777b}.mini-spinner{width:16px;height:16px;color:var(--mint)}.station-results,.departure-list{display:grid;gap:7px;margin-top:13px}.result-hint,.inline-message{margin:4px 3px 7px;color:#789094;font-size:.63rem}.inline-message.error{color:var(--amber)}.station-result{display:grid;width:100%;min-height:61px;padding:8px 12px;grid-template-columns:auto 1fr auto;align-items:center;gap:11px;color:#d8e4e4;text-align:left;background:#ffffff06;border:1px solid var(--line);border-radius:15px}.station-result:hover,.departure-option.selected{background:#54e6ba0e;border-color:#54e6ba33}.station-result>span:nth-child(2){display:flex;min-width:0;flex-direction:column}.station-result strong{overflow:hidden;font-size:.76rem;white-space:nowrap;text-overflow:ellipsis}.station-result small{margin-top:3px;color:#748b8f;font-size:.58rem}.station-result>svg{width:17px;color:var(--mint)}.departure-option{display:grid;width:100%;min-height:72px;grid-template-columns:minmax(0,1fr) auto;align-items:stretch;overflow:hidden;color:#d8e4e4;background:#ffffff06;border:1px solid var(--line);border-radius:16px}.departure-option:hover{background:#ffffff0a;border-color:#8fa9ab29}.departure-select{display:grid;min-width:0;padding:10px 11px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;color:inherit;text-align:left;background:transparent;border:0}.departure-select>span{display:flex;min-width:0;flex-direction:column}.departure-select strong{overflow:hidden;font-size:.72rem;white-space:nowrap;text-overflow:ellipsis}.departure-select small{margin-top:3px;overflow:hidden;color:#748b8f;font-size:.56rem;white-space:nowrap;text-overflow:ellipsis}.departure-select>svg{width:16px;color:var(--mint)}.departure-alarm-action{display:flex;min-width:91px;padding:8px 10px;flex-direction:column;align-items:center;justify-content:center;gap:5px;color:#90aaa9;background:#ffffff05;border:0;border-left:1px solid var(--line);font-size:.57rem;font-weight:800}.departure-alarm-action:hover,.departure-alarm-action.has-plan{color:var(--mint);background:#54e6ba0e}.departure-alarm-action svg{width:17px;height:17px}.departure-alarm-action small{margin-top:-3px;color:#718b8d;font-size:.49rem;font-weight:720}.departure-alarm-action.has-plan small{color:#78aa9d}.station-pin{width:11px;height:11px;margin:0 7px;background:#28444b;border:3px solid #6e9996;border-radius:50%;box-shadow:0 0 0 4px #6e999614}.empty-compact{display:flex;min-height:110px;flex-direction:column;align-items:center;justify-content:center;color:#7d9498;font-size:.7rem}.empty-compact svg{width:27px;margin-bottom:8px}.empty-compact p{margin:0}.departure-select>time{width:57px;color:#ecfaf6;font-size:1.12rem;font-weight:760;font-variant-numeric:tabular-nums}.departure-select .departure-arrival{color:#a9d8cd;font-size:.59rem;font-weight:720}.departure-arrival time{width:auto;color:#dff8f1;font-size:inherit;font-weight:800;font-variant-numeric:tabular-nums}.alarm-sheet-context{display:grid;min-height:62px;margin-bottom:14px;padding:10px 12px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;background:#54e6ba0a;border:1px solid rgba(84,230,186,.12);border-radius:16px}.alarm-sheet-context>span{display:grid;width:34px;height:34px;place-items:center;color:var(--mint);background:#54e6ba17;border-radius:10px}.alarm-sheet-context svg{width:18px}.alarm-sheet-context>div{display:flex;min-width:0;flex-direction:column}.alarm-sheet-context small{color:#789094;font-size:.55rem}.alarm-sheet-context strong{margin-top:2px;overflow:hidden;color:#e4efed;font-size:.72rem;white-space:nowrap;text-overflow:ellipsis}.alarm-sheet-context time{color:#ecfaf6;font-size:1.05rem;font-weight:800;font-variant-numeric:tabular-nums}.alarm-sheet-context .alarm-sheet-times{display:grid;grid-template-columns:auto auto;column-gap:7px;align-items:baseline;text-align:right}.alarm-sheet-times small{margin:0;text-transform:uppercase;letter-spacing:.05em}.alarm-sheet-times time,.alarm-sheet-times strong{margin:0;font-size:.86rem;line-height:1.25;white-space:nowrap}.weekday-picker{min-width:0;margin:0 0 14px;padding:0;border:0}.weekday-picker legend{margin-bottom:8px;color:#a8bcbd;font-size:.62rem;font-weight:780}.weekday-picker>div{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.weekday-picker button{min-width:0;min-height:38px;padding:0 2px;color:#758e91;background:#ffffff06;border:1px solid var(--line);border-radius:11px;font-size:clamp(.5rem,2.25vw,.61rem);font-weight:780}.weekday-picker button.active{color:#061510;background:var(--mint);border-color:var(--mint);box-shadow:0 5px 16px #54e6ba26}.weekday-picker small{display:block;margin-top:7px;color:#6f888b;font-size:.54rem}.alarm-editor-list{display:grid;gap:9px;margin-bottom:11px}.alarm-editor{display:grid;min-height:82px;padding:10px 9px 10px 11px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;background:#ffffff06;border:1px solid var(--line);border-radius:17px}.alarm-order{display:grid;width:26px;height:26px;place-items:center;color:currentColor;background:color-mix(in srgb,currentColor 11%,transparent);border-radius:9px;font-size:.67rem;font-weight:850}.alarm-fields{display:grid;min-width:0;grid-template-columns:minmax(90px,1fr) 78px;gap:8px}.alarm-editor label{display:flex;min-width:0;flex-direction:column;gap:4px}.alarm-editor label>span{color:#91a7aa;font-size:.7rem}.alarm-editor input{width:100%;min-width:0;height:40px;padding:0 8px;color:#e9f6f3;background:#020a1070;border:1px solid var(--line-bright);border-radius:9px;outline:0;font-size:1rem;font-weight:700}.alarm-editor input:focus{border-color:color-mix(in srgb,var(--tone) 48%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--tone) 8%,transparent)}.alarm-minute-field input{font-variant-numeric:tabular-nums}.alarm-remove:disabled{opacity:.24;cursor:default}.add-alarm-button,.delete-plan-button{display:flex;width:100%;min-height:43px;align-items:center;justify-content:center;gap:7px;background:transparent;border-radius:13px;font-size:.66rem;font-weight:800}.add-alarm-button{margin-bottom:13px;color:var(--mint);border:1px dashed rgba(84,230,186,.22)}.add-alarm-button:disabled{opacity:.45}.add-alarm-button svg,.delete-plan-button svg{width:16px}.alarm-save-error{margin-bottom:11px}.delete-plan-button{margin-top:8px;color:#ff9ca3;border:1px solid rgba(255,122,131,.14)}.delete-plan-button:hover:not(:disabled){background:#ff7a830f}.delete-plan-button:disabled{opacity:.45}.toast{position:fixed;right:16px;bottom:calc(76px + env(safe-area-inset-bottom));left:16px;z-index:80;display:flex;width:min(calc(100% - 32px),560px);min-height:54px;margin:auto;padding:11px 10px 11px 15px;align-items:center;justify-content:space-between;gap:10px;color:#dce8e7;background:#1a2e39;border:1px solid rgba(84,230,186,.22);border-radius:16px;box-shadow:0 20px 55px #0000007a;font-size:.68rem;line-height:1.4;animation:toast-in .25s ease-out}@keyframes toast-in{0%{opacity:0;transform:translateY(15px)}}.toast button{flex:0 0 auto;width:34px;height:34px;color:#93a8aa;background:#ffffff0a;border:0;border-radius:9px;font-size:1.1rem}@media(min-width:560px){.app-header{padding-inline:24px}main{padding-inline:24px;gap:19px}.routes-track{margin-inline:-24px;padding-left:24px;padding-right:90px}.route-card{flex-basis:calc(90% - 30px)}.carousel-buttons{display:flex}.departure-card,.alarms-card,.stations-card,.alarm-library{padding:22px}.monitored-stations{grid-template-columns:repeat(2,minmax(0,1fr))}.freshness-row{margin:17px -22px -22px;padding-inline:22px}.sheet{border-radius:29px;margin-bottom:18px;border-bottom:1px solid var(--line-bright)}footer{padding-inline:24px}}@media(max-width:420px){.station-grid{grid-template-columns:minmax(0,1fr);gap:1px}.station-select-field{min-height:auto;padding-block:7px}.swap-button{margin-block:-1px;justify-self:center;transform:rotate(90deg)}.swap-button:before,.swap-button:after{display:none}}@media(max-width:350px){.app-header{padding-inline:13px}main{padding-inline:11px}.routes-track{margin-inline:-11px;padding-left:11px}.route-card{flex-basis:calc(100% - 22px)}.swap-button{width:34px;height:34px}.departure-card,.alarms-card{padding-inline:14px}.countdown{font-size:2.38rem}.freshness-row{margin-inline:-14px;padding-inline:14px}.alarm-pill{padding-inline:3px}.alarm-pill em{font-size:.47rem}.board-columns,.board-row{grid-template-columns:66px minmax(0,1fr) 72px;column-gap:8px}.board-columns,.board-row{padding-inline:11px}.board-time strong{font-size:1.18rem}.board-wait strong{padding-inline:6px;font-size:.7rem}.board-wait small{display:none}.alarm-editor{grid-template-columns:auto minmax(0,1fr)}.alarm-fields{grid-template-columns:minmax(0,1fr)}.alarm-remove{grid-column:2;justify-self:end}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
