:root{--bg:#f6f7f9;--surface:#fff;--text:#1f2937;--muted:#6b7280;--border:#e5e7eb;--accent:#1d9e75;--accent-hover:#178f69;--danger:#b91c1c;--danger-bg:#fef2f2;--radius:10px;--shadow:0 1px 3px #00000014;color:var(--text);background:var(--bg);font-family:system-ui,Segoe UI,Roboto,sans-serif;line-height:1.45}@media (prefers-color-scheme:dark){:root{--bg:#111418;--surface:#1a1d23;--text:#e5e7eb;--muted:#9ca3af;--border:#2d3139;--accent:#2eb88a;--accent-hover:#3ecf9b;--danger:#f87171;--danger-bg:#2a1515;--shadow:0 1px 3px #00000059}}*{box-sizing:border-box}body{margin:0}#root{min-height:100vh}a{color:var(--accent)}.shell{flex-direction:column;min-height:100vh;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow);justify-content:space-between;align-items:center;padding:12px 20px;display:flex}.brand{align-items:center;gap:10px;font-weight:600;display:flex}.brand-mark{background:var(--accent);color:#fff;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;font-size:14px;display:inline-flex}.brand-name{color:var(--text)}.nav{align-items:center;gap:16px;display:flex}.nav a{color:var(--text);font-weight:500;text-decoration:none}.nav a:hover{color:var(--accent)}.main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:24px 20px 48px}.page-head h1{margin:0 0 8px;font-size:1.5rem;font-weight:600}.muted{color:var(--muted);margin:0}.error{color:var(--danger);background:var(--danger-bg);border-radius:var(--radius);border:1px solid var(--border);padding:10px 12px}.toolbar{flex-wrap:wrap;align-items:flex-end;gap:12px 16px;margin:20px 0;display:flex}.field{text-align:left;flex-direction:column;gap:4px;display:flex}.field.inline span{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px}.field input,.field select{border:1px solid var(--border);background:var(--surface);min-width:200px;color:var(--text);font:inherit;border-radius:8px;padding:8px 10px}.stack{flex-direction:column;gap:12px;display:flex}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:8px;padding:8px 14px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn.ghost{background:0 0}.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn.danger.ghost{color:var(--danger);background:0 0;border-color:#0000}.table-wrap{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow-x:auto}table.data{border-collapse:collapse;width:100%;font-size:14px}table.data th,table.data td{border-bottom:1px solid var(--border);text-align:left;padding:10px 12px}table.data th{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}table.data tr:last-child td{border-bottom:none}.linkish{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.row-actions{text-align:right;white-space:nowrap}.pager{align-items:center;gap:12px;margin-top:16px;display:flex}.modal-backdrop{z-index:50;background:#00000073;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-panel{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);width:100%;max-width:560px;max-height:90vh;box-shadow:var(--shadow);overflow:auto}.modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 18px;display:flex}.modal-head h2{margin:0;font-size:1.1rem}.modal-body{padding:16px 18px}.detail-grid{grid-template-columns:140px 1fr;gap:8px 12px;margin:0;display:grid}.detail-grid dt{color:var(--muted);margin:0;font-size:13px}.detail-grid dd{margin:0}.receipts ul{margin:8px 0 0;padding-left:18px}.login-wrap{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:400px;box-shadow:var(--shadow);padding:28px}.login-card h1{margin:0 0 8px;font-size:1.35rem}.login-card .stack{margin-top:20px}.admin-root{align-items:stretch;min-height:100vh;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:260px;min-height:100vh;display:flex}.sidebar-brand{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:20px 16px;display:flex}.sidebar-title{color:var(--text);font-size:1rem;font-weight:600}.sidebar-sub{color:var(--muted);margin-top:2px;font-size:12px}.sidebar-nav{flex-direction:column;flex:1;gap:4px;padding:12px 8px;display:flex}.sidebar-nav a{color:var(--text);border-radius:8px;padding:10px 12px;font-size:14px;font-weight:500;text-decoration:none;display:block}.sidebar-nav a:hover{background:#1d9e7514}.sidebar-nav a.active{color:var(--accent);background:#1d9e7526}.sidebar-footer{border-top:1px solid var(--border);padding:16px}.btn.full{width:100%}.admin-main{flex:1;min-width:0;max-width:1280px;padding:28px 28px 48px}.page{width:100%}.page-head-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.small{font-size:13px}.route-catalog{flex-direction:column;gap:20px;display:flex}.route-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:0;overflow:hidden}.route-card-head{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 18px;display:flex}.route-card-head h2{margin:0 0 4px;font-size:1.15rem;font-weight:600}.route-card-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}code{background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:2px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.shell .main,.main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:24px 20px 48px}@media (width<=960px){.admin-root{flex-direction:column}.sidebar{border-right:none;border-bottom:1px solid var(--border);width:100%;min-height:0}.sidebar-nav{flex-flow:wrap}.admin-main{padding:20px 16px 40px}}
