:root{--bg: #eef2ef;--surface: #fff;--surface-soft: #f8faf8;--text: #182324;--muted: #66736f;--line: #dce3df;--accent: #1f7a61;--accent-dark: #15513f;--blue: #315f7d;--gold: #a66c16;--red: #b33b31;--sidebar: #16342d;--sidebar-soft: #214b42;--shadow: 0 16px 44px rgba(26, 43, 39, .08);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--text)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:linear-gradient(180deg,#ffffffb8,#fff0 260px),var(--bg)}button,input,select,textarea{font:inherit}.app-shell{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;overflow-y:auto;padding:18px 14px;background:linear-gradient(180deg,#ffffff12,#fff0),var(--sidebar);color:#f8f5ed;box-shadow:12px 0 34px #16342d29;scrollbar-color:rgba(255,255,255,.32) transparent;scrollbar-width:thin}.brand{display:flex;align-items:center;gap:12px}.brand.large{margin-bottom:26px}.brand strong{display:block;font-size:16px;letter-spacing:0}.brand span:not(.brand-mark){display:block;color:#f8f5edb8;font-size:13px}.login-card .brand span:not(.brand-mark){color:var(--muted)}.brand-mark{display:grid;place-items:center;width:40px;height:40px;border-radius:8px;background:linear-gradient(135deg,#2ba47f,#1f7a61);color:#fff;font-weight:800;box-shadow:0 10px 22px #1f7a6142}nav{display:grid;gap:4px;margin-top:20px}.nav-link{display:flex;align-items:center;gap:10px;width:100%;min-height:34px;padding:7px 10px;border:0;border-radius:8px;background:transparent;color:#f8f5edcc;cursor:pointer;text-align:left;transition:background .14s ease,color .14s ease,transform .14s ease}.nav-link:hover,.nav-link.active{background:#ffffff1f;color:#fff}.nav-link.active{box-shadow:inset 3px 0 #f0b35b}.nav-link:hover{transform:translate(2px)}.nav-icon,.button-icon{display:inline-grid;flex:0 0 auto;place-items:center}.nav-icon{width:22px;height:22px;border-radius:7px;background:#ffffff1a}.nav-icon:before,.button-icon:before{color:currentColor;font-size:13px;font-weight:850;line-height:1}.nav-icon[data-icon=dash]:before{content:"D"}.nav-icon[data-icon=dept]:before{content:"DP";font-size:10px}.nav-icon[data-icon=people]:before{content:"P"}.nav-icon[data-icon=asset]:before{content:"A"}.nav-icon[data-icon=assign]:before{content:"AS";font-size:10px}.nav-icon[data-icon=report]:before{content:"R"}.nav-icon[data-icon=cat]:before{content:"C"}.nav-icon[data-icon=status]:before{content:"S"}.nav-icon[data-icon=loc]:before{content:"L"}.nav-icon[data-icon=user]:before{content:"U"}.nav-section{margin:10px 10px 3px;color:#f8f5ed8c;font-size:11px;font-weight:800;letter-spacing:0;text-transform:uppercase}.main{min-width:0;padding:22px 28px 36px}.page-heading,.panel-header,.row-actions,.form-actions,.upload-line{display:flex;align-items:center;gap:12px}.page-heading,.panel-header{justify-content:space-between}.topbar{position:sticky;z-index:10;top:0;display:flex;align-items:center;justify-content:space-between;min-height:64px;margin:-22px -28px 24px;padding:14px 28px;border-bottom:1px solid rgba(220,227,223,.84);background:#f8faf8eb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.topbar-title span,.account-pill span{display:block;color:var(--muted);font-size:12px;text-transform:uppercase}.topbar-title strong{display:block;margin-top:2px;font-size:16px}.account-pill{display:inline-flex;align-items:center;gap:10px;min-width:0;padding:6px 8px 6px 6px;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:0 8px 22px #1823240d}.account-pill strong{display:block;max-width:170px;overflow:hidden;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.account-avatar{display:grid;width:34px;height:34px;place-items:center;border-radius:8px;background:#f0b35b;color:#2d2312;font-size:13px;font-weight:850;text-transform:uppercase}.sync-pill{display:inline-flex;min-height:28px;align-items:center;padding:4px 9px;border-radius:999px;background:#edf7f2;color:var(--accent-dark);font-size:12px;font-weight:800;text-transform:uppercase}h1,h2,p{margin:0}h1{font-size:30px;line-height:1.2}h2{font-size:17px}.page-heading{align-items:end;margin-bottom:20px;padding:2px 0}.page-heading p{margin-top:6px;color:var(--muted)}.dashboard-hero{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px;padding:22px;border:1px solid rgba(31,122,97,.18);border-radius:8px;background:linear-gradient(135deg,#1f7a61ed,#16342df2),var(--sidebar);color:#fff;box-shadow:0 20px 54px #16342d2e}.dashboard-hero h2{margin-top:6px;font-size:24px}.eyebrow{color:#ffffffb8;font-size:12px;font-weight:850;text-transform:uppercase}.hero-metrics{display:grid;grid-template-columns:repeat(2,minmax(110px,1fr));gap:10px}.hero-metrics button{display:grid;gap:2px;min-width:120px;padding:12px;border:1px solid rgba(255,255,255,.16);border-radius:8px;background:#ffffff1a;color:#ffffffc2;cursor:pointer;font-size:12px;font-weight:750;text-align:left;text-transform:uppercase;transition:background .14s ease,border-color .14s ease,transform .14s ease}.hero-metrics strong{color:#fff;font-size:26px}.hero-metrics button:hover,.hero-metrics button:focus-visible{border-color:#ffffff6b;background:#ffffff2b;transform:translateY(-1px)}.hero-metrics button:focus-visible{outline:2px solid rgba(255,255,255,.28);outline-offset:2px}.panel{margin-bottom:20px;padding:20px;background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);animation:panel-in .18s ease both}.panel-header{margin-bottom:14px}@keyframes panel-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.stats-grid{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:14px;margin-bottom:20px}.stat{position:relative;overflow:hidden;display:block;width:100%;padding:18px;background:linear-gradient(135deg,#1f7a6112,#f0b35b0d),var(--surface);border:1px solid var(--line);border-radius:8px;color:var(--text);cursor:pointer;box-shadow:0 10px 26px #1823240d;text-align:left;transition:border-color .14s ease,box-shadow .14s ease,transform .14s ease}.stat:before{position:absolute;top:0;right:0;width:74px;height:4px;background:#f0b35b;content:""}.stat span{display:block;color:var(--muted);font-size:13px}.stat:hover,.stat:focus-visible{border-color:#1f7a6161;box-shadow:0 16px 34px #1f7a6121;transform:translateY(-1px)}.stat:focus-visible{outline:2px solid rgba(31,122,97,.2);outline-offset:2px}.stat strong{display:block;margin-top:4px;font-size:28px}.stat.urgent strong{color:var(--red)}.chart-grid{display:grid;grid-template-columns:minmax(280px,.9fr) minmax(320px,1.1fr);gap:18px}.chart-panel{min-height:260px}.donut-wrap{display:grid;grid-template-columns:170px minmax(0,1fr);gap:22px;align-items:center}.donut{position:relative;display:grid;width:160px;height:160px;place-items:center;border-radius:50%;box-shadow:inset 0 0 0 1px #1823240d}.donut:after{position:absolute;top:31px;right:31px;bottom:31px;left:31px;border-radius:50%;background:var(--surface);content:""}.donut span,.donut small{position:relative;z-index:1}.donut span{align-self:end;font-size:30px;font-weight:850}.donut small{align-self:start;color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase}.legend-list,.bar-list{display:grid;gap:10px}.legend-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;color:var(--muted)}.legend-row strong{overflow:hidden;color:var(--text);text-overflow:ellipsis;white-space:nowrap}.legend-row em{font-style:normal;font-weight:850}.legend-dot{width:11px;height:11px;border-radius:999px}.bar-row{display:grid;gap:7px}.bar-row>div{display:flex;justify-content:space-between;gap:12px}.bar-row span{overflow:hidden;color:var(--muted);text-overflow:ellipsis;white-space:nowrap}.bar-row strong{color:var(--text)}.bar-row progress{overflow:hidden;width:100%;height:10px;border:0;border-radius:999px;background:#eef2ef}.bar-row progress::-webkit-progress-bar{background:#eef2ef}.bar-row progress::-webkit-progress-value{border-radius:999px;background:var(--bar-color, var(--accent))}.bar-row progress::-moz-progress-bar{border-radius:999px;background:var(--bar-color, var(--accent))}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid.compact{grid-template-columns:minmax(0,1fr) auto}label{display:grid;gap:6px}label span{color:var(--muted);font-size:13px;font-weight:700}input,select,textarea{width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft);color:var(--text)}textarea{resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:2px solid rgba(37,111,91,.18)}.searchable-select{gap:7px}.searchable-select input{min-height:38px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:#fff}.searchable-select select{border-top-left-radius:4px;border-top-right-radius:4px}.date-field{position:relative}.date-control{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.date-button,.calendar-header button,.calendar-grid button{border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text);cursor:pointer;font-weight:750}.date-button{display:grid;min-width:46px;padding:0;place-items:center}.calendar-icon{position:relative;width:19px;height:18px;border:2px solid currentColor;border-radius:5px}.calendar-icon:before{position:absolute;top:3px;left:-2px;width:19px;border-top:2px solid currentColor;content:""}.calendar-icon:after{position:absolute;top:-5px;left:3px;width:9px;height:6px;border-right:2px solid currentColor;border-left:2px solid currentColor;content:""}.calendar-popover{position:absolute;z-index:20;top:calc(100% + 6px);left:0;width:min(320px,100%);padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:var(--shadow)}.calendar-header{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;margin-bottom:10px;text-align:center}.calendar-header button{min-height:30px;padding:4px 8px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.calendar-weekdays{margin-bottom:4px;color:var(--muted);font-size:12px;font-weight:800;text-align:center}.calendar-grid button{min-height:32px;padding:0}.calendar-grid button.muted{color:var(--muted);opacity:.58}.calendar-grid button.selected{border-color:var(--accent);background:var(--accent);color:#fff}.span-2{grid-column:span 2}.action-group{display:inline-flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.button{display:inline-flex;align-items:center;gap:8px;justify-content:center;min-height:38px;padding:8px 13px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text);cursor:pointer;font-weight:750;white-space:nowrap;transition:border-color .14s ease,box-shadow .14s ease,background .14s ease,transform .14s ease}.button:hover{border-color:var(--accent);box-shadow:0 8px 18px #1f7a611a;transform:translateY(-1px)}.button.primary{border-color:var(--accent);background:var(--accent);color:#fff}.button.primary:hover{background:var(--accent-dark)}.button.ghost{background:transparent}.button.small{min-height:30px;padding:5px 9px;font-size:13px}.button.full{width:100%}.button-icon{width:17px;height:17px}.button-icon[data-icon=download]:before{content:"DL";font-size:10px}.button-icon[data-icon=plus]:before{content:"+";font-size:18px}.button-icon[data-icon=edit]:before{content:"E";font-size:13px}.button-icon[data-icon=pause]:before{content:"-";font-size:18px}.button-icon[data-icon=play]:before{content:"+";font-size:18px}.button-icon[data-icon=close]:before{content:"x";font-size:14px}.icon-button{display:inline-grid;width:34px;height:34px;place-items:center;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text);cursor:pointer;transition:border-color .14s ease,box-shadow .14s ease,transform .14s ease}.icon-button:hover{border-color:var(--accent);box-shadow:0 8px 18px #1f7a611a;transform:translateY(-1px)}.filter-bar{display:grid;grid-template-columns:minmax(220px,1.3fr) repeat(3,minmax(150px,1fr)) auto;gap:12px;align-items:end;margin-bottom:16px;padding:14px;border:1px solid rgba(220,227,223,.82);border-radius:8px;background:#fbfcfb}.search-field input{background:#fff}.modal-backdrop{position:fixed;z-index:40;top:0;right:0;bottom:0;left:0;display:grid;place-items:start center;overflow-y:auto;padding:42px 20px;background:#18232461;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-panel{width:min(880px,100%);padding:20px;border:1px solid rgba(220,227,223,.84);border-radius:8px;background:var(--surface);box-shadow:0 24px 70px #18232447;animation:modal-in .16s ease both}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}@keyframes modal-in{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:8px}table{width:100%;min-width:820px;border-collapse:collapse;background:var(--surface)}th,td{padding:11px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{background:#f4f7f5;color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase}tbody tr:hover{background:#fbfcfb}td strong{display:block}td strong span{display:block;color:var(--muted);font-size:13px;font-weight:500}.empty{color:var(--muted);text-align:center}.empty-state{display:grid;min-height:150px;place-items:center;gap:10px;padding:28px;border:1px dashed var(--line);border-radius:8px;background:linear-gradient(135deg,#315f7d0d,#1f7a610d),#fbfcfb;color:var(--muted);text-align:center}.empty-state.compact{min-height:92px;padding:18px}.empty-state strong{color:var(--text)}.empty-icon{position:relative;display:inline-block;width:34px;height:34px;border:2px solid rgba(49,95,125,.38);border-radius:8px}.empty-icon:before,.empty-icon:after{position:absolute;left:8px;right:8px;border-top:2px solid rgba(31,122,97,.5);content:""}.empty-icon:before{top:10px}.empty-icon:after{top:18px}.badge{display:inline-flex;min-height:26px;align-items:center;padding:3px 9px;border:1px solid var(--line);border-radius:999px;background:#f7f5ef;color:var(--muted);font-size:12px;font-weight:800}.badge.good{border-color:#256f5b40;background:#eaf5ef;color:var(--accent-dark)}.badge.info{border-color:#2563eb47;background:#eaf0ff;color:#1d4ed8}.badge.warning{border-color:#a66c1647;background:#fff6e8;color:var(--gold)}.badge.danger{border-color:#b33b3140;background:#fff0ee;color:var(--red)}.flash{max-width:760px;margin-bottom:16px;padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.flash.success{border-color:#256f5b40;color:var(--accent-dark)}.flash.error{border-color:#b33b3140;color:var(--red)}.toast{position:fixed;right:24px;bottom:24px;z-index:50;display:flex;align-items:center;max-width:min(420px,calc(100vw - 32px));gap:12px;padding:12px 12px 12px 14px;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:0 18px 42px #1823242e}.toast span{font-size:14px;font-weight:750}.toast button{display:grid;width:26px;height:26px;place-items:center;border:0;border-radius:8px;background:#1823240f;color:var(--muted);cursor:pointer;font-weight:850}.toast.success{border-color:#1f7a6147;color:var(--accent-dark)}.toast.error{border-color:#b33b3147;color:var(--red)}.upload-line{align-items:start;flex-wrap:wrap}.upload-line input{max-width:320px}.upload-line span,.upload-result p,.upload-result li{color:var(--muted)}.login-shell{display:grid;min-height:100vh;place-items:center;padding:24px;background:linear-gradient(135deg,#1f7a611f,#315f7d14),var(--bg)}.login-card{width:min(420px,100%);padding:28px;background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow)}.login-card form{display:grid;gap:14px}@media (max-width: 980px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;padding:16px;box-shadow:0 10px 28px #16342d24}.sidebar .brand{margin-bottom:12px}nav,.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}nav{display:grid;gap:8px;margin-top:14px}.nav-link{justify-content:flex-start;min-height:38px}.nav-section{grid-column:1 / -1;margin-top:8px}.chart-grid,.filter-bar{grid-template-columns:1fr}.donut-wrap{grid-template-columns:1fr;justify-items:center}.topbar{position:static;margin:-22px -28px 20px}}@media (max-width: 640px){body{background:var(--bg)}.main,.sidebar{padding:14px}.sidebar .brand{align-items:center}.brand-mark{width:36px;height:36px}nav{grid-template-columns:repeat(2,minmax(0,1fr))}.nav-link{min-height:42px;padding:9px 10px;font-size:14px}.nav-icon{width:22px;height:22px}.topbar,.page-heading,.dashboard-hero{align-items:stretch;flex-direction:column}.topbar{gap:12px;margin:-14px -14px 16px;padding:12px 14px}.topbar-title span{font-size:11px}.topbar-title strong{font-size:15px}h1{font-size:24px}h2{font-size:16px}.page-heading{gap:12px;margin-bottom:14px}.panel{margin-bottom:14px;padding:14px}.panel-header{align-items:flex-start;flex-direction:column}.dashboard-hero{padding:16px}.dashboard-hero h2{font-size:20px}.account-pill,.action-group{width:100%}.account-pill{align-items:stretch;display:grid;grid-template-columns:auto minmax(0,1fr)}.account-pill .button{grid-column:1 / -1}.action-group .button,.account-pill .button{flex:1}.stats-grid,.hero-metrics,.form-grid,.form-grid.compact{grid-template-columns:1fr}.span-2{grid-column:span 1}.form-actions{align-items:stretch;flex-direction:column}.form-actions .button{width:100%}input,select,textarea{min-height:46px;font-size:16px}.filter-bar{padding:12px}.upload-line{align-items:stretch;flex-direction:column}.upload-line input{max-width:none}.donut{width:138px;height:138px}.donut:after{top:27px;right:27px;bottom:27px;left:27px}.modal-backdrop{align-items:start;padding:12px}.modal-panel{padding:16px}.table-wrap{overflow:visible;border:0}table{display:block;min-width:0;background:transparent}thead{display:none}tbody{display:grid;gap:12px}tr{display:grid;gap:9px;padding:13px;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:0 8px 22px #1823240d}td{display:grid;grid-template-columns:minmax(98px,36%) minmax(0,1fr);gap:10px;align-items:start;padding:0;border:0;word-break:break-word}td:before{color:var(--muted);content:attr(data-label);font-size:11px;font-weight:850;text-transform:uppercase}td strong span{font-size:12px}.row-actions{justify-content:flex-start}.toast{right:12px;bottom:12px;left:12px;max-width:none}}@media (max-width: 420px){nav{grid-template-columns:1fr}.stats-grid,.hero-metrics{gap:10px}.stat{padding:14px}.stat strong{font-size:24px}td{grid-template-columns:1fr;gap:4px}}
