html{line-height:1.5;-webkit-text-size-adjust:100%}body{margin:0}:root{--bg: #f4f6f9;--card: #ffffff;--ink: #1c2733;--muted: #69788a;--accent: #155fa0;--danger: #b3362b;--border: #dde4ec;font-family:Segoe UI,Tahoma,system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink)}h1,h2{font-weight:600}.card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:16px}.muted{color:var(--muted)}.error{background:#fdecea;color:var(--danger);border:1px solid #f5c6c0;border-radius:8px;padding:10px 12px;margin:10px 0;font-size:14px}button{background:var(--accent);color:#fff;border:0;border-radius:8px;padding:10px 18px;font-size:15px;cursor:pointer}button:disabled{opacity:.5;cursor:default}button.danger{background:var(--danger)}button.link{background:none;color:var(--muted);text-align:left;padding:8px 0}.login-wrap{min-height:100vh;display:grid;place-items:center}.login-card{width:340px;display:flex;flex-direction:column;gap:14px}.login-card h1{margin:0;color:var(--accent)}.login-logo{width:220px;max-width:80%;margin:4px auto 0;display:block}.company-name{margin:0;text-align:center;font-size:18px;font-weight:600;color:var(--ink)}.login-card label{display:flex;flex-direction:column;gap:6px;font-size:14px}.login-card input{padding:10px;border:1px solid var(--border);border-radius:8px;font-size:15px}.shell{display:grid;grid-template-columns:210px 1fr;min-height:100vh}.sidebar{background:#10283d;color:#cfdcea;padding:24px 18px;display:flex;flex-direction:column;gap:14px}.sidebar .brand{margin-bottom:18px;text-align:center}.brand-logo{width:100%;max-width:160px;background:#fff;padding:8px;border-radius:8px;box-sizing:border-box}.sidebar a{color:#cfdcea;text-decoration:none}.sidebar a:hover{color:#fff}.content{padding:28px 36px}.widget-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px}.widget{text-align:center}.widget-value{font-size:34px;font-weight:700;color:var(--accent)}.search{width:320px;padding:10px;margin-bottom:14px;border:1px solid var(--border);border-radius:8px;font-size:15px}.table{width:100%;border-collapse:collapse;padding:0;overflow:hidden}.table th,.table td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--border);font-size:14px}.table th{background:#eef2f7}.badge{padding:3px 10px;border-radius:12px;font-size:12px;background:#e3eefc}.badge.active{background:#e3f6e8;color:#1d7a37}.approval-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.approval-row .actions{display:flex;gap:8px}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0}.toolbar input,.toolbar select,.form-grid input,.form-grid select,.form-grid textarea{padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-size:14px;font-family:inherit}.toolbar label{display:flex;gap:6px;align-items:center;font-size:13px}.form-grid{margin-bottom:18px}.form-grid h3{margin-top:0}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.two-col label{display:flex;flex-direction:column;gap:4px;font-size:13px}.notice{background:#e6f4ea;color:#1d7a37;border:1px solid #b9e2c5;border-radius:8px;padding:10px 12px;margin-top:10px;font-size:14px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}.kv{width:100%;border-collapse:collapse}.kv th{text-align:left;color:var(--muted);font-weight:500;padding:6px 10px 6px 0;width:40%;vertical-align:top}.kv td{padding:6px 0}ul.plain{list-style:none;padding:0;margin:0;display:grid;gap:8px}.chips{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.chip{background:#fff;color:var(--ink);border:1px solid var(--border);border-radius:16px;padding:6px 14px;font-size:13px}.chip.on{background:var(--accent);color:#fff;border-color:var(--accent)}.scroll-x{overflow-x:auto;padding:0}.section-stack{display:grid;gap:24px}.bulk-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:14px;align-items:stretch;margin-bottom:14px}.assignment-panel{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:14px}.assignment-panel label{display:flex;flex-direction:column;gap:5px;font-size:13px;margin-bottom:10px}.assignment-panel select{padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-size:14px;font-family:inherit}.assignment-panel button:not(.link):not(.chip){width:100%;margin-bottom:12px}.checkbox-cell{width:42px;text-align:center!important}.checkbox-cell input{width:16px;height:16px}.check-row{flex-direction:row!important;align-items:center;gap:8px!important;margin-top:22px}.check-row input{width:auto}.modal-backdrop{position:fixed;inset:0;background:#0006;display:grid;place-items:center;z-index:50}.modal{width:420px;max-width:92vw;max-height:88vh;overflow-y:auto}.modal.wide{width:680px}.modal h3{margin-top:0}.form-grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}.form-grid2 label{display:flex;flex-direction:column;gap:4px;font-size:13px}.form-grid2 input,.form-grid2 select{padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-size:14px}.upload-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.upload-row select,.upload-row input[type=date]{padding:7px 9px;border:1px solid var(--border);border-radius:8px;font-size:13px}.form-col{display:flex;flex-direction:column;gap:10px;margin:12px 0}.form-col label{display:flex;flex-direction:column;gap:4px;font-size:13px}.form-col input,.form-col select{padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-size:14px}.chain{display:inline-flex;align-items:center;flex-wrap:wrap;gap:2px}.chain .arrow{color:var(--muted)}label.block{display:flex;flex-direction:column;gap:4px;font-size:13px;margin-bottom:12px}label.block select{padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-size:14px}ol.steps{list-style:none;padding:0;margin:8px 0;display:grid;gap:8px}.step-row{display:flex;align-items:center;gap:8px}.step-row select{flex:1;padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-size:14px}.step-row .step-num{width:24px;height:24px;flex:none;display:grid;place-items:center;background:var(--accent);color:#fff;border-radius:50%;font-size:13px}.step-row button.link{padding:4px 6px}.step-row button.link.danger{color:var(--danger)}ul.tree{list-style:none;margin:0;padding-left:20px}ul.tree>li{position:relative;padding:4px 0}ul.tree ul.tree{border-left:1px solid var(--border);margin-left:6px}.tree-node{display:inline-block;padding:4px 10px;background:#eef2f7;border-radius:8px;text-decoration:none;color:var(--ink);font-size:14px}.tree-node:hover{background:#e0eafc}.clickable{cursor:pointer}.clickable:hover td{background:#f0f6fd}.actions button{padding:6px 10px;font-size:13px}.badge.pending,.badge.pending_review,.badge.pending_approval{background:#fff3d6;color:#8a6100}.badge.approved,.badge.present,.badge.open{background:#e3f6e8;color:#1d7a37}.badge.rejected,.badge.absent,.badge.terminated{background:#fdecea;color:#b3362b}.badge.late,.badge.draft,.badge.incomplete{background:#fde8d7;color:#9a4b00}.badge.closed,.badge.posted,.badge.settled{background:#e8e8ee;color:#4a4a5a}
