:root{color:#172033;--blue:#139ad6;--ink:#172033;--muted:#697386;--line:#dfe5ef;--card:#ffffffd1;--red:#d93025;--green:#138a43;--amber:#b26b00;--shadow:0 24px 80px #1e2a3e24;background:#f5f7fb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,SF Pro Display,Segoe UI,sans-serif}*{box-sizing:border-box;touch-action:manipulation}body{overscroll-behavior:none;-webkit-font-smoothing:antialiased;min-width:320px;min-height:100svh;margin:0}button,input,select,textarea{font:inherit}a{color:inherit}.centered,.home,.kiosk-shell{min-height:100vh;padding:max(32px, env(safe-area-inset-top)) max(32px, env(safe-area-inset-right)) max(32px, env(safe-area-inset-bottom)) max(32px, env(safe-area-inset-left));place-items:center;display:grid}.home{background:radial-gradient(circle at 14% 12%,#139ad629,#0000 28%),radial-gradient(circle at 84% 18%,#138a431f,#0000 26%),linear-gradient(145deg,#f9fbfd,#eef3f8 64%,#e8edf5)}.app-dashboard{align-content:start;place-items:stretch stretch;gap:clamp(26px,4vh,52px)}.dashboard-top{justify-content:space-between;align-items:center;gap:28px;display:flex}.dashboard-top img{object-fit:contain;order:2;width:min(420px,44vw);max-height:112px}.dashboard-clock{color:var(--muted);text-align:left;order:1;justify-items:start;gap:2px;display:grid}.dashboard-clock strong{color:var(--blue);font-size:clamp(34px,4.6vw,62px);line-height:1}.dashboard-clock span{font-size:clamp(15px,1.8vw,22px);font-weight:800}.dashboard-intro{text-align:center;justify-items:center;gap:6px;margin-top:auto;display:grid;transform:translateY(42px)}.dashboard-intro span{color:var(--blue);font-size:clamp(30px,4.4vw,58px);font-weight:900}.dashboard-intro h1{color:var(--ink);letter-spacing:0;margin:0;font-size:clamp(56px,8vw,108px);line-height:.96}.app-grid{grid-template-columns:repeat(4,minmax(0,1fr));justify-self:center;gap:clamp(22px,3vw,36px);width:min(780px,100%);margin-bottom:auto;display:grid;transform:translateY(42px)}.app-tile,.portal-app-tile{min-height:0;box-shadow:none;color:var(--ink);cursor:pointer;text-align:center;background:0 0;border:0;border-radius:0;align-content:start;justify-items:center;gap:12px;padding:0;text-decoration:none;transition:transform .16s,opacity .16s;display:grid}.app-tile:active,.portal-app-tile:active{transform:scale(.98)}.app-tile strong,.portal-app-tile strong{font-size:clamp(22px,2.7vw,32px);line-height:1.06}.app-tile strong{text-align:center;max-width:100%;font-size:clamp(19px,2vw,25px)}.app-tile small,.portal-app-tile small{color:var(--muted);font-size:15px;font-weight:750}.app-tile em,.portal-app-tile em{color:#7a8493;margin-top:-4px;font-style:normal;font-weight:900}.app-tile.is-disabled,.portal-app-tile.is-disabled{opacity:.48;cursor:not-allowed}.app-tile.is-disabled .app-icon{filter:grayscale(.18)}.app-icon{color:#fff;border-radius:20px;place-items:center;width:68px;height:68px;display:inline-grid;box-shadow:inset 0 1px #ffffff57,0 12px 28px #1e2a3e29}.app-icon svg{width:34px;height:34px}.app-grid .app-icon{aspect-ratio:1;border-radius:34px;width:100%;height:auto}.app-grid .app-icon svg{width:48%;height:48%}.portal-app-grid .app-icon{aspect-ratio:1;border-radius:34px;width:100%;height:auto}.portal-app-grid .app-icon svg{width:48%;height:48%}.app-icon-blue{background:linear-gradient(160deg,#35b8eb,#087cad)}.app-icon-green{background:linear-gradient(160deg,#35c476,#0e7b3c)}.app-icon-amber{background:linear-gradient(160deg,#f6b94a,#bd6f00)}.app-icon-slate{background:linear-gradient(160deg,#8c98a8,#4d5868)}.home-actions,.inline-actions,.row-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.home-actions{justify-content:center;margin-top:22px}.card{background:var(--card);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border:1px solid #ffffffb3;border-radius:22px;padding:24px}.btn{cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 18px;font-weight:750;text-decoration:none;display:inline-flex}.btn-primary{background:var(--blue);color:#fff}.btn-secondary{color:#087cad;background:#e9f5fb}.btn-ghost{color:var(--muted);background:0 0}.btn-danger{background:var(--red);color:#fff}.btn-ready{color:var(--green);background:#e8f7ef}.btn-ready small{color:inherit;opacity:.82;margin-left:2px;font-size:11px;font-weight:850}.icon-btn{width:40px;min-height:40px;padding:0}.input{border:1px solid var(--line);width:100%;min-height:44px;color:var(--ink);background:#ffffffeb;border-radius:14px;padding:10px 12px}.textarea{resize:vertical;min-height:92px}.form,.stack,.mini-list{gap:14px;display:grid}.form.compact{gap:10px}.form-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.field{gap:7px;font-weight:700;display:grid}.field small,small,.mini-list,.profile-tile span,.admin-sidebar span{color:var(--muted);font-size:13px}.form-error,.error-banner,.success-banner{border-radius:16px;align-items:center;gap:8px;padding:12px 14px;font-weight:750;display:flex}.form-error,.error-banner{color:var(--red);background:#fff1ef}.success-banner{color:var(--green);background:#eaf8ef}.success-panel{min-height:min(520px,58vh);color:var(--green);box-shadow:var(--shadow);text-align:center;background:linear-gradient(160deg,#e8f7eff5,#d2f1e1e6);border-radius:32px;align-content:center;place-items:center;gap:18px;padding:42px;display:grid}.success-panel strong{letter-spacing:0;max-width:900px;font-size:clamp(38px,6vw,78px);line-height:1.05}.success-panel small{color:var(--muted);font-size:clamp(18px,2.2vw,28px);font-weight:850}.loader{color:var(--muted);font-weight:800}.skeleton{background:#d6deeab8;border-radius:18px;position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(90deg,#0000,#ffffff9e,#0000);animation:1.35s infinite shimmer;position:absolute;inset:0;transform:translate(-100%)}@keyframes shimmer{to{transform:translate(100%)}}.skeleton-hero{height:154px}.skeleton-card{cursor:default;pointer-events:none}.skeleton-avatar{border-radius:999px;width:42px;height:42px}.skeleton-line{height:16px;display:block}.wide-line{width:68%}.short-line{width:42%}.skeleton-table{height:220px}.kiosk-shell{background:radial-gradient(circle at 20% 10%,#139ad62e,#0000 32%),linear-gradient(145deg,#f9fbfd,#edf2f7);align-content:start;place-items:stretch stretch;gap:18px;min-height:100svh}.kiosk-shell-compact{align-content:center;place-items:center}.kiosk-hero{grid-template-columns:minmax(120px,1fr) minmax(340px,1.4fr) minmax(260px,1fr);align-items:center;gap:24px;padding:10px 8px 22px;display:grid;position:relative}.kiosk-home-button,.portal-back-link{width:66px;min-height:66px;color:var(--ink);background:#ffffffc2;border:1px solid #fffc;border-radius:22px;justify-content:center;align-items:center;padding:0;font-weight:850;text-decoration:none;display:inline-flex;box-shadow:0 12px 28px #1e2a3e1a}.kiosk-home-button{position:absolute;top:8px;left:8px}.kiosk-time{justify-self:start}.kiosk-hero h1{color:var(--muted);letter-spacing:0;margin:0;font-size:clamp(64px,12vw,132px)}.kiosk-date-stack{text-align:center;grid-column:2;justify-self:center;gap:4px;display:grid}.kiosk-weekday{color:var(--blue);font-size:clamp(22px,2.4vw,38px);font-weight:900}.kiosk-date{color:var(--muted);text-align:center;margin:0;font-size:clamp(28px,3.4vw,52px);font-weight:800}.kiosk-hero img{object-fit:contain;width:min(360px,42vw);max-height:110px;position:absolute;top:8px;right:8px}.profile-stage{place-items:center;min-height:min(640px,100svh - 230px);display:grid;transform:translateY(-72px)}.profile-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;width:100%;display:grid}.profile-tile{cursor:pointer;background:#ffffffc2;border:1px solid #ffffffb8;border-radius:28px;align-content:center;place-items:center;gap:10px;min-height:168px;transition:transform .16s,border-color .16s,background .16s;display:grid;box-shadow:0 18px 54px #1e2a3e1c}.profile-tile:active{transform:scale(.98)}.profile-tile.is-present{color:#0e6832;background:linear-gradient(160deg,#e8f7eff5,#cdf0ddeb);border-color:#138a4347}.profile-tile.is-absent{color:#5d6878;background:#ebeff5c2;border-color:#69738629}.profile-tile.is-configure{color:#8b5a00;cursor:not-allowed;background:#fff7ded1;border-color:#b26b0038}.profile-tile.is-present span{color:#0e6832}.profile-tile.is-absent span{color:#7a8493}.profile-tile.is-configure span{color:#9a6500;font-weight:900}.profile-tile:disabled:active{transform:none}.profile-tile strong{font-size:clamp(30px,3vw,44px);line-height:1.05}.portal-shell{min-height:100svh;padding:max(28px, env(safe-area-inset-top)) max(28px, env(safe-area-inset-right)) max(28px, env(safe-area-inset-bottom)) max(28px, env(safe-area-inset-left));background:radial-gradient(circle at 18% 12%,#139ad629,#0000 30%),radial-gradient(circle at 88% 18%,#138a431f,#0000 26%),linear-gradient(145deg,#f9fbfd,#edf2f7);align-content:start;gap:clamp(24px,4vh,44px);display:grid}.portal-pin-shell{align-content:center;place-items:center}.portal-topbar{grid-template-columns:1fr auto;align-items:center;gap:20px;display:grid}.portal-topbar img{object-fit:contain;justify-self:end;width:min(360px,42vw);max-height:104px}.portal-welcome{text-align:center;justify-items:center;gap:8px;display:grid}.portal-welcome>span{color:var(--blue);font-size:clamp(34px,5.4vw,72px);font-weight:900}.portal-welcome h1{color:var(--ink);letter-spacing:0;margin:0;font-size:clamp(46px,7vw,90px);line-height:1}.portal-welcome p{color:var(--muted);margin:0;font-size:clamp(18px,2.2vw,26px);font-weight:750}.portal-notice{text-align:center;justify-content:center;justify-self:center;width:min(980px,100%)}.portal-employee-grid,.portal-app-grid{grid-template-columns:repeat(4,minmax(0,1fr));justify-self:center;gap:clamp(16px,2.2vw,24px);width:min(980px,100%);display:grid}.portal-app-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(22px,3vw,36px);width:min(900px,100%)}.portal-employee-tile{min-height:166px;color:var(--ink);cursor:pointer;background:#ffffffc2;border:1px solid #ffffffbd;border-radius:28px;align-content:center;place-items:center;gap:10px;display:grid;box-shadow:0 18px 54px #1e2a3e1c}.portal-employee-tile:active{transform:scale(.98)}.portal-employee-tile strong{color:var(--blue);font-size:clamp(30px,3vw,44px);line-height:1.05}.portal-employee-tile small{color:var(--amber);align-items:center;gap:5px;font-weight:900;display:inline-flex}.portal-card{text-align:center;justify-items:center;gap:12px;width:min(540px,100%);display:grid}.portal-card h1{margin:0;font-size:clamp(36px,5vw,62px);line-height:1}.pin-card,.kiosk-auth,.auth-card{text-align:center;width:min(480px,100%);margin:0 auto}.pin-card{align-self:center;width:min(720px,100%);padding:clamp(18px,2.2vw,28px)}.pin-title{letter-spacing:0;margin:6px 0 8px;font-size:clamp(44px,6.8vw,86px);line-height:1}.name-highlight{color:var(--blue)}.pin-alert-region{z-index:40;top:max(28px, env(safe-area-inset-top));pointer-events:none;width:min(720px,100vw - 48px);min-height:86px;position:fixed;left:50%;transform:translate(-50%)}.pin-error{color:var(--red);background:#fff1ef;border-radius:24px;margin:0;padding:18px 20px;font-size:clamp(28px,4vw,46px);font-weight:900;line-height:1.05}.pin-dots{justify-content:center;gap:18px;margin:16px 0 20px;display:flex}.pin-dots span{background:#ffffffa6;border:2px solid #b8c1ce;border-radius:999px;width:18px;height:18px}.pin-dots span.filled{border-color:var(--blue);background:var(--blue)}.pin-transition{color:#087cad;align-content:center;place-items:center;gap:10px;min-height:332px;display:grid}.pin-transition strong{font-size:28px}.pin-transition small{font-size:15px}.mini-spinner{border:5px solid #139ad62e;border-top-color:var(--blue);border-radius:999px;width:52px;height:52px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.keypad{grid-template-columns:repeat(3,minmax(130px,1fr));justify-content:center;gap:16px;width:min(620px,100%);margin:0 auto 12px;display:grid}.keypad button{width:100%;height:clamp(82px,10vh,118px);color:var(--ink);cursor:pointer;background:#ffffffe6;border:0;border-radius:28px;font-size:clamp(34px,5vw,54px);font-weight:850;box-shadow:0 10px 28px #1e2a3e1c}.keypad button:active{transform:scale(.97)}.auth-card img{object-fit:contain;width:100%;max-height:76px}.admin-shell{grid-template-columns:240px 1fr;min-height:100vh;display:grid}.admin-sidebar{border-right:1px solid var(--line);background:#ffffffc2;grid-template-rows:auto auto 1fr auto;align-content:stretch;gap:10px;height:100vh;padding:26px;display:grid;position:sticky;top:0}.admin-sidebar img{width:72px}.admin-main{padding:28px}.admin-nav{align-content:start;gap:8px;margin-top:18px;display:grid}.admin-nav-bottom{align-self:end;margin-top:0}.admin-nav-item{min-height:46px;color:var(--muted);text-align:left;background:0 0;border:1px solid #0000;border-radius:14px;align-items:center;gap:10px;padding:0 12px;font-weight:800;display:inline-flex}.admin-nav-item.active{color:#087cad;background:#e8f6fd;border-color:#139ad62e}.admin-nav-item:disabled{opacity:.45}.admin-topbar{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.admin-topbar span{color:var(--muted);font-weight:800}.admin-topbar h1{margin:0;font-size:34px}.admin-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.admin-content-panel{gap:16px;display:grid}.admin-section-header{justify-content:space-between;align-items:center;gap:16px;display:flex}.admin-section-header span{color:var(--muted);font-weight:800}.admin-section-header h2{margin:0;font-size:32px}.wide{grid-column:1/-1}.metric-card{gap:8px;display:grid}.metric-card strong{font-size:34px}.metric-card.danger,.danger-panel{border-color:#d9302547}.section-title{align-items:center;gap:10px;margin-bottom:16px;display:flex}.section-row{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.section-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:inline-flex}.section-title h2{margin:0}.table-wrap{overflow-x:auto}.period-toolbar{grid-template-columns:minmax(260px,1fr) auto;align-items:end;gap:14px;display:grid}.period-selector-card{gap:14px;display:grid}.period-toolbar-large{grid-template-columns:minmax(320px,1fr)}.period-toolbar-large .select{border-radius:18px;min-height:62px;font-size:24px}.period-action-row{justify-content:flex-start;display:flex}.select{border:1px solid var(--line);width:100%;min-height:48px;color:var(--ink);font:inherit;background:#ffffffe0;border-radius:14px;padding:0 14px;font-weight:750}.download-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.report-preview{gap:16px;display:grid}.report-employee-list{gap:12px;display:grid}.report-employee{border:1px solid var(--line);background:#ffffffb8;border-radius:18px;overflow:hidden}.report-employee-empty{color:#8b98a7;background:#f8fafcb8}.report-employee summary{cursor:pointer;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-height:64px;padding:14px 16px;list-style:none;display:grid}.report-employee summary::-webkit-details-marker{display:none}.report-employee-main{text-align:left;justify-self:start;gap:4px;min-width:0;display:grid}.report-employee-name{font-size:24px;line-height:1.05}.report-employee-summary{color:var(--muted);font-weight:850}.report-employee .table-wrap{padding:0 12px 12px}.file-action-group{align-items:center;gap:6px;display:inline-flex}.tiny-spinner{border-width:3px;width:18px;height:18px}.hint{color:var(--muted);margin:10px 0 0;font-weight:700}.employee-history-layout{grid-template-columns:minmax(220px,280px) 1fr;gap:18px;display:grid}.employee-page-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.employee-page-card{border:1px solid var(--line);min-height:76px;color:var(--ink);text-align:left;cursor:pointer;background:#ffffffb8;border-radius:18px;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.employee-page-card:hover{background:#e8f6fd;border-color:#139ad647}.employee-page-card span{gap:4px;display:grid}.employee-page-card strong,.employee-list-item strong{font-size:19px;line-height:1.1}.employee-page-card small{color:var(--muted);font-weight:750}.nip-warning{align-items:center;gap:5px;display:inline-flex;color:var(--amber)!important}.employee-page-header{justify-content:space-between}.employee-profile-card{justify-content:space-between;align-items:center;gap:18px;display:flex}.employee-profile-card span{color:var(--muted);font-weight:800}.employee-profile-card h2{margin:0;font-size:34px}.employee-name-line{align-items:center;gap:10px;display:flex}.tiny-select{border:1px solid var(--line);min-height:28px;color:var(--ink);background:#ffffffeb;border-radius:999px;padding:0 8px;font-size:12px;font-weight:900}.toggle-control{color:var(--ink);align-items:center;gap:8px;font-weight:850;display:inline-flex}.toggle-control input{width:20px;height:20px;accent-color:var(--blue)}.row-muted{color:#8893a2;background:#eff2f67a}.link-button{color:var(--blue);font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;padding:0;font-weight:900}.link-button:hover{text-decoration:underline}.modal-backdrop{z-index:60;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0f172a42;place-items:center;padding:28px;display:grid;position:fixed;inset:0}.modal-card{width:min(520px,100%)}.employee-profile-meta{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.employee-list{align-content:start;gap:8px;display:grid}.employee-list-item{border:1px solid var(--line);width:100%;min-height:62px;color:var(--ink);text-align:left;cursor:pointer;background:#ffffffb8;border-radius:16px;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;display:flex}.employee-list-item.active{color:#087cad;background:#e8f6fd;border-color:#139ad642}.employee-list-item span{gap:3px;display:grid}.employee-list-item small,.employee-detail-header span{color:var(--muted);font-weight:750}.employee-detail{min-width:0}.employee-detail-header{justify-content:space-between;align-items:center;gap:14px;margin-bottom:12px;display:flex}.employee-detail-header h3{margin:0;font-size:26px}.history-table tr.day-off,.history-table tr.day-future{color:#8893a2;background:#eff2f68a}.history-table tr.day-absent{background:#fff1ef8f}.system-table td:first-child{gap:2px;display:grid}.system-table td:first-child small{color:var(--muted);letter-spacing:.02em;text-transform:uppercase;font-size:12px;font-weight:800}.badge-stack{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.hours-cell{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.period-total-card{border:1px solid var(--line);background:#ffffffb8;border-radius:18px;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;margin-top:16px;padding:16px;display:flex}.period-total-card span{color:var(--muted);font-weight:800}.period-total-card strong{font-size:24px}.edit-card>span{color:var(--muted);font-weight:800}.edit-card h2{margin-top:4px}table{border-collapse:collapse;width:100%}th,td{border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;padding:12px}th{color:var(--muted);font-size:13px}.badge{background:#eef2f6;border-radius:999px;align-items:center;gap:5px;padding:5px 10px;font-size:12px;font-weight:800;display:inline-flex}.punch-list{border:1px solid var(--line);background:#f8fafcdb;border-radius:16px;gap:8px;margin:14px 0;padding:14px;display:grid}.punch-list-row{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:8px 0;display:flex}.badge-green{color:var(--green);background:#e8f7ef}.badge-red{color:var(--red);background:#fff1ef}.badge-amber{color:var(--amber);background:#fff5e2}.badge-blue{color:#087cad;background:#e8f6fd}.exception-row{background:#fff8f7;border:1px solid #ffd0ca;border-radius:16px;grid-template-columns:1.4fr 170px 1fr auto;align-items:center;gap:10px;padding:12px;display:grid}.readonly-alert{background:#fff8f7;border:1px solid #ffd0ca;border-radius:16px;justify-content:space-between;align-items:center;gap:4px;padding:14px;display:flex}.readonly-alert div{gap:4px;display:grid}.readonly-alert span{color:var(--red);font-weight:750}.exception-row div{gap:4px;display:grid}.exception-row span{color:var(--red);font-weight:750}.check{color:var(--muted);align-items:center;gap:8px;font-weight:700;display:flex}.empty{border:1px dashed var(--line);color:var(--muted);border-radius:18px;padding:22px}@media (width<=900px){.profile-grid,.app-grid,.portal-employee-grid,.portal-app-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-grid,.admin-shell{grid-template-columns:1fr}.admin-sidebar{height:auto;position:static}.admin-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.exception-row,.form-row,.period-toolbar,.employee-history-layout,.employee-page-list{grid-template-columns:1fr}.employee-profile-card{flex-direction:column;align-items:start}.kiosk-hero{grid-template-columns:1fr;align-items:center}.kiosk-hero img{width:min(260px,46vw)}.kiosk-date-stack{text-align:center;grid-column:1;justify-self:center}.portal-topbar,.dashboard-top{text-align:left;grid-template-columns:1fr auto;justify-items:stretch;display:grid}.dashboard-clock,.portal-topbar>span{text-align:left;justify-self:start}}@media (width<=640px){.centered,.home,.kiosk-shell,.portal-shell{padding:18px}.app-grid,.portal-employee-grid,.portal-app-grid,.profile-grid{grid-template-columns:1fr}.kiosk-hero img{width:min(280px,82vw)}.keypad{grid-template-columns:repeat(3,1fr);gap:12px}.keypad button{width:100%;height:76px}}
