:root{--bg:#0b0d14;--surface:#151824;--surface-alt:#1f2335;--surface-raised:#262b40;--border:#2e3350;--ink:#f4f2ec;--muted:#9ca3bd;--accent:#c8f547;--accent-hover:#d6ff6e;--accent-ink:#0b0d14;--accent-soft:#c8f54724;--pop:#9b8cff;--pop-soft:#9b8cff24;--info:#5cc8ff;--info-soft:#5cc8ff24;--success-bg:#c8f54724;--success:#c8f547;--error-bg:#ff7a5c24;--error:#ff7a5c;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 8px 24px #00000073;--shadow-lift:0 14px 32px #0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font-family:Instrument Sans,Segoe UI,Arial,sans-serif}#root{min-height:100vh}h1,h2,h3{letter-spacing:-.02em;font-family:Bricolage Grotesque,Instrument Sans,sans-serif}.app-header{background:var(--bg);color:var(--ink);z-index:20;border-bottom:1px solid var(--border);transition:background .25s;position:sticky;top:0}.header-home{background:var(--bg)}.header-schedule{background:color-mix(in srgb, var(--bg) 90%, var(--info) 10%)}.header-calendar{background:color-mix(in srgb, var(--bg) 90%, var(--pop) 10%)}.header-invoice{background:color-mix(in srgb, var(--bg) 90%, var(--error) 10%)}.header-admin{background:color-mix(in srgb, var(--bg) 92%, var(--accent) 8%)}.app-header-row{align-items:center;gap:24px;max-width:1200px;margin:0 auto;padding:16px 32px;display:flex}.brand{color:var(--ink);white-space:nowrap;align-items:center;gap:10px;text-decoration:none;display:flex}.brand-word{letter-spacing:-.02em;font-family:Bricolage Grotesque,sans-serif;font-size:1.2rem;font-weight:800}.brand-dot{background:var(--accent);border-radius:50%;width:6px;height:6px;margin-left:3px;display:inline-block;transform:translateY(-8px)}.page-title{letter-spacing:1px;text-transform:uppercase;color:var(--muted);border-left:1px solid var(--border);margin:0;padding-left:16px;font-family:JetBrains Mono,monospace;font-size:.8rem;font-weight:600}.menu-toggle{background:var(--surface);border:1px solid var(--border);color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;justify-content:center;align-items:center;width:38px;height:38px;margin-left:auto;font-size:1.1rem;transition:background .15s,transform .15s;display:flex}.menu-toggle:hover{background:var(--surface-alt);transform:scale(1.05)}.nav-dropdown{flex-direction:column;gap:2px;padding:8px 32px 18px;animation:.18s both dropDown;display:flex}.nav-link{color:var(--muted);border-radius:var(--radius-sm);padding:10px 12px;font-size:.9rem;font-weight:600;text-decoration:none;transition:color .15s,background .15s}.nav-link:hover{color:var(--ink);background:var(--surface-alt)}.nav-link.active{color:var(--accent-ink);background:var(--accent)}.nav-logout{text-align:left;cursor:pointer;border:none;border-top:1px solid var(--border);background:0 0;margin-top:4px;padding-top:14px;font-family:inherit}@media (width<=760px){.app-header-row{padding:14px 20px}.page-title{display:none}}@keyframes dropDown{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.dashboard{max-width:1000px;margin:0 auto;padding:48px 32px}.dashboard-eyebrow{letter-spacing:.6px;text-transform:uppercase;color:var(--pop);margin:0 0 6px;font-size:.82rem;font-weight:700}.dashboard-title{color:var(--ink);margin:0 0 32px;font-size:1.6rem;font-weight:700}.tile{--tile-color:var(--pop);background:var(--surface);border:1px solid var(--border);border-bottom:3px solid var(--border);color:var(--ink);text-decoration:none;transition:border-color .15s}.tile:hover{border-bottom-color:var(--tile-color)}.tile-icon{width:1em;height:1em;color:var(--tile-color);justify-content:center;align-items:center;font-size:1.5rem;display:flex}.tile-label{font-size:1.05rem;font-weight:700;transition:color .18s}.tile:hover .tile-label{color:var(--tile-color)}.tile-description{color:var(--muted);font-size:.87rem;line-height:1.4}.tile-primary{border-radius:var(--radius-lg);flex-direction:row;align-items:center;gap:20px;margin-bottom:18px;padding:28px 30px;display:flex}.tile-primary .tile-icon{flex-shrink:0;font-size:2.1rem}.tile-primary-text{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.tile-primary .tile-label{font-family:Bricolage Grotesque,sans-serif;font-size:1.3rem}.tile-arrow{color:var(--muted);font-size:1.3rem;transition:transform .15s,color .15s}.tile-primary:hover .tile-arrow{color:var(--tile-color);transform:translate(4px)}.tile-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;display:grid}.tile-secondary{border-radius:var(--radius-sm);flex-direction:column;align-items:flex-start;gap:8px;padding:18px 16px;display:flex}.tile-secondary .tile-icon{font-size:1.2rem}.tile-secondary .tile-label{font-size:.9rem}.tile-secondary .tile-description{font-size:.78rem}.page-body{flex-wrap:wrap;align-items:flex-start;gap:24px;max-width:1100px;margin:0 auto;padding:32px;display:flex}.page-body.single-column{flex-direction:column;max-width:680px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);min-width:320px;box-shadow:var(--shadow-sm);flex:1;padding:28px}.form-card{flex-direction:column;gap:16px;max-width:480px;display:flex}.list-card{flex:2}.card-heading{margin-bottom:4px}.card-heading h2{color:var(--ink);margin:0;font-size:1.1rem;font-weight:700}.card-subtext{color:var(--muted);margin:2px 0 0;font-size:.85rem}.field{flex-direction:column;gap:6px;display:flex}.field-label{color:var(--muted);letter-spacing:.2px;font-size:.8rem;font-weight:600}.field-hint-inline{color:var(--muted);font-style:italic;font-weight:400}.field-row{grid-template-columns:1fr 1fr;gap:14px;display:grid}@media (width<=480px){.field-row{grid-template-columns:1fr}}.input{border:1.5px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--ink);background:var(--surface-alt);padding:11px 13px;font-family:inherit;font-size:.93rem;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.input option{background:var(--surface-alt);color:var(--ink)}.button-row{flex-wrap:wrap;gap:12px;display:flex}.btn{border-radius:var(--radius-sm);cursor:pointer;border:none;padding:11px 22px;font-family:inherit;font-size:.92rem;font-weight:700;transition:transform .1s,box-shadow .15s,opacity .15s,background .15s}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-outline{color:var(--ink);border:1.5px solid var(--border);background:0 0}.btn-outline:hover{background:var(--surface-alt);border-color:var(--accent)}.muted{color:var(--muted);font-size:.9rem}.empty-state{text-align:center;color:var(--muted);flex-direction:column;align-items:center;gap:6px;padding:32px 16px;display:flex}.empty-state-icon{width:1em;height:1em;color:var(--pop);border-bottom:1px dashed var(--border);justify-content:center;align-items:center;margin-bottom:4px;padding-bottom:10px;font-size:1.8rem;display:flex}.empty-state-title{color:var(--ink);margin:0;font-size:.95rem;font-weight:600}.empty-state-subtitle{color:var(--muted);margin:0;font-size:.85rem}.preview-note{background:var(--pop-soft);color:var(--pop);border-radius:var(--radius-sm);margin:0;padding:12px 14px;font-size:.88rem;font-weight:500}.form-error{color:var(--error);background:var(--error-bg);border-radius:var(--radius-sm);margin:0;padding:10px 12px;font-size:.86rem;font-weight:600}.form-success{color:var(--success);background:var(--success-bg);border-radius:var(--radius-sm);margin:0;padding:10px 12px;font-size:.86rem;font-weight:600}.checkbox-list{border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-alt);flex-direction:column;gap:2px;max-height:220px;padding:6px;display:flex;overflow-y:auto}.checkbox-row{border-radius:var(--radius-sm);cursor:pointer;align-items:center;gap:10px;padding:8px;font-size:.9rem;display:flex}.checkbox-row:hover{background:var(--surface-raised)}.checkbox-row-all{border-bottom:1px solid var(--border);border-radius:0;margin-bottom:4px;padding-bottom:10px;font-weight:700}.trial-checkbox{color:var(--muted);padding:0;font-weight:600}.trial-checkbox:hover{color:var(--ink);background:0 0}.show-past-toggle{color:var(--muted);margin:4px 0 16px;padding:0;font-weight:600;display:inline-flex}.show-past-toggle:hover{color:var(--ink);background:0 0}.checkbox-row input[type=checkbox],.radio-option input[type=radio]{accent-color:var(--accent);width:16px;height:16px}.radio-row{flex-wrap:wrap;gap:18px;display:flex}.radio-option{cursor:pointer;align-items:center;gap:8px;font-size:.9rem;display:flex}.table{border-collapse:collapse;width:100%}.table th{text-align:left;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);border-bottom:2px solid var(--border);padding:10px 8px;font-size:.74rem;font-weight:700}.table th.col-actions{text-align:right}.table td{text-align:left;border-bottom:1px solid var(--border);padding:12px 8px;font-size:.9rem}.table tbody tr:hover{background:var(--surface-alt)}.row-actions{justify-content:flex-end;gap:14px;display:flex}.link-btn{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;font-size:.83rem;font-weight:600}.link-btn.danger{color:var(--error)}.link-btn:hover{text-decoration:underline}.link-btn:disabled{opacity:.5;cursor:not-allowed;text-decoration:none}.view-toggle{background:var(--surface-alt);border:1px solid var(--border);border-radius:999px;gap:2px;margin:14px 0 4px;padding:3px;display:inline-flex}.toggle-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:7px 18px;font-family:inherit;font-size:.84rem;font-weight:600}.toggle-btn.active{background:var(--accent);color:var(--accent-ink)}.filter-row{flex-wrap:wrap;align-items:flex-end;gap:12px;margin:16px 0 20px;display:flex}.filter-row .field{min-width:220px}.calendar-day-group{margin-bottom:20px}.calendar-date-heading{color:var(--accent);border-bottom:1px solid var(--border);margin:0 0 10px;padding-bottom:8px;font-size:.88rem;font-weight:700}.class-row{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-alt);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;padding:13px 16px;transition:box-shadow .15s,border-color .15s;display:flex}.class-row:hover{box-shadow:var(--shadow-sm);border-color:var(--accent)}.class-row.cancelled{opacity:.6;background:0 0}.class-row.cancelled .class-time,.class-row.cancelled .class-student{text-decoration:line-through}.class-info{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.class-time{color:var(--pop);font-family:JetBrains Mono,monospace;font-size:.88rem;font-weight:600}.class-student{font-size:.92rem;font-weight:600}.class-tz{color:var(--muted);font-size:.82rem}.status-badge{background:var(--error-bg);color:var(--error);letter-spacing:.3px;text-transform:uppercase;border-radius:999px;padding:3px 10px;font-size:.7rem;font-weight:700}.trial-badge{background:var(--pop-soft);color:var(--pop);letter-spacing:.3px;text-transform:uppercase;border-radius:999px;padding:3px 10px;font-size:.7rem;font-weight:700;display:inline-block}.form-success-badge{background:var(--success-bg);color:var(--success);letter-spacing:.3px;text-transform:uppercase;border-radius:999px;padding:3px 10px;font-size:.7rem;font-weight:700;display:inline-block}.header-portal{background:color-mix(in srgb, var(--bg) 90%, var(--pop) 10%)}.portal-header-right{align-items:center;gap:14px;margin-left:auto;display:flex}.portal-greeting{color:var(--muted);font-size:.88rem}.btn-small{padding:7px 14px;font-size:.82rem}.portal-login-page{background:var(--bg);min-height:100vh;display:flex}.login-form-col{flex-direction:column;flex:460px;justify-content:center;max-width:520px;padding:48px 56px;display:flex}.login-graph-col{background:var(--surface);border-left:1px solid var(--border);flex:1.4 640px;justify-content:center;align-items:center;padding:48px;display:flex}.login-brand{margin-bottom:40px}.login-eyebrow{letter-spacing:1px;text-transform:uppercase;color:var(--muted);margin:0 0 6px;font-family:JetBrains Mono,monospace;font-size:.72rem;font-weight:600}.login-heading{color:var(--ink);margin:0 0 10px;font-size:1.9rem}.login-subtitle{color:var(--muted);margin:0 0 32px;font-size:.94rem}.login-form{flex-direction:column;gap:16px;max-width:400px;display:flex}.password-field{position:relative}.password-field .input{padding-right:44px}.password-toggle-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:6px;font-size:1.05rem;display:flex;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.password-toggle-btn:hover{color:var(--ink)}.checkbox-caption{color:var(--muted);margin:2px 0 0 26px;font-size:.78rem}.form-error-banner{align-items:flex-start;gap:8px;display:flex}.form-error-banner svg{flex-shrink:0;margin-top:1px;font-size:1rem}.portal-link-row{color:var(--muted);margin-top:32px;font-size:.85rem}@media (width<=900px){.login-graph-col{display:none}.login-form-col{max-width:none;padding:40px 24px}}.portal-link{color:var(--muted);font-size:.85rem;text-decoration:none}.portal-link:hover{color:var(--pop)}.account-settings-form{border-bottom:1px solid var(--border);flex-direction:column;gap:12px;margin-bottom:20px;padding-bottom:20px;display:flex}.account-settings-form:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.portal-panel{background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-sm);flex-direction:column;gap:12px;max-width:420px;margin:4px 0;padding:16px;display:flex}.credential-row{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:12px;padding:10px 12px;display:flex}.credential-label{color:var(--muted);min-width:70px;font-size:.78rem;font-weight:600}.credential-value{color:var(--ink);word-break:break-all;flex:1;font-family:JetBrains Mono,SF Mono,monospace;font-size:.95rem}.profile-info-grid{grid-template-columns:auto 1fr;gap:8px 16px;font-size:.92rem;display:grid}.reschedule-form{flex-direction:column;gap:10px;width:100%;display:flex}.week-nav{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.week-range{color:var(--ink);font-size:.9rem;font-weight:700}.week-calendar{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-alt);overflow-x:auto}.week-day-tabs{display:none}.week-hidden-badge{z-index:2;color:var(--pop);background:var(--pop-soft);cursor:pointer;border-radius:999px;padding:2px 6px;font-size:.62rem;font-weight:700;position:absolute;top:2px;right:6px}.week-grid-header{border-bottom:1px solid var(--border);background:var(--surface-alt);z-index:1;grid-template-columns:56px repeat(7,minmax(110px,1fr));display:grid;position:sticky;top:0}.week-gutter{border-right:1px solid var(--border)}.week-day-head{border-right:1px solid var(--border);flex-direction:column;align-items:center;gap:2px;padding:10px 4px;display:flex}.week-day-head.today .week-day-num{color:#fff;background:var(--pop);border-radius:999px;padding:1px 8px}.week-day-name{color:var(--muted);text-transform:uppercase;letter-spacing:.4px;font-size:.72rem}.week-day-num{color:var(--ink);font-size:.82rem;font-weight:700}.week-grid-body{grid-template-columns:56px repeat(7,minmax(110px,1fr));display:grid}.week-hour-label{color:var(--muted);border-right:1px solid var(--border);justify-content:flex-end;align-items:flex-start;padding:0 8px;font-size:.68rem;display:flex;transform:translateY(-6px)}.week-day-col{border-right:1px solid var(--border);position:relative}.week-hour-line{border-top:1px solid var(--border);position:absolute;left:0;right:0}.week-block{cursor:pointer;text-align:left;color:#fff;border:none;border-left:3px solid;border-radius:6px;flex-direction:column;gap:1px;padding:4px 8px;font-family:inherit;transition:filter .12s;display:flex;position:absolute;overflow:hidden}.week-block:hover{filter:brightness(1.12)}.week-block.cancelled{color:var(--muted);border-style:dashed;text-decoration:line-through}.week-block.trial{border-style:dotted;border-left-width:4px}.week-block.requested{opacity:.7;border-style:dashed}.week-block-name{font-size:.76rem;font-weight:700;line-height:1.1}.week-block-time{opacity:.9;font-family:JetBrains Mono,monospace;font-size:.66rem}@media (width<=700px){.week-day-tabs{border-bottom:1px solid var(--border);gap:6px;padding:10px;display:flex;overflow-x:auto}.week-day-tab{background:var(--surface-raised);border:1px solid var(--border);color:var(--muted);border-radius:var(--radius-sm);cursor:pointer;flex-direction:column;flex:none;align-items:center;gap:2px;padding:6px 12px;font-family:inherit;font-size:.72rem;font-weight:700;display:flex}.week-day-tab.active{background:var(--pop);border-color:var(--pop);color:#fff}.week-grid-header,.week-grid-body{grid-template-columns:56px 1fr}.week-day-head,.week-day-col{display:none}.week-day-head[data-selected=true]{display:flex}.week-day-col[data-selected=true]{display:block}}.modal-backdrop{z-index:50;background:#0009;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);width:100%;max-width:380px;box-shadow:var(--shadow-lift);padding:26px}.modal-card h3{margin:0 0 8px;font-size:1.1rem}.modal-actions{margin-top:18px}.modal-close{color:var(--muted);cursor:pointer;background:0 0;border:none;margin-top:14px;padding:0;font-family:inherit;font-size:.85rem}.modal-close:hover{color:var(--ink)}.graph-panel{width:100%;max-width:520px}.graph-panel-row{letter-spacing:.4px;text-transform:uppercase;color:var(--muted);justify-content:space-between;margin-bottom:14px;font-family:JetBrains Mono,monospace;font-size:.72rem;display:flex}.graph-panel-svg{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);width:100%;height:auto;display:block}.graph-panel-note{background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-sm);flex-direction:column;gap:4px;margin-top:16px;padding:14px 16px;display:flex}.graph-panel-note-eq{color:var(--pop);font-family:JetBrains Mono,monospace;font-size:.88rem;font-weight:600}.graph-panel-note-caption{color:var(--muted);font-size:.8rem}
