@import"https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&display=swap";.public-layout{min-height:100vh;display:flex;flex-direction:column}.public-header{width:100%;background:#fffffffa;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:1000;box-shadow:0 2px 10px #0000000d}.nav-container{max-width:1140px;margin:0 auto;padding:0 24px;height:70px;display:flex;align-items:center;justify-content:space-between;gap:16px;position:relative}.public-logo{font-size:17px;font-weight:700;letter-spacing:-.3px;color:var(--color-text-primary);text-decoration:none;display:flex;align-items:center;gap:8px;z-index:1002}.public-logo-icon{width:150px;height:auto;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.mobile-menu-toggle{display:none;flex-direction:column;justify-content:space-between;width:30px;height:21px;background:transparent;border:none;cursor:pointer;padding:0;z-index:1002}.mobile-menu-toggle span{width:100%;height:3px;background:var(--color-text-primary);border-radius:3px;transition:all .3s ease}.mobile-menu-toggle.open span:nth-child(1){transform:rotate(45deg) translate(6px,6px)}.mobile-menu-toggle.open span:nth-child(2){opacity:0}.mobile-menu-toggle.open span:nth-child(3){transform:rotate(-45deg) translate(7px,-7px)}.menu-overlay{display:none;position:fixed;inset:0;z-index:999;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.menu-overlay.visible{display:block}.nav-links{display:flex;align-items:center;gap:6px;transition:all .3s ease}.nav-links a{text-decoration:none;color:var(--color-text-secondary);font-size:14px;font-weight:500;padding:8px 14px;border-radius:var(--radius-md);transition:color .12s ease,background .12s ease;white-space:nowrap}.nav-links a:hover{color:var(--color-text-primary);background:var(--color-surface-2)}.nav-links .nav-cta{background:var(--color-accent);color:#fff!important;padding:8px 18px;border-radius:var(--radius-md);font-weight:600;box-shadow:0 2px 8px #28954847;transition:background .12s ease,box-shadow .12s ease,transform .12s ease}.nav-links .nav-cta:hover{background:var(--color-accent-hover)!important;box-shadow:0 4px 14px #28954861;transform:translateY(-1px)}@media(max-width:768px){.mobile-menu-toggle{display:flex}.nav-links{position:fixed;top:70px;left:0;right:0;background:#fff;flex-direction:column;padding:1rem;gap:.5rem;transform:translateY(-100%);opacity:0;visibility:hidden;box-shadow:0 4px 10px #0000001a;border-bottom:1px solid var(--color-border)}.nav-links.open{transform:translateY(0);opacity:1;visibility:visible}.nav-links a{width:100%;text-align:center;padding:12px}.nav-links .nav-cta{width:100%;text-align:center}}@media(max-width:480px){.nav-container{padding:0 16px;height:60px}.public-logo-icon{width:120px}}.dashboard-nav a.disabled{opacity:.5;cursor:not-allowed;pointer-events:none;position:relative}.dashboard-nav a.disabled:hover{background:transparent;color:var(--sidebar-text)}.lock-badge{margin-left:auto;font-size:.9rem;opacity:.7}.subscription-top-banner.canceled{background:#ef4444;border-bottom:1px solid #dc2626;gap:1.5rem}.subscription-top-banner.canceled .material-symbols-rounded{color:#fff;font-size:1.5rem}.subscription-top-banner.canceled .banner-content{display:flex;flex-direction:column}.subscription-top-banner.canceled .banner-title{color:#fff;font-weight:700;font-size:1rem;margin:0}.subscription-top-banner.canceled .banner-subtitle{color:#ffffffe6;font-size:.9rem;margin:0}.subscription-top-banner.canceled .banner-button.primary{background:#fff;color:#ef4444;font-weight:700;padding:.6rem 1.5rem;border-radius:9999px;text-decoration:none;transition:all .2s}.subscription-top-banner.canceled .banner-button.primary:hover{background:#f8fafc;transform:translateY(-1px);box-shadow:0 4px 6px -1px #0000001a}.subscription-top-banner.canceled .banner-close{color:#fff;opacity:.8}.subscription-top-banner.canceled .banner-close:hover{opacity:1}.subscription-top-banner.pending{background:#fff3cd;border-bottom:1px solid #ffc107}@media(max-width:768px){.subscription-top-banner.canceled{flex-direction:column;text-align:center;padding:1rem;gap:1rem}.subscription-top-banner.canceled .banner-content{align-items:center}.subscription-top-banner.canceled .banner-button.primary{width:100%;text-align:center}.public-content{flex:1}}.landing-page{background:#fff}.hero{padding:100px 24px 80px;text-align:center;background:linear-gradient(160deg,#f8f9ff,#fff 60%);border-bottom:1px solid var(--color-border-soft)}.hero-eyebrow{display:inline-flex;align-items:center;gap:6px;background:var(--color-accent-light);color:var(--color-accent);font-size:12px;font-weight:700;padding:6px 14px;border-radius:var(--radius-full);margin-bottom:20px;letter-spacing:.5px;text-transform:uppercase}.hero-content{max-width:700px;margin:0 auto}.hero h1{font-size:clamp(2rem,5vw,3.2rem);font-weight:700;letter-spacing:-.5px;line-height:1.2;color:var(--color-text-primary);margin-bottom:18px}.hero h1 em{font-style:normal;color:var(--color-accent)}.hero p{font-size:1.05rem;color:var(--color-text-secondary);margin-bottom:32px;line-height:1.7;max-width:560px;margin-left:auto;margin-right:auto}.hero-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.primary-btn{display:inline-flex;align-items:center;gap:8px;padding:13px 24px;background:var(--color-accent);color:#fff;border-radius:var(--radius-md);text-decoration:none;font-weight:600;font-size:15px;box-shadow:0 4px 14px #4f46e559;transition:background .12s ease,box-shadow .12s ease,transform .12s ease}.primary-btn:hover{background:var(--color-accent-hover);box-shadow:0 6px 20px #4f46e573;transform:translateY(-2px)}.secondary-btn{display:inline-flex;align-items:center;gap:8px;padding:13px 24px;border:1.5px solid var(--color-border);color:var(--color-text-primary);border-radius:var(--radius-md);text-decoration:none;font-weight:600;font-size:15px;transition:border-color .12s ease,background .12s ease}.secondary-btn:hover{border-color:var(--color-accent);background:var(--color-accent-light);color:var(--color-accent)}.section{padding:72px 24px;max-width:1100px;margin:0 auto}.section-header{text-align:center;margin-bottom:48px}.section-header h2{font-size:clamp(1.4rem,3vw,1.9rem);font-weight:700;color:var(--color-text-primary);margin-bottom:10px}.section-header p{font-size:15px;color:var(--color-text-secondary);max-width:480px;margin:0 auto;line-height:1.6}.section-divider{border:none;border-top:1px solid var(--color-border-soft)}.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px}.feature-card{background:var(--color-surface);padding:28px;border-radius:var(--radius-lg);border:1px solid var(--color-border-soft);box-shadow:var(--shadow-sm);transition:box-shadow .2s ease,transform .2s ease}.feature-card:hover{box-shadow:var(--shadow-md);transform:translateY(-3px)}.feature-icon{font-size:28px;margin-bottom:14px;display:block}.feature-card h3{font-size:15px;font-weight:700;margin-bottom:8px;color:var(--color-text-primary)}.feature-card p{font-size:14px;color:var(--color-text-secondary);line-height:1.6}.steps{display:flex;justify-content:center;gap:0;flex-wrap:wrap;max-width:700px;margin:0 auto}.step{flex:1;min-width:160px;text-align:center;padding:20px;position:relative}.step:not(:last-child):after{content:"→";position:absolute;right:-6px;top:50%;transform:translateY(-70%);color:var(--color-text-muted);font-size:20px}.step-number{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--color-accent);color:#fff;border-radius:var(--radius-full);font-weight:700;font-size:15px;margin-bottom:12px}.step p{font-size:14px;color:var(--color-text-secondary);font-weight:500}.cta-section{background:var(--color-accent);padding:72px 24px;text-align:center}.cta-section h2{font-size:clamp(1.4rem,3vw,2rem);color:#fff;font-weight:700;margin-bottom:24px;letter-spacing:-.3px}.cta-btn{display:inline-flex;align-items:center;gap:8px;padding:14px 28px;background:#fff;color:var(--color-accent);border-radius:var(--radius-md);text-decoration:none;font-weight:700;font-size:15px;box-shadow:0 4px 14px #00000026;transition:box-shadow .12s ease,transform .12s ease}.cta-btn:hover{box-shadow:0 6px 20px #0003;transform:translateY(-2px)}@media(max-width:640px){.hero{padding:64px 20px 56px}.section{padding:48px 20px}.steps{flex-direction:column;align-items:center}.step:after{display:none}}.checkout-modal{padding:2rem}.checkout-modal-header{text-align:center;margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--color-border-soft)}.checkout-modal-header h2{font-size:1.8rem;color:var(--color-text-primary);margin-bottom:.5rem}.plan-name-indicator{font-size:1.1rem;color:var(--color-accent);font-weight:600}.checkout-modal-content{display:grid;grid-template-columns:1fr 1fr;gap:2rem}.checkout-summary-section h3,.checkout-features-section h3{font-size:1.2rem;color:var(--color-text-primary);margin-bottom:1.5rem}.plan-summary-card{background:var(--color-bg);border-radius:var(--radius-lg);padding:1.5rem;border:1px solid var(--color-border-soft);margin-bottom:1.5rem}.plan-summary-row{display:flex;justify-content:space-between;align-items:center;padding-bottom:1rem;border-bottom:1px solid var(--color-border-soft);margin-bottom:1rem;color:var(--color-text-secondary)}.plan-price{font-weight:600;color:var(--color-accent)}.plan-summary-total{display:flex;justify-content:space-between;align-items:center;font-size:1.2rem}.plan-summary-total strong{color:var(--color-text-primary);font-size:1.4rem}.login-required{text-align:center;padding:2rem;background:var(--color-bg);border-radius:var(--radius-lg);border:1px dashed var(--color-border-soft)}.login-required p{color:var(--color-text-secondary);margin-bottom:1rem}.login-redirect-btn{background:var(--color-accent);color:#fff;border:none;padding:.75rem 2rem;border-radius:var(--radius-md);font-weight:600;cursor:pointer;transition:all .2s ease}.login-redirect-btn:hover{background:var(--color-accent-hover);transform:translateY(-2px)}.checkout-action-btn{width:100%;background:linear-gradient(135deg,#10b981,#059669);color:#fff;border:none;padding:1rem;border-radius:var(--radius-md);font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .2s ease;margin:1rem 0}.checkout-action-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 20px #10b9814d}.checkout-action-btn:disabled{opacity:.6;cursor:not-allowed}.payment-security{display:flex;flex-direction:column;gap:.5rem;padding:1rem;background:var(--color-bg);border-radius:var(--radius-md);font-size:.9rem;color:var(--color-text-muted)}.payment-security span{display:flex;align-items:center;gap:.5rem}.checkout-features-section{background:var(--color-bg);border-radius:var(--radius-lg);padding:1.5rem;border:1px solid var(--color-border-soft)}.features-checklist{list-style:none;padding:0;margin:0 0 1.5rem}.features-checklist li{padding:.5rem 0;color:var(--color-text-secondary);display:flex;align-items:center;gap:.5rem}.features-checklist li:before{content:"✓";color:#10b981;font-weight:700}.guarantee-badge{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:1rem;border-radius:var(--radius-md);text-align:center;margin:1.5rem 0}.guarantee-badge strong{display:block;margin-bottom:.25rem;font-size:1rem}.guarantee-badge p{margin:0;font-size:.9rem;opacity:.9}.help-text{text-align:center;color:var(--color-text-muted);font-size:.9rem}.help-link{background:none;border:none;color:var(--color-accent);font-weight:600;cursor:pointer;text-decoration:underline}.help-link:hover{color:var(--color-accent-hover)}.checkout-error{background:#fee2e2;border:1px solid #ef4444;color:#b91c1c;padding:1rem;border-radius:var(--radius-md);margin:1rem 0;text-align:center}@media(max-width:768px){.checkout-modal{padding:1rem}.checkout-modal-content{grid-template-columns:1fr;gap:1rem}.checkout-modal-header h2{font-size:1.5rem}.plan-summary-total strong{font-size:1.2rem}}.modal-overlay{position:fixed;inset:0;background:#000000bf;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}.modal-content{background:var(--color-surface);border-radius:var(--radius-xl);max-width:1000px;width:90%;max-height:90vh;overflow-y:auto;position:relative;animation:slideUp .3s ease;box-shadow:0 25px 50px -12px #00000080;border:1px solid var(--color-border-soft)}.modal-close{position:absolute;top:1rem;right:1rem;background:none;border:none;font-size:2rem;line-height:1;color:var(--color-text-muted);cursor:pointer;padding:.5rem;z-index:10;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-full);transition:all .2s ease}.modal-close:hover{background:var(--color-border-soft);color:var(--color-text-primary)}@media(max-width:768px){.modal-content{width:95%;max-height:95vh}}.pricing-page{min-height:100vh;background:var(--color-bg);padding:72px 24px}.pricing-header{text-align:center;margin-bottom:52px}.pricing-header h1{font-size:clamp(1.6rem,4vw,2.2rem);font-weight:700;letter-spacing:-.3px;margin-bottom:10px;color:var(--color-text-primary)}.pricing-header p{font-size:15px;color:var(--color-text-secondary)}.pricing-container{display:flex;justify-content:center;gap:20px;flex-wrap:wrap;max-width:1060px;margin:0 auto}.pricing-card{background:var(--color-surface);padding:36px 32px;border-radius:var(--radius-xl);width:300px;box-shadow:var(--shadow-md);border:1px solid var(--color-border-soft);text-align:center;position:relative;transition:box-shadow .2s ease,transform .2s ease}.pricing-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px)}.pricing-card h2{font-size:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-secondary);margin-bottom:16px}.price{font-size:2.4rem;font-weight:700;color:var(--color-text-primary);letter-spacing:-1px;margin-bottom:4px}.price span{font-size:1rem;font-weight:400;color:var(--color-text-muted);letter-spacing:0}.total{font-size:13px;color:var(--color-text-muted);margin-bottom:24px;min-height:20px}.pricing-card ul{list-style:none;margin-bottom:28px;text-align:left;display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--color-border-soft);border-bottom:1px solid var(--color-border-soft);padding:20px 0}.pricing-card li{font-size:14px;color:var(--color-text-secondary);display:flex;align-items:flex-start;gap:8px}.pricing-card li:before{content:"✓";color:var(--color-success);font-weight:700;flex-shrink:0}.pricing-card button{width:100%;padding:13px;border:none;background:var(--color-accent);color:#fff;border-radius:var(--radius-md);font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;box-shadow:0 2px 8px #4f46e547;transition:background .12s ease,box-shadow .12s ease,transform .12s ease}.pricing-card button:hover{background:var(--color-accent-hover);box-shadow:0 4px 14px #4f46e561;transform:translateY(-1px)}.featured{border:2px solid var(--color-accent);box-shadow:var(--shadow-lg)}.badge{position:absolute;top:-13px;left:50%;transform:translate(-50%);background:var(--color-accent);color:#fff;padding:5px 14px;font-size:11px;font-weight:700;border-radius:var(--radius-full);white-space:nowrap;letter-spacing:.3px}.pricing-footer{margin-top:48px;text-align:center}.pricing-footer a{color:var(--color-accent);text-decoration:none;font-size:14px;font-weight:500}.pricing-footer a:hover{text-decoration:underline}@media(max-width:680px){.pricing-page{padding:48px 16px}.pricing-card{width:100%;max-width:380px}}.auth-message{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:1rem;border-radius:8px;margin-bottom:1.5rem;text-align:center;font-size:.95rem}.auth-message p{margin:0}.back-link{display:inline-block;color:var(--color-text-secondary);text-decoration:none;margin-bottom:2rem;font-size:.95rem;transition:color .2s ease}.back-link:hover{color:var(--color-accent);text-decoration:none}.subtitle{font-size:1.1rem;color:var(--color-text-secondary);margin-top:.5rem;margin-bottom:2rem}.billing-toggle{display:flex;justify-content:center;gap:1rem;margin:2rem 0 1.5rem}.toggle-btn{padding:.75rem 1.5rem;border:1px solid var(--color-border-soft);background:var(--color-surface);border-radius:var(--radius-full);font-size:.95rem;font-weight:500;cursor:pointer;transition:all .2s ease;position:relative;color:var(--color-text-secondary)}.toggle-btn.active{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.savings-badge{position:absolute;top:-8px;right:-8px;background:#10b981;color:#fff;font-size:.7rem;padding:.2rem .5rem;border-radius:var(--radius-full);font-weight:600;white-space:nowrap}.trust-badges{display:flex;justify-content:center;gap:2rem;margin:2rem 0 1rem;flex-wrap:wrap}.trust-badges span{display:inline-flex;align-items:center;gap:.5rem;font-size:.9rem;color:var(--color-text-secondary);background:var(--color-surface);padding:.5rem 1rem;border-radius:var(--radius-full);border:1px solid var(--color-border-soft)}.pricing-card.popular{border:2px solid var(--color-accent)}.price-container{margin:1rem 0;position:relative}.original-price{position:absolute;top:-20px;left:0;font-size:.85rem;color:var(--color-text-muted);text-decoration:line-through}.current-price{display:flex;align-items:baseline;justify-content:center;gap:.2rem;margin:.5rem 0}.currency{font-size:1.2rem;color:var(--color-text-primary)}.amount{font-size:2.8rem;font-weight:700;color:var(--color-text-primary);line-height:1}.period{color:var(--color-text-muted);font-size:.95rem}.savings{background:#10b981;color:#fff;padding:.25rem .75rem;border-radius:var(--radius-full);font-size:.8rem;font-weight:600;display:inline-block;margin-top:.25rem}.billing-note{font-size:.8rem;color:var(--color-text-muted);margin-top:.25rem}.plan-description{color:var(--color-text-secondary);font-size:.9rem;margin-top:.25rem;margin-bottom:1rem}.features h3{font-size:.9rem;margin-bottom:.75rem;color:var(--color-text-primary);text-align:left}.features-list{list-style:none;padding:0;margin:0;text-align:left}.features-list li{font-size:.9rem;padding:.35rem 0;display:flex;align-items:center;gap:.5rem}.features-list li.included{color:var(--color-text-secondary)}.features-list li.included:before{content:"✓";color:var(--color-success);font-weight:700;margin-right:.5rem}.features-list li.not-included{color:var(--color-text-muted);opacity:.6}.features-list li.not-included:before{content:"✗";color:var(--color-text-muted);margin-right:.5rem}.card-footer{margin-top:1.5rem}.cta-button{width:100%;padding:.85rem;border:none;background:var(--color-accent);color:#fff;border-radius:var(--radius-md);font-family:inherit;font-size:.95rem;font-weight:600;cursor:pointer;box-shadow:var(--shadow-sm);transition:all .2s ease}.cta-button:hover:not(:disabled){background:var(--color-accent-hover);transform:translateY(-2px);box-shadow:var(--shadow-md)}.cta-button:disabled{opacity:.6;cursor:not-allowed}.cta-button.popular{background:var(--color-accent);box-shadow:0 4px 14px #4f46e566}.login-note{margin-top:1rem;font-size:.85rem;color:var(--color-text-muted)}.login-note a{color:var(--color-accent);text-decoration:none;font-weight:500}.login-note a:hover{text-decoration:underline}.pricing-faq{max-width:1000px;margin:5rem auto 3rem;padding:0 1.5rem}.pricing-faq h2{text-align:center;font-size:1.8rem;font-weight:700;color:var(--color-text-primary);margin-bottom:3rem}.faq-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2rem}.faq-item{background:var(--color-surface);padding:1.5rem;border-radius:var(--radius-lg);border:1px solid var(--color-border-soft);transition:transform .2s ease,box-shadow .2s ease}.faq-item:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.faq-item h3{font-size:1.1rem;font-weight:600;color:var(--color-text-primary);margin-bottom:.75rem}.faq-item p{font-size:.95rem;color:var(--color-text-secondary);line-height:1.6;margin:0}.pricing-footer{margin-top:4rem;padding:3rem 2rem;background:var(--color-surface);border-radius:var(--radius-xl);text-align:center;border:1px solid var(--color-border-soft)}.footer-content p{font-size:1.1rem;color:var(--color-text-primary);margin-bottom:.75rem}.contact-link{display:inline-block;color:var(--color-accent);text-decoration:none;font-weight:600;font-size:1.2rem;margin-bottom:2rem;transition:color .2s ease}.contact-link:hover{color:var(--color-accent-hover);text-decoration:underline}.footer-links{display:flex;justify-content:center;gap:2rem;flex-wrap:wrap;border-top:1px solid var(--color-border-soft);padding-top:2rem}.footer-links a{color:var(--color-text-secondary);text-decoration:none;font-size:.9rem;transition:color .2s ease}.footer-links a:hover{color:var(--color-accent)}@media(max-width:768px){.trust-badges{gap:.75rem}.trust-badges span{width:100%;justify-content:center}.billing-toggle{flex-direction:column;align-items:stretch;gap:.75rem}.toggle-btn{width:100%}.savings-badge{top:-8px;right:10px}.faq-grid{grid-template-columns:1fr}.footer-links{flex-direction:column;gap:1rem;align-items:center}}.auth-message{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:1rem;border-radius:var(--radius-md);margin-bottom:1.5rem;text-align:center;font-size:.95rem}.auth-message p{margin:0;color:#fff!important}.auth-page{min-height:100vh;display:grid;place-items:center;padding:24px 16px;background:var(--color-bg)}.auth-card{background:var(--color-surface);border-radius:var(--radius-xl);padding:40px;width:100%;max-width:400px;box-shadow:var(--shadow-lg);animation:slideUp .25s ease}.auth-card-header{margin-bottom:28px}.auth-card h1{font-size:1.4rem;font-weight:700;color:var(--color-text-primary);margin-bottom:4px}.auth-card-subtitle{font-size:14px;color:var(--color-text-secondary)}.google-login-btn{width:100%;padding:12px;background:#fff;color:#444;border:1px solid #ddd;border-radius:var(--radius-md);font-family:inherit;font-size:14px;font-weight:500;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:20px;transition:background .12s ease,box-shadow .12s ease}.google-login-btn:hover{background:#f8f8f8;box-shadow:0 1px 3px #0000001a}.google-icon{width:20px;height:20px}.auth-divider{display:flex;align-items:center;text-align:center;color:var(--color-text-muted);font-size:13px;margin:20px 0}.auth-divider:before,.auth-divider:after{content:"";flex:1;border-bottom:1px solid var(--color-border-soft)}.auth-divider span{padding:0 10px}.auth-form{display:flex;flex-direction:column;gap:16px}.form-field{display:flex;flex-direction:column;gap:6px}.form-label{font-size:13px;font-weight:600;color:var(--color-text-secondary)}.form-input{width:100%;padding:11px 14px;border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-family:inherit;font-size:14px;color:var(--color-text-primary);background:var(--color-surface);outline:none;transition:border-color .12s ease,box-shadow .12s ease}.form-input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #4f46e51f}.form-input::placeholder{color:var(--color-text-muted)}.auth-submit{width:100%;padding:12px;background:var(--color-accent);color:#fff;border:none;border-radius:var(--radius-md);font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;box-shadow:0 2px 8px #4f46e547;transition:background .12s ease,box-shadow .12s ease,transform .12s ease;margin-top:4px}.auth-submit:hover:not(:disabled){background:var(--color-accent-hover);box-shadow:0 4px 14px #4f46e561;transform:translateY(-1px)}.auth-submit:disabled{opacity:.6;cursor:not-allowed;transform:none}.auth-error{background:var(--color-danger-light);color:var(--color-danger-text);padding:10px 14px;border-radius:var(--radius-sm);font-size:13px;border-left:3px solid var(--color-danger)}.auth-success{background:var(--color-success-light);color:var(--color-success-text);padding:10px 14px;border-radius:var(--radius-sm);font-size:13px;border-left:3px solid var(--color-success)}.auth-footer{margin-top:20px;font-size:13px;color:var(--color-text-secondary);text-align:center;display:flex;flex-direction:column;gap:8px}.auth-footer a{color:var(--color-accent);text-decoration:none;font-weight:500}.auth-footer a:hover{text-decoration:underline}.auth-icon-block{font-size:48px;text-align:center;margin-bottom:16px}.auth-message-text{font-size:14px;color:var(--color-text-secondary);text-align:center;line-height:1.6}@media(max-width:480px){.auth-card{padding:28px 24px}}.dashboard-layout{min-height:100vh;display:flex;background:var(--color-bg)}.dashboard-sidebar{width:var(--sidebar-width);background:var(--sidebar-bg);display:flex;flex-direction:column;padding:0;position:fixed;top:0;left:0;height:100vh;z-index:100;transition:transform .25s ease;border-right:1px solid rgba(255,255,255,.04)}.sidebar-top{padding:24px 20px 20px;border-bottom:1px solid rgba(255,255,255,.06);background:var(--color-surface)}.sidebar-logo{width:100%;display:flex;align-items:center;justify-content:center;gap:10px}.sidebar-logo-icon{width:200px;height:auto;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.dashboard-nav{flex:1;display:flex;flex-direction:column;gap:2px;padding:16px 12px;overflow-y:auto}.dashboard-nav a{color:var(--sidebar-text);text-decoration:none;padding:10px 12px;border-radius:var(--radius-md);font-size:14px;font-weight:500;display:flex;align-items:center;gap:10px;transition:background .12s ease,color .12s ease}.dashboard-nav a:hover{background:var(--sidebar-hover);color:#fff}.dashboard-nav a.active{background:var(--sidebar-active);color:var(--sidebar-text-active)}.nav-icon{width:20px;text-align:center;flex-shrink:0}.sidebar-bottom{padding:12px;border-top:1px solid rgba(255,255,255,.06)}.sidebar-logout{width:100%;background:transparent;border:none;color:var(--sidebar-text);padding:10px 12px;border-radius:var(--radius-md);font-family:inherit;font-size:14px;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:10px;transition:background .12s ease,color .12s ease;text-align:left}.sidebar-logout:hover{background:#ef44441f;color:#fca5a5}.dashboard-content{flex:1;margin-left:var(--sidebar-width);min-height:100vh;overflow-y:auto}.sidebar-toggle{display:none;position:fixed;top:16px;right:16px;z-index:110;width:40px;height:40px;background:var(--sidebar-bg);border:none;border-radius:var(--radius-md);cursor:pointer;align-items:center;justify-content:center;flex-direction:column;gap:5px;box-shadow:var(--shadow-md);padding:10px}.sidebar-toggle span{width:100%;height:3px;background:#fff;border-radius:3px;transition:all .3s ease;display:block}.sidebar-toggle.open span:nth-child(1){transform:rotate(45deg) translate(5.5px,5.5px)}.sidebar-toggle.open span:nth-child(2){opacity:0}.sidebar-toggle.open span:nth-child(3){transform:rotate(-45deg) translate(5.5px,-5.5px)}.sidebar-overlay{display:none;position:fixed;inset:0;background:#00000080;z-index:99}@media(max-width:768px){.sidebar-toggle{display:flex}.dashboard-sidebar{transform:translate(-100%);max-height:93vh}.dashboard-sidebar.open{transform:translate(0)}.sidebar-overlay.visible{display:block}.dashboard-content{margin-left:0;padding-top:64px}}.sidebar-subscription{padding:1rem;margin:1rem 0;border-top:1px solid var(--color-border-soft);border-bottom:1px solid var(--color-border-soft)}.subscription-warning{background:#fff3cd;border:1px solid #ffc107;border-radius:var(--radius-md);padding:.75rem;display:flex;align-items:center;gap:.5rem;position:relative}.warning-icon{font-size:1.2rem}.warning-text{flex:1}.warning-text p{color:#856404;font-weight:600;font-size:.9rem;margin:0}.warning-text small{color:#856404;font-size:.75rem;opacity:.9}.subscription-button{background:#ffc107;color:#856404;text-decoration:none;padding:.3rem .8rem;border-radius:var(--radius-full);font-size:.8rem;font-weight:600;white-space:nowrap;transition:all .2s ease}.subscription-button:hover{background:#e0a800;transform:translateY(-1px)}.subscription-active{background:#d4edda;border:1px solid #28a745;border-radius:var(--radius-md);padding:.75rem;display:flex;align-items:center;gap:.5rem}.active-icon{font-size:1.2rem}.active-text{flex:1}.active-text p{color:#155724;font-weight:600;font-size:.9rem;margin:0}.active-text small{color:#155724;font-size:.75rem;opacity:.9}.subscription-manage{color:#155724;text-decoration:none;padding:.3rem;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;transition:background .2s ease}.subscription-manage:hover{background:#0000000d}.subscription-manage .material-symbols-rounded{font-size:1.2rem}.subscription-top-banner{top:0;left:0;right:0;background:#fff3cd;border-bottom:1px solid #ffc107;padding:.75rem 2rem;display:flex;align-items:center;justify-content:center;gap:1rem;z-index:1000;animation:slideDown .3s ease}.subscription-top-banner p{color:#856404;margin:0;font-size:.95rem}.banner-button{background:#ffc107;color:#856404;text-decoration:none;padding:.4rem 1.2rem;border-radius:var(--radius-full);font-size:.9rem;font-weight:600;transition:all .2s ease}.banner-button:hover{background:#e0a800}.banner-close{background:none;border:none;color:#856404;font-size:1.2rem;cursor:pointer;padding:.2rem .5rem;opacity:.7;transition:opacity .2s ease}.banner-close:hover{opacity:1}@keyframes slideDown{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.subscription-top-banner+.dashboard-content{padding-top:4rem}@media(max-width:768px){.subscription-top-banner{flex-direction:column;text-align:center;padding:.75rem 1rem}.banner-close{position:absolute;top:.5rem;right:.5rem}}.dashboard-home{padding:32px;max-width:1000px;animation:fadeIn .2s ease}.dashboard-header{margin-bottom:32px}.dashboard-header h1{font-size:1.6rem;font-weight:700;color:var(--color-text-primary);margin-bottom:4px}.dashboard-header p{color:var(--color-text-secondary);font-size:15px}.dashboard-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:36px}.dashboard-card{background:var(--color-surface);border-radius:var(--radius-lg);padding:22px 24px;box-shadow:var(--shadow-sm);border:1px solid var(--color-border-soft);transition:box-shadow .2s ease,transform .2s ease}.dashboard-card.clickable{cursor:pointer}.dashboard-card.clickable:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--color-accent-muted, #c7d2fe)}.dashboard-card.clickable:active{transform:translateY(-1px)}.card-icon{font-size:24px;display:block;margin-bottom:12px}.card-number{font-size:2.2rem;font-weight:700;color:var(--color-text-primary);line-height:1;margin-bottom:6px;font-variant-numeric:tabular-nums}.dashboard-card h3{font-size:13px;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:2px}.card-sub{font-size:12px;color:var(--color-text-muted)}.dashboard-cta{margin-bottom:36px}.primary-action{display:inline-flex;align-items:center;gap:8px;background:var(--color-accent);color:#fff;border:none;padding:13px 22px;border-radius:var(--radius-md);font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;box-shadow:0 2px 8px #4f46e547;transition:background .12s ease,box-shadow .12s ease,transform .12s ease}.primary-action:hover{background:var(--color-accent-hover);box-shadow:0 4px 14px #4f46e561;transform:translateY(-1px)}.dashboard-recent{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid var(--color-border-soft);overflow:hidden}.recent-header{display:flex;justify-content:space-between;align-items:center;padding:18px 24px;border-bottom:1px solid var(--color-border-soft)}.recent-header h2{font-size:20px;font-weight:700;color:var(--color-text-primary)}.link-button{background:none;border:none;color:var(--color-accent);font-family:inherit;font-size:20px;font-weight:600;cursor:pointer;padding:0}.link-button:hover{text-decoration:underline}.recent-list{display:flex;flex-direction:column}.recent-item{display:flex;justify-content:space-between;align-items:center;padding:7px 24px;border-bottom:1px solid var(--color-border-soft);transition:background .12s ease;cursor:pointer;text-decoration:none;color:inherit}.recent-item:nth-child(odd){background-color:var(--color-surface-2)}.recent-item:nth-child(2n){background-color:var(--color-surface)}.recent-item:last-child{border-bottom:none}.recent-item:hover{background:var(--color-sfhover)}.recent-item.clickable:hover{background:var(--color-accent-light)}.recent-info{display:flex;flex-direction:column;gap:2px;min-width:0}.recent-class{font-size:14px;font-weight:600;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recent-date{font-size:12px;color:var(--color-text-muted)}.recent-right{display:flex;align-items:center;gap:10px;flex-shrink:0}.recent-pct{font-size:13px;font-weight:700;color:var(--color-accent)}.recent-badge{padding:4px 12px;border-radius:var(--radius-full);font-size:12px;font-weight:600}.recent-badge.open{background:var(--color-success-light);color:var(--color-success-text)}.recent-badge.closed{background:var(--color-neutral-light);color:var(--color-neutral-text)}.dashboard-card{animation:slideUp .25s ease}.recent-item{animation:slideUp .25s ease;animation-fill-mode:both}.recent-item:nth-child(1){animation-delay:.05s}.recent-item:nth-child(2){animation-delay:.1s}.recent-item:nth-child(3){animation-delay:.15s}.recent-item:nth-child(4){animation-delay:.2s}.recent-item:nth-child(5){animation-delay:.25s}@media(max-width:768px){.dashboard-home{padding:24px 20px}.dashboard-header h1{font-size:1.4rem}.dashboard-cards{grid-template-columns:repeat(2,1fr);gap:12px}.dashboard-card{padding:18px 16px}.card-number{font-size:1.8rem}.recent-header{padding:16px 20px}.recent-header h2{font-size:18px}.recent-item{padding:12px 20px}}@media(max-width:640px){.dashboard-home{padding:20px 16px}.dashboard-cards{grid-template-columns:1fr 1fr;gap:12px}.dashboard-card{padding:16px}.card-number{font-size:1.8rem}.recent-item{padding:12px 16px;flex-wrap:wrap}.recent-right{gap:8px}}@media(max-width:480px){.dashboard-home{padding:16px 12px}.dashboard-header h1{font-size:1.3rem}.dashboard-header p{font-size:14px}.dashboard-cards{grid-template-columns:1fr;gap:10px}.dashboard-card{flex-direction:row;align-items:center;gap:16px;padding:14px 16px}.card-icon{margin-bottom:0;font-size:28px}.card-number{font-size:1.6rem;margin-bottom:2px}.dashboard-card h3{font-size:12px}.card-sub{font-size:11px}.recent-item{flex-direction:column;align-items:flex-start;gap:8px}.recent-right{width:100%;justify-content:space-between}.recent-class{font-size:13px}.recent-date{font-size:11px}.recent-pct{font-size:12px}.recent-badge{font-size:11px;padding:3px 10px}}.dashboard-card.clickable:focus-visible,.recent-item.clickable:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.classes-container{padding:32px;max-width:960px;animation:fadeIn .2s ease}.classes-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px;flex-wrap:wrap;gap:16px}.classes-header h1{font-size:1.5rem;font-weight:700}.classes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.class-card{background:var(--color-surface);border-radius:var(--radius-lg);padding:22px;box-shadow:var(--shadow-sm);border:1px solid var(--color-border-soft);transition:box-shadow .2s ease,transform .2s ease,border-color .2s ease}.class-card.clickable{cursor:pointer}.class-card.clickable:hover{box-shadow:var(--shadow-md);transform:translateY(-3px);border-color:var(--color-accent-muted, #c7d2fe)}.class-card h3{font-size:1rem;font-weight:700;color:var(--color-text-primary);margin-bottom:8px}.class-description{font-size:13px;color:var(--color-text-secondary);margin-bottom:12px;line-height:1.5}.class-code{font-size:12px;color:var(--color-text-muted);display:flex;align-items:center;gap:6px}.class-code strong{font-family:Courier New,monospace;background:var(--color-surface-2);padding:2px 6px;border-radius:var(--radius-sm);color:var(--color-text-secondary);border:1px solid var(--color-border)}.error{color:var(--color-danger);font-size:14px;margin-bottom:16px}@media(max-width:640px){.classes-container{padding:20px 16px}.classes-grid{grid-template-columns:1fr}}.class-detail-page{padding:32px;max-width:800px;animation:fadeIn .2s ease}.class-header{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:16px;margin-bottom:32px;padding-bottom:24px;border-bottom:1px solid var(--color-border-soft)}.class-header-info h1{font-size:1.5rem;font-weight:700;color:var(--color-text-primary);margin-bottom:4px}.class-description{font-size:14px;color:var(--color-text-secondary);margin-bottom:8px;line-height:1.5}.class-meta{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--color-text-muted)}.class-code-badge{font-family:Courier New,monospace;background:var(--color-surface-2);padding:3px 8px;border-radius:var(--radius-sm);color:var(--color-text-secondary);border:1px solid var(--color-border);font-weight:600;letter-spacing:.5px}.class-header-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.class-actions{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.action-card{display:flex;align-items:center;gap:14px;padding:20px;background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border-soft);box-shadow:var(--shadow-sm);cursor:pointer;font-family:inherit;font-size:14px;font-weight:600;color:var(--color-text-primary);text-align:left;transition:box-shadow .2s ease,transform .2s ease,border-color .2s ease}.action-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--color-accent-muted, #c7d2fe)}.action-card-icon{font-size:22px;width:44px;height:44px;background:var(--color-accent-light);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;flex-shrink:0}.action-card-text{display:flex;flex-direction:column;gap:2px}.action-card-title{font-size:14px;font-weight:600;color:var(--color-text-primary)}.action-card-desc{font-size:12px;color:var(--color-text-muted);font-weight:400}@media(max-width:640px){.class-detail-page{padding:20px 16px}.class-header{flex-direction:column;align-items:flex-start}.class-header-actions{width:100%}.class-header-actions button{flex:1;justify-content:center}.class-actions{grid-template-columns:1fr}}.face-capture-overlay{position:fixed;inset:0;background-color:#000000e6;display:flex;justify-content:center;align-items:center;z-index:1100}.face-capture-container{background:#fff;border-radius:16px;padding:24px;max-width:700px;width:90%}.face-capture-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.face-capture-header h3{margin:0;color:#333}.capture-wrapper{position:relative;width:100%;border-radius:12px;overflow:hidden;background:#000;margin-bottom:20px}.capture-feed{width:100%;display:block}.capture-canvas{position:absolute;top:0;left:0;width:100%;height:100%}.countdown-overlay{position:absolute;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center}.countdown-number{font-size:120px;color:#fff;font-weight:700;text-shadow:0 0 20px rgba(0,0,0,.5);animation:pulse 1s infinite}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}.capture-instructions{position:absolute;bottom:20px;left:50%;transform:translate(-50%);background:#000000b3;color:#fff;padding:12px 24px;border-radius:30px;font-size:16px;white-space:nowrap}.capture-controls{display:flex;gap:12px;margin-bottom:12px}.capture-button{flex:1;padding:12px;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s}.capture-button.primary{background:#4caf50;color:#fff}.capture-button.primary:hover:not(:disabled){background:#45a049}.capture-button.primary:disabled{background:#ccc;cursor:not-allowed}.capture-button.secondary{background:#f0f0f0;color:#333}.capture-button.secondary:hover{background:#e0e0e0}.capture-hint{text-align:center;color:#666;font-size:14px;margin:0}.spinner{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #4CAF50;border-radius:50%;animation:spin 1s linear infinite}.students-page{padding:32px;max-width:960px;animation:fadeIn .2s ease}.students-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:28px;flex-wrap:wrap;gap:16px}.page-eyebrow{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-secondary);margin-bottom:4px}.students-header h1{font-size:1.5rem;font-weight:700;color:var(--color-text-primary);margin-bottom:4px}.page-subtitle{font-size:13px;color:var(--color-text-muted)}.header-actions{display:flex;gap:8px;flex-wrap:wrap}.header-actions .btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:100px}.header-actions .btn .material-symbols-rounded{font-size:18px}.empty-state{text-align:center;padding:60px 24px;background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);border:1px solid var(--color-border-soft);max-width:480px;margin:40px auto}.empty-icon{font-size:48px;margin-bottom:16px;display:block;opacity:.7}.empty-state p{color:var(--color-text-secondary);font-size:15px;line-height:1.6}.empty-state p:first-of-type{font-weight:500;color:var(--color-text-primary);margin-bottom:4px}.empty-state p:last-of-type{font-size:13px;color:var(--color-text-muted)}.loading-message{padding:48px;text-align:center;color:var(--color-text-muted);font-size:14px}.error-message{background:var(--color-danger-light);color:var(--color-danger-text);padding:12px 16px;border-radius:var(--radius-md);font-size:14px;margin-bottom:20px;border-left:3px solid var(--color-danger)}.students-list{display:flex;flex-direction:column;gap:8px;margin-top:16px}.student-card{display:flex;align-items:center;justify-content:space-between;background:var(--color-surface);border-radius:var(--radius-lg);padding:16px 20px;box-shadow:var(--shadow-sm);border:1px solid var(--color-border-soft);transition:all .2s ease}.student-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--color-accent-muted, #c7d2fe)}.student-info{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.student-details{display:flex;flex-direction:column;gap:2px;min-width:0}.student-name{font-size:15px;font-weight:600;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.student-id{font-size:12px;color:var(--color-text-muted)}.biometry-badge{font-size:20px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));background:var(--color-success-light);width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-full);flex-shrink:0}.student-card-actions{display:flex;gap:6px;opacity:0;transition:opacity .2s ease}.student-card:hover .student-card-actions{opacity:1}@media(hover:none){.student-card-actions{opacity:1}}.btn-icon{background:var(--color-surface-2);border:1px solid var(--color-border);width:36px;height:36px;border-radius:var(--radius-md);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;flex-shrink:0;color:var(--color-text-secondary)}.btn-icon:hover{background:var(--color-accent-light);border-color:var(--color-accent);color:var(--color-accent);transform:translateY(-1px)}.btn-icon-danger:hover{background:var(--color-danger-light);border-color:var(--color-danger);color:var(--color-danger)}.btn-icon .material-symbols-rounded{font-size:18px}.biometry-section{margin:24px 0 16px;padding:20px;background:var(--color-surface-2);border-radius:var(--radius-lg);border:1px solid var(--color-border-soft)}.biometry-section .modal-label{margin-top:0;margin-bottom:12px;display:flex;align-items:center;gap:8px}.btn-camera{width:100%;padding:14px;background:var(--color-surface);border:2px dashed var(--color-border);color:var(--color-text-secondary);transition:all .2s ease;display:flex;align-items:center;justify-content:center;gap:8px;font-weight:500}.btn-camera:hover{background:var(--color-accent-light);border-color:var(--color-accent);color:var(--color-accent);transform:translateY(-2px)}.btn-camera .material-symbols-rounded{font-size:20px}.captured-preview{position:relative;width:100%;border-radius:var(--radius-lg);overflow:hidden;border:2px solid var(--color-success);box-shadow:var(--shadow-md)}.preview-image{width:100%;max-height:240px;object-fit:cover;display:block;background:var(--color-surface)}.preview-actions{position:absolute;top:12px;right:12px;display:flex;gap:8px}.preview-actions .btn-icon{background:#ffffffe6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:none;box-shadow:var(--shadow-sm);width:40px;height:40px}.preview-actions .btn-icon:hover{background:#fff;transform:scale(1.1)}.preview-actions .btn-icon .material-symbols-rounded{font-size:20px}.success-badge{position:absolute;bottom:12px;left:12px;background:var(--color-success);color:#fff;padding:6px 16px;border-radius:var(--radius-full);font-size:13px;font-weight:600;display:flex;align-items:center;gap:6px;box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.success-badge:before{content:"✓";font-size:16px;font-weight:700}.modal-box{max-width:480px}.modal-box h3{font-size:1.2rem;margin-bottom:24px;color:var(--color-text-primary)}.modal-warning{background:var(--color-warning-light);color:var(--color-warning-text);padding:16px;border-radius:var(--radius-md);font-size:14px;line-height:1.6;margin-bottom:20px;border-left:3px solid var(--color-warning)}.modal-warning strong{color:var(--color-warning-text);font-weight:700}.modal-error{background:var(--color-danger-light);color:var(--color-danger-text);padding:12px 16px;border-radius:var(--radius-md);font-size:13px;margin:16px 0 0;border-left:3px solid var(--color-danger)}[title]{position:relative;cursor:help}[title]:hover:after{content:attr(title);position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:var(--color-text-primary);color:#fff;padding:4px 10px;border-radius:var(--radius-sm);font-size:11px;font-weight:500;white-space:nowrap;z-index:1000;margin-bottom:8px;box-shadow:var(--shadow-sm);pointer-events:none}@media(max-width:768px){.students-page{padding:24px 20px}.student-card{padding:14px 16px}.biometry-section{padding:16px}.preview-image{max-height:200px}.preview-actions{top:8px;right:8px}.preview-actions .btn-icon{width:36px;height:36px}}@media(max-width:640px){.students-page{padding:20px 16px}.students-header{flex-direction:column;align-items:stretch;gap:16px}.header-actions{width:100%;flex-direction:column}.header-actions .btn{width:100%;justify-content:center;padding:12px}.student-card{flex-direction:column;align-items:flex-start;gap:16px}.student-info{width:100%}.student-card-actions{width:100%;justify-content:flex-end;opacity:1}.biometry-badge{width:32px;height:32px;font-size:18px}.modal-box{padding:24px 20px}.modal-actions{flex-direction:column}.modal-actions .btn{width:100%;justify-content:center}.success-badge{bottom:8px;left:8px;padding:4px 12px;font-size:12px}[title]:hover:after{display:none}}@media(max-width:480px){.students-page{padding:16px 12px}.students-header h1{font-size:1.3rem}.student-name{font-size:14px}.student-id{font-size:11px}.biometry-section{padding:12px}.preview-image{max-height:160px}.empty-state{padding:40px 16px}.empty-icon{font-size:40px}.empty-state p{font-size:14px}.empty-state p:last-of-type{font-size:12px}}.student-card{animation:slideUp .3s ease;animation-fill-mode:both}.student-card:nth-child(1){animation-delay:.05s}.student-card:nth-child(2){animation-delay:.1s}.student-card:nth-child(3){animation-delay:.15s}.student-card:nth-child(4){animation-delay:.2s}.student-card:nth-child(5){animation-delay:.25s}.student-card:nth-child(6){animation-delay:.3s}.student-card:nth-child(7){animation-delay:.35s}.student-card:nth-child(8){animation-delay:.4s}.student-card:nth-child(9){animation-delay:.45s}.student-card:nth-child(10){animation-delay:.5s}.modal-box-copy{max-width:520px;width:100%}.copy-modal-subtitle{font-size:13px;color:var(--color-text-secondary);line-height:1.6;margin-bottom:20px}.copy-class-list{display:flex;flex-direction:column;gap:8px;max-height:280px;overflow-y:auto;margin-bottom:20px;padding-right:4px}.copy-class-list::-webkit-scrollbar{width:4px}.copy-class-list::-webkit-scrollbar-track{background:var(--color-border-soft);border-radius:4px}.copy-class-list::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}.copy-class-item{display:flex;align-items:center;gap:12px;width:100%;padding:14px 16px;background:var(--color-surface);border:1.5px solid var(--color-border-soft);border-radius:var(--radius-lg);cursor:pointer;transition:all .18s ease;text-align:left}.copy-class-item:hover{background:var(--color-sfhover);border-color:var(--color-accent);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.copy-class-item.selected{background:var(--color-accent-light);border-color:var(--color-accent);box-shadow:0 0 0 3px #2895481f}.copy-class-icon{font-size:22px;color:var(--color-text-muted);flex-shrink:0;transition:color .18s ease}.copy-class-item.selected .copy-class-icon{color:var(--color-accent)}.copy-class-info{display:flex;flex-direction:column;gap:2px;min-width:0}.copy-class-name{font-size:14px;font-weight:600;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.copy-class-desc{font-size:12px;color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.copy-empty-state{display:flex;flex-direction:column;align-items:center;gap:12px;padding:32px 16px;text-align:center;color:var(--color-text-muted);margin-bottom:20px}.copy-empty-state .material-symbols-rounded{font-size:40px;opacity:.5}.copy-empty-state p{font-size:14px}.copy-success-icon{display:flex;justify-content:center;margin-bottom:12px}.copy-success-icon .material-symbols-rounded{font-size:52px;color:var(--color-accent)}.modal-box .copy-success-icon+h3{text-align:center;margin-bottom:20px}.copy-result-stats{display:flex;justify-content:center;gap:32px;margin-bottom:16px}.copy-stat{display:flex;flex-direction:column;align-items:center;gap:4px}.copy-stat-number{font-size:2rem;font-weight:700;color:var(--color-accent);line-height:1}.copy-stat-skipped .copy-stat-number{color:var(--color-text-muted);font-size:1.5rem}.copy-stat-bio .copy-stat-number{color:var(--color-success);font-size:1.4rem}.copy-stat-label{font-size:12px;color:var(--color-text-secondary);text-align:center}.copy-result-desc{font-size:13px;color:var(--color-text-secondary);text-align:center;line-height:1.6;margin-bottom:24px}@media(max-width:640px){.copy-class-list{max-height:220px}.copy-result-stats{gap:20px}.copy-stat-number{font-size:1.6rem}}.face-camera-overlay{position:fixed;inset:0;background-color:#000000e6;display:flex;justify-content:center;align-items:center;z-index:1000}.face-camera-container{background:#fff;border-radius:16px;padding:24px;max-width:800px;width:90%;max-height:90vh;overflow-y:auto}.face-camera-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.face-camera-header h3{margin:0;color:#333}.close-button{background:none;border:none;font-size:24px;cursor:pointer;color:#666}.close-button:hover{color:#333}.camera-wrapper{position:relative;width:100%;border-radius:12px;overflow:hidden;background:#000;margin-bottom:20px}.camera-feed{width:100%;display:block}.face-detection-canvas{position:absolute;top:0;left:0;width:100%;height:100%}.detection-instructions{position:absolute;bottom:20px;left:50%;transform:translate(-50%);background:#000000b3;color:#fff;padding:8px 16px;border-radius:24px;font-size:14px;text-align:center;white-space:nowrap}.recognized-student{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#4caf50f2;color:#fff;padding:24px 48px;border-radius:16px;font-size:24px;font-weight:700;text-align:center;animation:popIn .3s ease;box-shadow:0 4px 20px #0000004d;z-index:10}.check-icon{font-size:48px;margin-bottom:8px}.recognized-name{font-size:28px;margin-bottom:4px}.recognized-status{font-size:18px;opacity:.9}@keyframes popIn{0%{transform:translate(-50%,-50%) scale(.5);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}.attendance-progress{margin:20px 0}.progress-bar{height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:8px}.progress-fill{height:100%;background-color:#4caf50;transition:width .3s ease}.progress-text{font-size:14px;color:#666}.students-list-compact{max-height:150px;overflow-y:auto;border:1px solid #eee;border-radius:8px;padding:12px;margin-bottom:20px}.students-list-compact h4{margin:0 0 8px;font-size:14px;color:#666}.students-grid{display:flex;flex-wrap:wrap;gap:8px}.student-chip{background-color:#f5f5f5;border-radius:20px;padding:4px 12px;font-size:13px;display:inline-flex;align-items:center;gap:6px;transition:all .2s}.student-chip.present{background-color:#e8f5e8;color:#2e7d32;border:1px solid #4CAF50}.present-check{color:#4caf50;font-weight:700}.camera-footer{display:flex;justify-content:center}.camera-button{padding:12px 24px;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.camera-button.secondary{background:#f0f0f0;color:#333}.camera-button.secondary:hover{background:#e0e0e0}.error-message{background:#ffebee;color:#c62828;padding:12px;border-radius:8px;margin-bottom:16px}.loading-message{text-align:center;padding:40px;color:#666}.spinner{width:40px;height:40px;margin:20px auto;border:4px solid #f3f3f3;border-top:4px solid #4CAF50;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-message{text-align:center;padding:40px;color:#666;display:flex;flex-direction:column;align-items:center;gap:16px}.warning-message{background:#fff3cd;color:#856404;padding:12px;border-radius:8px;margin-bottom:16px;text-align:center;border:1px solid #ffeeba}.student-chip.has-biometry{border-left:3px solid #4CAF50}.student-chip.no-biometry{opacity:.6;border-left:3px solid #ff9800}.biometry-icon{font-size:12px;margin-left:4px}.camera-switch-button{position:absolute;top:20px;right:20px;background:#000c;color:#fff;border:2px solid rgba(255,255,255,.3);border-radius:40px;padding:12px 20px;font-size:14px;font-weight:500;cursor:pointer;z-index:10;transition:all .3s ease;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:flex;align-items:center;gap:8px;box-shadow:0 4px 15px #0000004d}.camera-switch-button:hover{background:#000000f2;border-color:#fff9;transform:scale(1.05)}.camera-icon{font-size:18px}.camera-label{white-space:nowrap}@media(max-width:768px){.camera-switch-button{inset:15px auto auto 50%;transform:translate(-50%);padding:12px 25px;font-size:16px;background:#000000e6;border-width:2px;box-shadow:0 4px 15px #00000080;z-index:20}.camera-switch-button:hover{transform:translate(-50%) scale(1.05)}.detection-instructions{top:80px;bottom:auto;padding:0 40px}.face-detected-indicator{top:80px}}.attendance-container{padding:32px;max-width:900px;animation:fadeIn .2s ease}.attendance-empty{text-align:center;padding:60px 24px;background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);border:1px solid var(--color-border-soft);max-width:480px;margin:0 auto}.attendance-empty-icon{font-size:48px;margin-bottom:16px}.attendance-empty h2{font-size:1.2rem;font-weight:700;margin-bottom:8px}.attendance-empty p{color:var(--color-text-secondary);font-size:14px;margin-bottom:24px}.attendance-loading{padding:48px;text-align:center;color:var(--color-text-muted);font-size:14px}.attendance-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;gap:16px;flex-wrap:wrap}.attendance-eyebrow{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}.attendance-header h2{font-size:1.3rem;font-weight:700;margin-bottom:4px}.attendance-subtitle{font-size:13px;color:var(--color-text-muted)}.attendance-header-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.attendance-counter{font-size:13px;font-weight:700;color:var(--color-accent);background:var(--color-accent-light);padding:6px 14px;border-radius:var(--radius-full)}.attendance-table-wrapper{background:var(--color-surface);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid var(--color-border-soft)}.attendance-table{width:100%;border-collapse:collapse}.attendance-table thead{background:var(--color-surface)}.attendance-table th,.attendance-table td{padding:13px 18px;text-align:left;font-size:14px}.attendance-table th{font-size:12px;font-weight:700;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--color-border)}.attendance-table tbody tr{border-bottom:1px solid var(--color-border-soft);transition:background .12s ease}.attendance-table tbody tr:last-child{border-bottom:none}.attendance-table tbody tr:nth-child(odd){background-color:var(--color-surface-2)}.attendance-table tbody tr:nth-child(2n){background-color:var(--color-surface)}.attendance-table tbody tr:hover{background-color:var(--color-sfhover)}.manual-tag{margin-left:6px;font-size:10px;font-weight:600;color:var(--color-warning-text);background:var(--color-warning-light);padding:2px 6px;border-radius:var(--radius-full)}.override-select{padding:6px 10px;border:1.5px solid var(--color-border);border-radius:var(--radius-sm);font-family:inherit;font-size:13px;background:var(--color-surface);cursor:pointer;color:var(--color-text-primary);transition:border-color .12s ease;outline:none}.override-select:hover:not(:disabled){border-color:var(--color-accent)}.override-select:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #4f46e51f}.override-select:disabled{opacity:.5;cursor:wait}.td-readonly{font-size:13px;color:var(--color-text-muted)}.attendance-empty-records{padding:48px;text-align:center;color:var(--color-text-muted);font-size:14px}.attendance-error{background:var(--color-danger-light);color:var(--color-danger-text);padding:12px 16px;border-radius:var(--radius-md);font-size:14px;margin-bottom:20px;border-left:3px solid var(--color-danger)}@media(max-width:640px){.attendance-container{padding:20px 16px}.attendance-header{flex-direction:column}.attendance-header-right{width:100%;justify-content:space-between}.attendance-table th,.attendance-table td{padding:10px 12px;font-size:13px}.override-select{padding:4px 6px;font-size:12px}}.history-container{padding:32px;max-width:900px;animation:fadeIn .2s ease}.history-loading{padding:48px;text-align:center;color:var(--color-text-muted);font-size:14px}.history-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:28px;gap:16px;flex-wrap:wrap}.history-class-name{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px;color:var(--color-accent)}.history-header h1{font-size:1.5rem;font-weight:700;margin-bottom:2px}.history-subtitle{font-size:13px;color:var(--color-text-muted)}.history-header-actions{display:flex;align-items:center;gap:10px;flex-shrink:0;flex-wrap:wrap}.history-export-btn{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:9px 15px;white-space:nowrap}.history-error{background:var(--color-danger-light);color:var(--color-danger-text);padding:12px 16px;border-radius:var(--radius-md);font-size:14px;margin-bottom:20px;border-left:3px solid var(--color-danger)}.history-list{display:flex;flex-direction:column;gap:8px}.history-card{display:flex;align-items:center;gap:20px;background:var(--color-surface);border-radius:var(--radius-lg);padding:18px 22px;box-shadow:var(--shadow-sm);border:1px solid var(--color-border-soft);cursor:pointer;transition:box-shadow .2s ease,transform .15s ease,border-color .2s ease}.history-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--color-accent)}.history-card-left{min-width:130px}.history-date{font-size:14px;font-weight:600;color:var(--color-text-primary);text-transform:capitalize}.history-time{font-size:12px;color:var(--color-text-muted);margin-top:2px}.history-card-stats{flex:1;display:flex;align-items:center;gap:20px}.stat{display:flex;flex-direction:column;align-items:center;min-width:48px}.stat-value{font-size:18px;font-weight:700;line-height:1}.stat-label{font-size:11px;color:var(--color-text-muted);margin-top:2px}.stat-present .stat-value{color:var(--color-success)}.stat-absent .stat-value{color:var(--color-danger)}.stat-late .stat-value{color:var(--color-warning)}.stat-pct{font-size:18px;font-weight:700;color:var(--color-accent);margin-left:auto;min-width:46px;text-align:right}.stat-no-summary{color:var(--color-border);font-size:14px}.history-card-right{display:flex;align-items:center;gap:10px}.history-arrow{color:var(--color-text-muted);font-size:16px}.history-badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:var(--radius-full);font-size:11px;font-weight:700;letter-spacing:.04em;white-space:nowrap}.badge-closed{background:#f1f5f9;color:#64748b}.history-empty{text-align:center;padding:60px 24px;background:var(--color-surface);border-radius:var(--radius-xl);border:1.5px dashed var(--color-border-soft);display:flex;flex-direction:column;align-items:center;gap:16px}.history-empty p{color:var(--color-text-muted);font-size:15px}.export-modal-overlay{position:fixed;inset:0;background:#0f2a1873;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px;animation:fadeIn .15s ease}.export-modal-box{background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:0 24px 64px #00000038;width:100%;max-width:480px;display:flex;flex-direction:column;animation:slideUp .2s ease;overflow:hidden}.export-modal-header{display:flex;align-items:center;gap:14px;padding:20px 22px 16px;border-bottom:1px solid var(--color-border-soft)}.export-modal-icon{width:44px;height:44px;border-radius:var(--radius-lg);background:var(--color-accent-light, #eef2ff);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--color-accent)}.export-modal-icon .material-symbols-rounded{font-size:24px}.export-modal-header h2{font-size:1rem;font-weight:700;margin-bottom:2px}.export-modal-subtitle{font-size:12px;color:var(--color-text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.export-modal-close{margin-left:auto;background:none;border:none;cursor:pointer;color:var(--color-text-muted);padding:4px;border-radius:var(--radius-sm);display:flex;align-items:center;transition:background .12s,color .12s}.export-modal-close:hover{background:var(--color-border-soft);color:var(--color-text-primary)}.export-modal-body{padding:20px 22px}.export-modal-loading,.export-modal-empty{text-align:center;color:var(--color-text-muted);font-size:14px;padding:24px 0}.export-modal-empty{display:flex;flex-direction:column;align-items:center;gap:10px}.export-modal-empty .material-symbols-rounded{font-size:40px;opacity:.4}.export-modal-error{background:var(--color-danger-light);color:var(--color-danger-text);padding:12px 14px;border-radius:var(--radius-md);font-size:13px;border-left:3px solid var(--color-danger)}.export-modal-desc{font-size:13px;color:var(--color-text-secondary);margin-bottom:16px;line-height:1.5}.export-month-list{display:flex;flex-direction:column;gap:6px;max-height:260px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--color-border) transparent;margin-bottom:16px}.export-month-item{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:var(--radius-md);border:1.5px solid var(--color-border-soft);background:var(--color-surface);cursor:pointer;text-align:left;font-family:inherit;font-size:14px;font-weight:500;color:var(--color-text-primary);transition:border-color .12s,background .12s}.export-month-item .material-symbols-rounded{font-size:20px;color:var(--color-text-muted);flex-shrink:0}.export-month-item:hover{border-color:var(--color-accent);background:var(--color-sfhover)}.export-month-item.selected{border-color:var(--color-accent);background:var(--color-accent-light, #eef2ff)}.export-month-item.selected .material-symbols-rounded{color:var(--color-accent)}.export-modal-info{display:flex;align-items:flex-start;gap:8px;background:var(--color-surface-2);border-radius:var(--radius-md);padding:10px 12px;font-size:12px;color:var(--color-text-secondary);line-height:1.5}.export-modal-info .material-symbols-rounded{font-size:16px;flex-shrink:0;margin-top:1px;color:var(--color-accent)}.export-modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:14px 22px 18px;border-top:1px solid var(--color-border-soft)}.export-btn-confirm{display:inline-flex;align-items:center;gap:7px;font-size:14px}.export-btn-confirm .material-symbols-rounded{font-size:18px}@media(max-width:640px){.history-container{padding:20px 16px}.history-card{flex-wrap:wrap;gap:12px;padding:14px 16px}.history-card-left{min-width:0;flex:1}.history-card-right{margin-left:auto}.history-card-stats{width:100%;order:3;gap:16px}.stat-pct{margin-left:0}.history-header-actions{width:100%;justify-content:space-between}.export-modal-box{max-width:100%;border-radius:var(--radius-xl) var(--radius-xl) 0 0}.export-modal-overlay{align-items:flex-end;padding:0}}.sd-container{padding:32px;max-width:860px;animation:fadeIn .2s ease}.sd-loading{padding:48px;text-align:center;color:var(--color-text-muted);font-size:14px}.sd-back{display:inline-flex;align-items:center;gap:6px;background:none;border:none;color:var(--color-accent);font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;padding:0;margin-bottom:24px;transition:opacity .12s ease}.sd-back:hover{opacity:.7}.sd-header{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:16px;margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid var(--color-border-soft)}.sd-class-name{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}.sd-header h1{font-size:1.3rem;font-weight:700;margin-bottom:4px}.sd-date{font-size:13px;color:var(--color-text-secondary);text-transform:capitalize}.sd-summary{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:24px}.sd-stat{background:var(--color-surface);border-radius:var(--radius-md);padding:14px 20px;box-shadow:var(--shadow-sm);border:1px solid var(--color-border-soft);display:flex;flex-direction:column;align-items:center;min-width:88px}.sd-stat-value{font-size:26px;font-weight:700;line-height:1}.sd-stat-label{font-size:11px;color:var(--color-text-muted);margin-top:4px;text-align:center}.sd-stat-present .sd-stat-value{color:var(--color-success)}.sd-stat-absent .sd-stat-value{color:var(--color-danger)}.sd-stat-late .sd-stat-value{color:var(--color-warning)}.sd-stat-excused .sd-stat-value{color:var(--color-text-muted)}.sd-stat-pct .sd-stat-value{color:var(--color-accent)}.sd-table-wrapper{background:var(--color-surface);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid var(--color-border-soft)}.sd-empty{padding:48px;text-align:center;color:var(--color-text-muted);font-size:14px}.sd-table{width:100%;border-collapse:collapse}.sd-table thead{background:var(--color-surface)}.sd-table th,.sd-table td{padding:12px 18px;text-align:left;font-size:14px}.sd-table th{font-size:12px;font-weight:700;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--color-border)}.sd-table tbody tr{border-bottom:1px solid var(--color-border-soft);transition:background .12s ease}.sd-table tbody tr:last-child{border-bottom:none}.sd-table tbody tr:nth-child(odd){background-color:var(--color-surface-2)}.sd-table tbody tr:nth-child(2n){background-color:var(--color-surface)}.sd-table tbody tr:hover{background:var(--color-sfhover)}.td-index{color:var(--color-text-muted);font-size:13px;width:40px}.td-name{font-weight:500;color:var(--color-text-primary)}.td-manual{font-size:13px}.manual-yes{color:var(--color-warning);font-weight:600}.manual-no{color:var(--color-border)}.row-present{background:#f0fdf4}.row-absent{background:#fff5f5}.row-late{background:#fffbeb}.row-excused{background:var(--color-surface)}.sd-open-notice{margin-top:20px;background:var(--color-accent-light);border:1px solid var(--color-accent-muted, #c7d2fe);border-radius:var(--radius-lg);padding:16px 22px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.sd-open-notice p{color:var(--color-accent);font-size:14px;font-weight:500}@media(max-width:640px){.sd-container{padding:20px 16px}.sd-summary{gap:8px}.sd-stat{min-width:76px;padding:12px 14px}.sd-stat-value{font-size:22px}.sd-table th,.sd-table td{padding:10px 12px;font-size:13px}.td-index{display:none}}.sd-header-right{display:flex;align-items:center;gap:10px;flex-shrink:0}.sd-export-btn{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:8px 14px;white-space:nowrap}.status-present{background:#dcfce7;color:#166534}.status-absent{background:#fee2e2;color:#991b1b}.status-late{background:#fef3c7;color:#92400e}.sd-badge{display:inline-flex;align-items:center;padding:5px 12px;border-radius:var(--radius-full);font-size:11px;font-weight:700;letter-spacing:.05em;white-space:nowrap}.badge-open{background:#dcfce7;color:#166534}.badge-closed{background:var(--color-neutral-light);color:var(--color-neutral-text)}.sd-error{background:var(--color-danger-light);color:var(--color-danger-text);padding:16px 20px;border-radius:var(--radius-lg);border-left:3px solid var(--color-danger);font-size:14px}@media(max-width:640px){.sd-header-right{width:100%;justify-content:space-between}.sd-export-btn{padding:8px 12px;font-size:12px}}.status-card{background:#fff;border-radius:20px;padding:3rem;text-align:center;max-width:500px;box-shadow:0 20px 60px #0000004d}.success-icon{background:#4caf50;color:#fff}.cancel-icon{background:#f44336;color:#fff}.status-button{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:1rem 2rem;border-radius:8px;font-size:1.1rem;font-weight:600;cursor:pointer;margin-top:1rem;transition:transform .2s}.status-button:hover{transform:translateY(-2px)}.status-button.secondary{background:#f8f9fa;color:#667eea;border:2px solid #667eea;margin-left:1rem}.status-actions{display:flex;gap:1rem;justify-content:center;margin-top:2rem}@media(max-width:768px){.status-card{padding:2rem}.status-actions{flex-direction:column}.status-button.secondary{margin-left:0}}.billing-status-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem}.status-card{background:#fff;border-radius:20px;padding:3rem;text-align:center;max-width:500px;width:100%;box-shadow:0 20px 60px #0000004d;animation:slideUp .5s ease}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.success-icon,.cancel-icon{width:80px;height:80px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:40px;margin:0 auto 2rem}.success-icon{background:#10b981;color:#fff;box-shadow:0 10px 20px #10b9814d}.cancel-icon{background:#ef4444;color:#fff;box-shadow:0 10px 20px #ef44444d}.status-card h1{color:#333;margin-bottom:1rem;font-size:2rem}.status-card p{color:#666;margin-bottom:.5rem;line-height:1.6}.redirect-message{color:#999;font-size:.9rem;margin:1.5rem 0}.status-actions{display:flex;gap:1rem;justify-content:center;margin:2rem 0}.status-button{padding:.75rem 1.5rem;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s ease;border:none}.status-button.primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.status-button.primary:hover{transform:translateY(-2px);box-shadow:0 10px 20px #667eea4d}.status-button.secondary{background:#f3f4f6;color:#667eea;border:2px solid #667eea}.status-button.secondary:hover{background:#e5e7eb}.help-section{margin-top:2rem;padding-top:2rem;border-top:1px solid #e5e7eb}.help-section p{color:#999;font-size:.9rem;margin-bottom:.5rem}.help-link{color:#667eea;text-decoration:none;font-weight:600;transition:color .3s ease}.help-link:hover{color:#764ba2;text-decoration:underline}@media(max-width:768px){.billing-status-page{padding:1rem}.status-card{padding:2rem}.status-card h1{font-size:1.5rem}.status-actions{flex-direction:column}.status-button{width:100%}}.my-plan-container{max-width:1200px;margin:0 auto;padding:2rem 1.5rem;min-height:calc(100vh - 100px)}.my-plan-container.canceled-view{background:linear-gradient(135deg,#fef2f2,#fff)}.my-plan-container.no-subscription-view{background:linear-gradient(135deg,#f0f9ff,#fff)}.my-plan-container.active-view{background:linear-gradient(135deg,#f0fdf4,#fff)}.my-plan-header{margin-bottom:2.5rem;text-align:left}.my-plan-header h1{font-size:2.2rem;font-weight:700;color:#1e293b;margin-bottom:.5rem;letter-spacing:-.02em}.my-plan-header p{font-size:1.1rem;color:#64748b}.canceled-hero{text-align:center;margin-bottom:3rem;animation:fadeInDown .5s ease}.canceled-icon-wrapper{width:100px;height:100px;background:#fee2e2;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 1.5rem;border:4px solid #fecaca}.canceled-icon-wrapper .material-symbols-rounded.huge{font-size:50px;color:#ef4444}.canceled-hero h1{font-size:2.5rem;font-weight:700;color:#1e293b;margin-bottom:1rem}.canceled-description{font-size:1.2rem;color:#475569;max-width:600px;margin:0 auto;line-height:1.6}.no-plan-hero{text-align:center;margin-bottom:3rem;animation:fadeInDown .5s ease}.no-plan-icon-wrapper{width:100px;height:100px;background:#e0f2fe;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 1.5rem;border:4px solid #bae6fd}.no-plan-icon-wrapper .material-symbols-rounded.huge{font-size:50px;color:#0284c7}.no-plan-hero h1{font-size:2.5rem;font-weight:700;color:#1e293b;margin-bottom:1rem}.no-plan-description{font-size:1.2rem;color:#475569;max-width:600px;margin:0 auto;line-height:1.6}.my-plan-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:500px;gap:1.5rem}.loading-spinner{width:60px;height:60px;border:4px solid #e2e8f0;border-top-color:#3b82f6;border-radius:50%;animation:spin 1s linear infinite}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.my-plan-error{background:#fee2e2;border:1px solid #ef4444;border-radius:16px;padding:1rem 1.5rem;margin-bottom:2rem;display:flex;align-items:center;gap:1rem;position:relative;animation:slideIn .3s ease}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.my-plan-error .material-symbols-rounded{color:#ef4444;font-size:1.5rem}.my-plan-error p{color:#991b1b;flex:1;margin:0;font-weight:500}.error-close{background:none;border:none;color:#991b1b;font-size:1.2rem;cursor:pointer;padding:.25rem .5rem;opacity:.7;transition:all .2s;border-radius:6px}.error-close:hover{opacity:1;background:#0000000d}.plans-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:2rem;margin:3rem 0;animation:fadeInUp .5s ease}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.plan-card{background:#fff;border-radius:24px;padding:2rem;box-shadow:0 10px 25px -5px #0000000d,0 8px 10px -6px #00000005;border:1px solid #e2e8f0;transition:all .3s ease;position:relative;overflow:hidden;display:flex;flex-direction:column}.plan-card:hover{transform:translateY(-5px);box-shadow:0 20px 30px -10px #0000001a;border-color:#94a3b8}.plan-card.popular{border:2px solid #3b82f6;box-shadow:0 20px 30px -10px #3b82f633}.plan-card.selected{border:3px solid #3b82f6;background:#f8fafc;transform:scale(1.02)}.popular-badge{position:absolute;top:12px;right:-30px;background:#3b82f6;color:#fff;padding:.3rem 2.5rem;font-size:.8rem;font-weight:600;transform:rotate(45deg);box-shadow:0 2px 4px #0000001a}.plan-card-header{text-align:center;padding-bottom:1.5rem;border-bottom:1px solid #e2e8f0;margin-bottom:1.5rem}.plan-card-header h3{font-size:1.5rem;font-weight:600;color:#1e293b;margin-bottom:1rem}.plan-card-price{font-size:2.2rem;font-weight:700;color:#3b82f6;margin-bottom:.5rem}.plan-card-savings{color:#10b981;font-weight:600;font-size:.95rem;background:#d1fae5;display:inline-block;padding:.2rem 1rem;border-radius:9999px}.plan-card-body{flex:1;margin-bottom:1.5rem}.plan-card-description{color:#475569;margin-bottom:1.5rem;text-align:center;font-size:.95rem}.plan-features{list-style:none;padding:0;margin:0}.plan-features li{display:flex;align-items:center;gap:.75rem;padding:.5rem 0;color:#334155;font-size:.95rem}.plan-features .material-symbols-rounded.check{color:#10b981;font-size:1.2rem}.plan-card-footer{margin-top:auto;padding-top:1rem}.subscribe-button{width:100%;padding:1rem;border-radius:12px;font-size:1rem;font-weight:600;cursor:pointer;border:none;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:.5rem}.subscribe-button.primary{background:#3b82f6;color:#fff;box-shadow:0 4px 6px -1px #3b82f633}.subscribe-button.primary:hover:not(:disabled){background:#2563eb;transform:translateY(-2px);box-shadow:0 8px 12px -2px #3b82f64d}.subscribe-button.secondary{background:#fff;color:#1e293b;border:2px solid #e2e8f0}.subscribe-button.secondary:hover:not(:disabled){border-color:#3b82f6;color:#3b82f6}.subscribe-button:disabled{opacity:.5;cursor:not-allowed}.plan-details-card{background:#fff;border-radius:32px;overflow:hidden;box-shadow:0 20px 35px -10px #0000001a;border:1px solid #e2e8f0;animation:fadeInUp .5s ease}.plan-status-badge{background:#f8fafc;padding:1rem 2rem;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;gap:.75rem;font-weight:500;color:#475569}.status-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.status-dot.active{background:#10b981;box-shadow:0 0 0 2px #10b98133;animation:pulse 2s infinite}@keyframes pulse{0%{box-shadow:0 0 #10b98166}70%{box-shadow:0 0 0 8px #10b98100}to{box-shadow:0 0 #10b98100}}.status-dot.past_due{background:#f59e0b}.status-dot.canceled{background:#ef4444}.plan-details-content{padding:2.5rem}.plan-name-section{margin-bottom:2.5rem;padding-bottom:2rem;border-bottom:1px solid #e2e8f0;text-align:center}.plan-name-section h2{font-size:2rem;font-weight:700;color:#1e293b;margin-bottom:1rem}.plan-price{font-size:2.5rem;font-weight:800;color:#3b82f6;margin-bottom:.5rem}.plan-savings{color:#10b981;font-weight:600;font-size:1rem;background:#d1fae5;display:inline-block;padding:.3rem 1.5rem;border-radius:9999px}.plan-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:2rem;margin-bottom:2.5rem}.info-item{background:#f8fafc;padding:1.2rem;border-radius:16px;border:1px solid #e2e8f0;transition:all .2s}.info-item:hover{border-color:#94a3b8;box-shadow:0 4px 6px -1px #0000000d}.info-label{font-size:.85rem;color:#64748b;text-transform:uppercase;letter-spacing:.05em;display:block;margin-bottom:.5rem}.info-value{font-size:1.2rem;font-weight:600;color:#1e293b;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.status-value{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.cancel-scheduled{font-size:.8rem;font-weight:400;color:#f59e0b;background:#fef3c7;padding:.25rem .75rem;border-radius:20px}.info-note{font-size:.8rem;font-weight:400;color:#64748b}.payment-method-note{font-size:.8rem;font-weight:400;color:#64748b;margin-left:.5rem}.plan-actions{display:flex;flex-direction:column;gap:1rem;margin-top:2rem}.update-payment-button,.change-plan-button,.cancel-plan-button,.reactivate-button{width:100%;padding:1rem;border-radius:12px;font-size:1rem;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.75rem;transition:all .2s;border:none}.update-payment-button{background:#3b82f6;color:#fff}.update-payment-button:hover{background:#2563eb;transform:translateY(-2px);box-shadow:0 4px 6px -1px #3b82f64d}.change-plan-button{background:#fff;color:#1e293b;border:2px solid #e2e8f0}.change-plan-button:hover{border-color:#3b82f6;color:#3b82f6}.cancel-plan-button{background:transparent;color:#ef4444;border:2px solid #fee2e2;margin-top:.5rem}.cancel-plan-button:hover{background:#fee2e2}.cancel-confirmation{background:#fee2e2;border-radius:16px;padding:1.5rem;margin-top:1rem;animation:slideDown .3s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.cancel-confirmation p{color:#991b1b;margin-bottom:1.5rem;font-weight:500;text-align:center}.cancel-actions{display:flex;gap:1rem}.confirm-cancel-button{flex:1;background:#ef4444;color:#fff;border:none;padding:.875rem;border-radius:10px;font-weight:600;cursor:pointer;transition:all .2s}.confirm-cancel-button:hover:not(:disabled){background:#dc2626;transform:translateY(-1px)}.confirm-cancel-button:disabled{opacity:.5;cursor:not-allowed}.keep-plan-button{flex:1;background:#fff;color:#1e293b;border:1px solid #e2e8f0;padding:.875rem;border-radius:10px;font-weight:600;cursor:pointer;transition:all .2s}.keep-plan-button:hover{background:#f8fafc;border-color:#94a3b8}.reactivate-section{background:#f0f9ff;border-radius:16px;padding:2rem;text-align:center;border:2px solid #bae6fd}.reactivate-section p{color:#0369a1;margin-bottom:1.5rem;font-weight:600;font-size:1.1rem}.reactivate-button{background:#0ea5e9;color:#fff;border:none;max-width:300px;margin:0 auto}.reactivate-button:hover:not(:disabled){background:#0284c7;transform:translateY(-2px);box-shadow:0 4px 6px -1px #0ea5e94d}.plan-footer-note,.canceled-footer-note{background:#f8fafc;padding:1.2rem 2rem;border-top:1px solid #e2e8f0;display:flex;align-items:flex-start;gap:1rem}.plan-footer-note .material-symbols-rounded,.canceled-footer-note .material-symbols-rounded{color:#64748b;font-size:1.3rem;flex-shrink:0}.plan-footer-note p,.canceled-footer-note p{color:#475569;font-size:.95rem;line-height:1.5;margin:0}.canceled-footer-note{background:#fef2f2;border-top:1px solid #fecaca}.canceled-footer-note .material-symbols-rounded{color:#ef4444}.canceled-footer-note p{color:#991b1b}@media(max-width:768px){.my-plan-container{padding:1rem}.my-plan-header h1{font-size:1.8rem}.canceled-hero h1,.no-plan-hero h1{font-size:2rem}.canceled-description,.no-plan-description{font-size:1rem;padding:0 1rem}.plans-grid{grid-template-columns:1fr;gap:1.5rem}.plan-card{padding:1.5rem}.plan-card-price{font-size:1.8rem}.plan-details-content{padding:1.5rem}.plan-name-section h2{font-size:1.6rem}.plan-price{font-size:2rem}.plan-info-grid{grid-template-columns:1fr;gap:1rem}.cancel-actions{flex-direction:column}.plan-footer-note,.canceled-footer-note{padding:1rem;flex-direction:column;align-items:center;text-align:center}}@media(max-width:480px){.canceled-icon-wrapper,.no-plan-icon-wrapper{width:80px;height:80px}.canceled-icon-wrapper .material-symbols-rounded.huge,.no-plan-icon-wrapper .material-symbols-rounded.huge{font-size:40px}.plan-card-header h3{font-size:1.3rem}.popular-badge{font-size:.7rem;padding:.2rem 2rem}}:root{--color-bg: #e2e2e2;--color-surface: #ffffff;--color-surface-2: #d5dac2;--color-sfhover: #d7e2a7;--color-border: #289548;--color-border-soft: #edf0f4;--color-text-primary: #0f172a;--color-text-secondary: #64748b;--color-text-muted: #94a3b8;--color-accent: #289548;--color-accent-hover: #1e6e36;--color-accent-light: #eef2ff;--color-success: #1067b9;--color-success-light: #d1fae5;--color-success-text: #065f46;--color-danger: #ef4444;--color-danger-hover: #dc2626;--color-danger-light: #f0b6b6;--color-danger-text: #991b1b;--color-warning: #f59e0b;--color-warning-light: #fef3c7;--color-warning-text: #92400e;--color-neutral-light: #f1f5f9;--color-neutral-text: #475569;--sidebar-bg: #0f2a18;--sidebar-hover: rgba(255,255,255,.06);--sidebar-active: rgba(70, 229, 131, .22);--sidebar-text: #94a3b8;--sidebar-text-active: #e2e8f0;--sidebar-width: 240px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 4px 16px rgba(0,0,0,.07), 0 1px 4px rgba(0,0,0,.04);--shadow-lg: 0 12px 36px rgba(0,0,0,.1);--shadow-xl: 0 24px 60px rgba(0,0,0,.14)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{-webkit-font-smoothing:antialiased;scroll-behavior:smooth}body{font-family:DM Sans,system-ui,sans-serif;background:var(--color-bg);color:var(--color-text-primary);font-size:15px;line-height:1.6}.btn{display:inline-flex;align-items:center;gap:6px;padding:10px 18px;border-radius:var(--radius-md);font-family:inherit;font-size:14px;font-weight:600;border:none;cursor:pointer;white-space:nowrap;transition:background-color .12s ease,box-shadow .12s ease,transform .12s ease,opacity .12s ease}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none!important}.btn-primary{background:var(--color-accent);color:#fff;box-shadow:0 2px 8px #4f46e547}.btn-primary:hover:not(:disabled){background:var(--color-accent-hover);box-shadow:0 4px 14px #4f46e561;transform:translateY(-1px)}.btn-secondary{background:var(--color-surface);color:var(--color-text-primary);border:1px solid var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-2)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--color-danger-hover);transform:translateY(-1px)}.btn-danger-outline{background:var(--color-surface);color:var(--color-danger);border:1.5px solid var(--color-danger)}.btn-danger-outline:hover:not(:disabled){background:var(--color-danger-light)}.btn-ghost{background:transparent;color:var(--color-text-secondary);border:none}.btn-ghost:hover{color:var(--color-text-primary);background:var(--color-surface-2)}.btn-sm{padding:6px 12px;font-size:13px}.btn-lg{padding:13px 24px;font-size:15px}.modal-overlay{position:fixed;inset:0;background:#0f172a80;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:200;padding:16px;animation:fadeIn .15s ease}.modal-box{background:var(--color-surface);border-radius:var(--radius-xl);padding:32px;width:100%;max-width:420px;box-shadow:var(--shadow-xl);animation:slideUp .2s ease}.modal-box h3{font-size:1.1rem;font-weight:700;margin-bottom:20px}.modal-label{display:block;font-size:13px;font-weight:600;color:var(--color-text-secondary);margin-bottom:6px;margin-top:16px}.modal-label:first-of-type{margin-top:0}.modal-input{width:100%;padding:11px 14px;border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-family:inherit;font-size:14px;color:var(--color-text-primary);background:var(--color-surface);outline:none;box-sizing:border-box;transition:border-color .12s ease,box-shadow .12s ease}.modal-input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #4f46e51f}.modal-warning{font-size:14px;color:var(--color-text-secondary);line-height:1.55;margin-bottom:20px}.modal-error{background:var(--color-danger-light);color:var(--color-danger-text);padding:10px 14px;border-radius:var(--radius-sm);font-size:13px;margin-top:12px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.status-badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:var(--radius-full);font-size:12px;font-weight:600}.status-present{background:var(--color-success-light);color:var(--color-success-text)}.status-absent{background:var(--color-danger-light);color:var(--color-danger-text)}.status-late{background:var(--color-warning-light);color:var(--color-warning-text)}.status-excused{background:var(--color-neutral-light);color:var(--color-neutral-text)}.badge-open{background:var(--color-success-light);color:var(--color-success-text);padding:4px 12px;border-radius:var(--radius-full);font-size:12px;font-weight:600}.badge-closed{background:var(--color-neutral-light);color:var(--color-neutral-text);padding:4px 12px;border-radius:var(--radius-full);font-size:12px;font-weight:600}.alert-error{background:var(--color-danger-light);color:var(--color-danger-text);padding:12px 16px;border-radius:var(--radius-md);font-size:14px;border-left:3px solid var(--color-danger)}.page-container{padding:32px;max-width:960px}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:32px;flex-wrap:wrap;gap:16px}.page-header h1{font-size:1.5rem;font-weight:700}.page-subtitle{font-size:13px;color:var(--color-text-muted);margin-top:2px}.empty-state{text-align:center;padding:64px 24px;background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);color:var(--color-text-secondary);border:1px solid var(--color-border-soft)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:768px){.page-container{padding:20px 16px}.page-header{margin-bottom:20px}.modal-box{padding:24px;border-radius:var(--radius-lg)}}
