:root{--bg:#f6f6f3;--card:#fff;--ink:#141414;--muted:#6b6b6b;--line:#e4e4de;--brand:#141414;--brand2:#333;--yellow:#fff700;--yellow2:#f5e800;--danger:#b42318;--warn:#b54708;--ok:#0b6e4f}
*{box-sizing:border-box}body{margin:0;font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink)}
a{color:#1a56db}h1{font-size:24px;margin:8px 0 18px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}h2{font-size:18px;margin:28px 0 10px}h3{font-size:15px;margin:0 0 10px}
.topbar{display:flex;align-items:center;gap:16px;background:#0d0d0d;color:#fff;padding:6px 16px;flex-wrap:wrap;border-bottom:3px solid var(--yellow);position:sticky;top:0;z-index:1000}
.brand img{height:40px;display:block}
.topbar nav{display:flex;gap:4px;flex-wrap:wrap;flex:1}.topbar nav a,.menu>button{color:#d6d6d6;text-decoration:none;padding:6px 9px;border-radius:6px;font-size:14px;background:none;border:0;cursor:pointer;font-family:inherit}
.topbar nav a.active,.topbar nav a:hover,.menu>button.active,.menu>button:hover{background:var(--yellow);color:#000}.logout{display:flex;gap:10px;align-items:center;color:#d6d6d6;font-size:14px}
.menu{position:relative}.menu-items{display:none;position:absolute;right:0;top:100%;background:#0d0d0d;border:1px solid #333;border-radius:8px;padding:6px;min-width:170px;z-index:1001}.menu:hover .menu-items,.menu:focus-within .menu-items{display:block}.menu-items a{display:block}
.link{background:none;border:0;color:var(--yellow);cursor:pointer;font:inherit;padding:0}
.container{max-width:1280px;margin:0 auto;padding:20px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:18px;margin-bottom:16px}.card.narrow{max-width:520px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:900px){.grid2{grid-template-columns:1fr}}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}.stat{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px}
.stat .v{font-size:26px;font-weight:700}.stat .l{color:var(--muted);font-size:13px}
.table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden;font-size:14px}
.table th,.table td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.table th{background:#fafbfc;font-weight:600;color:#3b4252}
.table tr:last-child td{border-bottom:0}.nowrap{white-space:nowrap}.addr{max-width:320px}.muted{color:var(--muted)}
label{display:block;margin-bottom:12px;font-size:13px;color:#3b4252;font-weight:600}
input,select,textarea{display:block;width:100%;margin-top:4px;padding:8px 10px;border:1px solid #cdd2da;border-radius:7px;font:inherit;font-weight:400;background:#fff}
input:disabled{background:#f1f3f5}.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px}input.wide{margin-top:8px}
label.check{display:flex;align-items:center;gap:8px;font-weight:400}label.check input{width:auto;margin:0}
.row-form{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.row-form label{flex:1 1 160px}
.filters{display:flex;gap:8px;margin-bottom:12px;max-width:640px}.filters input,.filters select{margin:0}
.inline{display:flex;gap:8px;align-items:center}.inline select{width:auto;margin:0}.inline label{margin:0}
.btn{display:inline-block;padding:8px 14px;border:1px solid #cdd2da;background:#fff;border-radius:7px;cursor:pointer;font:inherit;font-weight:600;text-decoration:none;color:var(--ink)}
.btn.primary{background:var(--yellow);border-color:#000;color:#000}.btn.primary:hover{background:var(--yellow2)}.btn.dark{background:#141414;color:var(--yellow);border-color:#141414}.btn.danger{color:#fff;background:var(--danger);border-color:var(--danger)}
.btn.small{padding:4px 10px;font-size:13px}.btn.wide{width:100%}
.flash{padding:12px 14px;border-radius:8px;margin-bottom:16px}.flash.ok{background:#e7f6ef;border:1px solid #b7e4cf}.flash.err{background:#fdecea;border:1px solid #f5c2bd;color:var(--danger)}
.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;background:#eef0f3;color:#3b4252;text-transform:capitalize;vertical-align:middle}
.s-active,.s-approved,.s-completed,.s-paid,.s-succeeded{background:#e7f6ef;color:#0b6e4f}.s-expired,.s-failed{background:#fdecea;color:#b42318}.s-pending,.s-requested{background:#fff4e5;color:var(--warn)}
.s-accepted,.s-arrived,.s-started{background:#e8f0fe;color:#1a56db}.s-blocked,.s-rejected,.s-cancelled,.s-no_driver{background:#fdecea;color:var(--danger)}.s-inactive{background:#eef0f3;color:var(--muted)}
dl{display:grid;grid-template-columns:140px 1fr;gap:6px 12px;margin:0 0 12px}dt{color:var(--muted)}dd{margin:0}
.auth-card{max-width:380px;margin:60px auto;background:#fff;border:1px solid var(--line);border-radius:12px;padding:28px;border-top:5px solid var(--yellow)}.auth-card h1{font-size:21px}.auth-logo{display:block;width:220px;margin:0 auto 18px}
.pagination{display:flex;gap:4px;list-style:none;padding:0;margin:14px 0;flex-wrap:wrap}.pagination .page-link{display:block;padding:5px 11px;border:1px solid var(--line);border-radius:6px;background:#fff;text-decoration:none}
.pagination .active .page-link{background:var(--yellow);color:#000;border-color:#000}.pagination .disabled .page-link{color:#b0b6c0}
nav p.small{color:var(--muted);font-size:13px;margin:8px 0 0}

.alerts{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.alerts a{background:#fff8c4;border:1px solid #e6d900;color:#000;padding:8px 12px;border-radius:8px;text-decoration:none;font-weight:600}
.alerts a b{background:#000;color:var(--yellow);border-radius:999px;padding:1px 8px;margin-right:6px}
.map{height:520px;border-radius:10px;border:1px solid var(--line);background:#e9e9e4}.map.tall{height:calc(100vh - 170px);min-height:480px}
.split{display:grid;grid-template-columns:1fr 360px;gap:16px}@media(max-width:1000px){.split{grid-template-columns:1fr}}
.side-list{max-height:calc(100vh - 170px);overflow:auto}.side-list .item{padding:10px;border-bottom:1px solid var(--line);font-size:14px}.side-list .item:hover{background:#fffbd6}
.legend{display:flex;gap:14px;font-size:13px;color:var(--muted);margin:8px 0}.dot{display:inline-block;width:11px;height:11px;border-radius:50%;margin-right:4px;vertical-align:-1px;border:1px solid #0003}
.pill-tabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}.pill-tabs a{padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:#fff;text-decoration:none;color:var(--ink);font-size:14px}.pill-tabs a.on{background:#141414;color:var(--yellow);border-color:#141414}
.pill-tabs a b{margin-left:4px}
.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}.kv div{background:#fafaf7;border:1px solid var(--line);border-radius:8px;padding:10px}.kv .v{font-size:19px;font-weight:700}.kv .l{font-size:12px;color:var(--muted)}
.choice{display:flex;flex-direction:column;gap:6px}.choice label{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid var(--line);border-radius:8px;padding:9px 12px;margin:0;cursor:pointer;font-weight:400}
.choice label:has(input:checked){border-color:#000;background:#fffbd6}.choice input{width:auto;margin:0}
.hint{font-size:12px;color:var(--muted);font-weight:400}.right{text-align:right}.inline-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}.inline-actions form{display:flex;gap:6px;align-items:flex-end}
.inline-actions input,.inline-actions select{margin:0;width:auto}.suggest{border:1px solid var(--line);border-radius:8px;background:#fff;max-height:220px;overflow:auto;margin-top:-6px;margin-bottom:10px}.suggest div{padding:7px 10px;cursor:pointer;font-size:14px}.suggest div:hover{background:#fffbd6}
.chart-wrap{position:relative;height:280px}
.stats a.stat{text-decoration:none;color:inherit;transition:.15s}.stats a.stat:hover{border-color:#000;background:#fffbd6;transform:translateY(-1px)}.s-deleted{background:#eef0f3;color:#6b6b6b}
.perm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;background:#fafaf7;border:1px solid var(--line);border-radius:8px;padding:12px}
code{background:#f1f1ec;padding:1px 5px;border-radius:4px;font-size:13px}

/* v4: sidebar layout */
.sidebar{position:fixed;top:0;left:0;bottom:0;width:232px;background:#0d0d0d;color:#d6d6d6;overflow-y:auto;z-index:1001;border-right:3px solid var(--yellow)}
.sidebar .brand{display:block;padding:12px 16px;border-bottom:1px solid #222}.sidebar .brand img{height:44px}
.sidebar nav{padding:8px 8px 40px}.sidebar nav a{display:flex;justify-content:space-between;align-items:center;color:#d6d6d6;text-decoration:none;padding:7px 10px;border-radius:6px;font-size:14px}
.sidebar nav a:hover{background:#1f1f1f;color:#fff}.sidebar nav a.active{background:var(--yellow);color:#000;font-weight:600}
.nav-group{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#8a8a8a;margin:14px 10px 4px}
.nav-badge{background:#e02424;color:#fff;border-radius:999px;font-size:11px;font-weight:700;padding:0 7px;line-height:18px}
body:has(.sidebar) .topbar{margin-left:232px;background:#fff;color:var(--ink);border-bottom:1px solid var(--line);padding:8px 20px;gap:12px}
body:has(.sidebar) .topbar .logout{color:var(--muted)}body:has(.sidebar) .topbar .link{color:#1a56db}
.top-title{flex:1;font-weight:700;font-size:16px}.top-alert{background:#e02424;color:#fff;font-weight:700;padding:5px 12px;border-radius:7px;text-decoration:none;animation:pulse 1.4s infinite}
@keyframes pulse{50%{opacity:.6}}
.nav-toggle{display:none;background:none;border:1px solid var(--line);border-radius:6px;font-size:18px;padding:2px 9px;cursor:pointer}
.container.with-sidebar{margin-left:232px;max-width:none;padding:20px 28px}
@media(max-width:900px){.sidebar{transform:translateX(-100%);transition:.2s}.nav-open .sidebar{transform:none}body:has(.sidebar) .topbar{margin-left:0}.container.with-sidebar{margin-left:0;padding:16px}.nav-toggle{display:block}}
.section-title{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:22px 0 10px}
.stat .v small{font-size:13px;color:var(--muted);font-weight:600}
.stats.taxi .stat{border-left:4px solid var(--yellow)}
.thread{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.msg{max-width:75%;padding:10px 14px;border-radius:12px;background:#fff;border:1px solid var(--line);white-space:pre-wrap}
.msg.admin{align-self:flex-end;background:#fffbd6;border-color:#e6d900}.msg .meta{font-size:12px;color:var(--muted);margin-top:4px;white-space:normal}
.s-open{background:#fdecea;color:var(--danger)}.s-resolved,.s-closed{background:#eef0f3;color:var(--muted)}.s-answered{background:#e7f6ef;color:#0b6e4f}.s-rewarded{background:#e7f6ef;color:#0b6e4f}
.amount-pos{color:#0b6e4f;font-weight:600}.amount-neg{color:var(--danger);font-weight:600}
textarea.page-body{min-height:420px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px}
