:root{--bg:#f5f6f8;--panel:#fff;--ink:#14181f;--ink2:#4a5261;--ink3:#8a92a1;--line:#e6e8ec;--brand:#0f5c4d;--brand2:#127a66;--brand-soft:#e5f2ef;--red:#c2412d;--red-soft:#fbe9e6;--amber:#b7791f;--amber-soft:#fdf3e0}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.45}a{color:inherit;text-decoration:none}.app{grid-template-columns:232px 1fr;min-height:100vh;display:grid}.side{color:#cfe0db;background:#0d1f1b;padding:18px 10px}.logo{align-items:center;gap:10px;padding:0 8px 18px;display:flex}.mark{color:#fff;background:linear-gradient(135deg,#1aa286,#0f5c4d);border-radius:9px;place-items:center;width:32px;height:32px;font-weight:700;display:grid}.logo b{color:#fff;display:block}.logo small{color:#7fa69c;font-size:11px}.side nav a{border-radius:8px;padding:8px 10px;font-weight:500;display:block}.side nav a:hover{color:#fff;background:#14302a}.content{max-width:1200px;padding:24px 28px}h1{letter-spacing:-.3px;font-size:22px}.sub{color:var(--ink2);margin:2px 0 18px}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px}.grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-bottom:16px;display:grid}.kpi{padding:16px}.kpi .l{color:var(--ink2);font-size:12.5px}.kpi .v{font-variant-numeric:tabular-nums;margin-top:6px;font-size:22px;font-weight:700}table{border-collapse:collapse;width:100%}th{text-align:left;text-transform:uppercase;color:var(--ink3);border-bottom:1px solid var(--line);background:#fafbfc;padding:10px 14px;font-size:11.5px}td{border-bottom:1px solid #f0f1f4;padding:10px 14px}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.pill{background:var(--amber-soft);color:var(--amber);border-radius:20px;margin:2px 4px 2px 0;padding:2px 9px;font-size:12px;font-weight:600;display:inline-block}.alert{background:var(--red-soft);color:#8a2b1c;border-radius:10px;margin-bottom:14px;padding:12px 14px}.form{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;padding:16px;display:grid}.form label{color:var(--ink2);flex-direction:column;gap:5px;font-size:12.5px;font-weight:600;display:flex}input,select{border:1px solid var(--line);height:36px;font:inherit;background:#fff;border-radius:8px;padding:0 10px}.btn{background:var(--brand);color:#fff;cursor:pointer;border:0;border-radius:9px;align-self:end;height:36px;padding:0 16px;font-weight:600}.muted{color:var(--ink3)}@media (max-width:820px){.app{grid-template-columns:1fr}.side{display:none}}.side{flex-direction:column;display:flex}.side nav{flex:1}.who{border-top:1px solid #1d3a33;padding:14px 10px 0;font-size:13px}.who b{color:#fff;display:block}.who small{color:#7fa69c;margin-bottom:8px;display:block}.link{color:#8fd3c1;cursor:pointer;font:inherit;background:0 0;border:0;padding:0;text-decoration:underline}.auth-wrap{background:#0d1f1b;place-items:center;min-height:100vh;padding:20px;display:grid}.auth{width:100%;max-width:380px;padding:28px}.auth label{color:var(--ink2);margin-bottom:12px;font-size:13px;font-weight:600;display:block}.auth input{border:1px solid var(--line);width:100%;font:inherit;border-radius:9px;margin-top:5px;padding:10px 12px;display:block}.auth input:focus{border-color:#1aa286;outline:2px solid #1aa28655}.page-head{justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:16px;display:flex}.page-head .sub{margin-bottom:0}.btn.ghost{color:var(--brand);border:1px solid var(--line);background:#fff}.btn.danger{color:var(--red);background:#fff;border:1px solid #f1c9c1;height:30px;padding:0 12px;font-size:13px}a.btn{align-items:center;display:inline-flex}.crumb{color:var(--ink3);margin-bottom:6px;font-size:13px;display:inline-block}.crumb:hover{color:var(--brand)}.hero{align-items:center;gap:16px;margin-bottom:14px;padding:18px;display:flex}.avatar{background:var(--brand-soft);width:56px;height:56px;color:var(--brand);border-radius:14px;flex:none;place-items:center;font-size:19px;font-weight:700;display:grid}.avatar.sm{border-radius:8px;width:30px;height:30px;font-size:12px}.hero h1{font-size:21px}.hero .meta{color:var(--ink2);margin-top:2px}.hero .facts{text-align:right;gap:22px;margin-left:auto;display:flex}.hero .facts small{color:var(--ink3);text-transform:uppercase;letter-spacing:.3px;font-size:11.5px;display:block}.hero .facts b{font-variant-numeric:tabular-nums}.status{background:var(--brand-soft);color:var(--brand);vertical-align:3px;border-radius:20px;margin-left:8px;padding:2px 9px;font-size:12px;font-weight:600;display:inline-block}.status.suspended{background:var(--amber-soft);color:var(--amber)}.status.terminated{color:var(--ink2);background:#eceef1}.warn{background:var(--amber-soft);color:#7a5214;border-radius:10px;margin-bottom:14px;padding:10px 14px}.warn ul{margin:4px 0 0 18px}.tabs{border-bottom:1px solid var(--line);gap:4px;margin-bottom:16px;display:flex;overflow-x:auto}.tabs a{color:var(--ink2);white-space:nowrap;border-bottom:2px solid #0000;margin-bottom:-1px;padding:9px 14px;font-weight:600}.tabs a.on{color:var(--brand);border-color:var(--brand)}.section{margin-bottom:16px}.section>h2{text-transform:uppercase;letter-spacing:.4px;color:var(--ink3);padding:14px 16px 0;font-size:13px}.dl{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px 20px;padding:14px 16px 16px;display:grid}.dl dt{color:var(--ink3);font-size:12px}.dl dd{word-break:break-word;margin-top:2px;font-weight:500}.form .wide{grid-column:1/-1}.form-actions{grid-column:1/-1;justify-content:flex-end;align-items:center;gap:10px;display:flex}.form-actions .err{color:var(--red);margin-right:auto}.form-actions .ok{color:var(--brand);margin-right:auto}textarea{border:1px solid var(--line);font:inherit;resize:vertical;border-radius:8px;min-height:64px;padding:8px 10px}input:disabled,select:disabled{color:var(--ink2);background:#f6f7f9}.two{grid-template-columns:1fr 1fr;gap:16px;display:grid}@media (max-width:1000px){.two{grid-template-columns:1fr}.hero .facts{display:none}}.delta{color:var(--brand);font-size:12px;font-weight:600}.tag{color:var(--ink2);background:#eef0f3;border-radius:6px;padding:1px 8px;font-size:11.5px;font-weight:600;display:inline-block}.tag.future{color:#2556a8;background:#e6effd}.empty{color:var(--ink3);text-align:center;padding:22px 16px}.person{border-bottom:1px solid #f0f1f4;align-items:center;gap:10px;padding:10px 16px;display:flex}.person:last-child{border-bottom:0}.person:hover b{color:var(--brand)}.timeline{padding:6px 16px 10px}.timeline li{border-left:2px solid var(--line);padding:10px 0 10px 18px;list-style:none;position:relative}.timeline li:before{content:"";background:var(--brand);border-radius:50%;width:10px;height:10px;position:absolute;top:15px;left:-6px}.timeline .when{color:var(--ink3);font-size:12px}.timeline .chg{color:var(--ink2);margin-top:2px;font-size:13px}td a:hover b{color:var(--brand)}.org{padding:18px;overflow-x:auto}.org ul{padding-left:26px;list-style:none;position:relative}.org>ul{padding-left:0}.org li{padding:6px 0;position:relative}.org ul ul li:before{content:"";border-left:1px solid #cdd3da;position:absolute;top:0;bottom:0;left:-16px}.org ul ul li:last-child:before{bottom:calc(100% - 28px)}.org ul ul li:after{content:"";border-top:1px solid #cdd3da;width:14px;position:absolute;top:28px;left:-16px}.node{border:1px solid var(--line);background:#fff;border-radius:10px;align-items:center;gap:10px;min-width:260px;padding:8px 12px;display:inline-flex}.node:hover{border-color:var(--brand2)}.node small{color:var(--ink3);font-size:12px;display:block}.node .count{color:var(--ink3);margin-left:auto;font-size:11.5px}.form.cols4{grid-template-columns:repeat(4,minmax(0,1fr))}.form .span2{grid-column:span 2}.form h3{text-transform:uppercase;letter-spacing:.4px;color:var(--ink3);border-top:1px solid #f0f1f4;grid-column:1/-1;padding-top:6px;font-size:12px}.form h3:first-child{border-top:0;padding-top:0}@media (max-width:1000px){.form.cols4{grid-template-columns:repeat(2,minmax(0,1fr))}}.st{border-radius:20px;padding:2px 9px;font-size:12px;font-weight:600;display:inline-block}.st.pending{background:var(--amber-soft);color:var(--amber)}.st.approved{background:var(--brand-soft);color:var(--brand)}.st.rejected{background:var(--red-soft);color:var(--red)}.st.cancelled{color:var(--ink3);background:#eceef1}.dot{vertical-align:0;border-radius:3px;width:9px;height:9px;margin-right:6px;display:inline-block}.actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.btn.sm{height:30px;padding:0 12px;font-size:13px}.btn.ok{background:var(--brand)}.inline-note{align-items:center;gap:6px;display:flex}.inline-note input{width:220px;height:30px}.preview{color:var(--ink2);background:#f6f8fa;border-radius:9px;grid-column:1/-1;padding:10px 12px;font-size:13px}.preview.bad{background:var(--red-soft);color:#8a2b1c}.preview.good{background:var(--brand-soft);color:var(--brand)}.map-wrap{overflow-x:auto}.map{border-collapse:separate;border-spacing:0;min-width:100%}.map th,.map td{border-bottom:1px solid #f0f1f4;padding:0}.map th.name,.map td.name{z-index:1;text-align:left;border-right:1px solid var(--line);background:#fff;min-width:210px;padding:8px 12px;position:sticky;left:0}.map th.day{text-align:center;text-transform:none;width:30px;min-width:30px;padding:6px 0;font-size:11px}.map th.day small{color:var(--ink3);font-weight:500;display:block}.map td.cell{text-align:center;border-left:1px solid #f4f5f7;height:34px}.map .we{background:#f6f7f9}.map .hol{background:#fdeee9}.map .today{box-shadow:inset 0 0 0 2px #1aa28655}.bar{color:#fff;border-radius:4px;height:20px;margin:0 1px;font-size:10px;font-weight:700;line-height:20px;display:block}.bar.pending{opacity:.45;background-image:repeating-linear-gradient(45deg,#ffffff59 0 4px,#0000 4px 8px)}.legend{color:var(--ink2);border-top:1px solid var(--line);flex-wrap:wrap;gap:14px;padding:10px 14px;font-size:12.5px;display:flex}.month-nav{align-items:center;gap:8px;display:flex}.month-nav b{text-align:center;min-width:150px}.meter{background:#eef0f3;border-radius:6px;min-width:120px;height:8px;display:flex;overflow:hidden}.meter i{height:100%;display:block}.h2-inline{text-transform:uppercase;letter-spacing:.4px;color:var(--ink3);font-size:13px}
