:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (max-width:1024px){:root{font-size:16px}}@media (prefers-color-scheme:dark){:root{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}#social .button-icon{filter:invert()brightness(2)}}body{margin:0}#root{text-align:center;border-inline:1px solid var(--border);box-sizing:border-box;flex-direction:column;width:1126px;max-width:100%;min-height:100svh;margin:0 auto;display:flex}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (max-width:1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (max-width:1024px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}.admin-login-page{--rose:#d470a2;--rose-dark:#a95a82;--peach:#ffdab9;--cream:#fdf5ee;--border-soft:#ffe4c9;--border:#f0d9c4;--ink:#2b1a20;--ink-2:#3a2620;--muted:#8a7671;--placeholder:#b7a79d;isolation:isolate;min-height:100vh;background:radial-gradient(circle at top left, #d470a21f, transparent 40%), radial-gradient(circle at bottom right, #ffdab999, transparent 45%), var(--cream);-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;width:100%;min-height:100dvh;padding:24px;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;display:flex;position:relative;overflow:hidden}.admin-login-page *,.admin-login-page :before,.admin-login-page :after{box-sizing:border-box}.admin-login-page button,.admin-login-page input{margin:0;font-family:inherit}.admin-login-page input::-ms-reveal{display:none}.admin-login-page input::-ms-clear{display:none}.admin-login-blob{z-index:-3;filter:blur(64px);pointer-events:none;border-radius:50%;animation:14s ease-in-out infinite admin-float;position:absolute}.admin-login-blob--one{background:#d470a242;width:360px;height:360px;top:-120px;left:-100px}.admin-login-blob--two{background:#ffdab9d9;width:400px;height:400px;animation-delay:-7s;bottom:-150px;right:-120px}@keyframes admin-float{0%,to{transform:translate(0,0)scale(1)}50%{transform:translate(28px,20px)scale(1.08)}}.admin-login-grid{z-index:-2;pointer-events:none;background-image:radial-gradient(#d470a238 1px,#0000 1.5px);background-size:26px 26px;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-mask-image:radial-gradient(circle,#000 0%,#0000 72%);mask-image:radial-gradient(circle,#000 0%,#0000 72%)}.admin-login-particles{z-index:-1;pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.admin-particle{left:var(--x);width:var(--s);height:var(--s);background:radial-gradient(circle at 30% 30%, #fff, var(--rose));opacity:0;animation:admin-particle var(--d) linear infinite;animation-delay:var(--delay);border-radius:50%;position:absolute;bottom:-30px}.admin-particle--ring{border:2px solid var(--rose);background:0 0}.admin-particle:nth-child(3n){background:radial-gradient(circle at 30% 30%, #fff, var(--peach))}.admin-particle--ring:nth-child(3n){border-color:var(--peach);background:0 0}@keyframes admin-particle{0%{opacity:0;transform:translate(0,0)scale(.6)}12%{opacity:.55}50%{transform:translate(22px,-50vh)scale(1)}88%{opacity:.4}to{opacity:0;transform:translate(-18px,-105vh)scale(1.15)}}.admin-login-stage{--mx:50%;--my:0%;--rx:0deg;--ry:0deg;width:100%;max-width:430px}.admin-login-card{-webkit-backdrop-filter:blur(14px)saturate(1.1);backdrop-filter:blur(14px)saturate(1.1);border:1px solid var(--border-soft);background:#ffffffe6;border-radius:28px;width:100%;padding:44px 36px 30px;position:relative;box-shadow:0 1px 2px #d470a20f,0 28px 70px #d470a22e}.admin-login-card>*{z-index:1;position:relative}.admin-login-card:before{content:"";background:linear-gradient(90deg, var(--rose), var(--peach), var(--rose), var(--rose-dark), var(--rose));background-size:100% 100%;border-radius:0 0 10px 10px;height:4px;position:absolute;top:0;left:34px;right:34px}.admin-reveal{animation:.65s cubic-bezier(.22,1,.36,1) both admin-rise;animation-delay:calc(var(--i,0) * 70ms + .16s)}@keyframes admin-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.admin-login-logo{width:104px;height:104px;margin:6px auto 36px;position:relative}.admin-login-logo:after{content:"";filter:blur(4px);background:radial-gradient(#d470a266,#0000 72%);border-radius:50%;height:14px;transition:transform .35s,opacity .35s;position:absolute;bottom:-20px;left:16%;right:16%}.admin-logo-disc{z-index:1;background:linear-gradient(145deg, var(--peach) 0%, var(--rose) 55%, var(--rose-dark) 100%);border-radius:50%;width:100%;height:100%;padding:4px;transition:transform .35s cubic-bezier(.22,1,.36,1),box-shadow .35s;position:relative;box-shadow:0 16px 30px -10px #d470a28c,0 2px 6px #d470a233}.admin-logo-disc img{object-fit:contain;background:#fff;border-radius:50%;width:100%;height:100%;display:block}.admin-login-stage:hover .admin-logo-disc{transform:translateY(-4px);box-shadow:0 22px 36px -10px #d470a299,0 2px 6px #d470a233}.admin-login-stage:hover .admin-login-logo:after{opacity:.8;transform:scale(.88)}.admin-login-heading{text-align:center;margin-bottom:30px}.admin-login-eyebrow{border:1px solid var(--border-soft);color:var(--rose-dark);letter-spacing:1.3px;text-transform:uppercase;background:#fff6ee;border-radius:999px;margin-bottom:14px;padding:5px 13px;font-size:11.5px;font-weight:700;display:inline-block}.admin-login-heading h1{letter-spacing:-.6px;color:var(--ink);background:linear-gradient(100deg, var(--ink) 30%, var(--rose-dark) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin:0;font-size:31px;font-weight:750;line-height:1.15}.admin-login-heading p{max-width:300px;color:var(--muted);margin:10px auto 0;font-size:14px;line-height:1.55}.admin-login-form{width:100%}.admin-form-group{text-align:left;width:100%;margin-bottom:18px}.admin-form-group label{color:var(--ink-2);letter-spacing:.1px;text-align:left;margin-bottom:8px;font-size:13.5px;font-weight:650;transition:color .18s;display:block}.admin-form-group:focus-within label{color:var(--rose-dark)}.admin-input-wrap{align-items:center;display:flex;position:relative}.admin-input-icon{color:var(--placeholder);pointer-events:none;transition:color .2s,transform .25s cubic-bezier(.34,1.56,.64,1);display:flex;position:absolute;left:15px}.admin-input-wrap:focus-within .admin-input-icon{color:var(--rose);transform:scale(1.15)}.admin-form-group .admin-input-wrap input{border:1px solid var(--border);width:100%;height:52px;color:var(--ink);text-align:left;background:#fff;border-radius:14px;outline:none;padding:0 46px 0 44px;font-size:15px;transition:border-color .18s,box-shadow .18s,background .18s,transform .18s;display:block}.admin-form-group .admin-input-wrap input::placeholder{color:var(--placeholder)}.admin-form-group .admin-input-wrap input:hover{border-color:var(--peach)}.admin-form-group .admin-input-wrap input:focus{border-color:var(--rose);transform:translateY(-1px);box-shadow:0 0 0 4px #d470a221,0 8px 20px #d470a21a}.admin-form-group .admin-input-wrap input[aria-invalid=true]{border-color:#e3a4a4}.admin-form-group .admin-input-wrap input:disabled{background:var(--cream);cursor:not-allowed}.admin-form-group .admin-input-wrap input:-webkit-autofill{-webkit-text-fill-color:var(--ink);box-shadow:inset 0 0 0 100px #fff6ee}.admin-password-toggle{width:36px;height:36px;color:var(--placeholder);cursor:pointer;background:0 0;border:none;border-radius:10px;justify-content:center;align-items:center;transition:background .15s,color .15s,transform .15s;display:flex;position:absolute;right:8px}.admin-password-toggle:hover{color:var(--rose);background:#fff6ee}.admin-password-toggle:active{transform:scale(.9)}.admin-password-toggle:focus-visible{outline:2px solid var(--rose);outline-offset:1px}.admin-password-toggle:disabled{opacity:.5;cursor:not-allowed}.admin-caps-hint{color:var(--rose-dark);margin:8px 0 0;font-size:12.5px;font-weight:600;animation:.3s both admin-rise}.admin-login-error{color:#a12b2b;background:#fff3f3;border:1px solid #f1cccc;border-radius:12px;align-items:flex-start;gap:10px;margin:2px 0 16px;padding:12px 14px;font-size:13px;line-height:1.45;animation:.45s admin-shake;display:flex}.admin-login-error svg{flex-shrink:0;margin-top:1px}@keyframes admin-shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(5px)}60%{transform:translate(-4px)}80%{transform:translate(3px)}}.admin-sign-in-button{background:linear-gradient(180deg, var(--rose), #c9649a);color:#fff;letter-spacing:.3px;cursor:pointer;border:none;border-radius:14px;justify-content:center;align-items:center;gap:10px;width:100%;height:54px;margin-top:8px;padding:0 18px;font-size:15px;font-weight:700;transition:background .18s,transform .15s,box-shadow .18s;display:flex;position:relative;overflow:hidden;box-shadow:0 10px 24px #d470a252,inset 0 1px #ffffff47}.admin-sign-in-button:after{content:"";pointer-events:none;background:linear-gradient(100deg,#0000,#ffffff73,#0000);width:40%;position:absolute;top:0;bottom:0;left:-60%;transform:skew(-20deg)}.admin-sign-in-button:hover:not(:disabled):after{animation:.9s admin-sweep}@keyframes admin-sweep{to{left:130%}}.admin-sign-in-button:hover:not(:disabled){background:linear-gradient(180deg, #bf6393, var(--rose-dark));transform:translateY(-2px);box-shadow:0 16px 32px #d470a261,inset 0 1px #fff3}.admin-sign-in-button:active:not(:disabled){transform:translateY(1px)}.admin-sign-in-button:focus-visible{outline-offset:3px;outline:3px solid #d470a259}.admin-sign-in-button:disabled{opacity:.78;cursor:not-allowed;box-shadow:none}.admin-button-arrow{transition:transform .25s cubic-bezier(.22,1,.36,1);display:flex}.admin-sign-in-button:hover:not(:disabled) .admin-button-arrow{transform:translate(5px)}.admin-spinner{border:2.5px solid #fff6;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.7s linear infinite admin-spin}@keyframes admin-spin{to{transform:rotate(360deg)}}.admin-login-footer{border-top:1px dashed var(--border);color:var(--placeholder);letter-spacing:.2px;justify-content:center;align-items:center;gap:7px;margin:24px 0 0;padding-top:18px;font-size:12.5px;display:flex}.admin-login-footer svg{color:var(--rose);opacity:.8}.admin-back-button{border:1px solid var(--border);color:#6b564f;cursor:pointer;background:#fff;border-radius:12px;justify-content:center;align-items:center;width:100%;height:46px;margin-top:12px;padding:0 16px;font-size:14px;font-weight:600;transition:background .15s,border-color .15s,color .15s;display:flex}.admin-back-button:hover{border-color:var(--peach);color:var(--rose);background:#fff6ee}.admin-back-button:disabled{opacity:.6;cursor:not-allowed}@media (max-width:600px){.admin-login-page{padding:16px}.admin-login-card{border-radius:24px;padding:36px 22px 24px}.admin-login-card:before{left:26px;right:26px}.admin-login-logo{width:92px;height:92px;margin:8px auto 28px}.admin-login-heading{margin-bottom:26px}.admin-login-heading h1{font-size:28px}}@media (max-width:380px){.admin-login-page{padding:12px}.admin-login-card{padding:32px 18px 20px}.admin-login-heading h1{font-size:26px}}@media (max-height:700px){.admin-login-page{align-items:flex-start}}@media (hover:none){.admin-login-stage{transform:none}.admin-login-card:after{display:none}}@media (prefers-reduced-motion:reduce){.admin-login-card,.admin-reveal,.admin-login-blob,.admin-particle,.admin-login-card:before,.admin-login-error,.admin-caps-hint{animation:none}.admin-login-stage{transform:none}.admin-particle{display:none}.admin-spinner{animation-duration:1.4s}.admin-sign-in-button,.admin-button-arrow,.admin-input-icon,.admin-form-group .admin-input-wrap input{transition:none}}.sc-card,.sc-overlay{--sc-grad:linear-gradient(135deg, #ffbf9b 0%, #ffc99e 100%);--sc-accent:#f2b18a;--sc-accent-deep:#b8683a;--sc-accent-soft:#fff4ec;--sc-glow:#ffb18a33;--sc-shadow:#ffb18047;--sc-ink:#171a19;--sc-text:#303734;--sc-label:#59615d;--sc-muted:#7a817d;--sc-line:#e4ded7;--sc-hover:#fffaf6;--sc-red:#9b3939;--sc-red-dark:#832f2f;--sc-red-soft:#fff4f4;--sc-red-line:#f0cccc}.sc-card{text-align:left;color:var(--sc-ink);border:1px solid var(--sc-line);background:#fff;border-radius:14px;margin-bottom:24px;font-family:inherit;animation:.45s cubic-bezier(.22,1,.36,1) backwards sc-rise;position:relative;overflow:hidden;box-shadow:0 1px 2px #3c28140a,0 12px 28px -18px #3c281424}.sc-card:before{content:"";background:#ece6de;height:3px;position:absolute;top:0;bottom:auto;left:0;right:0}.sc-card.is-open:before{background:var(--sc-grad)}.sc-card.is-open:after{content:"";pointer-events:none;background:radial-gradient(circle,#ffbf9b4d,#0000 68%);width:300px;height:300px;position:absolute;top:-90px;right:-70px}.sc-body{z-index:1;padding:26px 28px 24px;position:relative}.sc-card h3,.sc-modal h3{letter-spacing:-.01em;color:var(--sc-ink);margin:10px 0 4px;font-size:1.1rem;font-weight:700;line-height:1.3}.sc-card p,.sc-modal p{color:var(--sc-muted);margin:0;font-size:11.5px;line-height:1.55}.sc-status{letter-spacing:.08em;text-transform:uppercase;border-radius:999px;align-items:center;gap:7px;padding:5px 11px 5px 9px;font-size:9.5px;font-weight:800;display:inline-flex}.sc-status i{background:currentColor;border-radius:50%;width:7px;height:7px}.sc-status.open{color:var(--sc-accent-deep);background:#ffeadb}.sc-status.open i{animation:1.8s ease-out infinite sc-pulse}.sc-status.closed{color:#6f6a64;background:#f3efe9}.sc-header{align-items:flex-start;gap:14px;margin-bottom:22px;display:flex}.sc-icon{color:#fff;background:var(--sc-grad);width:46px;height:46px;box-shadow:0 8px 18px var(--sc-shadow);border:1px solid #ffb48c4d;border-radius:12px;flex:none;place-items:center;display:grid}.sc-open{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;display:flex}.sc-open-main h3{font-size:1.35rem}.sc-pills{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.sc-pill{color:#515956;background:var(--sc-hover);border:1px solid var(--sc-line);border-radius:8px;align-items:center;gap:7px;padding:7px 11px;font-size:10.5px;font-weight:600;display:inline-flex}.sc-pill svg{color:var(--sc-accent)}.sc-note{margin-top:12px!important}.sc-fields{grid-template-columns:1fr 1fr;gap:14px;margin-bottom:20px;display:grid}.sc-span{grid-column:1/-1}.sc-field{gap:6px;margin:0;display:grid}.sc-field>span,.sc-label{letter-spacing:.02em;color:var(--sc-label);font-size:10px;font-weight:700}.sc-field em{color:#aaa5a0;margin-left:6px;font-style:normal;font-weight:500}.sc-field input{box-sizing:border-box;width:100%;height:38px;font:inherit;color:var(--sc-text);border:1px solid var(--sc-line);background:#fff;border-radius:8px;outline:none;padding:0 11px;font-size:11px;transition:border-color .15s,box-shadow .15s}.sc-field input::placeholder{color:#aaa5a0}.sc-field input:hover{border-color:#d5cec5}.sc-field input:focus{border-color:var(--sc-accent);box-shadow:0 0 0 3px var(--sc-glow)}.sc-field input:focus-visible{border-color:var(--sc-accent);box-shadow:0 0 0 3px var(--sc-glow)}.sc-levels{gap:9px;margin-bottom:24px;display:grid}.sc-chips{flex-wrap:wrap;gap:8px;display:flex}.sc-chip{min-height:34px;font:inherit;color:#515956;border:1px solid var(--sc-line);cursor:pointer;background:#fff;border-radius:999px;align-items:center;gap:6px;padding:0 14px;font-size:11px;font-weight:600;line-height:1;transition:transform .15s,background .15s,border-color .15s,color .15s,box-shadow .15s;display:inline-flex}.sc-chip:hover{background:var(--sc-hover);border-color:#d5cec5;transform:translateY(-1px)}.sc-chip:focus-visible{box-shadow:0 0 0 3px var(--sc-glow);outline:none}.sc-chip.active{color:#fff;background:var(--sc-grad);box-shadow:0 5px 14px var(--sc-shadow);border-color:#ffb48c4d}.sc-actions{justify-content:flex-end;display:flex}.sc-start,.sc-end,.sc-cancel{min-height:38px;font:inherit;white-space:nowrap;cursor:pointer;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-size:11px;font-weight:700;line-height:1;transition:transform .15s,box-shadow .15s,background .15s,color .15s,border-color .15s;display:inline-flex}.sc-start{color:#fff;background:var(--sc-grad);border-color:#ffb48c4d;box-shadow:0 5px 14px #ffb18029}.sc-start:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 8px 20px #ffb18052}.sc-start:active:not(:disabled),.sc-end:active:not(:disabled),.sc-cancel:active:not(:disabled){transform:translateY(1px)}.sc-start svg{transition:transform .15s}.sc-start:hover:not(:disabled) svg{transform:translate(3px)}.sc-end{color:var(--sc-red);border-color:var(--sc-red-line);background:#fff}.sc-end:hover:not(:disabled){background:var(--sc-red-soft);border-color:#e5bbbb}.sc-end.solid{color:#fff;background:var(--sc-red);border-color:var(--sc-red)}.sc-end.solid:hover:not(:disabled){background:var(--sc-red-dark);border-color:var(--sc-red-dark)}.sc-cancel{color:#505a56;background:#fff;border-color:#e3ddd5}.sc-cancel:hover:not(:disabled){background:var(--sc-hover);color:#343c38;border-color:#d5cec5}.sc-start:disabled,.sc-end:disabled,.sc-cancel:disabled{opacity:.6;cursor:not-allowed}.sc-start:focus-visible{box-shadow:0 0 0 3px var(--sc-glow);outline:none}.sc-end:focus-visible{box-shadow:0 0 0 3px var(--sc-glow);outline:none}.sc-cancel:focus-visible{box-shadow:0 0 0 3px var(--sc-glow);outline:none}.sc-error{color:var(--sc-red);background:var(--sc-red-soft);border:1px solid var(--sc-red-line);border-radius:8px;margin-bottom:16px;padding:10px 12px;font-size:11px}.sc-overlay{color:var(--sc-ink);z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#281e1466;justify-content:center;align-items:center;padding:16px;font-family:inherit;animation:.2s both sc-fade;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.sc-modal{text-align:center;border:1px solid var(--sc-line);background:#fff;border-radius:14px;width:100%;max-width:420px;padding:26px;animation:.3s cubic-bezier(.22,1,.36,1) both sc-pop;box-shadow:0 30px 60px -22px #281e1466}.sc-modal-icon{border-radius:14px;place-items:center;width:50px;height:50px;margin:0 auto 2px;display:grid}.sc-modal-icon.start{color:var(--sc-accent-deep);background:#ffeadb}.sc-modal-icon.end{color:var(--sc-red);background:var(--sc-red-soft)}.sc-modal h3{margin-top:14px}.sc-modal-actions{justify-content:center;gap:10px;margin-top:22px;display:flex}@keyframes sc-rise{0%{opacity:0;transform:translateY(10px)}}@keyframes sc-fade{0%{opacity:0}}@keyframes sc-pop{0%{opacity:0;transform:translateY(12px)scale(.96)}}@keyframes sc-pulse{0%{box-shadow:0 0 #f2b18ab3}to{box-shadow:0 0 0 8px #f2b18a00}}@media (prefers-reduced-motion:reduce){.sc-card,.sc-overlay,.sc-modal,.sc-status.open i{animation:none}}@media (max-width:640px){.sc-body{padding:20px 16px}.sc-fields{grid-template-columns:1fr}.sc-header{flex-direction:column;gap:12px}.sc-actions .sc-start,.sc-open .sc-end{width:100%}.sc-modal-actions{flex-direction:column-reverse}.sc-modal-actions button{width:100%}}.admin-page{color:#171a19;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background:#f7f6f3;min-height:100vh;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;display:flex}.admin-page button,.admin-page input{font:inherit}.admin-page button{-webkit-tap-highlight-color:transparent}.admin-page button:focus-visible{outline-offset:2px;outline:2px solid #ffad7a}.admin-page input:focus-visible{outline-offset:2px;outline:2px solid #ffad7a}.admin-sidebar{background:#fff;border-right:1px solid #ebe7e1;flex-direction:column;width:270px;min-width:270px;height:100vh;min-height:100vh;padding:24px 14px 16px;display:flex;position:-webkit-sticky;position:sticky;top:0;overflow-y:auto}.sidebar-brand{border-bottom:1px solid #eee9e3;align-items:center;gap:12px;padding:0 8px 24px;display:flex}.brand-logo{color:#fff;background:linear-gradient(135deg,#ff9bc2 0%,#ffb07f 100%);border-radius:11px;justify-content:center;align-items:center;width:40px;min-width:40px;height:40px;font-size:20px;font-weight:800;display:flex;box-shadow:0 8px 20px #ff9bc23d}.sidebar-brand strong{color:#1b211f;letter-spacing:-.01em;text-align:left;font-size:13px;font-weight:800;display:block}.sidebar-brand span{color:#9a9692;letter-spacing:.01em;text-align:left;margin-top:4px;font-size:10px;display:block}.sidebar-section-title{color:#aaa39c;letter-spacing:.14em;text-align:left;margin:24px 8px 10px;font-size:9px;font-weight:800}.sidebar-nav{flex-direction:column;gap:4px;display:flex}.sidebar-link{color:#4f5955;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:9px;align-items:center;gap:12px;width:100%;padding:11px 13px;font-size:11px;font-weight:500;transition:background .15s,color .15s,border-color .15s,transform .15s;display:flex;position:relative}.sidebar-link:hover{color:#252b28;background:#faf6f2}.sidebar-link:active{transform:translateY(1px)}.sidebar-link.active{color:#fff;background:linear-gradient(135deg,#ffbf9b 0%,#ffc99e 100%);border-color:#ffb48c4d;font-weight:700;box-shadow:0 5px 14px #ffb18029}.sidebar-icon{color:currentColor;justify-content:center;align-items:center;width:16px;font-size:11px;font-weight:700;display:inline-flex}.sidebar-user{border-top:1px solid #eee9e3;margin-top:auto;padding:18px 0 0}.sidebar-user-info{align-items:center;gap:10px;padding:0 8px 14px;display:flex}.admin-avatar{color:#fff;background:linear-gradient(135deg,#ffd0a8,#ffb28d);border-radius:50%;justify-content:center;align-items:center;width:34px;min-width:34px;height:34px;font-size:11px;font-weight:800;display:flex;box-shadow:0 4px 10px #ffae7e26}.sidebar-user-info strong{color:#303734;white-space:nowrap;text-overflow:ellipsis;text-align:left;max-width:150px;font-size:11px;font-weight:700;display:block;overflow:hidden}.sidebar-user-info span{color:#99948f;white-space:nowrap;text-overflow:ellipsis;text-align:left;max-width:150px;margin-top:4px;font-size:9px;display:block;overflow:hidden}.sidebar-signout{color:#4d5652;cursor:pointer;background:#fff;border:1px solid #e4ddd5;border-radius:8px;width:100%;padding:10px 11px;font-size:10px;font-weight:600;transition:background .15s,border-color .15s,color .15s}.sidebar-signout:hover{color:#252b28;background:#faf8f5;border-color:#d9d0c7}.admin-main{flex:1;min-width:0;min-height:100vh;overflow:hidden}.admin-content{width:100%;max-width:1320px;margin:0 auto;padding:30px 32px 42px}.dashboard-header{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:24px;display:flex}.breadcrumb{color:#aaa39c;align-items:center;gap:8px;margin-bottom:8px;font-size:10px;font-weight:500;display:flex}.breadcrumb span{color:#c5beb7}.dashboard-header h1{color:#111315;letter-spacing:-.035em;text-align:left;margin:0;font-size:max(25px,min(2.2vw,31px));font-weight:800;line-height:1.15}.wave{transform-origin:70% 70%;margin-left:3px;font-size:27px;display:inline-block}.dashboard-header p{color:#777d7a;text-align:left;margin:8px 0 0;font-size:12px;line-height:1.5}.today-box{text-align:right;background:#fff;border:1px solid #e6e0d8;border-radius:10px;min-width:155px;padding:13px 16px;box-shadow:0 5px 16px #2d282206}.today-box span{color:#aaa39c;letter-spacing:.11em;margin-bottom:6px;font-size:8px;font-weight:800;display:block}.today-box strong{color:#303633;font-size:11px;font-weight:700}.dashboard-error{color:#9b3939;background:#fff4f4;border:1px solid #f0cccc;border-radius:10px;align-items:center;gap:12px;margin-bottom:18px;padding:12px 15px;font-size:11px;display:flex}.dashboard-error strong{white-space:nowrap}.dashboard-error span{flex:1;min-width:0}.dashboard-error button{color:#9b3939;cursor:pointer;background:#fff;border:1px solid #e5bbbb;border-radius:7px;padding:7px 11px;font-size:10px;font-weight:600}.dashboard-error button:hover{background:snow}.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:24px;display:grid}.stat-card{background:#fff;border:1px solid #e8e2db;border-radius:13px;align-items:flex-start;gap:14px;min-width:0;min-height:125px;padding:17px 16px;transition:transform .18s,box-shadow .18s,border-color .18s;display:flex;box-shadow:0 7px 20px #2d28220a}.stat-card:hover{border-color:#e2dbd3;transform:translateY(-2px);box-shadow:0 12px 26px #2d282211}.stat-icon{border-radius:10px;justify-content:center;align-items:center;width:37px;min-width:37px;height:37px;font-size:15px;font-weight:800;display:flex}.stat-icon.green{color:#27966b;background:#e4f5ed}.stat-icon.orange{color:#ed9259;background:#fff0e4}.stat-icon.purple{color:#8b72d9;background:#eee8ff}.stat-icon.yellow{color:#d18d19;background:#fff2d8}.stat-content{min-width:0;padding-top:1px}.stat-label{color:#6d7471;letter-spacing:.06em;font-size:9px;font-weight:700;line-height:1.4;display:block}.stat-content strong{color:#161918;letter-spacing:-.02em;margin-top:7px;font-size:23px;font-weight:800;line-height:1;display:block}.stat-content small{color:#999e9b;margin-top:7px;font-size:9px;line-height:1.4;display:block}.attendance-card{background:#fff;border:1px solid #e7e1da;border-radius:15px;width:100%;min-width:0;overflow:hidden;box-shadow:0 8px 25px #2d28220b}.attendance-card-header{border-bottom:1px solid #eee9e3;justify-content:space-between;align-items:center;gap:20px;padding:20px;display:flex}.attendance-card .attendance-card-header h2{color:#252a28;letter-spacing:-.015em;text-align:left;margin:0;font-size:16px;font-weight:800}.attendance-card-header p{color:#999e9b;margin:6px 0 0;font-size:10px}.export-button{color:#fff;cursor:pointer;background:#171d21;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;gap:6px;min-height:36px;padding:9px 14px;font-size:10px;font-weight:700;transition:background .15s,transform .15s,box-shadow .15s;display:inline-flex}.export-button:hover{background:#252d32;box-shadow:0 5px 14px #171d211f}.export-button:active{transform:translateY(1px)}.export-button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.attendance-filters{background:#fbfaf8;border-bottom:1px solid #eee9e3;align-items:center;gap:10px;width:100%;min-width:0;padding:14px 20px;display:flex;overflow:hidden}.search-box,.date-box{background:#fff;border:1px solid #e4ded7;border-radius:8px;flex-shrink:0;align-items:center;gap:8px;min-width:0;height:36px;padding:0 10px;transition:border-color .15s,box-shadow .15s;display:flex;overflow:hidden}.search-box:focus-within,.date-box:focus-within{border-color:#f2b18a;box-shadow:0 0 0 3px #ffb18a1f}.search-box{width:300px;max-width:100%}.search-box span{color:#999e9b;flex:none;justify-content:center;align-items:center;width:14px;font-size:10px;line-height:1;display:flex}.search-box input{color:#515956;-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:auto;width:1px;min-width:0;max-width:100%;height:100%;margin:0;font-size:10px;line-height:1;display:block;box-shadow:none!important;background:0 0!important;border:0!important;border-radius:0!important;outline:0!important;padding:0!important}.search-box input::placeholder{color:#aaa5a0;opacity:1}.date-box{width:150px;max-width:100%}.date-box span{color:#999e9b;flex:none;justify-content:center;align-items:center;width:14px;font-size:10px;line-height:1;display:flex}.date-box input{color:#515956;-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:auto;width:1px;min-width:0;max-width:100%;height:100%;margin:0;font-size:10px;line-height:1;display:block;box-shadow:none!important;background:0 0!important;border:0!important;border-radius:0!important;outline:0!important;padding:0!important}.date-box input::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.65;width:14px;height:14px;margin:0 0 0 4px;padding:0}.date-box input::-moz-focus-inner{border:0}.refresh-button{color:#66706c;cursor:pointer;background:#fff;border:1px solid #e4ded7;border-radius:8px;flex:0 0 36px;justify-content:center;align-items:center;width:36px;min-width:36px;height:36px;margin-left:auto;padding:0;font-size:15px;transition:background .15s,border-color .15s,transform .15s;display:flex}.refresh-button:hover{background:#faf7f3;border-color:#d8d0c7}.refresh-button:active{transform:rotate(20deg)}.refresh-button:disabled{opacity:.5;cursor:not-allowed;transform:none}.attendance-table-wrapper{-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:#d9d3cc transparent;width:100%;max-width:100%;overflow-x:auto;overflow-y:visible}.attendance-table-wrapper::-webkit-scrollbar{width:7px;height:7px}.attendance-table-wrapper::-webkit-scrollbar-track{background:0 0}.attendance-table-wrapper::-webkit-scrollbar-thumb{background:#d9d3cc;border-radius:999px}.attendance-table{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%;min-width:1050px}.attendance-table .col-student{width:220px}.attendance-table .col-id{width:125px}.attendance-table .col-section{width:135px}.attendance-table .col-time{width:115px}.attendance-table .col-session{width:125px}.attendance-table .col-time-in,.attendance-table .col-time-out{width:105px}.attendance-table .col-selfies{width:170px}.attendance-table .col-status{width:110px}.attendance-table thead{background:#fbfaf8}.attendance-table th,.attendance-table td{vertical-align:middle;white-space:nowrap;padding:13px 12px}.attendance-table th{z-index:2;color:#656d69;letter-spacing:.08em;text-align:left;background:#fbfaf8;border-bottom:1px solid #eee9e3;height:46px;font-size:9px;font-weight:800;position:-webkit-sticky;position:sticky;top:0;overflow:visible}.attendance-table td{color:#303734;text-align:left;border-bottom:1px solid #eee9e3;height:74px;font-size:11px;overflow:visible}.attendance-table tbody tr{transition:background .12s}.attendance-table tbody tr:last-child td{border-bottom:none}.attendance-table tbody tr:hover{background:#fdfcfb}.student-column{min-width:0}.student-cell{align-items:center;gap:10px;min-width:0;display:flex}.student-avatar{color:#e28d69;background:linear-gradient(135deg,#fff0e3,#ffd0a8);border-radius:9px;justify-content:center;align-items:center;width:35px;min-width:35px;height:35px;font-size:10px;font-weight:800;display:flex}.student-details{flex:1;min-width:0}.student-name{text-overflow:clip;white-space:normal;overflow-wrap:anywhere;word-break:break-word;color:#222725;max-width:none;font-size:11px;font-weight:700;line-height:1.25;display:block;overflow:visible}.student-year{color:#969c99;white-space:nowrap;margin-top:3px;font-size:9px;display:block}.student-id{color:#606965;white-space:nowrap;font-variant-numeric:tabular-nums;font-size:10px;font-weight:500;display:inline-block}.section-badge{color:#59615d;white-space:normal;overflow-wrap:anywhere;background:#f8f6f3;border:1px solid #e6e0d8;border-radius:999px;justify-content:center;align-items:center;max-width:100%;padding:6px 9px;font-size:9px;font-weight:600;line-height:1.2;display:inline-flex}.session-badge{color:#4338ca;white-space:nowrap;background:#eef2ff;border-radius:999px;align-items:center;padding:.2rem .6rem;font-size:.75rem;font-weight:600;display:inline-flex}.attendance-time{color:#202624;white-space:nowrap;font-variant-numeric:tabular-nums;font-size:11px;font-weight:700;line-height:1.2;display:inline-block}.selfie-actions{flex-wrap:nowrap;justify-content:flex-start;align-items:center;gap:6px;display:flex}.selfie-button{color:#505a56;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #e3ddd5;border-radius:7px;flex:none;justify-content:center;align-items:center;min-width:64px;padding:7px 9px;font-size:9px;font-weight:600;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.selfie-button:hover{color:#343c38;background:#fffaf6;border-color:#d5cec5}.selfie-button:active{transform:translateY(1px)}.selfie-button.disabled,.selfie-button:disabled{opacity:.42;cursor:not-allowed}.selfie-button.disabled:hover,.selfie-button:disabled:hover{color:#505a56;background:#fff;border-color:#e3ddd5}.status-badge{white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;min-width:67px;padding:7px 10px;font-size:9px;font-weight:700;display:inline-flex}.status-badge.complete{color:#21855d;background:#e7f7ef}.status-badge.timed-in{color:#c77735;background:#fff1e5}.status-badge.absent{color:#777d79;background:#f0f0ef}.table-empty{text-align:center!important;height:230px!important;padding:30px!important}.table-empty strong{color:#4d5551;margin-top:9px;font-size:12px;font-weight:700;display:block}.table-empty span{color:#999f9b;margin-top:5px;font-size:10px;line-height:1.5;display:block}.empty-icon{color:#27956b;background:#e8f6ef;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;margin:0 auto;font-size:17px;font-weight:700;display:flex}.loading-spinner{border:3px solid #ece8e3;border-top-color:#ffad7a;border-radius:50%;width:30px;height:30px;margin:0 auto;animation:.8s linear infinite dashboard-spin}@keyframes dashboard-spin{to{transform:rotate(360deg)}}.attendance-table-footer{color:#999f9b;border-top:1px solid #eee9e3;justify-content:space-between;align-items:center;gap:20px;min-height:48px;padding:13px 20px;font-size:10px;display:flex}.attendance-table-footer strong{color:#343b38;font-weight:700}.photo-modal-overlay{z-index:9999;-webkit-backdrop-filter:blur(5px);background:#121614b8;justify-content:center;align-items:center;padding:24px;animation:.18s photo-overlay-in;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}@keyframes photo-overlay-in{0%{opacity:0}to{opacity:1}}.photo-modal{background:#fff;border:1px solid #fff3;border-radius:16px;width:min(560px,100%);max-height:90vh;animation:.2s photo-modal-in;overflow:hidden;box-shadow:0 25px 80px #0000004d}@keyframes photo-modal-in{0%{opacity:0;transform:translateY(8px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}.photo-modal-header{border-bottom:1px solid #eee9e3;justify-content:space-between;align-items:center;gap:20px;padding:16px 18px;display:flex}.photo-modal-header span{color:#aaa39c;letter-spacing:.1em;font-size:8px;font-weight:800;display:block}.photo-modal-header h3{color:#252a28;margin:5px 0 0;font-size:13px;font-weight:700}.photo-close{color:#505754;cursor:pointer;background:#f5f2ef;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:20px;line-height:1;transition:background .15s,transform .15s;display:flex}.photo-close:hover{background:#ece8e4;transform:rotate(4deg)}.photo-modal-body{text-align:center;background:linear-gradient(135deg,#f7f6f3,#f3f1ee);max-height:calc(90vh - 75px);padding:18px;overflow:auto}.photo-modal-body img{object-fit:contain;border-radius:10px;width:100%;height:auto;max-height:calc(90vh - 115px);margin:0 auto;display:block;box-shadow:0 8px 25px #1e191414}.admin-footer{color:#aaa39c;text-align:center;padding:24px 0 0;font-size:9px}@media (min-width:1400px){.admin-content{max-width:1380px;padding-left:38px;padding-right:38px}.stats-grid{gap:16px}.stat-card{min-height:130px}}@media (max-width:1100px){.admin-sidebar{width:230px;min-width:230px}.admin-content{padding:24px 20px 35px}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.search-box{width:250px}.date-box{width:145px}}@media (max-width:800px){.admin-sidebar{width:210px;min-width:210px;padding-left:11px;padding-right:11px}.admin-content{padding:22px 16px 32px}.dashboard-header{gap:18px}.dashboard-header h1{font-size:26px}.today-box{min-width:135px}.attendance-card-header{padding:17px}.attendance-filters{padding:12px 17px}.search-box{width:230px}.date-box{width:140px}}@media (max-width:700px){.admin-page{display:block}.admin-sidebar{border-bottom:1px solid #ebe7e1;border-right:none;width:100%;min-width:0;height:auto;min-height:auto;padding:14px;position:relative;top:auto;overflow:visible}.sidebar-brand{padding-bottom:14px}.sidebar-section-title,.sidebar-nav{display:none}.sidebar-user{border-top:1px solid #eee9e3;margin-top:12px;padding-top:12px}.sidebar-user-info{padding-bottom:10px}.sidebar-signout{min-height:38px}.admin-main{width:100%}.admin-content{padding:20px 12px 30px}.dashboard-header{flex-direction:column;gap:14px;margin-bottom:18px}.dashboard-header h1{font-size:25px}.dashboard-header p{font-size:11px}.wave{font-size:23px}.today-box{text-align:left;width:100%}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-bottom:18px}.stat-card{border-radius:11px;gap:9px;min-height:108px;padding:13px 11px}.stat-card:hover{transform:none}.stat-icon{border-radius:9px;width:32px;min-width:32px;height:32px;font-size:13px}.stat-label{font-size:8px}.stat-content strong{font-size:20px}.stat-content small{font-size:8px}.attendance-card{border-radius:12px}.attendance-card-header{flex-direction:column;align-items:flex-start;padding:16px}.attendance-card-header h2{font-size:15px}.attendance-card-header p{font-size:9px}.export-button{width:100%}.attendance-card-actions{flex-direction:column;width:100%}.reset-button{justify-content:center;width:100%}.attendance-filters{grid-template-columns:minmax(0,1fr) 110px 36px;gap:8px;width:100%;padding:10px;display:grid;overflow:hidden}.search-box,.date-box{width:100%;min-width:0;max-width:none}.refresh-button{width:36px;min-width:36px;margin-left:0}.search-box input,.date-box input{min-width:0;font-size:10px}.date-box input::-webkit-calendar-picker-indicator{width:12px;height:12px;margin-left:2px}.attendance-table-wrapper{overflow-x:auto}.attendance-table{min-width:1050px}.attendance-table th{height:44px;padding-left:12px;padding-right:12px}.attendance-table td{height:70px;padding-left:12px;padding-right:12px}.attendance-table-footer{flex-direction:column;align-items:flex-start;gap:6px;padding:12px 14px}.photo-modal-overlay{padding:12px}.photo-modal{border-radius:13px;max-height:94vh}.photo-modal-body{max-height:calc(94vh - 75px);padding:12px}.photo-modal-body img{max-height:calc(94vh - 105px)}.reset-modal{padding:1.4rem}}@media (max-width:420px){.admin-content{padding-left:10px;padding-right:10px}.stats-grid{grid-template-columns:1fr;gap:8px}.stat-card{min-height:92px}.dashboard-header h1{font-size:23px}.wave{font-size:22px}.attendance-card-header{padding:14px}.attendance-filters{grid-template-columns:minmax(0,1fr) 100px 36px;gap:7px;padding:9px}.search-box,.date-box{gap:6px;height:35px;padding-left:8px;padding-right:8px}.search-box input,.date-box input{font-size:9px}.date-box input::-webkit-calendar-picker-indicator{width:11px;height:11px}.refresh-button{width:35px;min-width:35px}.attendance-table-footer{font-size:9px}}@media (max-width:340px){.attendance-filters{grid-template-columns:minmax(0,1fr) 92px 34px;gap:5px}.search-box,.date-box{gap:5px;padding-left:7px;padding-right:7px}.search-box span,.date-box span{width:12px;font-size:9px}.search-box input,.date-box input{font-size:8px}.refresh-button{width:34px;min-width:34px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.attendance-card-actions{gap:.5rem;display:flex}.reset-button{color:#b45309;cursor:pointer;background:#fffbeb;border:1px solid #f59e0b;border-radius:8px;align-items:center;gap:.4rem;padding:.55rem 1rem;font-size:.875rem;font-weight:600;transition:background .15s;display:inline-flex}.reset-button:hover{background:#fef3c7}.session-tabs{flex-wrap:wrap;gap:.5rem;margin-top:.75rem;padding:0 1.5rem;display:flex}.session-tab{color:#4b5563;cursor:pointer;background:#f9fafb;border:1px solid #e5e7eb;border-radius:999px;padding:.4rem .85rem;font-size:.8rem;font-weight:600;transition:all .15s}.session-tab:hover{background:#f3f4f6}.session-tab.active{color:#fff;background:#111827;border-color:#111827}.session-tab-live{color:#22c55e;font-weight:700}.session-tab.active .session-tab-live{color:#4ade80}.session-badge{color:#4338ca;white-space:nowrap;background:#eef2ff;border-radius:999px;padding:.2rem .6rem;font-size:.75rem;font-weight:600;display:inline-block}.dashboard-toast{color:#065f46;background:#ecfdf5;border:1px solid #34d399;border-radius:10px;align-items:center;gap:.6rem;margin-bottom:1rem;padding:.85rem 1rem;font-size:.9rem;display:flex}.dashboard-toast span:first-child{font-weight:700}.dashboard-toast button{cursor:pointer;color:#065f46;background:0 0;border:none;margin-left:auto;font-size:1.1rem;line-height:1}.reset-modal-overlay{z-index:60;background:#1118278c;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.reset-modal{text-align:center;background:#fff;border-radius:14px;width:100%;max-width:420px;padding:1.75rem;box-shadow:0 20px 40px #0003}.reset-modal-icon{color:#b45309;background:#fffbeb;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;margin:0 auto .75rem;font-size:1.4rem;display:flex}.reset-modal h3{margin-bottom:.6rem;font-size:1.05rem}.reset-modal p{color:#4b5563;margin-bottom:1.25rem;font-size:.875rem;line-height:1.5}.reset-modal-actions{justify-content:center;gap:.6rem;display:flex}.reset-modal-cancel,.reset-modal-confirm{cursor:pointer;border:1px solid #0000;border-radius:8px;padding:.6rem 1.1rem;font-size:.875rem;font-weight:600}.reset-modal-cancel{color:#374151;background:#f3f4f6}.reset-modal-confirm{color:#fff;background:#b45309}.reset-modal-confirm:disabled,.reset-modal-cancel:disabled{opacity:.6;cursor:not-allowed}.dashboard-header .primary-button{color:#fff;white-space:nowrap;cursor:pointer;background:linear-gradient(135deg,#ffbf9b 0%,#ffc99e 100%);border:1px solid #ffb48c4d;border-radius:8px;flex:none;justify-content:center;align-self:flex-start;align-items:center;gap:6px;width:auto;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content;min-height:36px;padding:9px 15px;font-size:10px;font-weight:700;transition:transform .15s,box-shadow .15s;display:inline-flex;box-shadow:0 5px 14px #ffb18029}.primary-button:hover{box-shadow:0 8px 20px #ffb1803d}.filter-select{color:#515956;cursor:pointer;background:#fff;border:1px solid #e4ded7;border-radius:8px;min-width:150px;height:36px;padding:0 10px;font-size:10px;font-weight:500;transition:border-color .15s,box-shadow .15s}.filter-select:focus-visible{border-color:#f2b18a;outline:none;box-shadow:0 0 0 3px #ffb18a1f}.col-actions{width:150px}.row-actions{white-space:nowrap;align-items:center;gap:6px;display:flex}.row-action-button{color:#505a56;cursor:pointer;background:#fff;border:1px solid #e3ddd5;border-radius:7px;justify-content:center;align-items:center;min-width:48px;padding:7px 9px;font-size:9px;font-weight:600;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.row-action-button:hover{color:#343c38;background:#fffaf6;border-color:#d5cec5}.row-action-button:active{transform:translateY(1px)}.row-action-button.danger{color:#9b3939;border-color:#f0cccc}.row-action-button.danger:hover{background:#fff4f4;border-color:#e5bbbb}.form-modal{text-align:left;max-width:420px}.form-modal h3{color:#171a19;margin:0 0 1.1rem;font-size:1.05rem}.form-field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.form-field label{color:#59615d;letter-spacing:.02em;font-size:10px;font-weight:700}.form-field input{color:#303734;background:#fff;border:1px solid #e4ded7;border-radius:8px;height:36px;padding:0 11px;font-size:11px;transition:border-color .15s,box-shadow .15s}.form-field input:focus-visible{border-color:#f2b18a;outline:none;box-shadow:0 0 0 3px #ffb18a1f}.form-field input::placeholder{color:#aaa5a0}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.form-error{color:#9b3939;background:#fff4f4;border:1px solid #f0cccc;border-radius:8px;margin-bottom:12px;padding:10px 12px;font-size:11px}.reset-modal-icon.danger{color:#9b3939;background:#fff4f4}.reset-modal-confirm.danger{background:#9b3939}.reset-modal-confirm.danger:hover{background:#832f2f}@media (max-width:520px){.form-row{grid-template-columns:1fr}}a.sidebar-link{cursor:pointer;text-decoration:none}.report-controls{background:#fff;border:1px solid #e8e2db;border-radius:13px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:24px;padding:16px 20px;display:flex;box-shadow:0 7px 20px #2d28220a}.report-presets{flex-wrap:wrap;gap:8px;display:flex}.preset-chip{color:#4b5563;cursor:pointer;background:#f9fafb;border:1px solid #e5e7eb;border-radius:999px;padding:.4rem .85rem;font-size:.8rem;font-weight:600;transition:all .15s}.preset-chip:hover{background:#f3f4f6}.report-date-range{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.date-range-sep{color:#9a9692;font-size:10px}.section-breakdown{flex-direction:column;gap:16px;padding:20px 24px;display:flex}.section-bar-row{grid-template-columns:150px 1fr 44px;align-items:center;gap:14px;display:grid}.section-bar-label{flex-direction:column;gap:4px;display:flex}.section-bar-label small{color:#999e9b;font-size:9px}.section-bar-track{background:#f0f0ef;border-radius:999px;height:8px;overflow:hidden}.section-bar-fill{background:linear-gradient(90deg,#27966b,#6fcaa0);border-radius:999px;height:100%;transition:width .3s}.section-bar-value{color:#303734;text-align:right;font-size:11px;font-weight:700}@media (max-width:640px){.section-bar-row{grid-template-columns:1fr;gap:6px}.section-bar-value{text-align:left}}@keyframes hs-pulse{0%,to{opacity:1}50%{opacity:.3}}.history-table-wrapper{border-top:1px solid #ece6df}.history-badge{color:#6b716e;letter-spacing:.03em;text-transform:capitalize;background:#f3efea;border-radius:999px;padding:2px 9px;font-size:9px;font-weight:700;display:inline-block}.history-badge.status-open{color:#2f6b4a;background:#e8f5ee}.history-badge.status-expired{color:#9a5b1f;background:#fff1e0}.history-badge.status-closed{color:#6b716e;background:#f3efea}.history-empty.small{border:none;border-top:1px solid #ece6df;border-radius:0;padding:18px}@media (max-width:900px){.hs-top{flex-wrap:wrap}.hs-main{flex-basis:calc(100% - 62px)}.hs-side{border-top:1px solid #f1ece6;justify-content:space-between;width:100%;padding-top:12px}.hs-count{flex-direction:row;align-items:baseline;gap:6px}.hs-breakdown{flex-wrap:wrap;padding-left:20px}}@media (max-width:700px){.history-sessions{padding:4px 12px 14px}}@media (prefers-reduced-motion:reduce){.hs,.hs-panel,.hs-chevron svg,.hs-open .hs-status i{transition:none;animation:none}}.history-sessions{flex-direction:column;gap:12px;padding:6px 18px 18px;display:flex}.hs{--rail:#d9d2c9;background:#fff;border:1px solid #e4ded7;border-radius:12px;transition:border-color .18s,box-shadow .18s;position:relative;overflow:hidden}.hs:before{content:"";background:var(--rail);width:4px;position:absolute;top:0;bottom:0;left:0;right:auto}.hs-open{--rail:#3f9b6d}.hs-expired{--rail:#e0a35a}.hs-closed{--rail:#d9d2c9}.hs:hover{border-color:#d8cfc4;box-shadow:0 8px 22px #ffb18021}.hs.is-open{border-color:#efc7aa;box-shadow:0 8px 22px #ffb18029}.hs-top{align-items:center;gap:14px;padding:15px 16px 15px 20px;display:flex}.hs-date{background:linear-gradient(#fff8f2 0%,#fff0e4 100%);border:1px solid #ffb48c66;border-radius:11px;flex-direction:column;flex:none;justify-content:center;align-items:center;width:48px;height:52px;display:flex}.hs-date span{color:#b86a3a;font-size:10px;font-weight:700;line-height:1}.hs-date strong{color:#171a19;margin-top:3px;font-size:19px;font-weight:800;line-height:1}.hs-main{min-width:0;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:auto;align-items:flex-start;gap:8px;padding:0;display:flex}.hs-main:focus-visible{outline-offset:4px;border-radius:8px;outline:2px solid #f2b18ab3}.hs-title-row{flex-wrap:wrap;align-items:center;gap:8px 10px;display:flex}.hs-title{color:#171a19;letter-spacing:-.01em;font-size:14px;font-weight:700}.hs-status{color:#6b716e;background:#f3efea;border-radius:999px;align-items:center;gap:6px;padding:2px 9px 2px 8px;font-size:10px;font-weight:600;display:inline-flex}.hs-status i{background:currentColor;border-radius:50%;width:6px;height:6px}.hs-open .hs-status{color:#2f6b4a;background:#e8f5ee}.hs-open .hs-status i{animation:1.8s ease-in-out infinite hs-pulse}.hs-expired .hs-status{color:#9a5b1f;background:#fff1e0}.hs-meta{flex-wrap:wrap;gap:6px;display:flex}.hs-pill{color:#59615d;white-space:nowrap;background:#faf7f3;border:1px solid #eee8e1;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:10px;font-weight:500;display:inline-flex}.hs-pill svg{color:#c08863;flex:none;width:12px;height:12px}.hs-side{flex:none;align-items:center;gap:16px;display:flex}.hs-count{flex-direction:column;align-items:flex-end;min-width:52px;display:flex}.hs-count strong{color:#171a19;letter-spacing:-.02em;font-size:24px;font-weight:800;line-height:1}.hs-count span{color:#7a817d;margin-top:3px;font-size:10px}.hs-actions{gap:6px;display:flex}.hs-icon-btn{color:#7a817d;cursor:pointer;background:#fff;border:1px solid #e4ded7;border-radius:9px;justify-content:center;align-items:center;width:32px;height:32px;padding:0;transition:background .15s,border-color .15s,color .15s,transform .15s;display:inline-flex}.hs-icon-btn:hover:not(:disabled){color:#343c38;background:#fffaf6;border-color:#d5cec5}.hs-icon-btn:active:not(:disabled){transform:translateY(1px)}.hs-icon-btn:focus-visible{border-color:#f2b18a;outline:none;box-shadow:0 0 0 3px #ffb18a29}.hs-icon-btn.danger:hover:not(:disabled){color:#9b3939;background:#fff4f4;border-color:#e9bcbc}.hs-icon-btn:disabled{opacity:.4;cursor:not-allowed}.hs-chevron svg{transition:transform .25s}.hs.is-open .hs-chevron svg{transform:rotate(180deg)}.hs-breakdown{align-items:center;gap:18px;padding:0 18px 15px 82px;display:flex}.hs-avatars{flex:none;display:flex}.hs-avatar{color:#8a4f2a;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;margin-left:-8px;font-size:8px;font-weight:800;display:inline-flex}.hs-avatar:first-child{margin-left:0}.hs-avatar.tone-0{background:#ffd9bf}.hs-avatar.tone-1{background:#ffc99e}.hs-avatar.tone-2{background:#f6b88f}.hs-avatar.more{color:#6b716e;background:#f3efea}.hs-years{flex-direction:column;flex:auto;gap:7px;min-width:0;display:flex}.hs-bar{gap:3px;height:7px;display:flex}.hs-bar span{border-radius:999px;flex-basis:0;min-width:10px}.hs-legend{color:#59615d;flex-wrap:wrap;gap:4px 14px;font-size:10px;display:flex}.hs-legend span{align-items:center;gap:6px;display:inline-flex}.hs-legend i{border-radius:3px;width:8px;height:8px}.hs-legend b{color:#171a19}.hs .hs-tabs{background:#fdfbf8;border-top:1px solid #ece6df;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 16px 12px 20px;display:flex}.hs .hs-tab{color:#59615d;font:inherit;cursor:pointer;background:#fff;border:1px solid #e4ded7;border-radius:999px;align-items:center;gap:8px;padding:6px 8px 6px 13px;font-size:11px;font-weight:600;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.hs .hs-tab:hover{background:#fffaf6;border-color:#d5cec5}.hs .hs-tab:focus-visible{border-color:#f2b18a;outline:none;box-shadow:0 0 0 3px #ffb18a29}.hs .hs-tab-count{color:#515956;text-align:center;background:#eef0ef;border-radius:999px;min-width:22px;padding:1px 7px;font-size:10px;font-weight:700}.hs .hs-tab.active{color:#171a19}.hs .hs-tab-present.active{background:#e8f5ee;border-color:#b9dfc8}.hs .hs-tab-timedin.active{background:#fff4e0;border-color:#f0d3a2}.hs .hs-tab-absent.active{background:#fff0ee;border-color:#f1c4be}.hs .hs-tab-present .hs-tab-count{color:#1f7a45;background:#dff3e6}.hs .hs-tab-timedin .hs-tab-count{color:#9a6208;background:#fff0d6}.hs .hs-tab-absent .hs-tab-count{color:#b3372b;background:#fde0dc}.hs .hs-tab-export{color:#8a4f2a;font:inherit;cursor:pointer;background:#fff4ea;border:1px solid #f2b18a;border-radius:999px;align-items:center;gap:7px;margin-left:auto;padding:7px 13px;font-size:11px;font-weight:700;transition:background .15s,transform .15s;display:inline-flex}.hs .hs-tab-export:hover{background:#ffe9d6}.hs .hs-tab-export:active{transform:translateY(1px)}.hs-panel{grid-template-rows:0fr;transition:grid-template-rows .28s;display:grid}.hs.is-open .hs-panel{grid-template-rows:1fr}.hs-panel-inner{min-height:0;overflow:hidden}.hs .hs-sec{--accent:#6b716e;--accent-soft:#f3efea;--accent-line:#e4ded7;background:#fff;border-top:1px solid #ece6df;margin:0;padding:18px 20px 20px}.hs .hs-sec-present{--accent:#1f7a45;--accent-soft:#e8f5ee;--accent-line:#cfe8da}.hs .hs-sec-timedin{--accent:#9a6208;--accent-soft:#fff4e0;--accent-line:#f3dcb4}.hs .hs-sec-absent{--accent:#b3372b;--accent-soft:#fff0ee;--accent-line:#f4cdc8}.hs .hs-sec-head{align-items:center;gap:12px;margin:0 0 14px;display:flex}.hs .hs-sec-icon{border:1px solid var(--accent-line);background:var(--accent-soft);width:36px;height:36px;color:var(--accent);border-radius:11px;flex:none;justify-content:center;align-items:center;display:inline-flex}.hs .hs-sec-text{min-width:0}.hs .hs-sec-title{align-items:center;gap:9px;display:flex}.hs .hs-sec-title h4{color:#171a19;letter-spacing:-.01em;margin:0;font-size:15px;font-weight:700;line-height:1.2}.hs .hs-sec-count{background:var(--accent-soft);min-width:24px;color:var(--accent);text-align:center;border-radius:999px;padding:2px 9px;font-size:11px;font-weight:700;line-height:1.3}.hs .hs-sec-text p{color:#7a817d;margin:3px 0 0;font-size:12px;line-height:1.4}.hs .hs-sec-empty{border:1px dashed var(--accent-line);background:var(--accent-soft);color:#59615d;text-align:center;border-radius:12px;padding:22px 16px;font-size:12px}.hs .hs-table-scroll{border:1px solid #ece6df;border-radius:12px;overflow-x:auto}.hs .hs-table{border-collapse:collapse;width:100%;min-width:620px}.hs .hs-table thead th{color:#7a817d;letter-spacing:.06em;text-align:left;text-transform:uppercase;white-space:nowrap;background:#faf7f3;border-bottom:1px solid #ece6df;padding:10px 14px;font-size:10px;font-weight:700}.hs .hs-table tbody td{color:#303734;vertical-align:middle;border-bottom:1px solid #f3eee8;padding:11px 14px;font-size:12px}.hs .hs-table tbody tr:last-child td{border-bottom:none}.hs .hs-table tbody tr:hover td{background:#fffaf6}.hs .hs-student{align-items:center;gap:11px;min-width:0;display:flex}.hs .hs-student-avatar{color:#8a4f2a;background:linear-gradient(135deg,#ffd9bf,#f6b88f);border-radius:50%;flex:none;justify-content:center;align-items:center;width:32px;height:32px;font-size:10px;font-weight:800;display:inline-flex}.hs .hs-student-text{flex-direction:column;min-width:0;display:flex}.hs .hs-student-text strong{color:#171a19;font-size:12px;font-weight:700;line-height:1.3}.hs .hs-student-text small{color:#8a918d;font-size:10px;line-height:1.3}.hs .hs-year{color:#303734;white-space:nowrap;font-size:12px;font-weight:600}.hs .hs-chip{color:#59615d;white-space:nowrap;background:#faf7f3;border:1px solid #eee8e1;border-radius:999px;padding:3px 10px;font-size:11px;font-weight:500;display:inline-block}.hs .hs-time{color:#303734;white-space:nowrap;font-size:12px;font-weight:600}.hs .hs-muted{color:#a3a9a5;white-space:nowrap;font-size:12px}.hs .hs-badge{background:var(--accent-soft);color:var(--accent);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 10px 3px 8px;font-size:10px;font-weight:700;display:inline-flex}.hs .hs-badge i{background:currentColor;border-radius:50%;width:6px;height:6px}.hs .hs-badge-present{--accent:#1f7a45;--accent-soft:#e8f5ee}.hs .hs-badge-timedin{--accent:#9a6208;--accent-soft:#fff4e0}.hs .hs-badge-absent{--accent:#b3372b;--accent-soft:#fff0ee}.history-empty{color:#7a817d;text-align:center;border:1px dashed #e4ded7;border-radius:12px;flex-direction:column;align-items:center;gap:6px;padding:28px;font-size:11px;display:flex}.history-empty strong{color:#303734}@media (max-width:900px){.hs-top{flex-wrap:wrap}.hs-main{flex-basis:calc(100% - 62px)}.hs-side{border-top:1px solid #f1ece6;justify-content:space-between;width:100%;padding-top:12px}.hs-count{flex-direction:row;align-items:baseline;gap:6px}.hs-breakdown{flex-wrap:wrap;padding-left:20px}}@media (max-width:700px){.history-sessions{padding:4px 12px 14px}.hs .hs-sec{padding:14px 12px 16px}.hs .hs-tab-export{margin-left:0}}@media (prefers-reduced-motion:reduce){.hs,.hs-panel,.hs-chevron svg,.hs-open .hs-status i{transition:none;animation:none}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light only;--bg:#fdf3ea;--surface:#fff;--text:#17201d;--border:#f4e2d0;--pink:#ffa6c9;--pink-hover:#ff8ab3;--peach:#ffcca1;--muted:#68736f;--muted-2:#737e79;--muted-3:#69756f;--muted-footer:#7a8580;--header-muted:#6b7772;--success-bg:#eef9f2;--success-text:#197245;--info-bg:#eef4ff;--info-text:#28568c;--error-bg:#fff0f0;--error-text:#a12b2b;--radius-card:28px;--radius-field:14px;--shadow-card:0 1px 2px #14281e0a, 0 24px 60px -18px #78461e38}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--bg);color:var(--text);margin:0;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;line-height:1.5}html body #root{min-height:100dvh;text-align:left!important;border:0!important;width:100%!important;max-width:none!important;margin:0!important;padding:0!important;display:block!important}h1,h2,h3,h4,strong,label{color:var(--text)}h1,h2,h3{letter-spacing:normal}button,input{font:inherit}.attendance-page{min-height:100vh;background:radial-gradient(640px 420px at 88% -4%, #ffa6c94d, transparent 70%), radial-gradient(760px 520px at 8% 6%, #ffcca18c, transparent 70%), var(--bg);flex-direction:column;min-height:100dvh;display:flex}.attendance-header{z-index:10;padding-top:14px;padding-bottom:14px;padding-left:max(max(16px,min(4vw,40px)),50% - 560px);padding-right:max(max(16px,min(4vw,40px)),50% - 560px);padding-top:max(14px, env(safe-area-inset-top));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);background:#ffffffeb;justify-content:flex-start;align-items:center;gap:14px;display:flex;position:-webkit-sticky;position:sticky;top:0}.attendance-header>div:not(.school-logo){text-align:left}.school-logo{background:var(--pink);width:44px;height:44px;color:var(--text);border-radius:13px;flex:none;justify-content:center;align-items:center;font-size:20px;font-weight:700;display:flex;overflow:hidden;box-shadow:0 6px 14px -6px #ff8ab3cc}.school-logo img{object-fit:cover;width:100%;height:100%;display:block}.attendance-header h1{letter-spacing:-.01em;text-align:left;margin:0;font-size:18px;font-weight:700;line-height:1.2}.attendance-header p{color:var(--header-muted);text-align:left;margin:3px 0 0;font-size:12.5px;line-height:1.3}.attendance-container{flex-direction:column;flex:1;justify-content:center;width:100%;max-width:560px;margin:0 auto;padding:max(24px,min(6vh,64px)) 16px;display:flex}.dual-logos{justify-content:center;align-items:center;gap:max(18px,min(5vw,36px));margin-bottom:max(20px,min(4vh,32px));animation:.5s both rise;display:flex}.dual-logos img{object-fit:cover;background:var(--surface);width:max(88px,min(24vw,128px));height:max(88px,min(24vw,128px));box-shadow:0 0 0 1px var(--border), 0 14px 30px -12px #78461e59;border-radius:50%;padding:5px}.attendance-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-card);text-align:left;padding:max(32px,min(5vw,44px)) max(20px,min(5vw,40px)) max(24px,min(4vw,34px));animation:.5s 80ms both rise;position:relative;overflow:hidden}.attendance-card:before{content:"";background:linear-gradient(90deg, var(--pink), var(--peach));height:5px;position:absolute;top:0;bottom:auto;left:0;right:0}.attendance-card h2{text-align:center;letter-spacing:-.025em;margin:0;font-size:max(24px,min(4.4vw,30px));font-weight:800;line-height:1.15}.instruction{text-align:center;color:var(--muted);margin:12px 0 0;font-size:15.5px;line-height:1.6}.instruction strong{color:var(--text)}.attendance-card .instruction:last-of-type{margin-bottom:28px}.attendance-card .card-icon+h2{letter-spacing:-.03em;font-size:max(25px,min(4.6vw,31px));font-weight:800}.attendance-card .instruction:has(>strong:first-child){background:var(--bg);border:1px solid var(--border);width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;max-width:100%;color:var(--muted);border-radius:999px;flex-wrap:wrap;justify-content:center;align-items:center;gap:0 6px;margin:16px auto 0;padding:8px 16px 8px 14px;font-size:13.5px;line-height:1.4;display:flex}.attendance-card .instruction:has(>strong:first-child) strong{align-items:center;gap:8px;font-size:14px;font-weight:700;display:inline-flex}.attendance-card .instruction:has(>strong:first-child) strong:before{content:"";background:var(--pink-hover);border-radius:50%;flex:none;width:8px;height:8px;box-shadow:0 0 0 4px #ffa6c94d}.attendance-card .instruction:has(>strong:first-child)+.instruction{margin:18px 0 26px;font-size:15px}.card-icon{background:var(--peach);border-radius:50%;justify-content:center;align-items:center;width:80px;height:80px;margin:0 auto 20px;display:flex;overflow:hidden;box-shadow:0 0 0 6px #ffcca159,0 0 0 14px #ffcca129}.card-icon img{object-fit:cover;border-radius:50%;width:100%;height:100%;display:block}.success-icon,.time-display,.completed-icon{background:0 0;border-radius:0;justify-content:center;align-items:center;width:64px;height:64px;margin:0 auto 16px;padding:0;display:flex}.success-icon img,.time-display img,.completed-icon img{object-fit:contain;width:56px;height:56px;margin:0;padding:0;display:block}.attendance-card label{text-align:left;margin-bottom:8px;font-size:14px;font-weight:600;display:block}.attendance-card input[type=text],.attendance-card input:not([type]){border:1.5px solid var(--border);border-radius:var(--radius-field);background-color:var(--surface);width:100%;min-height:56px;color:var(--text);-webkit-text-fill-color:var(--text);caret-color:var(--text);-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;padding:14px 18px;font-size:16px;transition:border-color .15s,box-shadow .15s;display:block}.attendance-card input::placeholder{color:var(--muted-2);-webkit-text-fill-color:var(--muted-2);opacity:1}.attendance-card input#studentId:not(:placeholder-shown){text-transform:uppercase}.attendance-card input:focus{border-color:var(--pink);box-shadow:0 0 0 4px #ffa6c940}.attendance-card input:-webkit-autofill{-webkit-text-fill-color:var(--text);-webkit-box-shadow:0 0 0 1000px var(--surface) inset;box-shadow:0 0 0 1000px var(--surface) inset}.attendance-card input:-webkit-autofill:focus{-webkit-text-fill-color:var(--text);-webkit-box-shadow:0 0 0 1000px var(--surface) inset;box-shadow:0 0 0 1000px var(--surface) inset}.primary-button,.secondary-button{border-radius:var(--radius-field);text-align:center;white-space:normal;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;width:100%;min-height:54px;font-weight:700;line-height:1.3;display:block}.primary-button{background:var(--pink);color:#fff;-webkit-text-fill-color:#fff;border:none;margin-top:18px;padding:14px 16px;font-size:16px;transition:background .15s,transform .1s,opacity .15s,box-shadow .15s;box-shadow:0 10px 22px -10px #ff8ab3e6}.primary-button:hover{background:var(--pink-hover);box-shadow:0 14px 26px -10px #ff8ab3f2}.primary-button:active{transform:scale(.985)}.primary-button:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.secondary-button{border:1.5px solid var(--border);background:var(--surface);color:var(--text);-webkit-text-fill-color:var(--text);margin-top:16px;padding:13px 16px;font-weight:600;transition:background .15s,border-color .15s,transform .1s}.secondary-button:hover{background:var(--bg);border-color:var(--peach)}.secondary-button:active{transform:scale(.985)}.secondary-button:disabled{opacity:.55;cursor:not-allowed}.primary-button:focus-visible{outline-offset:2px;outline:3px solid #ffa6c98c}.secondary-button:focus-visible{outline-offset:2px;outline:3px solid #ffa6c98c}.student-information{border:1px solid var(--border);border-radius:18px;margin-top:26px;overflow:hidden}.student-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;gap:20px;padding:15px 18px;display:flex}.student-row:nth-child(odd){background:#fdf3ea73}.student-row:last-child{border-bottom:none}.student-row span{color:var(--muted-2);flex:none;font-size:14px}.student-row strong{text-align:right;overflow-wrap:anywhere;min-width:0;font-size:14.5px}.attendance-action{text-align:center;background:var(--bg);border-radius:20px;width:100%;max-width:100%;margin-top:24px;padding:26px 22px;overflow:hidden}.attendance-action h3{letter-spacing:-.015em;margin:0 0 6px;font-size:21px;font-weight:700}.attendance-action p{color:var(--muted-3);margin:6px 0;line-height:1.55}.attendance-action p strong{color:var(--text)}.camera-placeholder{aspect-ratio:4/3;background:var(--surface);border:1.5px dashed var(--peach);border-radius:18px;justify-content:center;align-items:center;width:100%;max-width:320px;margin:18px auto;font-size:52px;display:flex}.completed{background:var(--success-bg)}.success-text{font-weight:600;color:var(--success-text)!important}.message{text-align:center;border-radius:12px;margin-top:18px;padding:13px 14px;font-size:14px;line-height:1.5}.message.info{background:var(--info-bg);color:var(--info-text)}.message.error{background:var(--error-bg);color:var(--error-text)}.message.success{background:var(--success-bg);color:var(--success-text)}.attendance-card .camera-container,.attendance-card .photo-preview-container{width:100%;max-width:400px;margin:20px auto 0;padding:0;overflow:hidden}.attendance-card video.camera-preview,.attendance-card img.photo-preview{aspect-ratio:4/3;object-fit:cover;background:#111;border:0;border-radius:18px;width:100%;max-width:400px;height:auto;margin:0 auto;padding:0;display:block;overflow:hidden}.attendance-card .camera-frame{background:#111;border-radius:18px;width:100%;max-width:400px;margin:0 auto;position:relative;overflow:hidden}.attendance-card .face-guide{aspect-ratio:3/4;pointer-events:none;border:3px dashed #ffffffd9;border-radius:50%;width:46%;transition:border-color .2s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 999px #0003}.attendance-card .camera-frame.ok .face-guide{border-style:solid;border-color:var(--pink)}.attendance-card .face-status{text-align:center;border:1px solid #0000;border-radius:12px;width:100%;max-width:400px;margin:12px auto 0;padding:10px 14px;font-size:14px;font-weight:600;line-height:1.4}.attendance-card .face-status.loading{background:var(--bg);border-color:var(--border);color:var(--muted)}.attendance-card .face-status.unavailable,.attendance-card .face-status.warn{background:var(--bg);border-color:var(--peach);color:var(--text)}.attendance-card .face-status.ok{background:var(--success-bg);color:var(--success-text)}.attendance-card .face-status.error{background:var(--error-bg);color:var(--error-text)}.attendance-card .camera-controls{grid-template-columns:1fr 1fr;gap:12px;width:100%;max-width:400px;margin:16px auto 0;display:grid}.attendance-card .camera-controls .primary-button,.attendance-card .camera-controls .secondary-button{width:100%;min-width:0;margin:0;padding:13px 10px;font-size:15px}.attendance-card .photo-preview-container>p{text-align:center;width:100%;max-width:400px;margin:14px auto 0;line-height:1.5}.attendance-card .photo-preview-container>.secondary-button{margin-top:14px}.notice-banner{background:var(--surface);border:1px solid var(--peach);color:var(--text);text-align:center;border-radius:14px;margin-bottom:16px;padding:12px 14px;font-size:14px;line-height:1.5}.notice-banner.offline{background:var(--error-bg);color:var(--error-text);border-color:#0000;font-weight:600}.link-button{color:var(--text);-webkit-text-fill-color:var(--text);cursor:pointer;background:0 0;border:none;padding:0;font-weight:700;text-decoration:underline}footer{text-align:center;padding:20px 16px;padding-bottom:max(20px, env(safe-area-inset-bottom));color:var(--muted-footer);-webkit-text-fill-color:var(--muted-footer);font-size:12.5px}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}@media (max-width:480px){.attendance-container{padding-left:12px;padding-right:12px}.attendance-card{border-radius:24px}.attendance-action{padding:22px 14px}.student-row{gap:12px;padding:14px}}@media (max-width:340px){.attendance-card .camera-controls{grid-template-columns:1fr}.attendance-header h1{font-size:16px}.school-logo{width:38px;height:38px;font-size:17px}}@keyframes fx-item-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes fx-pop{0%{opacity:0;transform:scale(.6)}60%{opacity:1;transform:scale(1.08)}to{transform:scale(1)}}@keyframes fx-row-in{0%{opacity:0;transform:translate(-14px)}to{opacity:1;transform:none}}@keyframes fx-drop{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}@keyframes fx-zoom-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:none}}@keyframes fx-fade{0%{opacity:0}to{opacity:1}}@keyframes fx-shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(5px)}60%{transform:translate(-4px)}80%{transform:translate(3px)}}@keyframes fx-glow-success{0%{box-shadow:0 0 #19724559}to{box-shadow:0 0 0 12px #19724500}}@keyframes fx-sheen{0%{opacity:1;left:-70%}to{opacity:1;left:130%}}@keyframes fx-ring{0%{opacity:.6;transform:scale(.85)}to{opacity:0;transform:scale(1.9)}}@keyframes fx-scan{0%{transform:translateY(-100%)}to{transform:translateY(300%)}}@keyframes fx-ok-glow{0%,to{box-shadow:inset 0 0 0 3px var(--pink), inset 0 0 14px #ffa6c959}50%{box-shadow:inset 0 0 0 3px var(--pink), inset 0 0 30px #ffa6c9b3}}@keyframes fx-dash-breathe{0%,to{border-color:var(--peach)}50%{border-color:var(--pink)}}.attendance-header{animation:.5s cubic-bezier(.22,1,.36,1) backwards fx-drop}.notice-banner{animation:.4s cubic-bezier(.22,1,.36,1) backwards fx-drop}.notice-banner.offline{animation:.4s cubic-bezier(.22,1,.36,1) backwards fx-drop,.45s .4s fx-shake}.dual-logos img{transition:transform .35s cubic-bezier(.22,1,.36,1),box-shadow .35s}.dual-logos img:hover{box-shadow:0 0 0 1px var(--peach), 0 0 0 6px #ffa6c940, 0 20px 36px -12px #78461e66;transform:translateY(-4px)scale(1.04)}.school-logo{transition:transform .3s cubic-bezier(.34,1.56,.64,1),box-shadow .3s}.school-logo:hover{transform:rotate(-6deg)scale(1.06);box-shadow:0 10px 18px -6px #ff8ab3e6}.attendance-card>:not(.message){animation:.55s cubic-bezier(.22,1,.36,1) .5s backwards fx-item-in}.attendance-card>:first-child{animation-delay:.1s}.attendance-card>:nth-child(2){animation-delay:.16s}.attendance-card>:nth-child(3){animation-delay:.22s}.attendance-card>:nth-child(4){animation-delay:.28s}.attendance-card>:nth-child(5){animation-delay:.34s}.attendance-card>:nth-child(6){animation-delay:.4s}.attendance-card>:nth-child(7){animation-delay:.46s}.attendance-card>.card-icon{animation:.6s cubic-bezier(.34,1.56,.64,1) .12s backwards fx-pop}.attendance-card>.success-icon img,.attendance-action .time-display img,.attendance-action .completed-icon img{animation:.6s cubic-bezier(.34,1.56,.64,1) .2s backwards fx-pop}.attendance-action .completed-icon{position:relative}.attendance-action .completed-icon:after{content:"";border:2px solid var(--success-text);opacity:0;pointer-events:none;border-radius:50%;animation:1s ease-out .5s both fx-ring;position:absolute;top:4px;bottom:4px;left:4px;right:4px}.student-row{transition:background-color .2s;animation:.45s cubic-bezier(.22,1,.36,1) backwards fx-row-in}.student-row:first-child{animation-delay:.3s}.student-row:nth-child(2){animation-delay:.37s}.student-row:nth-child(3){animation-delay:.44s}.student-row:nth-child(4){animation-delay:.51s}.student-row:hover{background-color:#ffcca133}.attendance-action{transition:box-shadow .3s}.attendance-action:hover{box-shadow:0 12px 28px -16px #78461e40}.attendance-card label{transition:color .2s}.attendance-card input[type=text],.attendance-card input:not([type]){transition:border-color .2s,box-shadow .2s,transform .2s cubic-bezier(.22,1,.36,1)}.attendance-card input[type=text]:hover:not(:focus),.attendance-card input:not([type]):hover:not(:focus){border-color:var(--peach)}.attendance-card input:focus{transform:translateY(-1px);box-shadow:0 0 0 4px #ffa6c940,0 10px 22px -12px #ff8ab399}.primary-button,.secondary-button{position:relative;overflow:hidden}.primary-button{transition:background .2s,transform .2s cubic-bezier(.22,1,.36,1),opacity .2s,box-shadow .2s}.secondary-button{transition:background .2s,border-color .2s,transform .2s cubic-bezier(.22,1,.36,1),box-shadow .2s}.primary-button:hover:not(:disabled){transform:translateY(-2px)}.secondary-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 8px 18px -12px #78461e59}.primary-button:active:not(:disabled),.secondary-button:active:not(:disabled){transform:translateY(0)scale(.985)}.primary-button:after{content:"";opacity:0;pointer-events:none;background:linear-gradient(100deg,#0000,#ffffff8c,#0000);width:45%;position:absolute;top:0;bottom:0;left:-70%;transform:skew(-20deg)}.primary-button:hover:not(:disabled):after{animation:.8s fx-sheen}.message{animation:.35s cubic-bezier(.22,1,.36,1) backwards fx-zoom-in}.message.error{animation:.35s cubic-bezier(.22,1,.36,1) backwards fx-zoom-in,.45s .35s fx-shake}.message.success{animation:.35s cubic-bezier(.22,1,.36,1) backwards fx-zoom-in,1.2s ease-out .2s fx-glow-success}.camera-placeholder{animation:3s ease-in-out infinite fx-dash-breathe}.attendance-card .camera-container,.attendance-card .photo-preview-container{animation:.45s cubic-bezier(.22,1,.36,1) backwards fx-zoom-in}.attendance-card .camera-frame:after{content:"";border-radius:inherit;pointer-events:none;transition:box-shadow .3s;position:absolute;top:0;bottom:0;left:0;right:0;box-shadow:inset 0 0 0 3px #0000,inset 0 0 26px #0000}.attendance-card .camera-frame.ok:after{animation:1.8s ease-in-out infinite fx-ok-glow}.attendance-card .camera-frame.loading:before,.attendance-card .camera-frame.warn:before{content:"";z-index:1;pointer-events:none;background:linear-gradient(#0000,#ffa6c947,#0000);height:35%;animation:2.4s ease-in-out infinite fx-scan;position:absolute;top:0;left:0;right:0}.attendance-card .face-status{transition:background-color .25s,border-color .25s,color .25s}.attendance-card .photo-preview{transition:transform .3s cubic-bezier(.22,1,.36,1)}div[role=dialog][aria-modal=true]{animation:.25s backwards fx-fade}div[role=dialog][aria-modal=true]>div{animation:.4s cubic-bezier(.22,1,.36,1) backwards fx-zoom-in}footer button{transition:opacity .2s}footer button:hover{opacity:.65}.link-button{transition:opacity .2s}.link-button:hover{opacity:.65}
