:root{--bg:#07111f;--panel:#101e30;--line:#263950;--text:#eaf2fb;--muted:#8fa7bf;--cyan:#25d4c8;--red:#ff5b67;--yellow:#ffc857;--green:#3bd48d}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font:14px system-ui,"Microsoft YaHei",sans-serif}body{display:flex;align-items:stretch}a{color:#7cebe4;text-decoration:none}aside{display:block;position:fixed;left:0;top:0;bottom:0;width:220px!important;min-width:220px!important;max-width:220px!important;height:100vh;overflow:auto;z-index:20;background:#0a1727;border-right:1px solid var(--line);padding:24px 14px}.brand{font-size:18px;font-weight:800;padding:8px 12px 28px;color:var(--cyan)}.brand small{font-size:11px;color:var(--muted)}nav{display:block!important}nav a{display:block!important;width:100%;padding:13px;border-radius:8px;margin:4px 0;color:var(--muted)}nav a:hover,nav a.on{background:#153048;color:#fff}main{display:block;position:relative;z-index:1;margin-left:220px!important;width:calc(100% - 220px);padding:28px;min-height:100vh}main.full{margin-left:0!important;width:100%;display:grid;place-items:center}header{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}h1{font-size:26px;margin:0}h2{font-size:16px;margin:0 0 16px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin-bottom:18px}.card,.panel{background:linear-gradient(145deg,#112237,#0d1a2a);border:1px solid var(--line);border-radius:12px;padding:18px}.card b{display:block;font-size:25px;color:var(--cyan);overflow:hidden;text-overflow:ellipsis}.card span,small{display:block;color:var(--muted);margin-top:6px}.card.red{border-color:#773442}.card.red b{color:var(--red)}.card.yellow b{color:var(--yellow)}.cols{display:grid;grid-template-columns:2fr 1fr;gap:18px}.toolbar,.actions,.import{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.import{margin-top:12px}input,select,button,.button{background:#0b1726;border:1px solid #314963;color:#fff;padding:10px 12px;border-radius:7px}input{min-width:200px}button,.button{background:#12685f;border-color:#1d9e91;cursor:pointer}.ghost{background:transparent}.dangerbtn{background:#722b36;border-color:#a84150}table{width:100%;border-collapse:collapse;margin-top:14px}th,td{text-align:left;padding:11px 9px;border-bottom:1px solid var(--line)}th{color:var(--muted);font-size:12px}.soc{display:inline-block;padding:5px 8px;border-radius:99px}.soc.low{color:#fff;background:#812d39}.soc.watch{color:#261900;background:var(--yellow)}.soc.ok{color:#042419;background:var(--green)}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin:0 5px 0 14px}.low{background-color:#6d2835}.watch{background-color:#6b551d}.ok{background-color:#175b43}.free{background-color:#213249}.legend{color:var(--muted);margin:8px 0}.task,.event{display:grid;gap:5px;padding:12px 0;border-bottom:1px solid var(--line)}.task em{color:var(--green)}.slotgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.slot{border:1px solid #35506b;border-radius:8px;padding:10px;min-height:112px}.slot b{font-size:11px;color:var(--muted)}.slot strong{display:block;font-size:20px;margin:9px 0}.slot span,.slot em{display:block;font-size:11px;margin:3px 0}.slot.low{border-color:var(--red);box-shadow:0 0 12px #ff5b6722}.slot.watch{border-color:var(--yellow)}.slot.ok{border-color:var(--green)}.slot.free{opacity:.55}.login{width:min(470px,90vw);text-align:center;background:#0e1e31;border:1px solid var(--line);padding:50px;border-radius:18px}.login .bolt{font-size:52px}.login h1{margin:14px 0}.login p{color:var(--muted)}.login form{display:grid;gap:12px;margin-top:30px}.login input{width:100%}.danger{color:var(--red)}dl{display:grid;grid-template-columns:100px 1fr;gap:10px}dt{color:var(--muted)}dd{margin:0}.empty{text-align:center;color:var(--muted);padding:28px}@media(max-width:700px){body{display:block}aside{position:relative;width:100%!important;min-width:0!important;max-width:none!important;height:auto}main{margin-left:0!important;width:100%;padding:15px}.cols{grid-template-columns:1fr}nav{display:flex!important;overflow:auto}nav a{display:block!important;width:auto;white-space:nowrap}.slotgrid{grid-template-columns:repeat(2,1fr)}}
