:root{--bg: #F6F7F9;--surface: #FFFFFF;--line: #E4E7EC;--line-soft: #EEF0F3;--ink: #161A22;--ink-2: #3D4452;--muted: #5F6673;--accent: #2F5BEA;--accent-ink: #1A3496;--accent-soft: #EEF2FD;--good: #146C43;--good-soft: #E3F4EA;--warn: #8A4B00;--warn-soft: #FFF1DE;--bad: #B42318;--bad-soft: #FDECEA;--radius: 12px;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink);background:var(--bg);font-size:14px;line-height:1.45}*{box-sizing:border-box}body{margin:0}a{color:var(--accent-ink);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:24px;font-weight:650;letter-spacing:-.01em;margin:0}h2{font-size:16px;font-weight:600;margin:0}h3{font-size:14px;font-weight:600;margin:0}p{margin:0}.muted{color:var(--muted)}.small{font-size:12px}.right{text-align:right}.nowrap{white-space:nowrap}.mono{font-variant-numeric:tabular-nums}.app{display:flex;min-height:100vh}.sidebar{width:236px;flex:none;background:var(--surface);border-right:1px solid var(--line);padding:20px 12px;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;align-items:center;gap:10px;padding:0 8px;font-weight:700;font-size:15px}.brand-mark{width:30px;height:30px;border-radius:8px;background:var(--accent);display:grid;place-items:center;color:#fff;flex:none}.nav{display:flex;flex-direction:column;gap:2px}.nav-section{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;padding:10px 12px 4px}.nav a{display:flex;align-items:center;gap:10px;min-height:40px;padding:0 12px;border-radius:8px;color:var(--ink-2);font-weight:500;text-decoration:none}.nav a:hover{background:var(--bg)}.nav a.active{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}.nav svg{flex:none}.side-foot{margin-top:auto;border-top:1px solid var(--line);padding:12px 8px 0;display:flex;flex-direction:column;gap:6px}.main{flex:1;min-width:0;padding:24px 32px 64px;display:flex;flex-direction:column;gap:20px}.topbar{display:none}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}.page-head .sub{color:var(--muted);margin-top:4px}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.row.between{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:12px}.stack.tight{gap:6px}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;align-items:start}.grid-3{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;align-items:start}.grow{flex:1;min-width:0}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;display:flex;flex-direction:column;gap:14px;min-width:0}.card.flush{padding:0;gap:0;overflow:hidden}.card.flush>.card-head{padding:16px 20px;border-bottom:1px solid var(--line)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;display:flex;flex-direction:column;gap:6px}.kpi .label{color:var(--muted);font-weight:500;font-size:13px}.kpi .value{font-size:24px;font-weight:650;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.kpi a{font-size:12px;font-weight:600}.dl{display:grid;grid-template-columns:150px 1fr;gap:8px 12px}.dl dt{color:var(--muted)}.dl dd{margin:0;min-width:0;overflow-wrap:anywhere}.table-wrap{overflow-x:auto}table.t{width:100%;border-collapse:collapse}.t th{text-align:left;font-size:12px;font-weight:600;color:var(--muted);padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap;background:#fafbfc}.t td{padding:11px 12px;border-bottom:1px solid var(--line-soft);vertical-align:top}.t tr:last-child td{border-bottom:0}.t tr.click{cursor:pointer}.t tr.click:hover td{background:#fafbfd}.t th.right,.t td.right{text-align:right}.t tfoot td{font-weight:600;border-top:1px solid var(--line);background:#fafbfc}.t tr.void td{color:var(--muted);text-decoration:line-through}.t input,.t select{min-height:34px}.badge{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;padding:3px 9px;border-radius:999px;white-space:nowrap;background:var(--line-soft);color:var(--ink-2)}.badge.blue{background:var(--accent-soft);color:var(--accent-ink)}.badge.green{background:var(--good-soft);color:var(--good)}.badge.orange{background:var(--warn-soft);color:var(--warn)}.badge.red{background:var(--bad-soft);color:var(--bad)}label.f{display:flex;flex-direction:column;gap:5px;font-weight:500;font-size:13px;color:var(--ink-2);min-width:0}label.f .hint{font-weight:400;color:var(--muted);font-size:12px}input,select,textarea{font:inherit;color:var(--ink);background:#fff;border:1px solid #CDD2DA;border-radius:8px;min-height:40px;padding:8px 11px;width:100%;min-width:0}textarea{min-height:80px;resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}input[type=checkbox]{width:18px;height:18px;min-height:0;accent-color:var(--accent)}label.check{display:flex;align-items:center;gap:8px;font-weight:500}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px 14px}.form-grid .span-all{grid-column:1 / -1}button,.btn{font:inherit;font-weight:600;border-radius:8px;min-height:40px;padding:0 16px;cursor:pointer;border:1px solid #CDD2DA;background:#fff;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;white-space:nowrap}button:hover,.btn:hover{background:var(--bg);text-decoration:none}button.primary,.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover,.btn.primary:hover{background:#2549c4}button.danger{color:var(--bad);border-color:#f1c4bf}button.ghost{border-color:transparent;background:transparent}button.small,.btn.small{min-height:32px;padding:0 10px;font-size:13px}button:disabled{opacity:.55;cursor:not-allowed}.icon-btn{width:34px;min-height:34px;padding:0}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);flex-wrap:wrap}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;background:none;color:var(--muted);padding:0 12px}.tabs button.on{color:var(--accent-ink);border-bottom-color:var(--accent)}.pills{display:flex;flex-wrap:wrap;gap:6px}.pills button{min-height:32px;border-radius:999px;font-size:13px;font-weight:500;padding:0 12px}.pills button.on{background:var(--ink);border-color:var(--ink);color:#fff}.alert{border-radius:10px;padding:10px 14px;background:var(--accent-soft);color:var(--accent-ink);font-weight:500}.alert.err{background:var(--bad-soft);color:var(--bad)}.alert.warn{background:var(--warn-soft);color:var(--warn)}.alert.ok{background:var(--good-soft);color:var(--good)}.empty{padding:28px;text-align:center;color:var(--muted)}.steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.step{border-radius:10px;padding:10px 12px;background:var(--bg);border:1px solid var(--line);display:flex;flex-direction:column;gap:2px}.step .k{font-size:12px;color:var(--muted);font-weight:600}.step .v{font-weight:600}.step.done{background:var(--good-soft);border-color:#bfe3cd}.step.done .k{color:var(--good)}.step.now{background:var(--accent-soft);border-color:#c7d4f8}.step.now .k{color:var(--accent-ink)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f141e73;display:grid;place-items:center;padding:16px;z-index:50}.modal{background:#fff;border-radius:14px;width:min(640px,100%);max-height:calc(100vh - 32px);overflow:auto;padding:22px;display:flex;flex-direction:column;gap:16px}.modal.wide{width:min(920px,100%)}.modal-foot{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.center-page{min-height:100vh;display:grid;place-items:center;padding:16px}.login{width:min(400px,100%)}.portal{max-width:760px;margin:0 auto;padding:16px;display:flex;flex-direction:column;gap:16px}.portal-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.job-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:10px}.job-card .items{margin:0;padding-left:18px}.thumbs{display:flex;flex-wrap:wrap;gap:8px}.thumbs a,.thumbs img{width:84px;height:84px;border-radius:8px;object-fit:cover;border:1px solid var(--line);display:block;background:var(--bg)}.doc{background:#fff;max-width:820px;margin:24px auto;padding:48px;border:1px solid var(--line);border-radius:8px;display:flex;flex-direction:column;gap:24px}.doc table{width:100%;border-collapse:collapse}.doc th,.doc td{padding:8px 6px;border-bottom:1px solid var(--line);text-align:left}.doc .right{text-align:right}.doc-actions{max-width:820px;margin:16px auto 0;display:flex;gap:8px;justify-content:flex-end;padding:0 16px}@media print{.doc-actions{display:none}.doc{border:0;margin:0;padding:0;max-width:none}body{background:#fff}}@media (max-width: 900px){.app{flex-direction:column}.sidebar{position:fixed;inset:0 auto 0 0;z-index:40;transform:translate(-100%);transition:transform .2s;box-shadow:0 0 40px #00000026}.sidebar.open{transform:none}.topbar{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30}.main{padding:16px 14px 48px}.steps{grid-template-columns:repeat(2,minmax(0,1fr))}.dl{grid-template-columns:120px 1fr}}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.card.row{flex-direction:row;align-items:flex-end}.card.row>label.f{min-width:180px}.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--line);gap:1px}.cal-head{background:#fafbfc;padding:8px 10px;font-size:12px;font-weight:600;color:var(--muted)}.cal-day{background:#fff;min-height:118px;padding:6px;display:flex;flex-direction:column;gap:4px;min-width:0}.cal-day.out{background:#fafbfc}.cal-day.out .cal-num{color:#a3a9b4}.cal-num{font-size:12px;font-weight:600;color:var(--ink-2);padding:2px 4px;align-self:flex-start;border-radius:999px}.cal-day.today .cal-num{background:var(--accent);color:#fff}.cal-ev{all:unset;cursor:pointer;display:flex;flex-direction:column;gap:1px;padding:4px 6px;border-radius:6px;font-size:12px;line-height:1.3;background:var(--line-soft);color:var(--ink-2);border-left:0;min-width:0}.cal-ev strong,.cal-ev span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-ev span{opacity:.85}.cal-ev.blue{background:var(--accent-soft);color:var(--accent-ink)}.cal-ev.green{background:var(--good-soft);color:var(--good)}.cal-ev.orange{background:var(--warn-soft);color:var(--warn)}.cal-ev.visit{background:#fff;border:1px dashed #B9C0CB}.cal-ev:hover{filter:brightness(.96)}.cal-ev:focus-visible{outline:2px solid var(--accent)}@media (max-width: 700px){.cal-day{min-height:70px}.cal-ev span{display:none}}.thumb-file{display:grid;place-items:center;width:100%;height:100%;font-size:12px;font-weight:700;color:var(--accent-ink);background:var(--accent-soft);border-radius:8px}
