/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--radius-lg:.5rem;--radius-xl:.75rem;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--shadow-xl:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.fixed{position:fixed}.relative{position:relative}.static{position:static}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.grow{flex-grow:1}.rounded{border-radius:.25rem}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}:root{--color-brand:#dc2626;--color-brand-dark:#b91c1c;--color-brand-light:#ef4444;--color-brand-subtle:#dc262612;--color-accent:#dc2626;--color-accent-dark:#b91c1c;--color-accent-light:#f87171;--color-success:#16a34a;--color-success-bg:#dcfce7;--color-warning:#d97706;--color-warning-bg:#fffbeb;--color-danger:#dc2626;--color-danger-bg:#fef2f2;--color-ink:#0a0a0a;--color-ink-muted:#3d3d3d;--color-ink-subtle:#6b6b6b;--color-surface:#fff;--color-surface-raised:#f7f7f7;--color-surface-sunken:#f0f0f0;--color-border:#e2e2e2;--color-border-strong:#c4c4c4;--radius:8px;--radius-lg:14px;--radius-xl:20px;--shadow-sm:0 1px 2px #0000000a;--shadow-md:0 4px 12px #0000000f;--shadow-lg:0 12px 32px #0000001a;--shadow-xl:0 20px 60px #00000024;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--bottom-nav-height:0px;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:DM Sans,system-ui,-apple-system,sans-serif}*,:before,:after{box-sizing:border-box}html,body,#root{height:100dvh;overflow:hidden}body{background:var(--color-surface-raised);color:var(--color-ink);margin:0;line-height:1.6}a{color:inherit;text-decoration:none}button,a,input,select,textarea{transition:all .2s}:focus-visible{outline:2px solid var(--color-brand);outline-offset:2px;border-radius:var(--radius)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--color-ink-subtle)}@media(max-width:768px){:root{--bottom-nav-height:calc(64px + var(--safe-bottom))}}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}.main-navigation{background:var(--color-ink);border-bottom:1px solid rgba(255,255,255,.06);position:relative;flex-shrink:0}.main-navigation ul{list-style:none;margin:0;padding:0 1rem;display:flex;gap:0;overflow-x:auto;scrollbar-width:none}.main-navigation ul::-webkit-scrollbar{display:none}.main-navigation li{margin:0}.main-navigation a{display:block;padding:.875rem 1rem;color:#ffffffa6;text-decoration:none;font-size:.8rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;border-bottom:2px solid transparent;transition:color .15s,border-color .15s;white-space:nowrap}.main-navigation a:hover{color:#fff}.main-navigation a.active{color:#fff;border-bottom-color:var(--color-brand)}.nav-hamburger{display:none;flex-direction:column;justify-content:space-between;width:44px;height:44px;padding:11px 10px;background:none;border:none;cursor:pointer;position:absolute;right:.75rem;top:50%;transform:translateY(-50%);z-index:10}.nav-hamburger span{display:block;height:2px;background:#fffc;border-radius:2px;transition:transform .2s,opacity .2s}.nav-hamburger.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}.nav-hamburger.open span:nth-child(2){opacity:0}.nav-hamburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.bottom-nav{display:none}@media(max-width:768px){.main-navigation ul{display:none;flex-direction:column;padding:0;border-top:1px solid rgba(255,255,255,.08)}.main-navigation ul.open{display:flex}.main-navigation a{padding:.875rem 1.25rem;min-height:44px;display:flex;align-items:center;border-bottom:1px solid rgba(255,255,255,.06);border-left:3px solid transparent;letter-spacing:.03em}.main-navigation a.active{border-bottom-color:#ffffff0f;border-left-color:var(--color-brand);color:#fff;background:#ffffff0a}.main-navigation{display:none}.bottom-nav{display:flex;position:fixed;bottom:0;left:0;right:0;height:var(--bottom-nav-height);background:var(--color-ink);border-top:1px solid rgba(255,255,255,.1);z-index:200;padding-bottom:var(--safe-bottom);align-items:stretch}.bottom-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:6px 4px;color:#ffffff80;text-decoration:none;font-size:.65rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;background:none;border:none;cursor:pointer;transition:color .15s;min-width:0;-webkit-tap-highlight-color:transparent}.bottom-nav-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.bottom-nav-item:hover,.bottom-nav-item.active{color:#fff}.bottom-nav-item.active svg{color:var(--color-brand)}.bottom-nav-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;bottom:var(--bottom-nav-height);background:#00000073;z-index:199}.bottom-nav-drawer{position:fixed;left:0;right:0;bottom:var(--bottom-nav-height);background:var(--color-ink);border-top:1px solid rgba(255,255,255,.1);border-radius:var(--radius-lg) var(--radius-lg) 0 0;z-index:200;padding:.5rem 0 .25rem;display:grid;grid-template-columns:repeat(3,1fr);gap:0}.bottom-nav-drawer-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:.875rem .5rem;color:#fff9;text-decoration:none;font-size:.7rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;transition:color .15s;-webkit-tap-highlight-color:transparent}.bottom-nav-drawer-item:hover,.bottom-nav-drawer-item.active{color:#fff}.bottom-nav-drawer-item.active svg{color:var(--color-brand)}}.app-container{height:100dvh;display:flex;flex-direction:column;background:var(--color-surface-raised);overflow:hidden}.app-header{background:var(--color-ink);color:#fff;padding:0 2rem;padding-top:var(--safe-top);height:calc(56px + var(--safe-top));display:flex;justify-content:space-between;align-items:center;flex-shrink:0;position:relative;z-index:50}.app-header:after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--color-brand),var(--color-accent),var(--color-brand-light))}.app-header h1{margin:0;font-family:Playfair Display,Georgia,serif;font-size:1.15rem;font-weight:700;letter-spacing:.02em}.app-header h1 span{color:var(--color-brand-light)}.app-main{flex:1;padding:1.75rem 2rem;overflow-y:auto;overflow-x:hidden;padding-bottom:calc(2rem + var(--bottom-nav-height));-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}.page-container{max-width:1200px;margin:0 auto;background:var(--color-surface);padding:2rem;border-radius:var(--radius-lg);border:1px solid var(--color-border);color:var(--color-ink);box-shadow:var(--shadow-sm)}.page-container h1{margin-top:0;font-family:Playfair Display,Georgia,serif;font-size:1.5rem;font-weight:700;color:var(--color-ink);border-bottom:2px solid var(--color-brand);padding-bottom:.75rem;margin-bottom:1.5rem}.page-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem}.page-header h1{margin:0;border:none;padding:0}.page-header-actions{display:flex;align-items:center;gap:.75rem}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.55rem 1.25rem;font-size:.875rem;font-weight:600;border-radius:var(--radius);border:1.5px solid transparent;cursor:pointer;transition:all .2s ease;white-space:nowrap;min-height:38px;letter-spacing:.01em}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-brand);color:#fff;border-color:var(--color-brand);box-shadow:0 2px 8px #dc262640}.btn-primary:hover:not(:disabled){background:var(--color-brand-dark);border-color:var(--color-brand-dark);box-shadow:0 4px 14px #dc262659;transform:translateY(-1px)}.btn-secondary{background:transparent;color:var(--color-ink);border-color:var(--color-border-strong)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-sunken);border-color:var(--color-brand-light);color:var(--color-brand)}.btn-danger{background:transparent;color:var(--color-danger);border-color:var(--color-danger)}.btn-danger:hover:not(:disabled){background:var(--color-danger);color:#fff}.btn-ghost{background:transparent;color:var(--color-ink-muted);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--color-surface-sunken);color:var(--color-ink)}.btn-sm{padding:.35rem .85rem;font-size:.8rem;min-height:32px}.btn-view{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .85rem;font-size:.8rem;font-weight:600;border-radius:var(--radius);border:1.5px solid var(--color-border-strong);background:transparent;color:var(--color-ink);cursor:pointer;transition:all .2s;min-height:32px}.btn-view:hover{background:var(--color-brand-subtle);border-color:var(--color-brand-light);color:var(--color-brand)}.btn-sign{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .85rem;font-size:.8rem;font-weight:600;border-radius:var(--radius);border:1.5px solid var(--color-brand);background:var(--color-brand);color:#fff;cursor:pointer;transition:all .2s;min-height:32px}.btn-sign:hover{background:var(--color-brand-dark);border-color:var(--color-brand-dark)}.form-group{margin-bottom:1.25rem}.form-group label{display:block;margin-bottom:.4rem;font-size:.78rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--color-ink-muted)}.form-group input,.form-group select,.form-group textarea,.search-input,.class-select,.date-input,.filter-select{width:100%;padding:.6rem .875rem;border:1.5px solid var(--color-border);border-radius:var(--radius);font-size:.9rem;color:var(--color-ink);background:var(--color-surface);transition:border-color .2s,box-shadow .2s;min-height:40px}.form-group input:focus,.form-group select:focus,.form-group textarea:focus,.search-input:focus,.class-select:focus,.date-input:focus,.filter-select:focus{outline:none;border-color:var(--color-brand);box-shadow:0 0 0 3px var(--color-brand-subtle)}.form-group textarea{resize:vertical;min-height:80px}.form-help{display:block;margin-top:.35rem;font-size:.8rem;color:var(--color-ink-subtle)}.search-bar{margin-bottom:1.5rem}.search-input{max-width:480px}.table-container{overflow-x:auto;margin-top:1rem}.data-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.875rem;color:var(--color-ink)}.data-table th{background:var(--color-ink);color:#fff;padding:.75rem 1rem;text-align:left;font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}.data-table th:first-child{border-radius:var(--radius) 0 0 0}.data-table th:last-child{border-radius:0 var(--radius) 0 0}.data-table td{padding:.75rem 1rem;border-bottom:1px solid var(--color-border);vertical-align:middle}.data-table tbody tr{transition:background .15s}.data-table tbody tr:hover{background:var(--color-brand-subtle)}.data-table tbody tr:last-child td{border-bottom:none}.data-table th:last-child,.data-table td:last-child{text-align:right}.status-badge{display:inline-block;padding:.2rem .65rem;border-radius:999px;font-size:.72rem;font-weight:600;letter-spacing:.03em;text-transform:capitalize}.status-active{background:var(--color-success-bg);color:var(--color-success)}.status-pending_payment{background:var(--color-warning-bg);color:var(--color-warning)}.status-suspended,.status-cancelled{background:var(--color-danger-bg);color:var(--color-danger)}.status-archived{background:var(--color-surface-sunken);color:var(--color-ink-subtle)}.status-badge.collected{background:var(--color-success-bg);color:var(--color-success)}.status-badge.pending{background:var(--color-warning-bg);color:var(--color-warning)}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.25rem;margin-top:1.5rem}.dashboard-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1.5rem;transition:all .25s ease;position:relative;overflow:hidden}.dashboard-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--color-brand-light),var(--color-brand));opacity:0;transition:opacity .25s}.dashboard-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--color-brand-light)}.dashboard-card:hover:before{opacity:1}.dashboard-card.clickable{cursor:pointer}.dashboard-card h3{margin:0 0 .75rem;font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-ink-subtle)}.stat-number{font-family:Playfair Display,Georgia,serif;font-size:2.25rem;font-weight:700;color:var(--color-ink);line-height:1;margin:.25rem 0}.stat-label{font-size:.8rem;color:var(--color-ink-subtle);margin:0}.dashboard-card.highlight .stat-number{color:var(--color-brand)}.dashboard-card.highlight{border-left:3px solid var(--color-brand)}.dashboard-card.success .stat-number{color:var(--color-success)}.dashboard-card.success{border-left:3px solid var(--color-success)}.welcome-text{color:var(--color-ink-muted);margin-bottom:1.5rem}.dashboard-actions{margin-top:2.5rem}.dashboard-actions h2{font-family:Playfair Display,Georgia,serif;font-size:1.1rem;font-weight:700;color:var(--color-ink);margin-bottom:1rem}.action-buttons{display:flex;flex-wrap:wrap;gap:.75rem}.action-buttons .btn{flex:1;min-width:160px;justify-content:center}.loading-spinner{text-align:center;padding:3rem;color:var(--color-ink-subtle)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;justify-content:center;align-items:center;z-index:1000;padding:1rem;overflow-y:auto;-webkit-overflow-scrolling:touch;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.modal-content{background:var(--color-surface);border-radius:var(--radius-xl);max-width:640px;width:100%;max-height:90dvh;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-xl);animation:slideUp .25s ease}.modal-body{flex:1;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}.modal-body::-webkit-scrollbar{width:4px}.modal-body::-webkit-scrollbar-track{background:transparent}.modal-body::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}.modal-large{max-width:900px}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-header h2{margin:0;font-family:Playfair Display,Georgia,serif;font-size:1.15rem;font-weight:700;color:var(--color-ink)}.close-button{background:none;border:none;font-size:1.5rem;color:var(--color-ink-subtle);cursor:pointer;line-height:1;padding:.25rem;border-radius:var(--radius);transition:all .15s;width:32px;height:32px;display:flex;align-items:center;justify-content:center}.close-button:hover{background:var(--color-surface-sunken);color:var(--color-ink)}.modal-footer{padding:1rem 1.5rem;border-top:1px solid var(--color-border);display:flex;justify-content:flex-end;gap:.5rem}.modal-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--color-border)}.loading-container{display:flex;justify-content:center;align-items:center;height:100dvh;color:var(--color-ink-subtle);background:var(--color-surface-raised)}.page-loader{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;color:var(--color-ink-subtle);gap:1rem}.spinner{width:36px;height:36px;border:3px solid var(--color-border);border-top-color:var(--color-brand);border-radius:50%;animation:spin .7s linear infinite}.error-message{padding:.75rem 1rem;background:var(--color-danger-bg);color:var(--color-danger);border:1px solid #fca5a5;border-radius:var(--radius);font-size:.875rem}.info-box{background:var(--color-brand-subtle);border-left:3px solid var(--color-brand);padding:.875rem 1rem;border-radius:0 var(--radius) var(--radius) 0;margin-bottom:1.25rem}.info-box p{margin:0;font-size:.875rem;color:var(--color-ink-muted)}.specializations{display:flex;flex-wrap:wrap;gap:.3rem}.specialization-badge{display:inline-block;padding:.15rem .55rem;background:var(--color-brand-subtle);color:var(--color-brand);border-radius:999px;font-size:.72rem;font-weight:600;border:1px solid rgba(220,38,38,.15);white-space:nowrap}.action-buttons-inline{display:flex;gap:.4rem;justify-content:flex-end}.attendance-controls{display:flex;flex-wrap:wrap;gap:1.25rem;margin-bottom:1.5rem;padding:1.25rem;background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.control-group{display:flex;flex-direction:column;gap:.4rem;flex:1;min-width:180px}.control-group label{font-size:.75rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--color-ink-muted)}.view-toggle{display:flex;gap:.5rem;align-items:flex-end}.toggle-btn{padding:.55rem 1.1rem;background:var(--color-surface-sunken);color:var(--color-ink-muted);border:1.5px solid var(--color-border);border-radius:var(--radius);cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s;min-height:40px}.toggle-btn:hover{border-color:var(--color-brand-light);color:var(--color-brand)}.toggle-btn.active{background:var(--color-brand);color:#fff;border-color:var(--color-brand);box-shadow:0 2px 8px #dc262640}.class-info{background:var(--color-ink);color:#fff;padding:1.25rem 1.5rem;border-radius:var(--radius-lg);margin-bottom:1.25rem;border-left:4px solid var(--color-brand-light)}.class-info h3{margin:0 0 .25rem;font-size:1.1rem;font-family:Playfair Display,Georgia,serif}.class-info p{margin:0;opacity:.7;font-size:.875rem;color:#fff}.no-selection,.no-evaluations,.no-contracts{text-align:center;padding:3rem;background:var(--color-surface);border-radius:var(--radius-lg);border:1px dashed var(--color-border);color:var(--color-ink-subtle)}.contracts-filters{display:flex;gap:1.5rem;align-items:flex-end;margin-bottom:1.5rem;padding:1.25rem;background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.filter-group{display:flex;flex-direction:column;gap:.4rem}.filter-group label{font-size:.75rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--color-ink-muted)}.expiring-soon{background:var(--color-warning-bg)!important}.expiring-warning{color:var(--color-warning);font-weight:600;font-size:.8rem}.toggle-filter-btn{padding:.6rem 1rem;font-size:.9rem;font-weight:600;border-radius:var(--radius);border:1.5px solid var(--color-border-strong);background:transparent;color:var(--color-ink-muted);cursor:pointer;transition:all .2s;white-space:nowrap;min-height:40px;line-height:1}.toggle-filter-btn:hover{border-color:var(--color-brand-light);color:var(--color-brand)}.toggle-filter-btn.active{border-color:var(--color-warning);background:var(--color-warning-bg);color:var(--color-warning)}.report-content,.contract-details{padding:1.5rem}.report-section{margin-bottom:1.75rem}.report-section h3{margin-top:0;font-size:.85rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--color-ink-subtle);border-bottom:1px solid var(--color-border);padding-bottom:.5rem;margin-bottom:1rem}.detail-row{display:flex;justify-content:space-between;padding:.6rem 0;border-bottom:1px solid var(--color-border);font-size:.875rem}.detail-row:last-child{border-bottom:none}.detail-row strong{color:var(--color-ink-muted)}.score-bar{height:6px;background:var(--color-surface-sunken);border-radius:999px;overflow:hidden;margin-top:.35rem}.score-fill{height:100%;background:linear-gradient(90deg,var(--color-brand),var(--color-brand-light));border-radius:999px;transition:width .4s ease}.score-value{font-size:1.1rem;font-weight:700;color:var(--color-ink)}.average-score{margin-top:1rem;padding:.875rem;background:var(--color-brand-subtle);border-radius:var(--radius);font-size:.9rem;font-weight:600}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:transparent;border:1.5px solid var(--color-border);border-radius:var(--radius);cursor:pointer;font-size:.9rem;transition:all .15s}.btn-icon:hover{background:var(--color-brand-subtle);border-color:var(--color-brand-light);color:var(--color-brand)}.btn-icon.btn-danger{border-color:var(--color-danger);color:var(--color-danger)}.btn-icon.btn-danger:hover{background:var(--color-danger);color:#fff}.reports-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1.5rem;margin-top:2rem}.reports-grid-single{grid-template-columns:1fr}.report-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1.5rem;display:flex;flex-direction:column;gap:1rem;transition:all .25s}.report-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--color-brand-light)}.report-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.report-card-header h3{margin:0;font-size:1.1rem;font-weight:600;color:var(--color-ink)}.report-badge{display:inline-block;padding:.2rem .65rem;background:var(--color-brand-subtle);color:var(--color-brand);border:1px solid rgba(220,38,38,.15);border-radius:999px;font-size:.75rem;font-weight:600;white-space:nowrap}.report-description{color:var(--color-ink-muted);font-size:.875rem;line-height:1.5;margin:0}.report-card-content{flex:1}.report-card-footer{display:flex;justify-content:flex-end;margin-top:auto}.page-description{color:var(--color-ink-muted);font-size:.875rem;margin-top:.5rem}.template-editor{font-family:Courier New,monospace;font-size:.875rem;line-height:1.6;resize:vertical;min-height:380px}.versions-list{max-height:480px;overflow-y:auto}.version-item{border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1rem;margin-bottom:.875rem;transition:border-color .15s}.version-item:hover{border-color:var(--color-brand-light)}.version-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.version-header h3{margin:0;font-size:.95rem;font-weight:700;color:var(--color-ink)}.version-date{font-size:.8rem;color:var(--color-ink-subtle)}.checkbox-group{display:flex;flex-wrap:wrap;gap:.4rem;padding:.75rem;background:var(--color-surface-raised);border-radius:var(--radius)}.checkbox-label{display:inline-flex;align-items:center;gap:.4rem;cursor:pointer;font-size:.8rem;font-weight:500;color:var(--color-ink);padding:.3rem .65rem;border:1.5px solid var(--color-border);border-radius:999px;background:var(--color-surface);transition:all .15s;-webkit-user-select:none;user-select:none}.checkbox-label:has(input:checked){border-color:var(--color-brand);background:var(--color-brand-subtle);color:var(--color-brand)}.checkbox-label input[type=checkbox]{display:none}.skip-to-content{position:absolute;top:-100%;left:1rem;z-index:9999;padding:.5rem 1rem;background:var(--color-surface);color:var(--color-ink);font-weight:600;font-size:.875rem;border:2px solid var(--color-brand);border-radius:var(--radius);text-decoration:none;transition:top .1s}.skip-to-content:focus{top:.75rem}@media(max-width:1024px){.app-main{padding:1.25rem;padding-bottom:calc(1.25rem + var(--bottom-nav-height))}.page-container{padding:1.25rem}}@media(max-width:768px){.app-header{padding:0 1rem;padding-top:var(--safe-top)}.app-main{padding:.75rem;padding-bottom:calc(.75rem + var(--bottom-nav-height))}.page-container{padding:1rem;border-radius:var(--radius);margin:0}.page-container h1{font-size:1.25rem}.page-header{flex-wrap:wrap;gap:.75rem}.dashboard-grid{grid-template-columns:1fr 1fr}.attendance-controls,.contracts-filters{flex-direction:column}.filter-group,.control-group{width:100%}.action-buttons-inline{flex-wrap:wrap}.modal-overlay{padding:0;align-items:flex-end}.modal-content{max-width:100%;width:100%;max-height:95dvh;border-radius:var(--radius-xl) var(--radius-xl) 0 0;margin-top:auto;animation:slideUpMobile .3s ease}@keyframes slideUpMobile{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-large{max-height:98dvh}.modal-header{padding:1rem 1rem .875rem}.modal-footer{padding:.875rem 1rem;padding-bottom:calc(.875rem + var(--safe-bottom))}.data-table{font-size:.8rem}.data-table th,.data-table td{padding:.6rem .75rem}.evaluations-list,.table-container{overflow-x:auto;-webkit-overflow-scrolling:touch}button,.btn{font-size:.875rem}input,select,textarea{font-size:1rem}}@media(max-width:480px){.dashboard-grid{grid-template-columns:1fr}.stat-number{font-size:1.75rem}.page-header{flex-direction:column;align-items:flex-start}.page-header .btn{width:100%;justify-content:center}}@keyframes shimmer{0%{background-position:-600px 0}to{background-position:600px 0}}.skeleton{display:block;background:linear-gradient(90deg,var(--color-surface-sunken) 25%,var(--color-border) 50%,var(--color-surface-sunken) 75%);background-size:600px 100%;animation:shimmer 1.4s infinite linear;border-radius:4px}.skeleton-mt{margin-top:.6rem}.skeleton-mb{margin-bottom:1.25rem}.skeleton-table th,.skeleton-table td{vertical-align:middle}.skeleton-table th{background:var(--color-ink)}.pagination{display:flex;align-items:center;justify-content:space-between;padding:.75rem 0;margin-top:.5rem;gap:1rem;flex-wrap:wrap}.pagination-info{font-size:.85rem;color:var(--color-ink-muted)}.pagination-controls{display:flex;align-items:center;gap:.25rem}.pagination-btn{min-width:2rem;height:2rem;padding:0 .4rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-ink);font-size:.875rem;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;justify-content:center}.pagination-btn:hover:not(:disabled){background:var(--color-brand-subtle);border-color:var(--color-brand-light);color:var(--color-brand)}.pagination-btn.active{background:var(--color-brand);border-color:var(--color-brand);color:#fff;font-weight:600}.pagination-btn:disabled{opacity:.35;cursor:not-allowed}.pagination-ellipsis{padding:0 .25rem;color:var(--color-ink-muted);font-size:.875rem;-webkit-user-select:none;user-select:none}.dance-styles-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1.25rem;max-width:560px;box-shadow:var(--shadow-sm)}.dance-styles-add-row{display:flex;gap:.5rem;margin-bottom:1rem}.dance-styles-add-row input{flex:1;padding:.45rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.875rem;background:var(--color-surface);color:var(--color-ink)}.dance-styles-add-row input:focus{outline:none;border-color:var(--color-brand);box-shadow:0 0 0 2px var(--color-brand-subtle)}.dance-styles-archived-toggle{display:inline-flex;align-items:center;gap:.4rem;font-size:.8rem;color:var(--color-ink-subtle);cursor:pointer;margin-bottom:1rem;-webkit-user-select:none;user-select:none}.dance-styles-empty{color:var(--color-ink-subtle);font-size:.875rem;margin:.5rem 0 0}.dance-styles-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.dance-styles-item{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface-raised);padding:.5rem .75rem;transition:all .15s}.dance-styles-item:hover{border-color:var(--color-brand-light)}.dance-styles-item.is-archived{opacity:.6}.dance-styles-view-row{display:flex;justify-content:space-between;align-items:center;gap:.75rem}.dance-styles-name{font-size:.875rem;font-weight:500;color:var(--color-ink);display:flex;align-items:center;gap:.5rem}.dance-styles-actions{display:flex;gap:.35rem;flex-shrink:0}.dance-styles-edit-row{display:flex;gap:.4rem;align-items:center}.dance-styles-edit-row input{flex:1;padding:.35rem .6rem;border:1px solid var(--color-brand);border-radius:var(--radius);font-size:.875rem;background:var(--color-surface);color:var(--color-ink);outline:none}.link-button{background:none;border:none;padding:0;color:var(--color-brand);font-size:inherit;font-weight:500;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.link-button:hover{opacity:.75}.btn-plain-link{background:none;border:none;padding:0;color:inherit;font-size:inherit;font-weight:inherit;cursor:pointer;text-decoration:none}.btn-plain-link:hover{text-decoration:underline;text-underline-offset:2px}.detail-section h3{margin:0 0 .75rem;font-size:.75rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--color-ink-subtle);border-bottom:1px solid var(--color-border);padding-bottom:.4rem}.detail-grid{display:grid;grid-template-columns:160px 1fr;gap:0}.detail-label{font-size:.8rem;font-weight:600;color:var(--color-ink-muted);padding:.5rem 0;border-bottom:1px solid var(--color-border)}.detail-grid>span:not(.detail-label){font-size:.875rem;color:var(--color-ink);padding:.5rem 0;border-bottom:1px solid var(--color-border)}.detail-grid>span:nth-last-child(-n+2){border-bottom:none}.detail-empty{color:var(--color-ink-subtle);font-size:.875rem;margin:0;padding:1rem 0}.scores-grid{display:flex;flex-direction:column;gap:.75rem}.score-item{display:grid;grid-template-columns:1fr auto;gap:.25rem .75rem;align-items:center}.skill-name{font-size:.875rem;color:var(--color-ink)}.score-item .score-bar{grid-column:1 / -1}.assessment-item{margin-bottom:1rem}.assessment-item h4{margin:0 0 .25rem;font-size:.875rem;font-weight:600;color:var(--color-ink)}.assessment-item p{margin:0;font-size:.875rem;color:var(--color-ink-muted)}.feedback-text{font-size:.875rem;color:var(--color-ink);line-height:1.6;margin:0}.recommendation p{font-size:.875rem;color:var(--color-ink);margin:0}.tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .3rem;background:var(--color-brand-subtle);color:var(--color-brand);border-radius:999px;font-size:.7rem;font-weight:600;margin-left:.35rem}.student-detail-tabs{display:flex;gap:0;border-bottom:2px solid var(--color-border);padding:0 1.5rem;overflow-x:auto;flex-shrink:0;scrollbar-width:none}.student-detail-tabs::-webkit-scrollbar{display:none}.detail-tab{padding:.65rem 1rem;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;font-size:.875rem;font-weight:500;color:var(--color-ink-muted);cursor:pointer;white-space:nowrap;transition:color .15s,border-color .15s}.detail-tab.active{color:var(--color-brand);border-bottom-color:var(--color-brand);font-weight:600}.tab-bar{display:flex;gap:.25rem;background:var(--color-surface-sunken);border-radius:10px;padding:.25rem}.tab-bar .detail-tab{border-bottom:none;margin-bottom:0;border-radius:8px;padding:.4rem 1rem}.tab-bar .detail-tab.active{background:var(--color-surface);border-bottom-color:transparent;box-shadow:var(--shadow-sm);color:var(--color-brand)}.report-loading-state{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding-bottom:1.5rem}.report-loading-spinner{width:2rem;height:2rem;border:3px solid var(--color-border);border-top-color:var(--color-brand);border-radius:50%;animation:spin .7s linear infinite}.report-loading-text{margin:0;font-size:.9rem;color:var(--color-ink-muted)}.eval-score-row{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.eval-score-label{width:120px;flex-shrink:0;font-size:.875rem;color:var(--color-ink)}.eval-score-slider{flex:1;accent-color:var(--color-brand)}.eval-score-value{width:40px;text-align:center;font-weight:600;font-size:.875rem;color:var(--color-ink)}.auth-container{height:100dvh;display:grid;grid-template-columns:1fr 1fr;background:var(--color-surface);overflow-y:auto}.auth-brand{background:linear-gradient(135deg,#0a0a0a,#1a1a1a);display:flex;flex-direction:column;justify-content:center;padding:3rem;position:relative;overflow:hidden}.auth-brand:before{content:"";position:absolute;bottom:-80px;right:-80px;width:320px;height:320px;border-radius:50%;background:var(--color-brand);opacity:.1}.auth-brand:after{content:"";position:absolute;top:-40px;left:-40px;width:200px;height:200px;border-radius:50%;background:var(--color-accent);opacity:.06}.auth-brand-logo{width:52px;height:52px;background:linear-gradient(135deg,var(--color-brand),var(--color-brand-light));border-radius:var(--radius-lg);margin-bottom:2rem;display:flex;align-items:center;justify-content:center;font-size:1.5rem;box-shadow:0 4px 16px #dc26264d}.auth-brand h1{margin:0 0 .75rem;font-family:Playfair Display,Georgia,serif;font-size:2.25rem;font-weight:700;color:#fff;line-height:1.15;letter-spacing:-.01em}.auth-brand h1 span{color:var(--color-brand-light)}.auth-brand p{margin:0;color:#ffffff80;font-size:.95rem;line-height:1.6;max-width:320px}.auth-form-panel{display:flex;flex-direction:column;justify-content:center;padding:3rem;background:var(--color-surface)}.auth-header{text-align:center;margin-bottom:2rem}.auth-header h1{font-family:Playfair Display,Georgia,serif;font-size:1.75rem;font-weight:700;color:var(--color-ink);margin:0 0 .5rem}.auth-header p{color:var(--color-ink-subtle);margin:0}.auth-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:2rem;width:100%;max-width:400px}.auth-form h2{margin:0 0 1.5rem;font-family:Playfair Display,Georgia,serif;font-size:1.25rem;font-weight:700;color:var(--color-ink)}.auth-form .btn-primary{width:100%;justify-content:center;margin-top:.5rem;padding:.7rem;font-size:.9rem}.auth-links{margin-top:1.25rem;text-align:center}.user-menu{position:relative}.user-menu-trigger{display:flex;align-items:center;gap:.5rem;background:#ffffff14;border:1px solid rgba(255,255,255,.15);color:#fff;padding:.4rem .875rem;border-radius:var(--radius);cursor:pointer;font-size:.8rem;font-weight:600;transition:all .2s}.user-menu-trigger:hover{background:#ffffff24}.user-avatar{width:28px;height:28px;background:var(--color-brand);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;color:#fff;flex-shrink:0}.user-menu-dropdown{position:absolute;right:0;top:calc(100% + 6px);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);min-width:180px;z-index:100;overflow:hidden;animation:slideUp .15s ease}.user-menu-item{display:block;width:100%;padding:.7rem 1rem;background:none;border:none;text-align:left;font-size:.875rem;color:var(--color-ink);cursor:pointer;transition:background .1s;text-decoration:none}.user-menu-item:hover{background:var(--color-brand-subtle);color:var(--color-brand)}.user-menu-item.danger{color:var(--color-danger)}.user-menu-item.danger:hover{background:var(--color-danger-bg)}.user-menu-divider{height:1px;background:var(--color-border);margin:.25rem 0}@media(max-width:768px){.auth-container{grid-template-columns:1fr}.auth-brand{display:none}.auth-form-panel{padding:2rem 1.25rem;align-items:center}.auth-form{border:none;padding:1.5rem 0}}.profile-container{max-width:760px;margin:0 auto}.profile-view,.profile-edit{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:2rem}.profile-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.75rem;padding-bottom:1rem;border-bottom:1px solid var(--color-border)}.profile-header h2{margin:0;font-size:1.25rem;font-weight:700;color:var(--color-ink)}.profile-content{display:grid;gap:1.5rem}.profile-section{background:var(--color-surface-raised);padding:1.25rem;border-radius:var(--radius)}.profile-section h3{margin:0 0 1.25rem;font-size:.75rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--color-ink-subtle)}.profile-field{margin-bottom:1rem}.profile-field:last-child{margin-bottom:0}.profile-field label{display:block;margin-bottom:.25rem;font-size:.75rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--color-ink-subtle)}.profile-field p{margin:0;color:var(--color-ink);font-size:.9rem}.role-badge{display:inline-block;padding:.2rem .65rem;border-radius:999px;font-size:.75rem;font-weight:600}.role-admin{background:#fee2e2;color:#991b1b}.role-instructor{background:var(--color-surface-sunken);color:var(--color-ink-muted);border:1px solid var(--color-border)}.role-student{background:#dcfce7;color:#166534}.role-parent{background:#f3f4f6;color:var(--color-ink-muted)}.status-verified{color:#166534;font-weight:600;font-size:.875rem}.status-unverified{color:var(--color-brand);font-weight:600;font-size:.875rem}.profile-form{max-width:560px}.form-group input:disabled,.form-group input.input-disabled{background:var(--color-surface-sunken);color:var(--color-ink-subtle);cursor:not-allowed}@media(max-width:768px){.profile-view,.profile-edit{padding:1.25rem}.profile-header{flex-direction:column;align-items:flex-start;gap:.75rem}.form-actions{flex-direction:column}.form-actions button{width:100%}}.parent-dashboard{max-width:1200px;margin:0 auto}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.75rem;padding-bottom:1rem;border-bottom:1px solid var(--color-border)}.dashboard-header h2{margin:0;font-size:1.25rem;font-weight:700;color:var(--color-ink)}.children-list{display:grid;gap:1.25rem}.children-list-loading,.children-list-empty{text-align:center;padding:3rem;background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius-lg);color:var(--color-ink-subtle)}.empty-hint{margin-top:.4rem;font-size:.8rem;color:var(--color-ink-subtle)}.child-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;transition:box-shadow .15s}.child-card:hover{box-shadow:0 4px 16px #00000012}.child-card-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;background:var(--color-surface-raised);border-bottom:1px solid var(--color-border)}.child-info h3{margin:0 0 .3rem;font-size:1rem;font-weight:700;color:var(--color-ink)}.child-age{margin:0 0 .4rem;color:var(--color-ink-subtle);font-size:.8rem}.level-badge{display:inline-block;padding:.2rem .6rem;border-radius:999px;font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.level-beginner{background:#dbeafe;color:#1e40af}.level-intermediate{background:#fef9c3;color:#854d0e}.level-advanced{background:#dcfce7;color:#166534}.child-actions{display:flex;gap:.4rem}.btn-icon{padding:.4rem .6rem;background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius);font-size:.9rem;cursor:pointer;transition:background .15s,border-color .15s;min-height:34px}.btn-icon:hover:not(:disabled){background:var(--color-surface-sunken);border-color:var(--color-border-strong)}.btn-icon:disabled{opacity:.4;cursor:not-allowed}.btn-icon.btn-danger:hover:not(:disabled){background:#fee2e2;border-color:#fca5a5}.child-card-details{padding:1.25rem 1.5rem}.detail-section{margin-bottom:1.25rem}.detail-section:last-child{margin-bottom:0}.detail-section h4{margin:0 0 .875rem;font-size:.75rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--color-ink-subtle)}.detail-field{display:flex;gap:.5rem;margin-bottom:.6rem;font-size:.875rem}.detail-field:last-child{margin-bottom:0}.detail-field label{min-width:130px;color:var(--color-ink-subtle);font-weight:500}.detail-field span,.detail-field p{margin:0;color:var(--color-ink)}.child-profile-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1.75rem}.child-profile-form h3{margin:0 0 1.75rem;font-size:1.1rem;font-weight:700;color:var(--color-ink)}.form-section{margin-bottom:1.75rem;padding-bottom:1.75rem;border-bottom:1px solid var(--color-border)}.form-section:last-of-type{border-bottom:none}.form-section h4{margin:0 0 1.25rem;font-size:.75rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--color-ink-subtle)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.form-group .required{color:var(--color-brand)}.form-group input:disabled,.form-group select:disabled,.form-group textarea:disabled{background:var(--color-surface-sunken);color:var(--color-ink-subtle);cursor:not-allowed}.success-message{padding:.75rem 1rem;background:#dcfce7;border:1px solid #bbf7d0;border-radius:var(--radius);color:#166534;font-size:.875rem;margin-bottom:1.25rem}@media(max-width:768px){.dashboard-header{flex-direction:column;align-items:flex-start;gap:.75rem}.dashboard-header button{width:100%}.child-card-header{flex-direction:column;align-items:flex-start;gap:.75rem}.child-actions{width:100%;justify-content:flex-end}.form-row{grid-template-columns:1fr}.form-actions{flex-direction:column}.form-actions button{width:100%}.detail-field{flex-direction:column;gap:.2rem}.detail-field label{min-width:auto}}.student-detail-tabs{display:flex;gap:0;border-bottom:2px solid var(--color-border);padding:0 1.5rem;overflow-x:auto;flex-shrink:0}.detail-tab{background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;padding:.75rem 1rem;font-size:.85rem;font-weight:500;color:var(--color-ink-subtle);cursor:pointer;white-space:nowrap;display:flex;align-items:center;gap:.4rem;transition:color .15s,border-color .15s}.detail-tab:hover{color:var(--color-ink)}.detail-tab.active{color:var(--color-brand);border-bottom-color:var(--color-brand)}.tab-count{background:var(--color-surface-raised);color:var(--color-ink-subtle);font-size:.7rem;font-weight:600;padding:.1rem .4rem;border-radius:10px;min-width:1.2rem;text-align:center}.detail-tab.active .tab-count{background:var(--color-brand);color:#fff}.detail-sections{display:flex;flex-direction:column;gap:1.5rem}.detail-section{background:var(--color-surface-raised);border-radius:8px;padding:1rem 1.25rem}.detail-section h3{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-ink-subtle);margin:0 0 .75rem}.detail-grid{display:grid;grid-template-columns:140px 1fr;gap:.4rem 1rem;align-items:baseline}.detail-label{font-size:.8rem;color:var(--color-ink-subtle);font-weight:500}.detail-empty{color:var(--color-ink-subtle);font-style:italic;text-align:center;padding:2rem 0}.student-name-link{color:var(--color-brand);cursor:pointer;font-weight:500;text-decoration:none;background:none;border:none;padding:0;font-size:inherit;font-family:inherit}.student-name-link:hover{text-decoration:underline}.offline-status-badge{display:flex;align-items:center;gap:1rem;padding:.6rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:1rem;font-size:.875rem}.status-indicator{display:flex;align-items:center;gap:.5rem}.status-dot{width:8px;height:8px;border-radius:50%}.status-indicator.online .status-dot{background:#22c55e;animation:pulse 2s infinite}.status-indicator.offline .status-dot{background:var(--color-brand)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.status-text{font-weight:600;color:var(--color-ink)}.sync-info{display:flex;align-items:center;gap:.5rem;margin-left:auto}.pending-count{color:#854d0e;background:#fef9c3;padding:.2rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600}.sync-button{padding:.3rem .75rem;background:var(--color-brand);color:#fff;border:none;border-radius:var(--radius);cursor:pointer;font-size:.8rem;font-weight:600;transition:background .15s}.sync-button:hover{background:var(--color-brand-dark)}.syncing{color:var(--color-ink-subtle);font-size:.8rem;font-style:italic}.bulk-attendance-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1.5rem}.attendance-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.25rem;padding-bottom:1rem;border-bottom:1px solid var(--color-border)}.attendance-stats{display:flex;gap:1.25rem}.attendance-stats .stat{font-weight:700;font-size:.875rem}.attendance-stats .stat.present{color:#166534}.attendance-stats .stat.absent{color:var(--color-brand)}.attendance-stats .stat.total{color:var(--color-ink-muted)}.bulk-actions{display:flex;gap:.5rem}.student-attendance-list{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1.25rem;max-height:480px;overflow-y:auto}.student-attendance-item{display:flex;justify-content:space-between;align-items:center;padding:.65rem .875rem;background:var(--color-surface-raised);border-radius:var(--radius);border:1.5px solid transparent;transition:border-color .15s,background .15s}.student-attendance-item.present{background:#f0fdf4;border-color:#bbf7d0}.student-attendance-item.absent{background:#fff1f2;border-color:#fecdd3}.student-checkbox{display:flex;align-items:center;gap:.75rem;cursor:pointer;flex:1}.student-checkbox input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:var(--color-brand)}.student-name{font-weight:500;color:var(--color-ink);font-size:.875rem}.attendance-badge{padding:.2rem .65rem;border-radius:999px;font-size:.75rem;font-weight:600}.attendance-badge.present{background:#dcfce7;color:#166534}.attendance-badge.absent{background:#fee2e2;color:#991b1b}.form-actions{display:flex;justify-content:flex-end;gap:.5rem;padding-top:1rem;border-top:1px solid var(--color-border)}.attendance-history{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1.5rem}.attendance-summary{margin-bottom:1.75rem}.attendance-summary h3{margin-top:0;margin-bottom:1rem;font-size:1rem;font-weight:700;color:var(--color-ink)}.summary-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.875rem}.stat-card{padding:1rem;background:var(--color-surface-raised);border-radius:var(--radius);border-left:3px solid var(--color-brand)}.stat-label{font-size:.75rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--color-ink-subtle);margin-bottom:.4rem}.stat-value{font-size:1.5rem;font-weight:800;color:var(--color-ink)}.stat-value.present{color:#166534}.stat-value.absent{color:var(--color-brand)}.history-list{margin-top:1.5rem}.history-list h3{margin-top:0;margin-bottom:1rem;font-size:1rem;font-weight:700;color:var(--color-ink)}.session-record{background:var(--color-surface-raised);border-radius:var(--radius);padding:.875rem 1rem;margin-bottom:.6rem;border-left:3px solid var(--color-ink)}.session-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.35rem}.session-date{font-weight:700;font-size:.875rem;color:var(--color-ink)}.session-stats{font-size:.8rem;color:var(--color-ink-subtle)}.attendance-breakdown{display:flex;gap:1.25rem;font-size:.8rem;margin-top:.35rem}.present-count{color:#166534;font-weight:600}.absent-count{color:var(--color-brand);font-weight:600}.loading,.no-students,.no-records{text-align:center;padding:2rem;color:var(--color-ink-subtle);font-size:.875rem}@media(max-width:768px){.attendance-header{flex-direction:column;align-items:flex-start;gap:.75rem}.bulk-actions{width:100%}.bulk-actions button{flex:1}.summary-stats{grid-template-columns:1fr 1fr}.session-header{flex-direction:column;align-items:flex-start;gap:.35rem}}.packages-page{max-width:1200px;margin:0 auto}.packages-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--color-border)}.packages-header h1{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-ink)}.packages-header-actions{display:flex;gap:.5rem}.packages-filters{display:flex;gap:.75rem;margin-bottom:1.25rem;align-items:center;flex-wrap:wrap}.packages-filters select,.packages-filters input{padding:.4rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-ink);font-size:.875rem}.packages-table{width:100%;border-collapse:collapse}.packages-table th,.packages-table td{padding:.65rem .875rem;text-align:left;border-bottom:1px solid var(--color-border);font-size:.875rem}.packages-table th{font-weight:600;color:var(--color-ink-subtle);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;background:var(--color-surface-raised)}.packages-table tbody tr:hover{background:var(--color-surface-raised)}.package-status-badge{display:inline-block;padding:.2rem .6rem;border-radius:999px;font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.package-status-badge.active{background:#dcfce7;color:#166534}.package-status-badge.inactive{background:#f3f4f6;color:#6b7280}.package-status-badge.archived{background:#fff7ed;color:#c2410c}.package-detail-tabs{display:flex;gap:0;border-bottom:2px solid var(--color-border);padding:0 1.5rem;overflow-x:auto;flex-shrink:0}.package-detail-tabs .detail-tab{background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;padding:.75rem 1rem;font-size:.85rem;font-weight:500;color:var(--color-ink-subtle);cursor:pointer;white-space:nowrap;transition:color .15s,border-color .15s}.package-detail-tabs .detail-tab:hover{color:var(--color-ink)}.package-detail-tabs .detail-tab.active{color:var(--color-brand);border-bottom-color:var(--color-brand)}.tier-list{display:flex;flex-direction:column;gap:1rem;margin-bottom:1rem}.tier-item{background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius);padding:.875rem 1rem}.tier-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.tier-item-header h4{margin:0;font-size:.875rem;font-weight:600;color:var(--color-ink)}.tier-classes{display:flex;flex-direction:column;gap:.3rem;margin-top:.5rem}.tier-class-row{display:flex;justify-content:space-between;align-items:center;padding:.3rem .5rem;background:var(--color-surface);border-radius:var(--radius);font-size:.8rem}.tier-add-class{display:flex;gap:.5rem;margin-top:.5rem;align-items:center}.tier-add-class select{flex:1;padding:.3rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.8rem;background:var(--color-surface);color:var(--color-ink)}.progression-list{display:flex;flex-direction:column;gap:.625rem}.progression-item{display:flex;align-items:center;gap:.875rem;padding:.875rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-left:3px solid var(--color-brand);border-radius:var(--radius);transition:box-shadow .15s}.progression-item:hover{box-shadow:0 2px 8px #00000012}.progression-item-avatar{width:2.25rem;height:2.25rem;border-radius:50%;background:var(--color-brand);color:#fff;font-size:.8rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;text-transform:uppercase;letter-spacing:.03em}.progression-item-info{display:flex;flex-direction:column;gap:.15rem;flex:1;min-width:0}.progression-item-name{font-weight:600;font-size:.875rem;color:var(--color-ink);background:none;border:none;padding:0;cursor:pointer;text-align:left;text-decoration:none}.progression-item-name:hover{color:var(--color-brand);text-decoration:underline}.progression-item-meta{font-size:.75rem;color:var(--color-ink-subtle);display:flex;align-items:center;gap:.35rem}.progression-item-meta .tier-badge{display:inline-flex;align-items:center;padding:.1rem .45rem;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:999px;font-size:.7rem;font-weight:600;color:var(--color-ink-subtle);letter-spacing:.03em}.progression-item-actions{display:flex;gap:.4rem;flex-shrink:0}.tier-progressions-section{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--color-border)}.tier-progressions-section h2{font-size:1rem;font-weight:700;color:var(--color-ink);margin:0 0 1rem}.add-tier-row{display:flex;gap:.5rem;margin-top:.75rem;align-items:center}.add-tier-row input{flex:1;padding:.4rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.875rem;background:var(--color-surface);color:var(--color-ink)}.untiered-classes{background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius);padding:.875rem 1rem;margin-bottom:1rem}.untiered-classes h4{margin:0 0 .5rem;font-size:.875rem;font-weight:600;color:var(--color-ink-subtle)}@media(max-width:768px){.packages-header{flex-direction:column;align-items:flex-start;gap:.75rem}.packages-header-actions{width:100%}.packages-header-actions button{flex:1}.packages-filters{flex-direction:column;align-items:stretch}.progression-item{flex-wrap:wrap}.progression-item-actions{width:100%;justify-content:flex-end}}.criteria-sections{display:flex;flex-direction:column;gap:1.25rem}.criteria-block{background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem}.criteria-block-tier{background:var(--color-surface);border-left:3px solid var(--color-border-strong)}.criteria-block-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem;gap:.75rem}.criteria-hint{font-size:.8rem;color:var(--color-ink-subtle);margin:.2rem 0 0}.criteria-view{display:flex;flex-direction:column;gap:.5rem}.criteria-meta{font-size:.8rem;color:var(--color-ink-muted)}.criteria-skills-list{display:flex;flex-wrap:wrap;gap:.35rem}.criteria-skill-pill{display:inline-block;padding:.2rem .6rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;font-size:.75rem;font-weight:500;color:var(--color-ink)}.criteria-form{display:flex;flex-direction:column;gap:.5rem}.criteria-form-row{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.criteria-form-row label{font-size:.8rem;font-weight:600;color:var(--color-ink-muted);white-space:nowrap}.criteria-max-input{width:80px;padding:.35rem .6rem;border:1.5px solid var(--color-border);border-radius:var(--radius);font-size:.875rem;background:var(--color-surface);color:var(--color-ink)}.criteria-max-input:focus{outline:none;border-color:var(--color-brand)}.criteria-skills-edit{display:flex;flex-direction:column;gap:.3rem;margin-top:.35rem}.criteria-skill-row{display:flex;justify-content:space-between;align-items:center;padding:.3rem .5rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);font-size:.8rem}.billing-page{max-width:1100px;margin:0 auto;padding:1.5rem}.billing-header{margin-bottom:1.5rem}.billing-header h2{margin:0 0 .25rem;font-size:1.5rem}.billing-subtitle{margin:0;color:var(--color-text-muted, #666);font-size:.9rem}.billing-search{position:relative;max-width:480px;margin-bottom:1.5rem}.billing-search-input-wrap{position:relative;display:flex;align-items:center}.billing-search-input{width:100%;padding:.6rem 2.5rem .6rem .75rem;border:1px solid var(--color-border, #ddd);border-radius:6px;font-size:.95rem}.billing-search-spinner{position:absolute;right:.75rem;width:16px;height:16px;border:2px solid var(--color-border, #ddd);border-top-color:var(--color-primary, #6c63ff);border-radius:50%;animation:spin .6s linear infinite}.billing-search-results{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--color-surface, #fff);border:1px solid var(--color-border, #ddd);border-radius:6px;box-shadow:0 4px 12px #0000001a;list-style:none;margin:0;padding:.25rem 0;z-index:100;max-height:280px;overflow-y:auto}.billing-search-result-btn{width:100%;display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:none;border:none;cursor:pointer;text-align:left;font-size:.9rem}.billing-search-result-btn:hover{background:var(--color-hover, #f5f5f5)}.billing-result-name{font-weight:500;flex:1}.billing-result-email{color:var(--color-text-muted, #888);font-size:.82rem}.billing-error{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca;border-radius:6px;padding:.75rem 1rem;margin-bottom:1rem}.billing-loading{display:flex;align-items:center;gap:.75rem;padding:2rem;color:var(--color-text-muted, #666)}.billing-student-card{background:var(--color-surface, #fff);border:1px solid var(--color-border, #e5e7eb);border-radius:8px;padding:1.25rem 1.5rem;margin-bottom:1.5rem}.billing-student-info{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap}.billing-student-info h3{margin:0;font-size:1.15rem}.billing-student-email{color:var(--color-text-muted, #666);font-size:.88rem}.billing-stats{display:flex;gap:1.5rem;flex-wrap:wrap;margin-bottom:.5rem}.billing-stat{display:flex;flex-direction:column;gap:.15rem}.billing-stat-label{font-size:.78rem;color:var(--color-text-muted, #888);text-transform:uppercase;letter-spacing:.04em}.billing-stat-value{font-size:1.1rem;font-weight:600}.billing-stat--overdue .billing-stat-value{color:#dc2626}.billing-last-payment{margin:.5rem 0 0;font-size:.85rem;color:var(--color-text-muted, #888)}.billing-table-wrap{background:var(--color-surface, #fff);border:1px solid var(--color-border, #e5e7eb);border-radius:8px;padding:1.25rem 1.5rem;overflow-x:auto}.billing-table-wrap h4{margin:0 0 1rem;font-size:1rem}.billing-table{width:100%;border-collapse:collapse;font-size:.9rem}.billing-table th{text-align:left;padding:.5rem .75rem;border-bottom:2px solid var(--color-border, #e5e7eb);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted, #888);white-space:nowrap}.billing-table td{padding:.6rem .75rem;border-bottom:1px solid var(--color-border, #f0f0f0);vertical-align:middle}.billing-table tr:last-child td{border-bottom:none}.billing-row--editing td{background:var(--color-hover, #fafafa)}.billing-select{padding:.3rem .5rem;border:1px solid var(--color-border, #ddd);border-radius:4px;font-size:.88rem;min-width:120px}.billing-actions{display:flex;gap:.4rem}.billing-none{color:var(--color-text-muted, #bbb)}.billing-cycle-badge{display:inline-block;padding:.15rem .5rem;border-radius:4px;font-size:.8rem;background:var(--color-hover, #f0f0f0);text-transform:capitalize}.billing-badge{display:inline-block;padding:.15rem .5rem;border-radius:4px;font-size:.78rem;font-weight:500;text-transform:capitalize}.billing-badge--active{background:#dcfce7;color:#166534}.billing-badge--cancelled{background:#fee2e2;color:#991b1b}.billing-badge--pending_payment{background:#fef9c3;color:#854d0e}.billing-badge--suspended{background:#fee2e2;color:#991b1b}.billing-empty-state{text-align:center;padding:3rem;color:var(--color-text-muted, #888)}.billing-empty{color:var(--color-text-muted, #888);font-style:italic}.btn-sm{padding:.3rem .65rem;font-size:.82rem}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:640px){.billing-stats{gap:1rem}.billing-table th,.billing-table td{padding:.5rem .4rem}}
