:root{--bg:#f7f8fb;--surface:#ffffff;--surface-soft:#eef6f4;--surface-warm:#fff7ed;--ink:#14211f;--muted:#64736f;--line:#d9e2df;--primary:#0f766e;--primary-strong:#0b4f49;--blue:#2563eb;--orange:#f97316;--success:#15803d;--warn:#b45309;--danger:#b91c1c;--radius:8px;--shadow:0 14px 34px rgba(20,33,31,0.08)}*{box-sizing:border-box}body,html{min-height:100%;overflow-x:hidden}body{margin:0;background:linear-gradient(180deg,rgba(15,118,110,.08),rgba(247,248,251,0) 280px),var(--bg);color:var(--ink);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;line-height:1.5}a{color:inherit;text-decoration:none}a,button{touch-action:manipulation}button{font:inherit}a:focus-visible,button:focus-visible{outline:3px solid rgba(37,99,235,.45);outline-offset:3px}.dashboard-shell{min-height:100dvh;display:grid;grid-template-columns:280px minmax(0,1fr)}.sidebar{position:-webkit-sticky;position:sticky;top:0;height:100dvh;display:flex;flex-direction:column;border-right:1px solid var(--line);background:rgba(255,255,255,.82);padding:24px;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.brand-lockup{display:grid;grid-gap:8px;gap:8px;margin-bottom:30px}.gopika-logo{display:inline-flex;align-items:center;gap:10px;color:#1f1a1b}.gopika-logo-mark{width:44px;height:44px;display:block;flex:0 0 auto;border-radius:var(--radius);box-shadow:0 10px 24px rgba(253,185,19,.3)}.gopika-logo-word{color:#1f1a1b;font-size:24px;font-weight:950;letter-spacing:-.01em;line-height:1}.brand-lockup .gopika-logo-mark{width:48px;height:48px}.brand-lockup .gopika-logo-word{font-size:24px}.brand-caption{margin:0}.brand-caption,.eyebrow{color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase}.eyebrow{margin:0 0 4px;letter-spacing:0}h1,h2,h3,p{margin-top:0}h1{margin-bottom:0;font-size:19px;line-height:1.2}h2{margin-bottom:6px;font-size:clamp(26px,4vw,38px);line-height:1.08}h3{margin-bottom:8px;line-height:1.2}.subtitle{max-width:680px;margin:0;color:var(--muted)}nav{display:grid;grid-gap:8px;gap:8px}nav a{min-height:48px;display:flex;align-items:center;gap:10px;border:1px solid transparent;border-radius:var(--radius);padding:12px;color:#33413d;font-weight:650;transition:background .18s ease,border-color .18s ease,color .18s ease}.nav-active,nav a:hover{border-color:rgba(15,118,110,.24)}.nav-active,.sidebar-note,nav a:hover{background:var(--surface-soft);color:var(--primary-strong)}.sidebar-note{margin-top:auto;display:flex;gap:10px;border:1px solid rgba(15,118,110,.18);border-radius:var(--radius);padding:12px;font-size:13px}.content{width:min(1180px,100%);min-width:0;padding:30px}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:22px}.hero-actions,.topbar-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.hero-actions a,.primary-submit,.secondary-action,.status-pill{min-height:44px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius);border:1px solid var(--line);padding:10px 14px;font-size:14px;font-weight:750;white-space:nowrap}.secondary-action{background:var(--surface);color:var(--blue);box-shadow:0 8px 20px rgba(37,99,235,.08)}button.secondary-action{cursor:pointer;font:inherit}.secondary-action:disabled{cursor:wait;opacity:.68}.status-pill.ok{background:rgba(21,128,61,.1);border-color:rgba(21,128,61,.28);color:var(--success)}.status-pill.warn{background:rgba(180,83,9,.12);border-color:rgba(180,83,9,.28);color:var(--warn)}.alert-panel,.empty-panel,.hero-panel,.work-panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.hero-panel{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;grid-gap:20px;gap:20px;margin-bottom:18px;padding:22px}.hero-panel p:last-child{max-width:720px;margin-bottom:0;color:var(--muted)}.hero-actions a{gap:8px;border-color:rgba(15,118,110,.28);background:var(--surface-soft);color:var(--primary-strong);cursor:pointer;transition:background .18s ease,transform .18s ease}.hero-actions a:hover{background:#dff0ed;transform:translateY(-1px)}.metric-grid,.module-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:14px;gap:14px;margin-bottom:18px}.module-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.metric,.module-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.metric:hover,.module-card:hover{transform:translateY(-2px);border-color:rgba(15,118,110,.28);box-shadow:0 18px 40px rgba(20,33,31,.11)}.metric{min-height:150px;padding:18px;display:grid;grid-gap:9px;gap:9px}.metric-icon,.module-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:var(--radius);background:var(--surface-soft);color:var(--primary-strong)}.metric span,.module-card span{color:var(--muted);font-size:14px}.metric strong{font-size:clamp(28px,3vw,38px);line-height:1}.metric small{color:var(--muted);font-size:12px}.module-card{min-height:176px;padding:18px;display:flex;flex-direction:column;justify-content:space-between}.module-card p{margin:12px 0 5px;color:var(--orange);font-size:12px;font-weight:850;text-transform:uppercase;letter-spacing:0}.module-card h3{margin-bottom:0;font-size:19px}.work-panel{display:grid;grid-template-columns:220px minmax(0,1fr);grid-gap:18px;gap:18px;padding:20px}.work-panel ol{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:10px;gap:10px;margin:0;padding:0;list-style:none}.work-panel li{min-height:48px;display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:var(--radius);background:#fbfcfe;padding:10px 12px;color:#31403c}.work-panel li svg{flex:0 0 auto;color:var(--blue)}.ops-workspace{margin-top:18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);padding:20px}.workspace-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.workspace-header h3{margin-bottom:0}.segmented-control{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:8px;gap:8px;border:1px solid var(--line);border-radius:var(--radius);background:#f8fafc;padding:6px;margin-bottom:16px}.role-switcher{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:8px;gap:8px;margin-bottom:12px}.role-banner{border:1px solid rgba(15,118,110,.22);border-radius:var(--radius);background:var(--surface-soft);color:var(--primary-strong);padding:10px 12px;margin-bottom:12px}.role-banner,.role-switcher button{min-height:44px;display:inline-flex;align-items:center;gap:8px;font-weight:800}.role-switcher button{justify-content:center;border:1px solid var(--line);border-radius:var(--radius);background:#fbfcfe;color:var(--muted);cursor:pointer}.role-switcher button[aria-pressed=true]{border-color:rgba(15,118,110,.3);background:var(--surface-soft);color:var(--primary-strong)}.segmented-control button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--muted);cursor:pointer;font-weight:750}.segmented-control button[aria-selected=true]{border-color:rgba(15,118,110,.22);background:var(--surface);color:var(--primary-strong);box-shadow:0 8px 18px rgba(20,33,31,.08)}.ops-form{display:grid;grid-gap:14px;gap:14px}fieldset{border:1px solid var(--line);border-radius:var(--radius);margin:0;padding:16px}legend{padding:0 8px;color:var(--primary-strong);font-size:14px;font-weight:850}.form-accordion-section{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden}.form-accordion-section summary{min-height:54px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;color:var(--primary-strong);cursor:pointer;font-size:16px;font-weight:850;list-style:none}.form-accordion-section summary::-webkit-details-marker{display:none}.form-accordion-section summary:after{content:"";width:10px;height:10px;flex:0 0 auto;border-right:2px solid;border-bottom:2px solid;transform:rotate(45deg);transition:transform .18s ease}.form-accordion-section[open] summary{border-bottom:1px solid var(--line);background:var(--surface-soft)}.form-accordion-section[open] summary:after{transform:rotate(225deg)}.form-accordion-section .form-grid{padding:16px}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px;gap:12px}.form-field{display:grid;grid-gap:6px;gap:6px}.form-field span{color:#30413d;font-size:13px;font-weight:750}.form-field b{color:var(--danger)}.form-field input,.form-field select,.form-field textarea{width:100%;min-height:44px;border:1px solid var(--line);border-radius:6px;background:#fbfcfe;color:var(--ink);font:inherit;padding:10px 11px}.form-field textarea{min-height:96px;resize:vertical}.form-field.span-2{grid-column:span 2}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{outline:3px solid rgba(37,99,235,.25);border-color:rgba(37,99,235,.55)}.primary-submit{width:-moz-fit-content;width:fit-content;gap:8px;border-color:var(--primary);background:var(--primary);color:white;cursor:pointer}.logout-button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--muted);cursor:pointer;font-weight:800;padding:10px 14px}.logout-button:hover{color:var(--danger);border-color:rgba(185,28,28,.28);background:rgba(185,28,28,.06)}.primary-submit:disabled{cursor:wait;opacity:.72}.primary-submit svg{flex:0 0 auto}.list-panel{border:1px solid var(--line);border-radius:var(--radius);padding:16px}.list-panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}.list-panel h4{margin:0;font-size:19px}.list-hint{margin:5px 0 0;color:var(--muted);font-size:13px}.search-form{display:flex;gap:8px}.search-form input{min-width:min(320px,44vw);min-height:44px;border:1px solid var(--line);border-radius:6px;background:#fbfcfe;color:var(--ink);font:inherit;padding:10px 11px}.search-form button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--primary);border-radius:6px;background:var(--primary);color:white;cursor:pointer;font-weight:800;padding:10px 12px}.data-table{overflow:hidden;border:1px solid var(--line);border-radius:var(--radius)}.checkin-workspace{display:grid;grid-gap:14px;gap:14px}.checkin-filter{display:flex;align-items:flex-end;gap:10px;margin-bottom:14px;flex-wrap:wrap}.checkin-filter .compact-field,.checkin-filter .form-field input{min-width:180px}.checkin-table{overflow-x:auto}.split-workspace{display:grid;grid-template-columns:minmax(320px,.85fr) minmax(0,1.15fr);grid-gap:14px;gap:14px}.checkin-employees-workspace{grid-template-columns:1fr}.checkin-employee-form{align-items:start}.checkin-employee-form .form-grid.two-col{grid-template-columns:repeat(4,minmax(0,1fr))}.checkin-employee-form .primary-submit{align-self:end}.checkin-search-panel{display:grid;grid-template-columns:minmax(0,.9fr) minmax(320px,1.1fr);align-items:end;grid-gap:16px;gap:16px}.checkin-search-field input{min-height:48px}.compact-results{min-height:120px}.gps-summary{min-height:44px;display:inline-flex;align-items:center;gap:8px;border:1px solid rgba(15,118,110,.22);border-radius:var(--radius);background:var(--surface-soft);color:var(--primary-strong);font-weight:750;padding:10px 12px}.record-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:12px;gap:12px}.record-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:14px}.record-card.selected{border-color:rgba(15,118,110,.42);background:var(--surface-soft)}.record-card h4{margin:8px 0 4px;font-size:17px}.record-card p,.record-card small{color:var(--muted)}.form-actions,.record-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.form-actions{justify-content:flex-start;flex-wrap:wrap}.pill{display:inline-flex;align-items:center;min-height:26px;border-radius:999px;background:#eef2f7;color:var(--muted);padding:4px 9px;font-size:12px;font-weight:850;text-transform:uppercase}.pill.approved,.pill.low{background:rgba(21,128,61,.1);color:var(--success)}.pill.medium{background:rgba(180,83,9,.12);color:var(--warn)}.pill.high{background:rgba(185,28,28,.08);color:var(--danger)}.form-grid.two-col{grid-template-columns:repeat(2,minmax(0,1fr))}.check-row{display:flex;align-items:center;gap:8px;color:#30413d;font-size:14px;font-weight:750}.compact-empty{min-height:96px;color:var(--muted)}.data-row{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;grid-gap:10px;gap:10px;border-top:1px solid var(--line);padding:11px 12px;color:#30413d}.data-row span{min-width:0;overflow-wrap:anywhere}.data-row small,.data-row strong{display:block}.data-row small{margin-top:3px;color:var(--muted);font-size:12px}.data-row:first-child{border-top:0}.data-row.header{background:#f8fafc;color:var(--muted);font-size:13px;font-weight:850}.empty-state{padding:18px;color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.login-shell{min-height:100dvh;display:grid;place-items:center;padding:24px}.login-card{width:min(440px,100%);display:grid;grid-gap:16px;gap:16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);padding:24px}.login-logo{width:-moz-fit-content;width:fit-content}.login-logo .gopika-logo-mark{width:46px;height:46px}.login-logo .gopika-logo-word{font-size:28px}.login-card h1{margin-bottom:8px;font-size:26px}.login-copy{margin-bottom:0;color:var(--muted)}.login-submit{width:100%}.onboard-shell{width:min(1120px,calc(100vw - 32px));margin:0 auto;padding:30px 0 46px}.register-shell{width:min(820px,calc(100vw - 32px));margin:0 auto;padding:28px 0 48px}.onboard-hero{display:flex;align-items:flex-start;gap:14px;margin-bottom:20px}.public-hero-logo .gopika-logo-mark{width:48px;height:48px}.onboard-hero h1{margin-bottom:4px;font-size:clamp(34px,6vw,58px);line-height:1}.onboard-hero p:last-child{margin-bottom:0;color:var(--muted)}.register-hero{display:grid;grid-gap:10px;gap:10px;margin-bottom:18px}.register-brand-row{display:flex;align-items:center;gap:12px}.register-hero h1{max-width:760px;margin-bottom:0;font-size:clamp(38px,6vw,56px);line-height:1.04}.register-hero p:last-child{max-width:680px;margin-bottom:0;color:var(--muted);font-size:17px}.onboard-card,.register-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);padding:24px}.onboard-form,.register-form{display:grid;grid-gap:16px;gap:16px}.onboard-status{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;font-weight:750}.onboard-status.success{border-color:rgba(21,128,61,.24);background:rgba(21,128,61,.1);color:var(--success)}.onboard-status.error{border-color:rgba(185,28,28,.24);background:rgba(185,28,28,.08);color:var(--danger)}.form-status{margin:0;border:1px solid var(--line);border-radius:var(--radius);padding:9px 12px;font-size:14px;font-weight:750}.form-status.loading{color:var(--blue);background:rgba(37,99,235,.08);border-color:rgba(37,99,235,.2)}.form-status.success{color:var(--success);background:rgba(21,128,61,.1);border-color:rgba(21,128,61,.24)}.form-status.error{color:var(--danger);background:rgba(185,28,28,.08);border-color:rgba(185,28,28,.24)}.alert-panel{margin-top:18px;padding:18px;color:var(--danger)}.empty-panel{min-height:168px;display:flex;align-items:flex-start;gap:14px;padding:22px}.empty-panel>svg{flex:0 0 auto;width:40px;height:40px;border-radius:var(--radius);background:var(--surface-soft);color:var(--primary-strong);padding:10px}.empty-panel p:last-child{max-width:680px;margin-bottom:0;color:var(--muted)}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (max-width:1080px){.form-grid,.metric-grid,.module-grid,.work-panel ol{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:900px){.dashboard-shell{display:block}.sidebar{position:-webkit-sticky;position:sticky;height:auto;top:0;z-index:20;border-right:0;border-bottom:1px solid var(--line);padding:14px 18px 12px}.brand-lockup{display:flex;align-items:center;gap:12px;margin-bottom:12px}.brand-lockup .gopika-logo-mark{width:40px;height:40px}.brand-lockup .gopika-logo-word{font-size:22px}nav{display:flex;gap:8px;overflow-x:auto;overscroll-behavior-x:contain;padding-bottom:2px;scrollbar-width:none}nav::-webkit-scrollbar{display:none}nav a{flex:0 0 auto;justify-content:center;min-width:116px;padding:10px 12px}.sidebar-note{display:none}.content{width:100%;padding:20px 18px 28px}.empty-panel,.hero-panel,.topbar,.work-panel{grid-template-columns:1fr}.topbar{flex-direction:column}.metric-grid,.module-grid,.role-switcher,.work-panel ol{grid-template-columns:1fr}.checkin-filter,.list-panel-header,.search-form{flex-direction:column;align-items:stretch}.search-form button,.search-form input{width:100%}.checkin-employee-form .form-grid.two-col,.checkin-search-panel,.data-row,.form-grid.two-col,.split-workspace{grid-template-columns:1fr}.segmented-control{display:flex;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none}.segmented-control::-webkit-scrollbar{display:none}.segmented-control button{flex:0 0 auto;min-width:150px;padding-inline:14px}}@media (max-width:560px){.content,.sidebar{padding:14px}h2{font-size:28px}.brand-caption{display:none}nav{flex-wrap:wrap;overflow:visible}nav a{flex-grow:1;flex-shrink:1;flex-basis:calc(33.333% - 8px);min-width:0;min-height:44px;justify-content:center;font-size:14px}.hero-actions,.topbar-actions{width:100%;align-items:stretch;flex-direction:column}.hero-actions a,.logout-button,.primary-submit,.secondary-action,.status-pill{width:100%}.segmented-control{margin-inline:-2px;flex-wrap:wrap;overflow:visible}.segmented-control button{flex-grow:1;flex-shrink:1;flex-basis:calc(50% - 8px);min-width:0}.workspace-header{flex-direction:column}.list-panel,.login-card,.onboard-card,.ops-workspace,.register-card,fieldset{padding:14px}.checkin-employee-form .form-grid.two-col,.form-grid,.form-grid.two-col,.metric-grid,.module-grid,.record-grid{grid-template-columns:1fr}.form-field.span-2{grid-column:auto}.data-table{border:0;overflow:visible}.data-row.header{display:none}.data-row{display:grid;grid-template-columns:1fr;grid-gap:10px;gap:10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:13px;margin-bottom:10px}.data-row span{display:grid;grid-gap:2px;gap:2px}.data-row span:before{color:var(--muted);font-size:11px;font-weight:850;text-transform:uppercase}.data-row span:first-child:before{content:"Hồ sơ"}.data-row span:nth-child(2):before{content:"Liên hệ"}.data-row span:nth-child(3):before{content:"Phân loại"}.data-row span:nth-child(4):before{content:"Trạng thái"}.record-head{align-items:flex-start}.office-employee-table.is-preview .data-row:nth-child(n+7){display:none}.office-employee-table .data-row{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:4px 12px;padding:10px 12px}.office-employee-table .data-row span:before{content:none}.office-employee-table .data-row span:first-child{grid-column:1}.office-employee-table .data-row span:first-child strong{font-size:15px;line-height:1.25}.office-employee-table .data-row span:first-child small{font-size:11px}.office-employee-table .data-row span:nth-child(2){grid-column:1;color:var(--muted);font-size:13px}.office-employee-table .data-row span:nth-child(2) small{display:none}.office-employee-table .data-row span:nth-child(3){grid-column:1}.office-employee-table .data-row span:nth-child(3) strong{color:var(--muted);font-size:12px;font-weight:750}.office-employee-table .data-row span:nth-child(3) small{display:none}.office-employee-table .data-row span:nth-child(4){grid-column:2;grid-row:1/span 3;min-width:92px;align-self:start;text-align:right}.office-employee-table .data-row span:nth-child(4) strong{display:inline-flex;min-height:26px;align-items:center;border-radius:999px;background:rgba(21,128,61,.1);color:var(--success);padding:4px 8px;font-size:11px;font-weight:850}.office-employee-table .data-row span:nth-child(4) small{font-size:11px}}