:root{--color-primary:#000c26;--color-primary-container:#0e2245;--color-on-primary:#fff;--color-on-primary-container:#788ab3;--color-primary-fixed:#d8e2ff;--color-primary-fixed-dim:#b4c6f2;--color-on-primary-fixed:#051a3d;--color-on-primary-fixed-variant:#35466b;--color-secondary:#006c49;--color-secondary-container:#6cf8bb;--color-on-secondary:#fff;--color-on-secondary-container:#00714d;--color-secondary-fixed:#6ffbbe;--color-secondary-fixed-dim:#4edea3;--color-on-secondary-fixed:#002113;--color-on-secondary-fixed-variant:#005236;--color-tertiary:#160a00;--color-tertiary-container:#341e00;--color-on-tertiary:#fff;--color-on-tertiary-container:#c17b00;--color-tertiary-fixed:#ffddb8;--color-tertiary-fixed-dim:#ffb95f;--color-on-tertiary-fixed:#2a1700;--color-on-tertiary-fixed-variant:#653e00;--color-background:#f7f9fb;--color-surface:#f7f9fb;--color-surface-dim:#d8dadc;--color-surface-bright:#f7f9fb;--color-surface-container-lowest:#fff;--color-surface-container-low:#f2f4f6;--color-surface-container:#eceef0;--color-surface-container-high:#e6e8ea;--color-surface-container-highest:#e0e3e5;--color-surface-variant:#e0e3e5;--color-on-surface:#191c1e;--color-on-surface-variant:#44474e;--color-on-surface-subtle:#64748b;--color-outline:#75777f;--color-outline-variant:#c5c6cf;--color-divider:#e2e8f0;--color-error:#ba1a1a;--color-error-container:#ffdad6;--color-on-error:#fff;--color-on-error-container:#93000a;--color-warning-bg:#ef44441a;--color-warning-border:#ef44444d;--color-warning-text:#ef4444;--color-inverse-surface:#2d3133;--color-inverse-on-surface:#eff1f3;--color-inverse-primary:#b4c6f2;--font-sans:"Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-icon:"Material Symbols Outlined";--radius-xs:4px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--shadow-xs:0 1px 2px #0000000a;--shadow-sm:0 1px 4px #0000000d;--shadow-md:0 4px 12px #0000000f, 0 1px 2px #0000000a;--shadow-lg:0 10px 25px -5px #0e22451a, 0 8px 10px -6px #0000000a;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-normal:.25s cubic-bezier(.4, 0, .2, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;font-size:16px;overflow-x:hidden}body{font-family:var(--font-sans);background-color:var(--color-background);color:var(--color-on-surface);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;line-height:1.5;overflow-x:hidden}.material-symbols-outlined{font-family:var(--font-icon);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-webkit-font-smoothing:antialiased;vertical-align:middle;direction:ltr;font-size:20px;font-style:normal;font-weight:400;line-height:1;display:inline-block}h1,h2,h3,h4,h5,h6{color:var(--color-primary);letter-spacing:-.02em;font-weight:700;line-height:1.25}h1{font-size:1.75rem}@media (width>=768px){h1{font-size:2.25rem}}h2{font-size:1.35rem}@media (width>=768px){h2{font-size:1.65rem}}h3{font-size:1.15rem}h4{font-size:1rem}p{color:var(--color-on-surface-variant);font-size:.925rem;line-height:1.5}a{color:var(--color-secondary);transition:all var(--transition-fast);font-weight:500;text-decoration:none}a:hover{color:var(--color-on-secondary-container);text-decoration:underline}a:visited{color:var(--color-secondary)}input:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=button]):not([type=reset]),select,textarea{width:100%;font-family:var(--font-sans);color:var(--color-on-surface);background-color:var(--color-surface-container-low);border:1px solid var(--color-outline-variant);border-radius:var(--radius-md);transition:all var(--transition-fast);outline:none;min-height:44px;padding:.75rem 1rem;font-size:.925rem}input:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=button]):not([type=reset]):focus,select:focus,textarea:focus{border-color:var(--color-primary-container);background-color:var(--color-surface-container-lowest);box-shadow:0 0 0 3px #0e224526}button,input[type=submit],input[type=button]{font-family:var(--font-sans);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);background-color:var(--color-primary);min-height:44px;color:var(--color-on-primary);box-shadow:var(--shadow-sm);border:1px solid #0000;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.25rem;font-size:.925rem;font-weight:600;line-height:1;text-decoration:none;display:inline-flex}button:hover,input[type=submit]:hover,input[type=button]:hover{background-color:var(--color-primary-container);color:var(--color-on-primary);box-shadow:var(--shadow-md)}button:active,input[type=submit]:active,input[type=button]:active{transform:scale(.99)}#loading{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:9999;color:var(--color-primary);background-color:#f7f9fbe6;justify-content:center;align-items:center;gap:.75rem;font-size:1rem;font-weight:600;display:flex;position:fixed;inset:0}#loading:before{content:"";border:3px solid var(--color-surface-container-highest);border-top-color:var(--color-secondary);border-radius:50%;width:24px;height:24px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.btn,.btn-primary,.btn-secondary,.btn-outline,.btn-danger,button[type=submit]{border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);border:1px solid #0000;justify-content:center;align-items:center;gap:.5rem;min-height:44px;padding:.75rem 1.25rem;font-family:inherit;font-size:.925rem;font-weight:600;line-height:1;text-decoration:none;display:inline-flex}.btn-primary,button[type=submit]{background-color:var(--color-primary);color:var(--color-on-primary);box-shadow:var(--shadow-sm)}.btn-primary:hover,button[type=submit]:hover{background-color:var(--color-primary-container);color:var(--color-on-primary);box-shadow:var(--shadow-md)}.btn-primary:active,button[type=submit]:active{transform:scale(.99)}.btn-secondary{background-color:var(--color-surface-container);color:var(--color-primary);border-color:var(--color-outline-variant)}.btn-secondary:hover{background-color:var(--color-surface-container-high);color:var(--color-primary)}.btn-outline{color:var(--color-primary);border-color:var(--color-outline);background-color:#0000}.btn-outline:hover{background-color:var(--color-surface-container-low);border-color:var(--color-primary)}.btn-danger{background-color:var(--color-error);color:var(--color-on-error)}.btn-danger:hover{background-color:#911}.btn-sm{border-radius:var(--radius-sm);min-height:36px;padding:.4rem .75rem;font-size:.825rem}.btn-lg{border-radius:var(--radius-lg);padding:1rem 1.75rem;font-size:1rem}.btn-block{width:100%}.btn-group{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.role-grid{grid-template-columns:1fr;gap:1rem;width:100%;display:grid}@media (width>=640px){.role-grid{grid-template-columns:repeat(2,1fr)}}@media (width>=1024px){.role-grid{grid-template-columns:repeat(3,1fr)}}.role-card{background-color:var(--color-surface-container-lowest);border:1px solid var(--color-outline-variant);border-radius:var(--radius-lg);text-align:left;cursor:pointer;transition:all var(--transition-fast);box-shadow:var(--shadow-sm);flex-direction:column;gap:.5rem;padding:1.5rem;display:flex}.role-card:hover{border-color:var(--color-secondary);box-shadow:var(--shadow-md);transform:translateY(-2px)}.role-card h2{color:var(--color-primary);justify-content:space-between;align-items:center;font-size:1.15rem;display:flex}.role-card p{color:var(--color-on-surface-variant);font-size:.875rem}.form-group{flex-direction:column;gap:.375rem;width:100%;margin-bottom:1.25rem;display:flex}label,.form-label{color:var(--color-on-surface);letter-spacing:.01em;font-size:.85rem;font-weight:600}input[type=text],input[type=email],input[type=password],input[type=number],input[type=search],select,textarea{width:100%;color:var(--color-on-surface);background-color:var(--color-surface-container-low);border:1px solid var(--color-outline-variant);border-radius:var(--radius-md);transition:all var(--transition-fast);outline:none;min-height:44px;padding:.75rem 1rem;font-family:inherit;font-size:.925rem}input:focus,select:focus,textarea:focus{border-color:var(--color-primary-container);background-color:var(--color-surface-container-lowest);box-shadow:0 0 0 3px #0e22451f}input::placeholder,select::placeholder,textarea::placeholder{color:var(--color-outline)}.form-section{border:1px solid var(--color-divider);border-radius:var(--radius-lg);background-color:var(--color-surface-container-lowest);margin-bottom:1.5rem;padding:1.25rem}.form-section legend{color:var(--color-primary);padding:0 .5rem;font-size:.95rem;font-weight:700}.form-actions{justify-content:flex-end;gap:1rem;margin-top:1.5rem;display:flex}.students-checkbox-list,.selection-list{border:1px solid var(--color-divider);border-radius:var(--radius-md);background-color:var(--color-surface-container-low);grid-template-columns:1fr;gap:.75rem;max-height:360px;padding:.5rem;display:grid;overflow-y:auto}@media (width>=640px){.students-checkbox-list,.selection-list{grid-template-columns:repeat(2,1fr)}}.checkbox-item,.checkbox-label{background-color:var(--color-surface-container-lowest);border:1px solid var(--color-outline-variant);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.checkbox-item:hover,.checkbox-label:hover{border-color:var(--color-secondary);background-color:var(--color-surface-container-lowest)}.checkbox-item input[type=checkbox],.checkbox-label input[type=checkbox]{width:18px;height:18px;accent-color:var(--color-secondary)}.card,.auth-card,.teacher-card,.student-card,.scanner-card,.coupon-card,.item-card,.invitation-card,.pending-card{background-color:var(--color-surface-container-lowest);border-radius:var(--radius-xl);border:1px solid var(--color-outline-variant);box-shadow:var(--shadow-sm);transition:all var(--transition-fast);margin-bottom:1rem;padding:1.5rem}@media (width>=768px){.card,.auth-card,.teacher-card,.student-card,.scanner-card,.coupon-card,.item-card,.invitation-card,.pending-card{padding:2rem}}.auth-card{width:100%;max-width:460px;margin:2rem auto}.kpi-card{background-color:var(--color-surface-container-lowest);border-radius:var(--radius-lg);border:1px solid var(--color-outline-variant);box-shadow:var(--shadow-sm);flex-direction:column;justify-content:space-between;padding:1.25rem 1.5rem;display:flex}.kpi-card .kpi-label{text-transform:uppercase;letter-spacing:.05em;color:var(--color-on-surface-subtle);font-size:.75rem;font-weight:600}.kpi-card .kpi-value{color:var(--color-primary);margin-top:.25rem;font-size:1.85rem;font-weight:700}.hub-card{background-color:var(--color-surface-container-lowest);border:1px solid var(--color-outline-variant);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:all var(--transition-fast);color:inherit;flex-direction:column;justify-content:space-between;padding:1.5rem;text-decoration:none;display:flex}.hub-card:hover{box-shadow:var(--shadow-md);border-color:var(--color-primary-container);transform:translateY(-2px)}.hub-card h2,.hub-card h3{margin-bottom:.5rem;font-size:1.15rem}.hub-card p{font-size:.875rem}.warning-banner,.notice-box,.alert{border-radius:var(--radius-md);align-items:center;gap:.75rem;margin-bottom:1.25rem;padding:1rem 1.25rem;font-size:.9rem;display:flex}.warning-banner{background-color:var(--color-warning-bg);border:1px solid var(--color-warning-border);color:var(--color-warning-text)}.notice-box{background-color:var(--color-surface-container);border:1px solid var(--color-outline-variant);color:var(--color-on-surface);flex-direction:column;align-items:flex-start}.empty-state{text-align:center;background-color:var(--color-surface-container-lowest);border:1px dashed var(--color-outline-variant);border-radius:var(--radius-lg);color:var(--color-on-surface-subtle);margin:1.5rem 0;padding:2.5rem 1.5rem;font-size:.95rem}.data-table-container,.table-responsive{border:1px solid var(--color-divider);border-radius:var(--radius-lg);background-color:var(--color-surface-container-lowest);width:100%;box-shadow:var(--shadow-sm);margin-bottom:1.5rem;overflow-x:auto}table,.data-table{border-collapse:collapse;text-align:left;width:100%;font-size:.9rem}th{background-color:var(--color-surface-container-low);color:var(--color-on-surface-subtle);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--color-divider);padding:.85rem 1rem;font-size:.75rem;font-weight:600}td{border-bottom:1px solid var(--color-divider);color:var(--color-on-surface);padding:.9rem 1rem}tr:last-child td{border-bottom:none}tr:hover td{background-color:var(--color-surface-container-low)}.badge,.status-badge{border-radius:var(--radius-full);align-items:center;gap:.35rem;padding:.25rem .65rem;font-size:.75rem;font-weight:600;line-height:1;display:inline-flex}.badge-verified,.badge-success{color:var(--color-secondary);background-color:#006c491f;border:1px solid #006c494d}.badge-pending,.badge-warning{background-color:var(--color-warning-bg);color:var(--color-warning-text);border:1px solid var(--color-warning-border)}.badge-danger,.badge-error{background-color:var(--color-error-container);color:var(--color-on-error-container)}#app,.page-wrapper{flex-direction:column;width:100%;min-height:100vh;display:flex}.page-container,main{flex:1;width:100%;max-width:1280px;margin:0 auto;padding:1rem 1.25rem 3rem}@media (width>=768px){.page-container,main{padding:1.5rem 2rem 4rem}}.page-header,.dashboard-header{flex-direction:column;gap:.5rem;margin-bottom:1.75rem;display:flex}.header-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}body{flex-direction:column;min-height:100vh;margin:0;display:flex}@media (width>=768px){body{flex-direction:row}}.main-nav{background-color:var(--color-primary-container);color:var(--color-on-primary);box-shadow:var(--shadow-md);z-index:1000;font-family:var(--font-sans,sans-serif);width:100%;padding:.5rem;padding-bottom:calc(.5rem + env(safe-area-inset-bottom,0px));justify-content:space-between;align-items:center;display:flex;position:fixed;bottom:0;left:0}#app,.page-wrapper{padding-bottom:80px}@media (width>=768px){.main-nav{flex-direction:column;justify-content:space-between;align-items:stretch;width:260px;height:100vh;padding:2rem 1.25rem;position:sticky;top:0;bottom:auto;left:auto}#app,.page-wrapper{padding-bottom:0}}.main-nav-links{justify-content:flex-start;align-items:center;gap:.5rem;width:100%;padding-bottom:2px;display:flex;overflow-x:auto}@media (width>=768px){.main-nav-links{flex-direction:column;justify-content:flex-start;align-items:stretch;overflow-x:visible}}.nav-link{color:var(--color-on-primary-container);border-radius:var(--radius-sm);white-space:nowrap;transition:all var(--transition-fast);align-items:center;gap:.5rem;padding:.45rem .65rem;font-size:.875rem;font-weight:600;text-decoration:none;display:flex}@media (width<=767px){.nav-text{display:none}.nav-link{justify-content:center;padding:.5rem}}.nav-link:hover{color:var(--color-on-primary);background-color:#ffffff14}.nav-link--active{border-bottom:2px solid var(--color-secondary-fixed);background-color:#ffffff1f;color:var(--color-secondary-fixed)!important}@media (width>=768px){.nav-link--active{border-bottom:none;border-left:3px solid var(--color-secondary-fixed)}}.nav-user-container{align-items:center;display:flex}@media (width>=768px){.nav-user-container{border-top:1px solid #ffffff1a;flex-direction:column;align-items:stretch;gap:1rem;margin-top:auto;padding-top:1.5rem}}.nav-user-info{display:none}@media (width>=768px){.nav-user-info{flex-direction:column;align-items:flex-start;gap:.25rem;display:flex}}.user-account-name{color:var(--color-on-primary);font-size:.875rem;font-weight:600}.user-account-role{color:var(--color-secondary-fixed);border-radius:var(--radius-full);text-transform:uppercase;letter-spacing:.04em;background:#6ffbbe26;border:1px solid #6ffbbe4d;padding:.2rem .55rem;font-size:.7rem;font-weight:700}.nav-logout-btn{color:var(--color-error);border-radius:var(--radius-sm);cursor:pointer;transition:background-color var(--transition-fast), transform var(--transition-fast);background-color:#0000;border:none;justify-content:center;align-items:center;padding:.45rem;display:flex}.nav-logout-btn:hover{background-color:#ba1a1a1a}.nav-logout-btn:active{transform:scale(.97)}@media (width>=768px){.nav-logout-btn{background-color:var(--color-error);color:var(--color-on-error);gap:.5rem;width:100%;padding:.45rem .9rem;font-size:.825rem;font-weight:600}.nav-logout-btn:hover{background-color:#911}}@media (width<=767px){.main-nav{justify-content:space-around}.main-nav-links,.nav-user-container{display:contents}.nav-logout-btn{padding:.5rem}}.hub-grid,.grid-hub{grid-template-columns:1fr;gap:1.25rem;display:grid}@media (width>=640px){.hub-grid,.grid-hub{grid-template-columns:repeat(2,1fr)}}@media (width>=1024px){.hub-grid,.grid-hub{grid-template-columns:repeat(3,1fr)}}.kpi-grid,.grid-kpi{grid-template-columns:1fr;gap:1rem;margin-bottom:1.75rem;display:grid}@media (width>=480px){.kpi-grid,.grid-kpi{grid-template-columns:repeat(2,1fr)}}@media (width>=1024px){.kpi-grid,.grid-kpi{grid-template-columns:repeat(4,1fr)}}.students-grid,.coupons-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;display:grid}
