:root{--brand: #b82121;--brand-soft: #fbeaea;--ink: #101725;--muted: #7c8698;--bg: #fafbfc;--card: #ffffff;--line: #eef1f5;--field: #f4f6f9;--beg: #19a463;--beg-soft: #e7f7ef;--int: #2f7ff0;--int-soft: #e7f1fe;--adv: #8b5cf6;--adv-soft: #f0eafe;--ok: #19a463;--ok-soft: #e7f7ef;--warn: #c97a16;--warn-soft: #fdf2e0;--full: #c9483a;--full-soft: #fdecea;--hi: #f0a019;--hi-soft: #fdf2e0;--radius: 18px;--shadow: 0 1px 2px rgba(16, 23, 37, .04);--shadow-pop: 0 18px 44px rgba(20, 24, 40, .28);--shadow-float: 0 10px 28px rgba(16, 23, 37, .1)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%}body{font-family:Plus Jakarta Sans,Noto Sans SC,PingFang SC,Microsoft Yahei,system-ui,sans-serif;background:var(--bg);color:var(--ink);font-size:14px;-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}a{color:var(--brand);text-decoration:none}::selection{background:var(--brand-soft)}#shell{display:flex;min-height:100vh}#side{width:248px;flex:0 0 248px;background:var(--card);border-right:1px solid var(--line);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand-row{display:flex;align-items:center;gap:10px;padding:18px 18px 14px}.brand-row img{height:34px;width:auto}.brand-row .bt{font-weight:800;font-size:15px;letter-spacing:-.01em;line-height:1.1}.brand-row .bt small{display:block;font-weight:700;font-size:10.5px;color:var(--muted);letter-spacing:.02em;margin-top:2px}.nav{padding:8px 12px;overflow-y:auto;flex:1}.nav-sec{font-size:10px;font-weight:800;letter-spacing:.08em;color:var(--muted);text-transform:uppercase;padding:14px 10px 6px}.nav-item{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:11px;margin-bottom:2px;color:var(--muted);font-weight:700;font-size:13.5px;position:relative;transition:background .12s,color .12s;width:100%;text-align:left}.nav-item:hover{background:var(--field);color:var(--ink)}.nav-item.active{background:var(--brand-soft);color:var(--brand)}.nav-item.active:before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--brand)}.nav-item svg{width:19px;height:19px;flex:0 0 19px}.nav-item .badge{margin-left:auto;background:var(--brand);color:#fff;font-size:10px;font-weight:800;border-radius:999px;min-width:18px;height:18px;padding:0 5px;display:flex;align-items:center;justify-content:center}.side-foot{padding:12px;border-top:1px solid var(--line)}.side-foot .who{display:flex;align-items:center;gap:10px;padding:6px 4px}.avatar{width:34px;height:34px;border-radius:50%;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;flex:0 0 34px}.who .nm{font-weight:700;font-size:13px;line-height:1.2}.who .rl{font-size:11px;color:var(--muted);font-weight:600}#main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:16px;padding:18px 28px 14px;border-bottom:1px solid var(--line);background:#fafbfcdb;-webkit-backdrop-filter:saturate(1.4) blur(8px);backdrop-filter:saturate(1.4) blur(8px);position:sticky;top:0;z-index:40}.topbar h1{font-size:24px;font-weight:800;letter-spacing:-.02em;margin:0}.topbar .sub{font-size:12.5px;color:var(--muted);font-weight:600;margin-top:3px}.top-right{margin-left:auto;display:flex;align-items:center;gap:10px}.hint-chip{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:var(--muted);background:var(--field);border:1px solid var(--line);padding:6px 11px;border-radius:999px}.hint-chip b{color:var(--brand)}.seg{display:flex;background:var(--field);border:1px solid var(--line);border-radius:999px;padding:3px}.seg button{font-size:12px;font-weight:800;padding:5px 12px;border-radius:999px;color:var(--muted)}.seg button.on{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}.content{padding:24px 28px 80px;max-width:1240px;width:100%}.row{display:flex}.col{display:flex;flex-direction:column}.grid{display:grid;gap:16px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card.pad{padding:18px}.card-h{display:flex;align-items:center;gap:10px;margin-bottom:14px}.card-h h3{font-size:15.5px;font-weight:800;margin:0}.card-h .more{margin-left:auto;font-size:12.5px;font-weight:700;color:var(--brand)}.muted{color:var(--muted)}.small{font-size:12px}.b{font-weight:800}.sectitle{font-size:12.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:26px 0 12px}.btn{display:inline-flex;align-items:center;gap:7px;font-weight:800;font-size:13px;padding:9px 15px;border-radius:11px;border:1px solid var(--line);background:var(--card);color:var(--ink);transition:transform .08s,background .12s,border-color .12s}.btn:hover{background:var(--field)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.55;cursor:default}.btn svg{width:16px;height:16px}.btn.pri{background:var(--brand);color:#fff;border-color:var(--brand)}.btn.pri:hover{background:#a11d1d}.btn.ghost{background:transparent;border-color:transparent;color:var(--brand)}.btn.sm{font-size:12px;padding:6px 11px;border-radius:9px}.btn.danger{color:var(--full);border-color:var(--full-soft);background:var(--full-soft)}.pill{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:800;padding:3px 9px;border-radius:999px;line-height:1.4}.pill.beg{color:var(--beg);background:var(--beg-soft)}.pill.int{color:var(--int);background:var(--int-soft)}.pill.adv{color:var(--adv);background:var(--adv-soft)}.pill.ok{color:var(--ok);background:var(--ok-soft)}.pill.warn{color:var(--warn);background:var(--warn-soft)}.pill.full{color:var(--full);background:var(--full-soft)}.pill.hi{color:var(--hi);background:var(--hi-soft)}.pill.mut{color:var(--muted);background:var(--field)}.dot{width:7px;height:7px;border-radius:50%}.tile{width:46px;height:46px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:24px;flex:0 0 46px}.tile.beg{background:var(--beg-soft)}.tile.int{background:var(--int-soft)}.tile.adv{background:var(--adv-soft)}table{width:100%;border-collapse:collapse}thead th{font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);text-align:left;padding:0 14px 10px}tbody td{padding:13px 14px;border-top:1px solid var(--line);font-size:13px;font-weight:600;vertical-align:middle}tbody tr{transition:background .1s}tbody tr.clik:hover{background:var(--field);cursor:pointer}td .who2{display:flex;align-items:center;gap:9px}.av-sm{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px;color:#fff;flex:0 0 30px}.lrow{display:flex;align-items:center;gap:13px;padding:12px 0;border-top:1px solid var(--line)}.lrow:first-child{border-top:none}.lrow .t1{font-weight:700;font-size:13.5px}.lrow .t2{font-size:12px;color:var(--muted);font-weight:600;margin-top:2px}.lrow .rt{margin-left:auto;text-align:right}.field{margin-bottom:15px}.field label{display:block;font-size:12px;font-weight:800;color:var(--muted);margin-bottom:6px;letter-spacing:.02em}.input,select,textarea{width:100%;font-family:inherit;font-size:13.5px;font-weight:600;color:var(--ink);border:1.5px solid var(--line);border-radius:11px;padding:10px 12px;background:var(--card);outline:none}.input:focus,select:focus,textarea:focus{border-color:var(--brand)}textarea{min-height:84px;resize:vertical;line-height:1.5}.frow{display:grid;grid-template-columns:1fr 1fr;gap:14px}.chip-row{display:flex;gap:8px;flex-wrap:wrap}.chip{font-size:12.5px;font-weight:800;padding:7px 13px;border-radius:999px;border:1px solid var(--line);color:var(--ink);background:var(--card)}.chip.on{background:var(--brand);color:#fff;border-color:var(--brand)}.toggle{width:42px;height:24px;border-radius:999px;background:var(--line);position:relative;transition:background .15s;flex:0 0 42px}.toggle.on{background:var(--brand)}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 2px #0003}.toggle.on:after{left:21px}.sched{display:grid;grid-template-columns:64px repeat(7,1fr);gap:6px}.sched .hd{font-size:11.5px;font-weight:800;color:var(--muted);text-align:center;padding:6px 0}.sched .tcol{font-size:11px;font-weight:700;color:var(--muted);text-align:right;padding-right:6px;padding-top:3px}.slot{min-height:46px;border:1px dashed var(--line);border-radius:10px}.block{border-radius:10px;padding:7px 9px;font-size:11.5px;font-weight:800;line-height:1.25;cursor:pointer;transition:transform .08s}.block:active{transform:scale(.97)}.block small{display:block;font-weight:700;font-size:10px;opacity:.85;margin-top:2px}.block.beg{background:var(--beg-soft);color:var(--beg)}.block.int{background:var(--int-soft);color:var(--int)}.block.adv{background:var(--adv-soft);color:var(--adv)}.notice{border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:16px;font-size:13px;font-weight:600;background:var(--card)}.notice.warn{background:var(--warn-soft);border-color:#f2d9b0;color:var(--warn)}.notice.err{background:var(--full-soft);border-color:#efc4be;color:var(--full)}.notice.ok{background:var(--ok-soft);border-color:#bfe8d2;color:var(--ok)}#login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(1200px 500px at 50% -10%,var(--brand-soft),transparent 60%),var(--bg)}.login-card{width:100%;max-width:400px;background:var(--card);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow-float);padding:30px 28px}.login-card img{height:44px;margin-bottom:8px}.login-card h2{font-size:21px;font-weight:800;margin:6px 0 4px}.login-card p{color:var(--muted);font-size:13px;font-weight:600;margin:0 0 22px}.menu-btn{display:none;width:38px;height:38px;border-radius:10px;border:1px solid var(--line);align-items:center;justify-content:center}.menu-btn svg{width:20px;height:20px}@media(max-width:920px){#side{position:fixed;left:-260px;transition:left .2s;z-index:70;box-shadow:var(--shadow-float)}#side.open{left:0}.menu-btn{display:flex!important}.topbar{padding:14px 16px}.content{padding:18px 16px 80px}.frow{grid-template-columns:1fr}}
