:root{--bg:#f4f6fb;--panel:#fff;--text:#172033;--muted:#718096;--line:#e6e9f0;--primary:#5b31d4;--primary2:#7448ea;--green:#0f9f6e;--red:#c2414b;--nav:#121629;--shadow:0 10px 30px rgba(24,32,51,.07)}*{box-sizing:border-box}body{margin:0;font:14px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial;background:var(--bg);color:var(--text)}a{color:var(--primary);text-decoration:none}h1,h2,h3,p{margin-top:0}.app-shell{min-height:100vh;display:grid;grid-template-columns:245px 1fr}.sidebar{background:var(--nav);color:#fff;padding:24px 18px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;gap:12px;align-items:center}.brand-mark{width:42px;height:42px;border-radius:12px;background:linear-gradient(135deg,var(--primary2),#8d65ff);display:grid;place-items:center;font-weight:900}.brand strong,.brand span{display:block}.brand span{font-size:12px;color:#aab2cb}.sidebar nav{display:grid;gap:6px;margin-top:34px}.sidebar nav a{color:#cfd5e5;padding:11px 12px;border-radius:10px}.sidebar nav a:hover{background:#1e2440;color:#fff}.side-foot{margin-top:auto;border-top:1px solid #2a3150;padding-top:16px;display:flex;justify-content:space-between;gap:12px;color:#aeb6ce}.side-foot a{color:#d7dcf0}.main{padding:0 28px 40px;min-width:0}.topbar{padding:25px 0 12px}.topbar h1{font-size:26px;margin-bottom:2px}.topbar p,.muted{color:var(--muted)}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0 18px;flex-wrap:wrap}.filters{display:flex;gap:8px;flex:1}.filters input{min-width:260px}.btn{border:1px solid var(--line);background:#fff;color:var(--text);padding:9px 14px;border-radius:9px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.danger{color:var(--red)}.cards{display:grid;gap:14px;margin-bottom:18px}.cards.four{grid-template-columns:repeat(4,1fr)}.cards.three{grid-template-columns:repeat(3,1fr)}.stat,.panel{background:var(--panel);border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow)}.stat{padding:18px}.stat span,.stat small{display:block;color:var(--muted)}.stat strong{display:block;font-size:27px;margin:5px 0}.stat.accent{background:linear-gradient(135deg,#5b31d4,#7548e9);color:#fff;border:none}.stat.accent span,.stat.accent small{color:#ded5ff}.panel{padding:18px;margin-bottom:18px}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.panel h2{font-size:18px;margin-bottom:6px}.panel-head p{color:var(--muted);margin-bottom:12px}.table-wrap{overflow:auto;margin:0 -2px}table{width:100%;border-collapse:collapse;min-width:760px}th,td{text-align:left;padding:12px 11px;border-bottom:1px solid var(--line);vertical-align:middle}th{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}tbody tr:hover{background:#fafbfe}.sub{display:block;font-size:12px;color:var(--muted)}.badge{padding:4px 8px;border-radius:999px;font-size:12px;font-weight:800;background:#eef1f6}.badge.paid{background:#dcf7ec;color:#087657}.badge.submitted{background:#ede8ff;color:#5630bd}.badge.pending{background:#fff1d6;color:#9a6500}.empty{text-align:center;color:var(--muted);padding:30px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-section label,.stack label{display:grid;gap:6px;font-weight:700;margin-bottom:12px}.form-grid{display:grid;gap:12px}.four-col{grid-template-columns:repeat(4,1fr)}input,select,textarea{width:100%;border:1px solid #dfe3eb;border-radius:9px;padding:10px 11px;background:#fff;color:var(--text);font:inherit}textarea{resize:vertical}.rate-entry-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 14px}.category-title{grid-column:1/-1;font-size:14px;margin:14px 0 2px;color:var(--primary)}.rate-entry{display:grid;grid-template-columns:1fr 90px;gap:10px;align-items:center;border:1px solid var(--line);padding:10px;border-radius:10px}.rate-entry span{display:block;font-size:12px;color:var(--muted)}.qty{text-align:center}.custom-wrap{border-top:1px solid var(--line);margin-top:18px;padding-top:16px}.custom-line{display:grid;grid-template-columns:1fr 100px 120px auto;gap:8px;margin-bottom:8px}.estimate-box{margin-top:18px;padding:14px;border-radius:12px;background:#f6f2ff;display:grid;grid-template-columns:1fr auto;gap:7px 14px}.estimate-box strong{font-size:20px}.form-actions{display:flex;justify-content:flex-end;gap:10px}.details{display:grid;grid-template-columns:130px 1fr;gap:10px;margin:14px 0 0}.details dt{color:var(--muted)}.details dd{margin:0;font-weight:700}.note-box{white-space:normal;background:#f8f9fc;border:1px solid var(--line);border-radius:10px;padding:14px;min-height:150px}.status-form{display:flex;gap:8px}.rate-input{max-width:130px}.inline-label{display:flex;align-items:center;gap:8px;font-weight:700}.inline-label input{width:auto}.trend-grid{display:grid;gap:10px}.trend-row{display:grid;grid-template-columns:140px 1fr 100px 60px;gap:12px;align-items:center}.trend-row small{color:var(--muted);text-align:right}.bar{height:8px;border-radius:99px;background:#eceef4;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--primary),#8b6bf1);border-radius:99px}.alert{padding:11px 13px;border-radius:10px;margin-bottom:14px}.alert.error{background:#ffeaec;color:#a62d39}.alert.success{background:#def8ec;color:#087657}.login-body{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at top left,#efe9ff,transparent 40%),var(--bg);padding:20px}.login-card{width:min(430px,100%);background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);padding:30px}.login-brand{margin-bottom:30px}.login-card h1{font-size:27px;margin-bottom:4px}.stack{display:grid;gap:5px}.stack .btn{margin-top:7px;padding:11px}.demo-note{margin-top:18px;padding:10px;border-radius:9px;background:#f7f8fb;color:var(--muted);font-size:12px}
@media(max-width:1050px){.cards.four{grid-template-columns:repeat(2,1fr)}.four-col{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.app-shell{display:block}.sidebar{position:static;height:auto;display:block;padding:14px}.sidebar nav{display:flex;overflow:auto;margin-top:14px}.side-foot{display:none}.main{padding:0 14px 30px}.cards.four,.cards.three,.two-col,.rate-entry-grid,.four-col{grid-template-columns:1fr}.topbar h1{font-size:22px}.filters{display:grid;width:100%}.filters input{min-width:0}.custom-line{grid-template-columns:1fr 70px 90px}.custom-line .remove-line{grid-column:1/-1}.trend-row{grid-template-columns:105px 1fr 90px}.trend-row small{display:none}.toolbar{align-items:stretch}}
.action-group{display:flex;gap:8px;flex-wrap:wrap}.form-actions.spread{justify-content:space-between}.security-card{max-width:560px}
.tracker-map{background:#e9f7ff;color:#16658a;white-space:nowrap}.tracker-catalog{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px}.tracker-category{grid-column:1/-1;margin-top:10px;padding:10px 12px;border-radius:10px;background:#f1f4f9;border-left:4px solid var(--primary)}.tracker-category span{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}.tracker-category strong{font-size:14px}.tracker-rate[hidden],.tracker-category[hidden]{display:none!important}.custom-line{grid-template-columns:minmax(180px,1fr) 145px 80px 110px auto}.wo-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px;margin-top:14px}.wo-meta div{display:grid;grid-template-columns:155px 1fr;gap:8px;border-bottom:1px solid var(--line);padding:7px 0}.wo-meta span{color:var(--muted)}.item-group-row td{background:#f6f7fb;font-weight:800;color:var(--primary);padding-top:9px;padding-bottom:9px}.compact-note{max-width:460px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.work-badge{display:inline-flex;padding:3px 7px;border-radius:7px;background:#eef2ff;color:#4f46b8;font-size:11px;font-weight:800}.time-chip{display:inline-flex;gap:5px;align-items:center;font-size:12px;color:var(--muted)}
@media(max-width:760px){.tracker-catalog{grid-template-columns:1fr}.custom-line{grid-template-columns:1fr 1fr}.custom-line .remove-line{grid-column:1/-1}.wo-meta{grid-template-columns:1fr}.wo-meta div{grid-template-columns:120px 1fr}}
