:root{--navy:#1f3864;--navy-2:#2e4a7a;--bg:#f4f6fa;--panel:#fff;--line:#e3e8f0;--text:#1f2733;--muted:#6b7686;--accent:#2f6fed;--green:#1f9d57;--green-bg:#e7f6ee;--amber:#b5810b;--amber-bg:#fdf3dc;--red:#c93b3b;--red-bg:#fbe9e9;--grey:#7a8699;--grey-bg:#eef1f5;--radius:10px;--shadow:0 1px 3px rgba(20,30,50,.08),0 1px 2px rgba(20,30,50,.04)}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.45}h1,h2,h3{margin:0}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}.hidden{display:none!important}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1f3864,#2e4a7a)}.login-card{background:#fff;width:360px;padding:32px;border-radius:14px;box-shadow:0 10px 40px #00000040}.logo{display:flex;align-items:center;gap:10px;margin-bottom:22px}.logo-badge{width:34px;height:34px;border-radius:8px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700}.field{margin-bottom:14px}.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:5px;font-weight:600}.field input,.field select,.field textarea{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font-size:14px;background:#fff}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #2f6fed1f}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 15px;border-radius:8px;border:1px solid transparent;font-weight:600;font-size:14px;background:transparent}.btn-primary{background:var(--navy);color:#fff}.btn-primary:hover{background:var(--navy-2)}.btn-block{width:100%}.btn-light{background:#fff;border-color:var(--line);color:var(--text)}.btn-light:hover{background:#f7f9fc}.btn-green{background:var(--green);color:#fff}.btn-green:hover{filter:brightness(.95)}.btn-red{background:#fff;border-color:var(--red);color:var(--red)}.btn-red:hover{background:var(--red-bg)}.btn-sm{padding:5px 10px;font-size:12.5px}.app-shell{display:flex;min-height:100vh}.sidebar{width:228px;background:var(--navy);color:#cdd6e6;flex-shrink:0;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:10px;padding:18px;color:#fff;font-weight:700;font-size:15px;border-bottom:1px solid rgba(255,255,255,.08)}.nav{padding:10px;flex:1}.nav a{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:8px;color:#cdd6e6;font-weight:500;margin-bottom:2px;cursor:pointer}.nav a .ic{width:18px;text-align:center;opacity:.9}.nav a:hover{background:#ffffff14;color:#fff}.nav a.active{background:#fff;color:var(--navy);font-weight:600}.nav .badge-n{margin-left:auto;background:var(--red);color:#fff;font-size:11px;padding:1px 7px;border-radius:10px}.side-foot{padding:14px 16px;border-top:1px solid rgba(255,255,255,.08);font-size:12px;color:#9fb0cc}.main{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{height:60px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 24px;gap:16px}.topbar .page-title{font-size:16px;font-weight:700}.spacer{flex:1}.user{display:flex;align-items:center;gap:10px}.avatar{width:34px;height:34px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px}.u-name{font-weight:600;font-size:13px;line-height:1.1}.u-role{font-size:11px;color:var(--muted)}.content{padding:24px;overflow:auto}.grid{display:grid;gap:16px}.cards-4{grid-template-columns:repeat(4,1fr)}.cards-2{grid-template-columns:repeat(2,1fr)}@media (max-width:1000px){.cards-4{grid-template-columns:repeat(2,1fr)}.cards-2{grid-template-columns:1fr}}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card-pad{padding:16px 18px}.stat .k{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.03em}.stat .v{font-size:26px;font-weight:700;margin-top:6px}.stat .v small{font-size:13px;color:var(--muted);font-weight:600}.stat .sub{font-size:12px;color:var(--muted);margin-top:2px}.section-h{display:flex;align-items:center;margin:24px 0 12px}.section-h h2{font-size:15px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.panel-h{padding:13px 16px;border-bottom:1px solid var(--line);font-weight:700;font-size:13.5px;display:flex;align-items:center;gap:10px}table{width:100%;border-collapse:collapse}th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding:10px 14px;border-bottom:1px solid var(--line);background:#fafbfd}td{padding:11px 14px;border-bottom:1px solid var(--line);font-size:13.5px;vertical-align:middle}tr:last-child td{border-bottom:none}tbody tr:hover{background:#fafbfe}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600}.badge:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.b-val{color:var(--green);background:var(--green-bg)}.b-enc{color:var(--amber);background:var(--amber-bg)}.b-ref{color:var(--red);background:var(--red-bg)}.b-bro{color:var(--grey);background:var(--grey-bg)}.pill{display:inline-block;padding:2px 9px;border-radius:6px;font-size:12px;font-weight:600;background:#eef2fb;color:var(--navy)}.muted{color:var(--muted)}.row-mini{display:flex;align-items:center;gap:12px;padding:11px 16px;border-bottom:1px solid var(--line)}.row-mini:last-child{border-bottom:none}.chain{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.chain .step{background:#eef2fb;color:var(--navy);padding:3px 9px;border-radius:6px;font-size:12px;font-weight:600}.chain .step.done{background:var(--green-bg);color:var(--green)}.chain .step.current{background:var(--amber-bg);color:var(--amber);outline:2px solid rgba(181,129,11,.25)}.chain .arr{color:var(--muted)}.note{padding:10px 12px;border-radius:8px;font-size:12.5px;display:flex;gap:8px;align-items:flex-start;margin-bottom:10px}.note-info{background:#eaf1fe;color:#214a9a}.note-warn{background:var(--amber-bg);color:#7a5a07}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.toolbar select{padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:13px}.tabs{display:flex;gap:4px;background:#eef1f5;padding:4px;border-radius:9px;width:fit-content}.tabs button{border:none;background:transparent;padding:6px 14px;border-radius:6px;font-weight:600;font-size:13px;color:var(--muted)}.tabs button.active{background:#fff;color:var(--navy);box-shadow:var(--shadow)}.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.cal .dow{font-size:11px;color:var(--muted);font-weight:700;text-align:center;text-transform:uppercase}.cal .day{aspect-ratio:1;border:1px solid var(--line);border-radius:8px;padding:6px;font-size:12px;position:relative;background:#fff}.cal .day.out{background:#fafbfd;color:#c2c9d4}.cal .day .dn{font-weight:600}.cal .day .ev{position:absolute;left:6px;right:6px;bottom:6px;font-size:10px;font-weight:700;padding:2px 4px;border-radius:5px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ev-val{background:var(--green-bg);color:var(--green)}.ev-enc{background:var(--amber-bg);color:var(--amber)}.cal .day.we{background:#f6f8fb}.plan{overflow:auto}.plan table{min-width:760px}.plan th.dayh{text-align:center;width:42px;font-size:11px}.plan th.dayh.we{background:#eef1f5}.plan td.name{font-weight:600;white-space:nowrap}.plan td.cell{padding:0;height:38px;border-left:1px solid var(--line)}.plan td.cell.we{background:#f6f8fb}.plan .blk{height:26px;margin:6px 3px;border-radius:5px;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;color:#fff}.blk-val{background:var(--green)}.blk-enc{background:var(--amber)}.legend{display:flex;gap:16px;align-items:center;font-size:12px;color:var(--muted);flex-wrap:wrap}.legend .dot{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:5px;vertical-align:-1px}.help{font-size:12px;color:var(--muted);margin-top:6px}.checkbox{width:16px;height:16px}
