:root{--bg:#f6f7f9;--fg:#1c2024;--mut:#5b6570;--line:#d8dde3;--card:#fff;
--ok:#1f7a3d;--warn:#8a6100;--err:#a11c1c;--accent:#1a4f8a}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);
font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em}

.topbar{display:flex;align-items:center;gap:24px;padding:10px 20px;
background:var(--card);border-bottom:1px solid var(--line);flex-wrap:wrap}
.brand{font-weight:600}
.brand .region{font-weight:400;color:var(--mut);margin-left:8px;font-size:.9em}
.topbar nav{display:flex;gap:18px;flex:1}
.topbar nav a{color:var(--mut);text-decoration:none;padding:4px 0;border-bottom:2px solid transparent}
.topbar nav a:hover{color:var(--fg)}
.topbar nav a.on{color:var(--accent);border-bottom-color:var(--accent);font-weight:500}
.logout{display:flex;align-items:center;gap:10px}
.logout .who{color:var(--mut);font-size:.9em}
.logout button{background:none;border:1px solid var(--line);border-radius:6px;
padding:4px 10px;cursor:pointer;color:var(--mut)}
.logout button:hover{color:var(--fg);border-color:var(--mut)}

main{max-width:1100px;margin:0 auto;padding:24px 20px 60px}
h1{font-size:22px;margin:0 0 4px}
h2{font-size:17px;margin:28px 0 10px}
.lead{color:var(--mut);margin:0 0 20px}

.banner{padding:10px 14px;border-radius:8px;margin-bottom:20px;border:1px solid}
.banner.info{background:#eef4fb;border-color:#c3d8ef;color:#1a4f8a}
.banner.ok{background:#eef7f0;border-color:#c2e0cb;color:var(--ok)}
.banner.warn{background:#fdf6e6;border-color:#ecd9a6;color:var(--warn)}
.banner.err{background:#fcefef;border-color:#eec4c4;color:var(--err)}

.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:8px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px 16px}
.card .n{font-size:26px;font-weight:600;line-height:1.1}
.card .l{color:var(--mut);font-size:.85em;margin-top:2px}
.card.warn .n{color:var(--warn)} .card.err .n{color:var(--err)} .card.ok .n{color:var(--ok)}

table{width:100%;border-collapse:collapse;background:var(--card);
border:1px solid var(--line);border-radius:10px;overflow:hidden}
th,td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:top}
th{background:#f0f2f5;font-weight:600;font-size:.85em;color:var(--mut);
text-transform:uppercase;letter-spacing:.03em}
tr:last-child td{border-bottom:none}
td.num{font-variant-numeric:tabular-nums}
.pill{display:inline-block;padding:1px 8px;border-radius:20px;font-size:.82em;border:1px solid}
.pill.on{background:#eef7f0;border-color:#c2e0cb;color:var(--ok)}
.pill.off{background:#f1f2f4;border-color:var(--line);color:var(--mut)}
.pill.bus{background:#eef4fb;border-color:#c3d8ef;color:#1a4f8a}
.pill.minibus{background:#f7f0fb;border-color:#dcc8ea;color:#6b3f8a}

.auth{max-width:420px;margin:60px auto;background:var(--card);
border:1px solid var(--line);border-radius:12px;padding:26px 28px}
.auth h1{margin-bottom:14px}
.auth label{display:block;margin:14px 0 4px;font-size:.9em;color:var(--mut)}
.auth input{width:100%;padding:9px 11px;border:1px solid var(--line);
border-radius:7px;font:inherit;background:#fff}
.auth input:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}
.auth button{margin-top:20px;width:100%;padding:10px;border:none;border-radius:7px;
background:var(--accent);color:#fff;font:inherit;font-weight:500;cursor:pointer}
.auth button:hover{background:#16406f}
.auth .hint{color:var(--mut);font-size:.86em;margin-top:14px}

footer{max-width:1100px;margin:0 auto;padding:0 20px 30px;color:var(--mut);font-size:.85em}
footer .sep{margin:0 8px}
.muted{color:var(--mut)}
.right{text-align:right}

/* --- срез 2: формы, действия в строках, диффы --- */
.toolbar{margin:0 0 14px;display:flex;gap:10px;flex-wrap:wrap}
.btn,.btn-sec{display:inline-block;padding:7px 14px;border-radius:7px;
text-decoration:none;font-size:.92em;border:1px solid var(--line)}
.btn{background:var(--accent);color:#fff;border-color:var(--accent)}
.btn:hover{background:#16406f}
.btn-sec{background:#fff;color:var(--mut)}
.btn-sec:hover{color:var(--fg);border-color:var(--mut)}

.editform{max-width:560px;background:var(--card);border:1px solid var(--line);
border-radius:10px;padding:18px 20px;margin-bottom:18px}
.editform label{display:block;margin:14px 0 4px;font-size:.9em;color:var(--mut)}
.editform label:first-child{margin-top:0}
.editform input[type=text],.editform input:not([type]),.editform select{
width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:7px;
font:inherit;background:#fff}
.editform input:focus,.editform select:focus{outline:2px solid var(--accent);
outline-offset:-1px;border-color:var(--accent)}
.editform .hint{color:var(--mut);font-size:.84em;margin-top:4px}
.fielderr{color:var(--err);font-size:.86em;margin-top:4px}
.actions{margin-top:20px;display:flex;gap:10px;align-items:center}
.actions button{padding:8px 16px;border:none;border-radius:7px;background:var(--accent);
color:#fff;font:inherit;cursor:pointer}
.actions button:hover{background:#16406f}
.actions button.danger{background:var(--err)}
.actions button.danger:hover{background:#851616}

.rowactions{white-space:nowrap;font-size:.88em}
.rowactions a,.rowactions .linkbtn{margin-right:10px;color:var(--accent);
text-decoration:none;background:none;border:none;padding:0;font:inherit;cursor:pointer}
.rowactions a:hover,.rowactions .linkbtn:hover{text-decoration:underline}
.rowactions .linkbtn.danger{color:var(--err)}
form.inline{display:inline}
tr.rowoff td{background:#fafafa;color:var(--mut)}
.tiny{font-size:.82em;word-break:break-all}
.filters{display:flex;gap:10px;align-items:end;margin-bottom:16px;flex-wrap:wrap}
.filters label{display:block;font-size:.85em;color:var(--mut);margin-bottom:3px}
.filters select{padding:7px 9px;border:1px solid var(--line);border-radius:7px;font:inherit}
.filters button{padding:7px 14px;border:none;border-radius:7px;background:var(--accent);
color:#fff;font:inherit;cursor:pointer}
.checkline{display:flex;gap:8px;align-items:flex-start;margin:12px 0;font-size:.92em}
.checkline input{margin-top:3px}
.confirmform{background:var(--card);border:1px solid var(--line);border-radius:10px;
padding:16px 18px;max-width:720px}
.confirmform button{padding:8px 16px;border:none;border-radius:7px;background:var(--err);
color:#fff;font:inherit;cursor:pointer}
.disabled-action{margin-top:16px;display:flex;gap:10px;align-items:center}
.disabled-action button{padding:7px 14px;border:1px solid var(--line);border-radius:7px;
background:#f1f2f4;color:var(--mut);font:inherit;cursor:not-allowed}
.topbar nav a.alarm{color:var(--err);font-weight:600}
h3{font-size:15px;margin:20px 0 8px}
