:root{--navy:#0d1d2b;--navy2:#142a3c;--ink:#17232e;--muted:#71808d;--line:#dfe6ea;--bg:#f3f6f7;--white:#fff;--teal:#00a68a;--teal2:#007d70;--orange:#f39b4a;--blue:#478aed;--violet:#7568e8;--danger:#d9534f;--shadow:0 8px 28px rgba(18,42,55,.07)}*{box-sizing:border-box}html{font-size:16px}body{margin:0;background:var(--bg);color:var(--ink);font-family:"DM Sans","Microsoft YaHei",sans-serif}button,input,select{font:inherit}.app-shell{display:grid;grid-template-columns:246px 1fr;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:246px;background:var(--navy);color:#fff;padding:26px 18px;display:flex;flex-direction:column;z-index:30}.brand{display:flex;align-items:center;gap:11px;color:#fff;text-decoration:none;font:700 1.22rem "IBM Plex Sans",sans-serif;padding:0 10px 24px}.brand>span:last-child>span{color:#35d4b6}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,#08b99b,#4ad6b7);font-size:1.15rem}.plant-card{margin:0 4px 22px;padding:14px;border:1px solid #2a4051;border-radius:10px;background:#152a3a;display:flex;flex-direction:column;gap:3px}.eyebrow{text-transform:uppercase;letter-spacing:.1em;font-size:.72rem;font-weight:700;color:#81909b}.plant-card .eyebrow{color:#7f97a7}.plant-card strong{font-size:.9rem}.plant-card>span:last-child{font-size:.76rem;color:#8fa2b0}.sidebar nav{display:flex;flex-direction:column;gap:5px}.nav-item{width:100%;border:0;background:transparent;color:#9eb0bc;display:flex;align-items:center;gap:12px;padding:11px 13px;border-radius:8px;text-align:left;cursor:pointer;font-size:.88rem;font-weight:600}.nav-item span{width:20px;text-align:center;font-size:1rem}.nav-item:hover,.nav-item.active{color:#fff;background:#1d394b}.nav-item.active{box-shadow:inset 3px 0 #23c7a8}.sidebar-footer{margin-top:auto}.compliance{display:flex;gap:10px;align-items:center;border-bottom:1px solid #253b4b;padding:15px 8px 18px;margin-bottom:10px}.compliance i,.live i{width:8px;height:8px;background:#31c99f;border-radius:50%;box-shadow:0 0 0 4px rgba(49,201,159,.12)}.compliance div{display:flex;flex-direction:column}.compliance strong{font-size:.77rem}.compliance span{font-size:.65rem;color:#8296a5;margin-top:3px}main{grid-column:2;min-width:0}.topbar{height:72px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 34px;position:sticky;top:0;z-index:20}.menu-btn{display:none;border:0;background:none;font-size:1.4rem}.search{display:flex;align-items:center;gap:9px;width:min(440px,45vw);color:#8b98a2}.search input{width:100%;border:0;outline:0;font-size:.88rem;color:var(--ink)}.top-actions,.profile{display:flex;align-items:center;gap:16px}.icon-btn{border:0;background:#f5f7f8;width:38px;height:38px;border-radius:50%;position:relative}.icon-btn b{position:absolute;right:-1px;top:-2px;background:#eb6b57;color:#fff;font-size:.6rem;width:16px;height:16px;display:grid;place-items:center;border-radius:50%;border:2px solid white}.profile{gap:9px}.profile div{display:flex;flex-direction:column}.profile strong{font-size:.82rem}.profile small{font-size:.7rem;color:var(--muted)}.avatar{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:#daf5ee;color:var(--teal2);font-weight:700}.content{padding:30px 34px 50px;max-width:1500px;margin:auto}.view{display:none}.view.active{display:block;animation:fade .25s ease}@keyframes fade{from{opacity:.4;transform:translateY(4px)}}.page-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:24px}.page-head h1{font:700 1.8rem "IBM Plex Sans",sans-serif;margin:4px 0}.page-head p{margin:0;color:var(--muted);font-size:.88rem}.page-head.compact{align-items:center}.head-actions{display:flex;gap:10px}.btn{border:1px solid var(--line);background:#fff;padding:10px 15px;border-radius:8px;font-size:.82rem;font-weight:700;cursor:pointer;color:var(--ink)}.btn:hover{transform:translateY(-1px)}.btn.primary{background:var(--teal2);color:#fff;border-color:var(--teal2);box-shadow:0 5px 15px rgba(0,125,112,.18)}.btn.small{padding:7px 12px}.alert-bar{display:flex;align-items:center;gap:7px;background:#fff7e8;border:1px solid #f7d9a7;color:#6f5735;border-radius:9px;padding:11px 14px;margin-bottom:18px;font-size:.82rem}.alert-bar>span{display:grid;place-items:center;background:#f6a645;color:#fff;border-radius:50%;width:20px;height:20px;font-weight:700}.alert-bar button{margin-left:auto;border:0;background:none;color:#9a671e;font-weight:700;cursor:pointer}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:15px}.metric-grid.three{grid-template-columns:repeat(3,1fr)}.metric,.panel{background:#fff;border:1px solid #e4e9ec;border-radius:11px;box-shadow:var(--shadow)}.metric{padding:18px 19px;display:flex;flex-direction:column}.metric-top{display:flex;justify-content:space-between;align-items:center}.metric-icon{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;font-style:normal;font-weight:700}.metric-icon.blue,.event.blue{background:#e8f0ff;color:var(--blue)}.metric-icon.green,.event.green{background:#ddf7ef;color:var(--teal2)}.metric-icon.orange,.event.orange{background:#fff0df;color:#d87825}.metric-icon.violet{background:#efedff;color:var(--violet)}.metric em{font-size:.68rem;font-style:normal;padding:3px 6px;border-radius:10px;background:#f0f3f4;color:var(--muted)}.metric em.up{background:#e4f8f1;color:#168969}.metric em.down{background:#fff0e4;color:#c86e2d}.metric>span{color:var(--muted);font-size:.78rem;margin:15px 0 3px}.metric>strong{font:700 1.55rem "IBM Plex Sans",sans-serif}.metric>small{color:#8a979f;font-size:.7rem;margin-top:5px}.metric .warn,.warn{color:#d1772a}.dashboard-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:15px}.dashboard-grid.equal{grid-template-columns:1fr 1fr}.panel{padding:20px}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}.panel h2{font:700 1rem "IBM Plex Sans",sans-serif;margin:0}.panel-head p{margin:3px 0 0;font-size:.72rem;color:var(--muted)}.live{display:flex;align-items:center;gap:7px;font-size:.7rem;color:var(--teal2);font-weight:700}.more,.link{border:0;background:none;color:var(--muted);cursor:pointer}.link{color:var(--teal2);font-size:.75rem;font-weight:700}.donut-row{display:flex;align-items:center;justify-content:space-around}.donut{width:145px;height:145px;border-radius:50%;background:conic-gradient(var(--teal) 0 92%,var(--orange) 92% 96%,#7992b4 96% 98%,#e5eaed 98%);display:grid;place-items:center;position:relative}.donut:before{content:"";position:absolute;width:105px;height:105px;background:#fff;border-radius:50%}.donut div{z-index:1;display:flex;flex-direction:column;text-align:center}.donut strong{font-size:1.6rem}.donut span{font-size:.68rem;color:var(--muted)}.legend{min-width:170px}.legend div{display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:8px;margin:11px 0;font-size:.72rem}.legend i{width:7px;height:7px;border-radius:50%}.legend .c1{background:var(--teal)}.legend .c2{background:var(--orange)}.legend .c3{background:#7992b4}.legend .c4{background:#dfe5e8}.shift-list{border-top:1px solid var(--line);margin-top:18px;padding-top:13px}.shift-list>div{display:grid;grid-template-columns:145px 1fr 32px;align-items:center;gap:10px;margin:10px 0;font-size:.68rem;color:var(--muted)}.shift-list>div>div{height:5px;background:#e9eef0;border-radius:5px}.shift-list i{display:block;height:100%;background:var(--teal);border-radius:5px}.shift-list strong{color:var(--ink)}.cost-panel{position:relative}.chart-y{position:absolute;left:18px;top:70px;height:180px;display:flex;flex-direction:column;justify-content:space-between;font-size:.62rem;color:#9ba6ad}.bars{height:205px;margin-left:36px;border-bottom:1px solid var(--line);background:repeating-linear-gradient(to bottom,#edf1f3 0,#edf1f3 1px,transparent 1px,transparent 60px);display:flex;align-items:flex-end;justify-content:space-around;padding:0 8px}.bars>div{height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;width:11%;position:relative}.bars i{display:block;width:100%;height:var(--h);background:#b6e4da;border-radius:5px 5px 0 0}.bars .current i{background:var(--teal)}.bars span{font-size:.65rem;color:var(--muted);position:absolute;bottom:-25px}.bars b{font-size:.65rem;background:var(--navy);color:#fff;padding:4px 6px;border-radius:4px;margin-bottom:4px;white-space:nowrap}.quick-panel,.activity-panel{margin-top:0}.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.quick-grid button{border:1px solid var(--line);background:#fbfcfc;border-radius:8px;padding:13px 8px;display:flex;align-items:center;gap:9px;cursor:pointer;color:var(--ink)}.quick-grid button:hover{border-color:#8fd8c9;background:#f4fcfa}.quick-grid b{display:grid;place-items:center;background:#e5f6f2;color:var(--teal2);width:27px;height:27px;border-radius:7px}.quick-grid span{font-size:.7rem;font-weight:700}.activity{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:center;border-top:1px solid #edf0f2;padding:11px 0}.activity:first-of-type{border:0}.event{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;font-size:.7rem;font-weight:700}.activity strong{font-size:.74rem}.activity p{margin:3px 0 0;font-size:.65rem;color:var(--muted)}.activity button,.text-btn{border:0;background:none;color:var(--teal2);font-size:.7rem;font-weight:700;cursor:pointer}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.tabs{display:flex;gap:3px;background:#e8edef;padding:4px;border-radius:8px}.tabs button{border:0;background:transparent;padding:7px 12px;border-radius:6px;font-size:.72rem;color:var(--muted);cursor:pointer}.tabs button.active{background:#fff;color:var(--ink);box-shadow:0 2px 6px rgba(0,0,0,.06);font-weight:700}.toolbar select,.panel select{padding:8px 30px 8px 10px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink);font-size:.75rem}.table-panel{overflow:auto;padding:0}.table-panel .panel-head{padding:19px 20px 0}.table-panel table{width:100%;border-collapse:collapse;min-width:760px}.table-panel th{text-align:left;background:#f8fafb;color:#7c8991;font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;padding:11px 17px;border-bottom:1px solid var(--line)}.table-panel td{padding:13px 17px;border-bottom:1px solid #edf0f2;font-size:.75rem}.table-panel tbody tr:hover{background:#fbfdfd}.table-panel td:first-child{display:flex;flex-direction:column}.table-panel td small{color:var(--muted);font-size:.65rem;margin-top:2px}.status{display:inline-block;border-radius:12px;padding:4px 8px;font-size:.65rem;font-weight:700}.status.success{background:#e2f8f0;color:#168168}.status.warning{background:#fff0dc;color:#b66d27}.status.danger{background:#fde9e7;color:#c24b45}.status.info{background:#e8f0ff;color:#426ec1}.mini.metric{min-height:120px}.schedule{margin-bottom:15px}.date-nav{display:flex;align-items:center;gap:12px}.date-nav button{border:1px solid var(--line);background:#fff;border-radius:6px;width:28px;height:28px}.date-nav strong{font-size:.77rem}.shift-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.shift-cards>div{padding:17px;border:1px solid var(--line);border-top:3px solid var(--teal);border-radius:8px}.shift-cards>div:nth-child(2){border-top-color:var(--blue)}.shift-cards>div:nth-child(3){border-top-color:var(--violet)}.shift-cards span{display:block;color:var(--muted);font-size:.68rem;margin-bottom:6px}.shift-cards strong{font-size:.88rem}.shift-cards p{font-size:.67rem;color:var(--muted);margin:6px 0 18px}.shift-stat{border-top:1px solid var(--line);padding-top:12px;font-size:.7rem}.shift-stat b{font-size:1.15rem}.shift-stat em{float:right;font-style:normal;color:var(--teal2);font-weight:700}.payroll-progress{background:#fff;border:1px solid var(--line);border-radius:11px;padding:22px 35px;margin-bottom:15px;display:flex;align-items:center;box-shadow:var(--shadow)}.payroll-progress>div{display:flex;align-items:center;gap:8px;min-width:122px}.payroll-progress>div>i{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#e9eef0;color:#82919a;font-style:normal;font-size:.72rem;font-weight:700}.payroll-progress .done i,.payroll-progress .active i{background:var(--teal);color:#fff}.payroll-progress .active i{box-shadow:0 0 0 5px #dcf5ef}.payroll-progress span{display:flex;flex-direction:column;font-size:.74rem;font-weight:700}.payroll-progress small{font-size:.62rem;color:var(--muted);font-weight:400;margin-top:2px}.payroll-progress>b{height:1px;flex:1;background:var(--line);margin:0 15px}.payroll-progress>b:first-of-type{background:var(--teal)}.breakdown>div{display:grid;grid-template-columns:1fr auto;gap:7px;margin:17px 0;font-size:.74rem}.breakdown i{grid-column:1/3;display:block;width:var(--w);height:6px;background:var(--teal);border-radius:5px}.breakdown i.red{background:#ef746b}.checklist>div{display:grid;grid-template-columns:26px 1fr auto;align-items:center;padding:12px 0;border-bottom:1px solid var(--line);font-size:.74rem}.checklist i{width:21px;height:21px;display:grid;place-items:center;background:#e2f7f0;color:var(--teal2);border-radius:50%;font-style:normal;font-size:.65rem}.checklist b{color:var(--teal2);font-size:.68rem}.checklist .pending i{background:#fff0df;color:#c87429}.checklist .pending b{color:#c87429}.funnel>div{height:38px;width:var(--w);background:linear-gradient(90deg,var(--teal2),#3bc4a9);margin:9px 0;border-radius:4px;padding:0 11px;color:#fff;display:flex;align-items:center;justify-content:space-between;font-size:.7rem}.course>div{display:flex;justify-content:space-between;font-size:.72rem;margin:14px 0 5px}.course progress{width:100%;height:7px;accent-color:var(--teal)}.report-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:15px}.report-grid button{border:1px solid var(--line);background:#fff;border-radius:10px;padding:18px;display:flex;align-items:center;text-align:left;gap:12px;cursor:pointer;box-shadow:var(--shadow)}.report-grid button:hover{border-color:#8bd7c8;transform:translateY(-2px)}.report-grid div{display:flex;flex-direction:column;flex:1}.report-grid strong{font-size:.76rem}.report-grid small{color:var(--muted);font-size:.64rem;margin-top:4px}.line-chart svg{width:100%;height:280px}.grid-lines path{stroke:#e7ecef;stroke-width:1}.line{fill:none;stroke-width:4;stroke-linecap:round}.greenline{stroke:var(--teal)}.orangeline{stroke:var(--orange)}.area{fill:url(#none);fill:rgba(0,166,138,.07)}.xlabels text{fill:#8b979f;font-size:12px}.chart-legend{display:flex;gap:20px;justify-content:center;font-size:.72rem}.chart-legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}.green-dot{background:var(--teal)}.orange-dot{background:var(--orange)}.modal-backdrop{position:fixed;inset:0;background:rgba(5,18,28,.55);z-index:100;display:none;align-items:center;justify-content:center;padding:20px}.modal-backdrop.open{display:flex}.modal{width:min(600px,100%);background:#fff;border-radius:13px;padding:24px;box-shadow:0 30px 90px rgba(0,0,0,.25);animation:modal .2s ease}@keyframes modal{from{opacity:0;transform:translateY(8px) scale(.98)}}.modal-head{display:flex;justify-content:space-between}.modal h2{margin:5px 0 20px}.close{border:0;background:#f1f4f5;border-radius:50%;width:32px;height:32px;font-size:1.2rem}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-grid label{display:flex;flex-direction:column;gap:6px;font-size:.74rem;font-weight:700}.form-grid input,.form-grid select{border:1px solid var(--line);border-radius:7px;padding:10px;font-size:.8rem;outline:none}.form-grid input:focus,.form-grid select:focus{border-color:var(--teal)}.modal-actions{display:flex;justify-content:flex-end;gap:9px;border-top:1px solid var(--line);margin-top:22px;padding-top:18px}.toast{position:fixed;right:25px;bottom:25px;background:var(--navy);color:#fff;padding:12px 18px;border-radius:8px;font-size:.78rem;box-shadow:0 10px 35px rgba(0,0,0,.2);opacity:0;transform:translateY(15px);pointer-events:none;transition:.25s;z-index:120}.toast.show{opacity:1;transform:none}@media(max-width:1050px){.metric-grid{grid-template-columns:repeat(2,1fr)}.report-grid{grid-template-columns:repeat(2,1fr)}.quick-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.profile div{display:none}}@media(max-width:760px){.app-shell{display:block}.sidebar{transform:translateX(-100%);transition:.25s}.sidebar.open{transform:none;box-shadow:20px 0 50px rgba(0,0,0,.2)}main{width:100%}.topbar{padding:0 17px}.menu-btn{display:block}.search{width:52vw}.content{padding:22px 16px}.page-head{align-items:flex-start;gap:18px}.page-head,.page-head.compact{flex-direction:column}.metric-grid,.metric-grid.three,.report-grid,.shift-cards,.dashboard-grid.equal{grid-template-columns:1fr}.head-actions{width:100%}.head-actions .btn{flex:1}.alert-bar{align-items:flex-start}.alert-bar button{white-space:nowrap}.donut-row{flex-direction:column;gap:15px}.payroll-progress{overflow:auto;padding:18px}.payroll-progress>b{min-width:30px}.toolbar{align-items:flex-start;gap:12px;flex-direction:column}.tabs{overflow:auto;width:100%}.form-grid{grid-template-columns:1fr}.quick-grid{grid-template-columns:1fr 1fr}.profile>span:last-child{display:none}}
