*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0f1117;--surface: #1a1d27;--border: #2a2d3a;--text: #e8eaf0;--muted: #7a7f9a;--now: #22c55e;--soon: #f59e0b;--warn: #ef4444;--radius: 10px;--gap: 12px}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;line-height:1.4;min-height:100dvh}.app{display:flex;flex-direction:column;min-height:100dvh}.header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.header__title{font-weight:700;font-size:18px;letter-spacing:-.3px}.header__actions{display:flex;gap:8px}.tabbar{display:flex;gap:4px;padding:8px 12px;background:var(--surface);border-bottom:1px solid var(--border);overflow-x:auto}.tabbar__tab{padding:6px 16px;border-radius:20px;border:1px solid var(--border);background:transparent;color:var(--muted);font-size:14px;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}.tabbar__tab--active,.tabbar__tab:hover{background:var(--border);color:var(--text)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--gap);padding:var(--gap);flex:1}.empty-state{grid-column:1 / -1;text-align:center;color:var(--muted);padding:60px 0}.widget{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.widget__header{display:flex;align-items:center;gap:10px;padding:10px 14px}.widget__line{font-weight:800;font-size:16px;letter-spacing:-.3px;background:#00000040;padding:2px 8px;border-radius:6px;flex-shrink:0}.widget__name{font-size:13px;font-weight:600;flex:1}.widget__age{font-size:11px;opacity:.65;flex-shrink:0}.widget__body{padding:6px 0}.dep{display:flex;align-items:baseline;gap:10px;padding:8px 14px;border-bottom:1px solid var(--border)}.dep:last-child{border-bottom:none}.dep__time{font-size:20px;font-weight:700;min-width:72px;flex-shrink:0;font-variant-numeric:tabular-nums}.dep--now .dep__time{color:var(--now)}.dep--soon .dep__time{color:var(--soon)}.dep__terminus{font-size:13px;color:var(--muted);flex:1}.dep__late{color:var(--warn);font-size:13px}.dep--loading,.dep--error,.dep--empty{color:var(--muted);font-size:13px;padding:14px}.dep--error{color:var(--warn)}.disruption{font-size:12px;padding:4px 14px;font-weight:600}.disruption--info{color:#60a5fa}.disruption--warning{color:var(--soon)}.disruption--critical{color:var(--warn)}.banner{padding:10px 16px;font-size:13px}.banner--error{background:#3b0f0f;color:var(--warn)}.btn{padding:8px 16px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:14px;cursor:pointer;transition:background .15s}.btn:hover:not(:disabled){background:var(--border)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--primary{background:#2563eb;border-color:#2563eb;color:#fff}.btn--primary:hover:not(:disabled){background:#1d4ed8}.btn--secondary{background:var(--border);border-color:var(--border)}.btn--danger{background:#7f1d1d;border-color:#7f1d1d;color:#fff}.btn--danger:hover:not(:disabled){background:#991b1b}.btn--sm{font-size:12px;padding:5px 10px}.btn--icon{padding:6px 10px;font-size:18px;line-height:1}.cfg-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:flex-start;justify-content:flex-end;z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.cfg-panel{width:min(500px,100vw);height:100dvh;background:var(--surface);border-left:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.cfg-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0}.cfg-header h2{font-size:16px;font-weight:700}.cfg-close{background:none;border:none;color:var(--muted);font-size:20px;cursor:pointer;padding:4px}.cfg-body{flex:1;overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:24px}.cfg-tab-section{border:1px solid var(--border);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:12px}.cfg-tab-header{display:flex;align-items:center;gap:10px}.cfg-tab-name{flex:1;background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:6px 10px;font-size:14px;font-weight:600}.cfg-widget{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:8px}.cfg-row{display:grid;grid-template-columns:110px 1fr;align-items:center;gap:8px}.cfg-row label{font-size:12px;color:var(--muted)}.cfg-row input,.cfg-row select{background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:5px 8px;font-size:13px;width:100%}.cfg-hint{font-size:11px;color:var(--muted)}.cfg-hint a{color:#60a5fa}.cfg-footer{display:flex;gap:8px;justify-content:flex-end;padding:14px 20px;border-top:1px solid var(--border);flex-shrink:0}.cfg-error{color:var(--warn);font-size:13px;padding:0 20px 8px}.cfg-search{display:flex;flex-direction:column;gap:10px}.cfg-search-input{background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:8px 12px;font-size:14px;width:100%}.cfg-search-stop-group{display:flex;flex-direction:column;gap:6px}.cfg-search-stop-name{font-size:13px;font-weight:600}.cfg-search-lines{display:flex;flex-wrap:wrap;gap:6px}.cfg-line-badge{font-weight:800;font-size:13px;padding:3px 10px;border-radius:6px;border:none;cursor:pointer;transition:opacity .15s}.cfg-line-badge:hover{opacity:.85}.cfg-search-confirm{display:flex;flex-direction:column;gap:10px}.cfg-search-tag{display:inline-block;font-weight:800;font-size:20px;padding:4px 14px;border-radius:8px;align-self:flex-start}.cfg-search-stop{font-size:14px;font-weight:600}.cfg-search-actions{display:flex;gap:8px}.cfg-widget-row{display:flex;align-items:center;gap:10px;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:8px 10px}.cfg-widget-row-name{flex:1;font-size:13px}.login-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;width:min(380px,90vw);display:flex;flex-direction:column;gap:14px;margin:auto}.login-box h2{font-size:16px;font-weight:700}.login-box input{background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:10px 12px;font-size:15px;width:100%}@media (max-width: 480px){.grid{grid-template-columns:1fr}.dep__time{font-size:22px}.cfg-panel{width:100vw;border-left:none}}
