@font-face{font-family:satoshi;src:url(/_next/static/media/d9396795aa5ec363-s.p.woff2) format("woff2");font-display:swap;font-weight:300 900}@font-face{font-family:satoshi Fallback;src:local("Arial");ascent-override:92.36%;descent-override:21.95%;line-gap-override:9.14%;size-adjust:109.35%}.__className_654a47{font-family:satoshi,satoshi Fallback}.__variable_654a47{--font-satoshi:"satoshi","satoshi Fallback"}@font-face{font-family:Outfit;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/98848575513c9742-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Outfit;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/7b0b24f36b1a6d0b-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Outfit Fallback;src:local("Arial");ascent-override:100.18%;descent-override:26.05%;line-gap-override:0.00%;size-adjust:99.82%}.__className_a80a2d{font-family:Outfit,Outfit Fallback;font-style:normal}.__variable_a80a2d{--font-outfit:"Outfit","Outfit Fallback"}:root{color-scheme:dark;--ink:#0a1628;--ink-mid:#132338;--paper:#f4f7fb;--surface:#ffffff;--line:rgba(15,36,64,0.1);--line-strong:rgba(15,36,64,0.16);--teal:#1aa889;--teal-deep:#0f7a64;--sky:#3b82c4;--sky-deep:#1e5a8a;--good:#0f7a64;--danger:#b42318;--muted:#5b6b7c;--focus:#4d8dff;--kiosk-fg:#eef3f8;--kiosk-muted:rgba(238,243,248,0.68);--shadow-soft:0 18px 40px rgba(10,22,40,0.18);--radius:16px;--radius-sm:10px;--font-display:var(--font-satoshi),var(--font-outfit),"Avenir Next",sans-serif;--font-body:var(--font-satoshi),var(--font-outfit),"Segoe UI",sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%}body{font-family:var(--font-body);background:var(--ink);color:var(--kiosk-fg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input{font:inherit}a{color:inherit}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse-ring{0%,to{box-shadow:0 0 0 0 rgba(26,168,137,.35)}50%{box-shadow:0 0 0 10px rgba(26,168,137,0)}}@keyframes soft-breathe{0%,to{opacity:.45}50%{opacity:.75}}.kiosk{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;padding:36px 22px 44px;position:relative;overflow:hidden;background:radial-gradient(900px 480px at 18% -8%,rgba(26,168,137,.22),transparent 55%),radial-gradient(700px 420px at 92% 12%,rgba(59,130,196,.18),transparent 50%),linear-gradient(165deg,#0c1a2e 0,var(--ink) 48%,#08111f 100%)}.kiosk:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(238,243,248,.03) 1px,transparent 0),linear-gradient(90deg,rgba(238,243,248,.03) 1px,transparent 0);background-size:48px 48px;-webkit-mask-image:radial-gradient(ellipse 70% 60% at 50% 40%,black,transparent);mask-image:radial-gradient(ellipse 70% 60% at 50% 40%,black,transparent);pointer-events:none;animation:soft-breathe 8s ease-in-out infinite}.home{text-align:center}.home>*{position:relative;z-index:1;animation:rise .55s ease both}.home .clock-face{animation-delay:.04s}.home .punch-actions{animation-delay:.12s}.home .hint{animation-delay:.2s}.home .quiet-link{animation-delay:.28s}.clock-face{display:grid;grid-gap:10px;gap:10px;justify-items:center}.brand-mark{margin:0;font-family:var(--font-display);font-weight:700;font-size:clamp(1.35rem,2.8vw,1.7rem);letter-spacing:-.04em;color:var(--kiosk-fg)}.eyebrow{margin:0;letter-spacing:.14em;text-transform:uppercase;font-size:.72rem;font-weight:600;color:var(--kiosk-muted)}.eyebrow.dark,.quiet-link.dark{color:var(--muted)}.clock-time{margin:0;font-family:var(--font-display);font-size:clamp(4.6rem,15vw,8.4rem);line-height:.9;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.06em}.clock-date,.help,.hint,.lede,.meta{margin:0;color:var(--kiosk-muted)}.admin .help,.admin .lede,.admin .meta{color:var(--muted)}.punch-actions,.row-actions,.scan-actions{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;width:min(900px,100%)}.punch{flex:1 1 250px;min-height:156px;display:grid;place-items:center;border-radius:var(--radius);text-decoration:none;font-family:var(--font-display);font-size:clamp(1.85rem,3.8vw,2.45rem);font-weight:650;letter-spacing:-.04em;border:1px solid transparent;transition:transform .18s ease,box-shadow .18s ease,filter .18s ease;box-shadow:var(--shadow-soft)}.punch:hover{transform:translateY(-2px);filter:brightness(1.03)}.punch:active{transform:translateY(0)}.punch.in{background:linear-gradient(160deg,#2bc4a0 0,var(--teal) 55%,var(--teal-deep) 100%);color:#04261f}.punch.out{background:linear-gradient(160deg,#5b9bd4 0,var(--sky) 55%,var(--sky-deep) 100%);color:#061828}.admin-bar a:focus-visible,.button:focus-visible,.people a:focus-visible,.punch:focus-visible,.quiet-link:focus-visible,.text-button:focus-visible,input:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.quiet-link{color:var(--kiosk-muted);text-underline-offset:5px;transition:color .15s ease}.quiet-link:hover{color:var(--kiosk-fg)}.scan{justify-content:flex-start;padding-top:32px;gap:22px}.scan>*{z-index:1}.scan>*,.stage{position:relative}.stage{width:min(640px,100%);aspect-ratio:4/3;border-radius:calc(var(--radius) + 4px);overflow:hidden;background:#040910;border:2px solid rgba(238,243,248,.14);transition:border-color .25s ease,box-shadow .25s ease}.stage.ready{border-color:rgba(26,168,137,.85);animation:pulse-ring 2.2s ease-in-out infinite}.stage.compact{max-width:420px}.admin .stage{border-color:var(--line-strong);background:#0a1220}.admin .stage.ready{border-color:var(--teal)}.stage img,.stage video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1);display:block}.stage video.hidden{display:none}.status{margin:0;font-family:var(--font-display);font-size:clamp(1.45rem,3vw,2.05rem);text-align:center;letter-spacing:-.03em;font-weight:600;max-width:36rem}.status.ok{color:#7decc8}.status.warn{color:#ffc9a8}.button,.punch,.text-button{cursor:pointer}.button{border:0;border-radius:var(--radius-sm);padding:13px 20px;background:var(--ink);color:var(--paper);text-decoration:none;min-height:48px;display:inline-flex;align-items:center;justify-content:center;font-weight:600;letter-spacing:-.01em;transition:background .15s ease,color .15s ease,border-color .15s ease,transform .15s ease}.button:hover{filter:brightness(1.06)}.button.primary{background:var(--teal);color:#04261f}.button.ghost{background:transparent;color:inherit;border:1px solid}.button.danger{background:var(--danger);color:white}.button:disabled{opacity:.45;cursor:not-allowed;filter:none}.kiosk .button.ghost,.kiosk .button.primary{min-width:min(100%,280px);min-height:60px;font-size:1.12rem;border-radius:var(--radius-sm)}.kiosk .button.ghost{border-color:rgba(238,243,248,.35)}.text-button{border:0;background:transparent;color:inherit;text-decoration:underline;text-underline-offset:4px;padding:0;font-weight:500}.admin{min-height:100dvh;background:radial-gradient(900px 320px at 100% 0,rgba(26,168,137,.08),transparent 55%),linear-gradient(180deg,#e8eef5 0,var(--paper) 28%,#eef2f7 100%);color:var(--ink);color-scheme:light}.admin-bar{display:flex;align-items:center;gap:22px;padding:14px 24px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.86);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:-webkit-sticky;position:sticky;top:0;z-index:20}.admin-bar nav{display:flex;gap:6px;flex:1 1}.admin-bar nav a{text-decoration:none;padding:8px 12px;border-radius:8px;color:var(--muted);font-weight:550;transition:background .15s ease,color .15s ease}.admin-bar nav a:hover{background:rgba(15,36,64,.05);color:var(--ink)}.brand{font-family:var(--font-display);font-weight:700;letter-spacing:-.04em;text-decoration:none;font-size:1.15rem}.admin-main{width:min(960px,100%);margin:0 auto;padding:32px 20px 72px;display:grid;grid-gap:20px;gap:20px;animation:rise .4s ease both}.admin h1,.admin h2{margin:0;font-family:var(--font-display);letter-spacing:-.045em;font-weight:650}.admin h1{font-size:clamp(1.75rem,3vw,2.15rem)}.admin h2{font-size:1.15rem}.page-head{display:flex;justify-content:space-between;align-items:center;gap:16px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:28px;display:grid;grid-gap:16px;gap:16px;box-shadow:0 10px 28px rgba(15,36,64,.04)}.card.narrow{width:min(420px,100%)}.login-screen{display:grid;place-items:center;min-height:100dvh;padding:32px 16px;position:relative;background:radial-gradient(700px 360px at 12% 0,rgba(26,168,137,.14),transparent 55%),radial-gradient(600px 320px at 100% 100%,rgba(59,130,196,.12),transparent 50%),var(--paper)}.login-screen .card{animation:rise .45s ease both}.login-screen h1{font-size:1.85rem}.row-form,.stack{display:grid;grid-gap:14px;gap:14px}label{display:grid;grid-gap:7px;gap:7px;font-size:.92rem;font-weight:550;color:var(--ink-mid)}input:not([type]),input[type=password],input[type=text]{border:1px solid var(--line-strong);background:#fbfdff;color:var(--ink);border-radius:var(--radius-sm);padding:12px 14px;min-height:48px;transition:border-color .15s ease,box-shadow .15s ease}input:not([type]):focus,input[type=password]:focus,input[type=text]:focus{border-color:rgba(26,168,137,.55);box-shadow:0 0 0 3px rgba(26,168,137,.15);outline:none}.check{display:flex;gap:10px;align-items:flex-start;font-weight:450;color:var(--muted)}.check input{margin-top:4px;min-height:auto}.form-error{margin:0;color:var(--danger);font-weight:550}.kiosk .form-error{color:#ffb4a4}.people,.punches{list-style:none;margin:0;padding:0;display:grid;grid-gap:8px;gap:8px}.people a,.punches li{display:grid;grid-gap:4px;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px 18px;text-decoration:none;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.people a:hover{border-color:rgba(26,168,137,.35);box-shadow:0 8px 22px rgba(15,36,64,.06);transform:translateY(-1px)}.people a{grid-template-columns:1fr auto;grid-template-areas:"name badge" "meta badge";align-items:center}.person-name{grid-area:name;font-family:var(--font-display);font-size:1.2rem;font-weight:650;letter-spacing:-.03em}.person-meta{grid-area:meta;color:var(--muted);font-size:.92rem}.badge{grid-area:badge;border-radius:8px;padding:6px 10px;font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.badge.in{background:rgba(26,168,137,.14);color:var(--good)}.badge.out{background:rgba(59,130,196,.14);color:var(--sky-deep)}.badge.muted{background:rgba(91,107,124,.12);color:var(--muted)}.crumb{margin:0}.crumb a{color:var(--muted);text-decoration:none;font-weight:550}.crumb a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}.capture-row{display:flex;gap:8px;flex-wrap:wrap}.pip{border-radius:8px;padding:8px 12px;background:rgba(15,36,64,.06);color:var(--muted);font-size:.88rem;font-weight:550}.pip.filled{background:rgba(26,168,137,.14);color:var(--good)}.history{display:grid;grid-gap:12px;gap:12px;margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}.punches li{grid-template-columns:1fr auto;align-items:center}.punches li div{display:grid;grid-gap:4px;gap:4px}.punches li span{color:var(--muted);font-size:.92rem}.punches img{width:96px;height:72px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}.missing{margin:0;font-family:var(--font-display);font-size:2rem;letter-spacing:-.04em}.row-form{grid-template-columns:1fr auto;align-items:end}.empty-state{padding:28px 4px;color:var(--muted)}.report{display:grid;grid-gap:20px;gap:20px}.range-tabs{display:flex;gap:6px;flex-wrap:wrap}.range-tab{text-decoration:none;padding:8px 12px;border-radius:8px;border:1px solid var(--line-strong);background:var(--surface);color:var(--muted);font-weight:550;font-size:.9rem}.range-tab.active,.range-tab:hover{color:var(--ink);border-color:rgba(26,168,137,.45);background:rgba(26,168,137,.1)}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:12px;gap:12px}.stat-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 18px 16px;display:grid;grid-gap:8px;gap:8px}.stat-label{margin:0;color:var(--muted);font-size:.82rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.stat-value{margin:0;font-family:var(--font-display);font-size:clamp(1.8rem,3vw,2.35rem);font-weight:650;letter-spacing:-.05em;line-height:1}.report-panels{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}.panel,.report-panels{display:grid;grid-gap:14px;gap:14px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 18px 16px}.panel-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.activity-list,.presence-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:8px;gap:8px}.presence-row{display:grid;grid-template-columns:1fr auto;grid-template-areas:"name badge" "meta badge";grid-gap:2px 12px;gap:2px 12px;align-items:center;text-decoration:none;padding:12px 14px;border:1px solid var(--line);border-radius:12px;transition:border-color .15s ease,box-shadow .15s ease}.presence-row:hover{border-color:rgba(26,168,137,.35);box-shadow:0 8px 22px rgba(15,36,64,.06)}.presence-row .person-name{grid-area:name}.presence-row .person-meta{grid-area:meta}.presence-row .badge{grid-area:badge}.bar-chart{display:grid;grid-template-columns:repeat(auto-fit,minmax(44px,1fr));grid-gap:10px;gap:10px;align-items:end;min-height:180px;padding-top:8px}.bar-col{display:grid;grid-gap:6px;gap:6px;justify-items:center;align-content:end}.bar-track{width:100%;height:140px;display:flex;align-items:flex-end;justify-content:center}.bar-fill{width:min(100%,28px);border-radius:8px 8px 4px 4px;overflow:hidden;display:flex;flex-direction:column-reverse;background:rgba(15,36,64,.06);min-height:8px}.bar-in{background:linear-gradient(180deg,#2bc4a0,var(--teal-deep));min-height:4px}.bar-out{background:linear-gradient(180deg,#5b9bd4,var(--sky-deep));min-height:0}.bar-count,.bar-label{font-size:.72rem;color:var(--muted);text-align:center;line-height:1.2}.bar-count{font-weight:650;color:var(--ink-mid)}.activity-list li{display:grid;grid-template-columns:auto 1fr auto;grid-gap:12px;gap:12px;align-items:center;padding:10px 4px;border-bottom:1px solid var(--line)}.activity-list li:last-child{border-bottom:0}.activity-name{font-weight:600;letter-spacing:-.02em}.activity-time{color:var(--muted);font-size:.9rem}.table-wrap{overflow-x:auto}.report-table{width:100%;border-collapse:collapse;font-size:.95rem}.report-table td,.report-table th{text-align:left;padding:12px 10px;border-bottom:1px solid var(--line);white-space:nowrap}.report-table th{color:var(--muted);font-size:.78rem;font-weight:650;letter-spacing:.04em;text-transform:uppercase}.report-table a{text-decoration:none;font-weight:600;color:var(--ink)}.report-table a:hover{color:var(--teal-deep);text-decoration:underline;text-underline-offset:3px}.admin-main:has(.report){width:min(1120px,100%)}@media (max-width:900px){.report-panels,.stat-grid{grid-template-columns:1fr 1fr}}@media (max-width:700px){.people a,.row-form{grid-template-columns:1fr;grid-template-areas:"name" "meta" "badge"}.admin-bar{flex-wrap:wrap;gap:12px}.punch{min-height:128px}.report-panels,.stat-grid{grid-template-columns:1fr}.page-head{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation:none!important;transition:none!important}}