:root{color-scheme:light dark;--green: #16a34a;--green-bg: #dcfce7;--red: #dc2626;--red-bg: #fee2e2;--amber: #b45309;--amber-bg: #fef3c7;--blue: #1d4ed8;--blue-bg: #dbeafe;--gray: #6b7280;--gray-bg: #f3f4f6;--purple: #7c3aed;--border: #e5e7eb;font-family:system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0;background:#edf5f4;color:#111827}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-card{display:flex;flex-direction:column;gap:12px;width:280px}.login-card h1{margin:0 0 8px;font-size:1.4rem;text-align:center}.login-card input{padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:1rem}.login-card form{display:flex;flex-direction:column;gap:12px}.error{color:var(--red);font-size:.9rem;margin:0}.login-divider{display:flex;align-items:center;gap:8px;color:var(--gray);font-size:.85rem}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--border)}.google-signin-btn{display:inline-flex;align-items:center;justify-content:center;align-self:center;gap:12px;height:40px;padding:0 12px;background:#fff;border:1px solid #747775;border-radius:4px;color:#1f1f1f;font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,Arial,sans-serif;font-size:14px;font-weight:500;text-decoration:none;cursor:pointer;transition:background-color .2s,box-shadow .2s}.google-signin-btn:hover{background:#f8f9fa;box-shadow:0 1px 2px #3c40434d,0 1px 3px 1px #3c404326}.app{max-width:900px;margin:0 auto;padding:24px 16px 64px}.app-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:16px}.app-header h1{font-size:1.4rem;margin:0}.header-controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.signed-in-as{font-size:.8rem;color:var(--gray)}.effective-date-control{display:flex;align-items:center;gap:8px;font-size:.85rem;color:var(--gray)}.effective-date-control input{padding:5px 8px;border:1px solid var(--border);border-radius:6px;font-size:.85rem}.effective-date-banner{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;background:var(--amber-bg);color:var(--amber);border:1px solid var(--amber);border-radius:10px;padding:12px 16px;margin-bottom:16px;font-size:.95rem;text-align:center}.search-bar{width:100%;padding:12px 14px;font-size:1.05rem;border:1px solid var(--border);border-radius:10px;margin-bottom:16px}.empty-state{color:var(--gray);text-align:center;margin-top:40px}.student-list{display:flex;flex-direction:column;gap:8px}.student-row{display:grid;grid-template-columns:1fr auto auto auto;align-items:center;gap:16px;padding:12px 16px;background:#fff;border:1px solid var(--border);border-radius:10px}.student-row.checked-in{opacity:.55;background:#f9fafb}.student-row.checked-in .actions,.student-row.checked-in .checkin-status{opacity:1}.student-name{font-weight:600;color:inherit;text-decoration:none;display:inline-block;width:fit-content}.student-name:hover{text-decoration:underline}.student-email{font-size:.8rem;color:var(--gray)}.badges{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.badge{font-size:.85rem;line-height:1;padding:8px 11px;border-radius:999px;white-space:nowrap}.badge-green{background:var(--green-bg);color:var(--green)}.badge-red{background:var(--red-bg);color:var(--red)}.badge-amber{background:var(--amber-bg);color:var(--amber)}.badge-gray{background:var(--gray-bg);color:var(--gray)}.badge-blue{background:var(--blue-bg);color:var(--blue)}.badge-prominent{font-weight:700;color:#fff}.badge-prominent.badge-green{background:var(--green)}.badge-prominent.badge-amber{background:var(--amber)}.checkin-status{display:flex;flex-direction:column;gap:2px;font-size:.8rem;color:var(--gray)}.checkin-time-row{display:flex;align-items:center;gap:6px}.actions{display:flex;gap:8px}.btn{display:inline-block;padding:8px 14px;border-radius:8px;border:1px solid transparent;font-size:.9rem;text-decoration:none;cursor:pointer}.btn:disabled{opacity:.6;cursor:default}.btn-primary{background:#111827;color:#fff}.btn-secondary{background:#fff;border-color:var(--border);color:#111827}.link-button{background:none;border:none;color:var(--gray);text-decoration:underline;font-size:.75rem;cursor:pointer;padding:0}.nav-menu{position:fixed;top:16px;left:16px;z-index:20}.nav-menu-trigger{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:40px;height:40px;background:#fff;border:1px solid var(--border);border-radius:8px;cursor:pointer;box-shadow:0 1px 3px #0000001a}.nav-menu-trigger span{display:block;width:18px;height:2px;background:#111827;border-radius:1px}.nav-menu-dropdown{position:absolute;left:0;top:100%;margin-top:4px;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 12px #0000001a;min-width:160px;overflow:hidden}.nav-menu-item{display:block;width:100%;text-align:left;background:none;border:none;padding:10px 14px;font-size:.9rem;cursor:pointer;color:#111827}.nav-menu-item:hover{background:var(--gray-bg)}.row-menu{position:relative}.row-menu-trigger{background:none;border:none;font-size:1.1rem;line-height:1;padding:6px 8px;cursor:pointer;color:var(--gray);border-radius:6px}.row-menu-trigger:hover{background:var(--gray-bg)}.row-menu-dropdown{position:absolute;right:0;top:100%;margin-top:4px;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 12px #0000001a;min-width:160px;z-index:10;overflow:hidden}.row-menu-item{display:block;width:100%;text-align:left;background:none;border:none;padding:10px 14px;font-size:.85rem;cursor:pointer;color:#111827}.row-menu-item:hover{background:var(--gray-bg)}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.dialog-card{background:#fff;border-radius:12px;padding:24px;width:100%;max-width:360px;display:flex;flex-direction:column;gap:12px}.dialog-card h2{margin:0;font-size:1.1rem}.dialog-description{margin:0;font-size:.85rem;color:var(--gray)}.dialog-card input,.dialog-card select,.dialog-card textarea{padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:1rem;font-family:inherit}.dialog-card textarea{resize:vertical}.dialog-field-label{font-size:.85rem;font-weight:600;margin-bottom:-6px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px}.note-dialog{max-width:480px}.note-section-label{font-size:.8rem;font-weight:600;color:var(--gray);text-transform:uppercase;letter-spacing:.02em}.note-section-text{margin:4px 0 0;white-space:pre-wrap}.level-options{display:flex;gap:8px;flex-wrap:wrap}.level-option{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 14px;border:1px solid var(--border);border-radius:8px;background:#fff;cursor:pointer;font:inherit}.level-option-selected{border-color:#111827;background:#f3f4f6}.level-option-icon{font-size:1.5rem;line-height:1}.level-option-label{font-size:.7rem;color:var(--gray)}.back-link{margin-bottom:16px}.student-page-header{margin-bottom:20px}.student-page-header h1{font-size:1.6rem;margin:0 0 4px}.student-page-header .student-email{font-size:.9rem}.student-page-header .badges,.transfer-link{margin-top:10px}.student-stats{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:28px}.stat{flex:1;min-width:160px;background:#fff;border:1px solid var(--border);border-radius:10px;padding:14px 16px}.stat-clickable{text-align:left;cursor:pointer;font:inherit;transition:border-color .15s}.stat-clickable:hover{border-color:#9ca3af}.stat-label{font-size:.75rem;color:var(--gray);margin-bottom:4px}.stat-value{font-size:1.25rem;font-weight:600}.student-levels{font-size:1rem;display:flex;align-items:center;gap:2px}.level-badge{border:none;background:none;padding:2px;font-size:inherit;line-height:1;cursor:pointer;border-radius:4px}.level-badge:hover{background:var(--gray-bg)}.level-badge-shape{display:inline-flex;align-items:center;justify-content:center;width:1.225rem;height:1.225rem;color:#fff;font-size:.85rem;font-weight:700;line-height:1}.level-badge-square{border-radius:4px;background:var(--blue)}.level-badge-circle{border-radius:50%;background:var(--purple)}.level-badge-unset{background:var(--gray)}.timeline-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.timeline-heading{font-size:1.1rem;margin:0}.timeline{display:flex;flex-direction:column;gap:2px}.timeline-event{display:flex;align-items:center;gap:12px;padding:10px 16px;background:#fff;border:1px solid var(--border);border-radius:8px}.timeline-dot{width:10px;height:10px;min-width:10px;border-radius:999px}.timeline-dot-membership_started{background:var(--green)}.timeline-dot-membership_status{background:var(--gray)}.timeline-dot-payment{background:var(--blue)}.timeline-dot-credit_granted{background:var(--green)}.timeline-dot-checkin{background:var(--amber)}.timeline-dot-levelup{background:var(--purple)}.timeline-dot-note{background:var(--blue)}.timeline-content{display:flex;align-items:baseline;justify-content:space-between;flex:1;flex-wrap:wrap;gap:4px 12px}.timeline-label{font-weight:600;font-size:.9rem}.timeline-note-link{background:none;border:none;padding:0;margin:0;font-size:.9rem;font-family:inherit;color:inherit;text-align:left;cursor:pointer}.timeline-note-link:hover{text-decoration:underline}.timeline-date{font-size:.8rem;color:var(--gray)}@media (max-width: 640px){.student-row{grid-template-columns:1fr;justify-items:start}}.program-picker{display:flex;flex-direction:column;gap:8px;max-height:40vh;overflow-y:auto}.program-picker-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.program-picker-name{font-size:.9rem}.program-picker-roles{display:flex;gap:6px}.role-toggle{padding:6px 12px;border-radius:999px;border:1px solid var(--border);background:#fff;color:#111827;font-size:.8rem;cursor:pointer}.role-toggle-selected{background:#111827;color:#fff;border-color:#111827}.role-toggle:disabled{cursor:default;opacity:.5}.program-picker-row-disabled .program-picker-name{color:var(--gray)}.program-picker-divider{border:none;border-top:1px solid var(--border);margin:2px 0}.kiosk-dialog-card{background:#fff;border-radius:16px;padding:32px;width:100%;max-width:560px;max-height:90vh;overflow-y:auto;display:flex;flex-direction:column;align-items:center;gap:16px}.kiosk-dialog-title{margin:0;font-size:1.8rem;text-align:center}.kiosk-program-list{display:flex;flex-direction:column;gap:12px;width:100%}.kiosk-program-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:8px 0;border-bottom:1px solid var(--border)}.kiosk-program-name{font-size:1.3rem;font-weight:600}.kiosk-role-buttons{display:flex;gap:12px}.kiosk-role-btn{min-width:120px;padding:20px 24px;font-size:1.2rem;font-weight:600;border-radius:12px;border:2px solid var(--border);background:#fff;color:#111827;cursor:pointer}.kiosk-role-btn-done{background:var(--green-bg);border-color:var(--green);color:var(--green)}.kiosk-role-btn:disabled{cursor:default;opacity:.5}.kiosk-close-btn{margin-top:8px;padding:16px 32px;font-size:1.1rem}.kiosk-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:0 24px 24px;gap:16px}.kiosk-header-controls{position:fixed;top:12px;right:16px;z-index:10;display:flex;align-items:center;gap:12px}.kiosk-backdate-control{font-size:1rem;opacity:.7}.kiosk-logout-btn{opacity:.7}.kiosk-logout-btn:hover{opacity:1}.kiosk-banner{display:block;width:100%;max-width:640px;height:auto;border-radius:12px;margin:0 auto -40px;position:relative;z-index:0}.kiosk-main{width:100%;display:flex;flex-direction:column;align-items:center;gap:16px}.kiosk-camera-label{margin:0;font-size:1.75rem;font-weight:600;text-align:center}.kiosk-search-wrap{position:relative;width:100%;max-width:640px}.kiosk-search-results{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 4px 12px #0000001a;overflow:hidden;z-index:10}.kiosk-search-result{display:block;width:100%;text-align:left;background:none;border:none;padding:14px 16px;font-size:1.05rem;cursor:pointer;color:#111827}.kiosk-search-result:hover{background:var(--gray-bg)}.kiosk-camera-wrap{width:100%;max-width:640px;display:flex;align-items:center;justify-content:center}.kiosk-video{width:100%;max-height:70vh;border-radius:16px;background:#111827;object-fit:cover}.kiosk-camera-error{color:var(--gray);text-align:center;font-size:1.1rem}.kiosk-dialog-message{align-items:center;justify-content:center;text-align:center;font-size:1.3rem;font-weight:600;min-height:120px}.kiosk-dialog-message p{white-space:pre-line}.kiosk-welcome{background:#fff;border-radius:16px;padding:64px 48px;text-align:center;font-size:2rem;font-weight:700;color:#111827;display:flex;flex-direction:column;gap:12px}
