:root{--color-primary:#494fdf;--color-primary-bright:#4f55f1;--color-primary-deep:#3a40c4;--color-on-primary:#fff;--color-canvas-dark:#000;--color-surface-elevated:#16181a;--color-on-dark:#fff;--color-on-dark-mute:#ffffffb8;--color-hairline-dark:#ffffff1f;--color-faint:#c9c9cd;--color-accent-teal:#00a87e;--color-accent-danger:#e23b4a;--bg:var(--color-canvas-dark);--bg-card:var(--color-surface-elevated);--bg-card-hover:color-mix(in srgb, var(--color-surface-elevated) 90%, white);--bg-input:var(--color-canvas-dark);--text:var(--color-on-dark);--text-dim:var(--color-on-dark-mute);--accent:var(--color-primary);--accent-2:var(--color-accent-teal);--danger:var(--color-accent-danger);--border:var(--color-hairline-dark);--font-display:"Inter", sans-serif;--font-body:"Inter", sans-serif;--font-mono:"JetBrains Mono", monospace;--radius-sm:8px;--radius-md:12px;--radius-lg:20px;--radius-full:9999px;--space-xxs:4px;--space-xs:6px;--space-sm:8px;--space-md:14px;--space-lg:16px;--space-xl:24px;--space-xxl:32px;--space-xxxl:48px}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);font-family:var(--font-body);letter-spacing:.24px;min-height:100vh;margin:0;font-size:16px;font-weight:400;line-height:1.5}.hidden{display:none!important}.brand{align-items:center;gap:var(--space-sm);display:flex}.brand-mark{color:var(--color-primary);font-size:20px}.brand-name{font-family:var(--font-display);letter-spacing:.12em;color:var(--text);font-size:14px;font-weight:600}.login-screen{background:var(--color-canvas-dark);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--bg-card);border-radius:var(--radius-lg);padding:var(--space-xxl);width:340px}.login-sub{color:var(--text-dim);margin:var(--space-md) 0 var(--space-xl);font-size:14px;line-height:1.43}.login-card form{gap:var(--space-lg);flex-direction:column;display:flex}label{gap:var(--space-xs);color:var(--text-dim);flex-direction:column;font-size:14px;font-weight:400;display:flex}.hint{color:var(--text-dim);font-weight:400}input,select,textarea{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);height:48px;color:var(--text);font-family:var(--font-body);letter-spacing:.24px;outline:none;font-size:16px}select{height:48px}textarea{resize:vertical;height:auto;font-family:var(--font-body)}input:focus,select:focus,textarea:focus{border-color:var(--color-primary)}.primary-btn{color:var(--color-canvas-dark);border-radius:var(--radius-full);height:48px;font-family:var(--font-body);letter-spacing:.24px;cursor:pointer;background:#fff;border:none;padding:14px 28px;font-size:16px;font-weight:600;transition:background .15s,transform .1s}.primary-btn:hover,.primary-btn:active{background:var(--color-faint)}.primary-btn:active{transform:scale(.98)}.full-width{width:100%}.ghost-btn{border:1px solid var(--border);color:var(--text-dim);border-radius:var(--radius-full);padding:var(--space-sm) var(--space-lg);font-family:var(--font-body);letter-spacing:0;cursor:pointer;background:0 0;font-size:14px;font-weight:600;transition:border-color .15s,color .15s}.ghost-btn:hover{border-color:var(--color-on-dark);color:var(--text)}.ghost-btn.small{padding:var(--space-xs) var(--space-md);font-size:13px}.ghost-btn.danger:hover{border-color:var(--danger);color:var(--danger)}.error-text{color:var(--danger);min-height:16px;font-size:13px}.topbar{min-height:64px;padding:0 var(--space-xxl);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.topbar-right{align-items:center;gap:var(--space-lg);display:flex}#who{color:var(--text-dim);font-size:14px}.layout{gap:var(--space-xxl);max-width:1200px;padding:var(--space-xxl);grid-template-columns:260px 1fr;margin:0 auto;display:grid}.filters{gap:var(--space-sm);top:var(--space-xxl);flex-direction:column;align-self:start;display:flex;position:sticky}.filters h2{font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);margin:0 0 var(--space-xs);font-size:13px;font-weight:600}.field-label{margin-top:var(--space-sm)}.routes-header h1{font-family:var(--font-display);letter-spacing:0;margin:0 0 var(--space-xl);font-size:24px;font-weight:500;line-height:1.33}.routes-list{flex-direction:column;gap:2px;display:flex}.route-card{align-items:center;gap:var(--space-lg);background:var(--bg-card);border:1px solid var(--border);padding:var(--space-lg) var(--space-xl) var(--space-lg) var(--space-xl);cursor:pointer;border-left:none;transition:background .15s;display:flex;position:relative}.route-card:before{content:"";background:repeating-linear-gradient(to bottom, var(--accent-2) 0, var(--accent-2) 4px, transparent 4px, transparent 9px);width:3px;position:absolute;top:0;bottom:0;left:0}.route-card:after{content:"";background:var(--accent-2);border-radius:50%;width:8px;height:8px;position:absolute;top:50%;left:-3.5px;transform:translateY(-50%)}.route-card:hover{background:var(--bg-card-hover)}.route-card:first-child{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.route-card:last-child{border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.grade-pill{font-family:var(--font-mono);color:var(--accent-2);border-radius:var(--radius-sm);padding:var(--space-xxs) var(--space-sm);white-space:nowrap;background:#00a87e1a;border:1px solid #00a87e4d;font-size:13px;font-weight:600}.rc-main{flex:1;min-width:0}.rc-name{font-size:15px;font-weight:600}.rc-sub{color:var(--text-dim);margin-top:2px;font-size:13px;line-height:1.4}.rc-type{text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);border:1px solid var(--border);border-radius:var(--radius-sm);padding:3px var(--space-xs);font-size:11px}.rc-ticks{color:var(--text-dim);white-space:nowrap;font-size:12px}.empty-state{color:var(--text-dim);border:1px dashed var(--border);border-radius:var(--radius-lg);padding:var(--space-xxl);text-align:center;font-size:14px}.modal-overlay{z-index:100;padding:var(--space-xl);background:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg-card);border-radius:var(--radius-lg);padding:var(--space-xxl);width:100%;max-width:520px;max-height:88vh;overflow-y:auto}.modal h2{font-family:var(--font-display);letter-spacing:0;margin-top:0;font-size:24px;font-weight:500;line-height:1.33}.modal h3{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);margin:var(--space-xl) 0 var(--space-sm);font-size:13px;font-weight:600}.modal form{gap:var(--space-md);flex-direction:column;display:flex}.grid-2{gap:var(--space-md);grid-template-columns:1fr 1fr;display:grid}.grid-3{gap:var(--space-md);grid-template-columns:1fr 1fr auto;align-items:end;display:grid}.modal-actions{justify-content:flex-end;gap:var(--space-sm);margin-top:var(--space-sm);display:flex}.detail-head{justify-content:space-between;align-items:flex-start;gap:var(--space-md);display:flex}.detail-actions{gap:var(--space-sm);flex-shrink:0;display:flex}.detail-meta{font-family:var(--font-mono);color:var(--accent-2);margin:4px 0 0;font-size:13px}.detail-desc{color:var(--text);letter-spacing:.24px;font-size:16px;line-height:1.5}.detail-fa{color:var(--text-dim);font-size:13px}.divider{border:none;border-top:1px solid var(--border);margin:var(--space-xl) 0}.tag-row{gap:var(--space-xs);flex-wrap:wrap;display:flex}.tag-chip{font-family:var(--font-body);color:var(--text-dim);border-radius:var(--radius-full);padding:4px var(--space-md);background:#ffffff0f;font-size:13px}.tick-form{border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md)}.ticks-list{gap:var(--space-sm);flex-direction:column;display:flex}.tick-row{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-md);font-size:13px;display:flex}.tick-row .tr-who{font-weight:600}.tick-row .tr-notes{color:var(--text-dim)}.tick-remove{color:var(--text-dim);cursor:pointer;background:0 0;border:none;font-size:16px;line-height:1}.tick-remove:hover{color:var(--danger)}@media (width<=720px){.layout{padding:var(--space-xl);grid-template-columns:1fr}.filters{position:static}.grid-2,.grid-3{grid-template-columns:1fr}}
