:root{--bg:#0f1113;--panel:#1a1d21;--panel2:#22262b;--line:#2c3138;--txt:#e6e8ea;--mut:#9aa3ad;--acc:#4a9eff;--ok:#3ecf8e;--warn:#f0a020;--err:#ff5c5c;}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,'Segoe UI',sans-serif;background:var(--bg);color:var(--txt);font-size:14px}
a{color:var(--acc);text-decoration:none}
button{font:inherit;cursor:pointer;border:1px solid var(--line);background:var(--panel2);color:var(--txt);padding:7px 13px;border-radius:7px}
button:hover{border-color:var(--acc)}
button.primary{background:var(--acc);border-color:var(--acc);color:#06121f;font-weight:600}
button.danger{border-color:var(--err);color:var(--err)}
button.sm{padding:4px 9px;font-size:12px}
input,select{font:inherit;background:var(--panel);border:1px solid var(--line);color:var(--txt);padding:8px 10px;border-radius:7px;width:100%}
label{display:block;color:var(--mut);font-size:12px;margin:10px 0 4px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.app{display:flex;min-height:100vh}
.side{width:210px;background:var(--panel);border-right:1px solid var(--line);padding:14px;flex-shrink:0}
.side h1{font-size:15px;margin:4px 8px 18px;line-height:1.3}
.nav a{display:block;padding:9px 11px;border-radius:7px;color:var(--txt);margin-bottom:2px}
.nav a.active{background:var(--panel2);color:var(--acc)}
.main{flex:1;padding:22px 26px;max-width:1100px}
.main.wide{max-width:none}
.main h2{margin:0 0 16px;font-weight:600}
.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px;margin-bottom:14px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line)}
th{color:var(--mut);font-weight:500;font-size:12px}
.tag{display:inline-block;padding:2px 8px;border-radius:20px;font-size:11px;border:1px solid var(--line)}
.tag.ok{color:var(--ok);border-color:var(--ok)}
.tag.err{color:var(--err);border-color:var(--err)}
.tag.warn{color:var(--warn);border-color:var(--warn)}
.tag.mut{color:var(--mut)}
.login{max-width:340px;margin:14vh auto}
.err-msg{color:var(--err);margin-top:8px;min-height:16px}
.mut{color:var(--mut)}
.right{margin-left:auto}
.timeline{position:relative;height:40px;background:var(--panel2);border-radius:6px;overflow:hidden;margin:10px 0}
.slot{position:absolute;top:0;height:100%;background:rgba(74,158,255,.35);border-left:1px solid var(--acc);font-size:10px;padding:2px 4px;overflow:hidden;white-space:nowrap}
.gap{position:absolute;top:0;height:100%;background:repeating-linear-gradient(45deg,transparent,transparent 6px,rgba(255,92,92,.25) 6px,rgba(255,92,92,.25) 12px)}
.pill{font-size:12px;color:var(--mut)}
.flash{position:fixed;right:18px;bottom:18px;background:var(--panel2);border:1px solid var(--acc);padding:12px 16px;border-radius:8px;max-width:320px}
/* Одинаковые плитки станций */
.station-tile{display:flex;flex-direction:column}
.st-head{display:flex;align-items:center;gap:8px}
.st-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px}
.st-head .tag{flex-shrink:0}
.st-slug{margin:6px 0}
.st-now{min-height:42px;margin-bottom:8px}
.st-track{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.st-actions{display:flex;gap:8px;margin-top:auto}
.st-air{margin-top:10px;border-top:1px solid var(--line);padding-top:10px}
