:root{--purple-950:#2e1065;--purple-900:#4c1d95;--purple-800:#5b21b6;--purple-700:#6d28d9;--purple-600:#7c3aed;--purple-500:#8b5cf6;--purple-400:#a78bfa;--purple-300:#c4b5fd;--purple-200:#ddd6fe;--purple-100:#ede9fe;--purple-50:#f5f3ff;--page-canvas-deep:#e7e5df;--page-watermark:url(/logo-mark.svg);--page-watermark-opacity:.28;--page-watermark-size:680px;--page-watermark-rotate:14deg;--page-watermark-offset-x:.5rem;--page-watermark-offset-y:-4.5rem;--page-wordmark-text-opacity:1;--page-wordmark-text-rotate:-11deg;--page-wordmark-text-x:44%;--page-wordmark-text-y:40%;--text:#1e1b4b;--text-muted:#475569;--text-on-page:#3d4045;--text-muted-on-page:#c9b8f5;--surface:#fff;--surface-elevated:#fff;--surface-muted:#fffffff5;--surface-tint:#f5f3ff;--surface-input:#fff;--border:#6d28d91f;--shadow:0 14px 44px #06021461;--shadow-sm:0 4px 18px #06021433;--radius:16px;--radius-sm:10px;--radius-btn:8px;--danger:#e11d48;--success:#059669;--warning:#d97706;--sidebar-width:300px;--font-message:1.1rem;--line-message:1.55;--font-title-page:1.5rem;--font-title-section:1.28rem;--font-title-sub:1.15rem;--cal-sunday-bg:#fee2e294;--cal-saturday-bg:#dbeafe94;--cal-sunday-bg-muted:#fee2e26b;--cal-saturday-bg-muted:#dbeafe6b;--cal-sunday-bg-hover:#fecacaad;--cal-saturday-bg-hover:#bfdbfead}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scrollbar-gutter:stable;background-color:var(--page-canvas-deep)}body{font-family:var(--font-sans), "Hiragino Sans", "Yu Gothic UI", sans-serif;color:var(--text-on-page);background-color:var(--page-canvas-deep);min-height:100vh;line-height:1.65}@media (max-width:640px){:root{--page-watermark-size:min(78vw, 380px);--page-watermark-offset-x:.25rem;--page-watermark-offset-y:-2.5rem;--page-watermark-rotate:12deg;--page-wordmark-text-rotate:-9deg;--page-wordmark-text-x:46%;--page-wordmark-text-y:38%}.page-bg-grid{opacity:.62;background-size:56px 56px}.page-bg-floor{opacity:.22}.page-bg-beam--primary,.page-bg-beam--secondary{opacity:.45}.page-bg-mesh{opacity:.34}}.page-content{z-index:1;min-height:100vh;position:relative}a{color:var(--purple-300);text-decoration:none;transition:color .15s}a:hover{color:#fff;text-decoration:underline}.card a,.sidebar-panel a,.site-header a,.menu a,.hub-card{color:var(--purple-700)}.card a:hover,.sidebar-panel a:hover,.site-header a:hover,.menu a:hover,.hub-card:hover{color:var(--purple-900)}a.btn{text-decoration:none}a.btn-primary,a.btn-primary:hover,a.btn-danger,a.btn-danger:hover{color:#fff}a.btn-secondary,a.btn-secondary:hover{color:var(--purple-800)}.shell{max-width:1320px;margin:0 auto;padding:1.5rem 1.25rem 2.5rem}.shell--narrow{max-width:400px}.shell--narrow .site-header{text-align:center}.shell--narrow .header-top{flex-wrap:wrap;justify-content:center}.shell--narrow .site-header h1{font-size:1.5rem}.app-with-sidebar .shell{width:auto;max-width:none;margin-left:var(--sidebar-width);margin-right:var(--sidebar-width);padding-left:1.25rem;padding-right:1.25rem}.app-with-sidebar .main--grid{display:block}.app-with-sidebar .app-main{width:100%}.app-main{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:1rem;min-width:0;display:grid}.app-main--centered{flex-direction:column;align-items:center;display:flex}.app-main--centered>*{width:100%}.main-span-2,:is(.app-main>.flow-nav,.main--grid>.flow-nav,.app-main>.list,.main--grid>.list,.app-main>.form-footer,.main--grid>.form-footer,.app-main>.error,.main--grid>.error,.app-main>.parent-student-layout,.main--grid>.parent-student-layout,.app-main>.student-schedule-layout,.main--grid>.student-schedule-layout,.app-main>.card:has(.search-layout),.main--grid>.card:has(.search-layout),.app-main>.card:has(>.form),.main--grid>.card:has(>.form)){grid-column:1/-1}.sidebar{z-index:40;width:var(--sidebar-width);box-sizing:border-box;height:100vh;padding:.35rem .35rem .35rem 0;position:fixed;top:0;left:0}.sidebar-panel{height:100%;max-height:100%;color:var(--text);border-radius:0 var(--radius-sm) var(--radius-sm) 0;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(20px);background:linear-gradient(#fffffff7,#f8f5ffeb);border:1px solid #ffffff73;flex-direction:column;display:flex;overflow:hidden}.sidebar-user{background:#ffffffeb;border-bottom:1px solid #7c3aed1f;flex-shrink:0;justify-content:space-between;align-items:center;gap:.55rem;padding:.72rem .82rem;display:flex}.sidebar-user-info{flex:1;min-width:0}.sidebar-user-name-row{flex-wrap:nowrap;align-items:center;gap:.3rem;min-width:0;display:flex}.sidebar-user-name-row .user-bar-name{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.sidebar-user-name-row .teacher-rank-badge{flex:none;gap:.14rem;padding:.05rem .28rem .05rem .05rem;font-size:.54rem;box-shadow:0 1px 3px #0f06241f}.sidebar-user-name-row .teacher-rank-badge-icon-wrap{width:.88rem;height:.88rem}.sidebar-user-name-row .teacher-rank-badge-label{letter-spacing:0;padding-right:0}.sidebar-logout-btn{border-radius:var(--radius-btn);background:linear-gradient(135deg, var(--purple-100), var(--purple-50));color:var(--purple-800);cursor:pointer;white-space:nowrap;border:1px solid #7c3aed38;flex-shrink:0;padding:.42rem .65rem;font-size:.76rem;font-weight:700;line-height:1.25;transition:background .15s,border-color .15s,color .15s}.sidebar-logout-btn:hover{background:linear-gradient(135deg, var(--purple-200), var(--purple-100));color:var(--purple-950);border-color:#7c3aed59}.sidebar-user .user-bar-name{font-size:.9rem;line-height:1.35}.sidebar-user .user-bar-kana{color:var(--text-muted);font-size:.8rem;line-height:1.35}.sidebar-user .user-bar-email{word-break:break-all;font-size:.8rem;line-height:1.4}.sidebar-header{color:#fff;background:radial-gradient(85% 90% at 0 0,#7c3aed,#0000 58%),radial-gradient(70% 75% at 100% 100%,#5b21b6,#0000 54%),linear-gradient(135deg,#2e1065 0%,#4c1d95 52%,#3b0764 100%);border-bottom:1px solid #5b21b673;flex-shrink:0;justify-content:space-between;align-items:center;gap:.45rem;padding:.52rem .75rem;display:flex}.sidebar-label{letter-spacing:.05em;text-transform:uppercase;color:#fff;font-size:.76rem;font-weight:800}.sidebar-role{background:var(--purple-100);color:var(--purple-800);white-space:nowrap;border-radius:999px;padding:.14rem .48rem;font-size:.7rem;font-weight:700}.sidebar-nav{flex:1;grid-template-columns:1fr 1fr;align-content:start;gap:.15rem;min-height:0;padding:.3rem;display:grid;overflow-y:auto}.sidebar-link{color:var(--purple-950);border-radius:8px;align-items:center;gap:.62rem;padding:.52rem .55rem;font-size:.9rem;font-weight:600;line-height:1.3;transition:background .15s,color .15s,transform .15s;display:flex;position:relative}.sidebar-link-label{flex:1;min-width:0}.sidebar-icon-wrap{flex-shrink:0;display:inline-flex;position:relative}.sidebar-icon-badges,.nav-alert-badges.sidebar-icon-badges{z-index:1;pointer-events:none;flex-direction:column;align-items:center;gap:.12rem;display:inline-flex;position:absolute;top:-.28rem;right:-.32rem}.nav-alert-badges{flex-shrink:0;align-items:center;gap:.3rem;display:inline-flex}.teacher-home-shortcut-badges{position:absolute;top:.65rem;right:.75rem}.sidebar-link:hover{background:var(--purple-50);color:var(--purple-800);text-decoration:none;transform:translate(2px)}.sidebar-link-active{background:linear-gradient(135deg, var(--purple-100), var(--purple-50));color:var(--purple-800);box-shadow:inset 0 0 0 1px #7c3aed29}.sidebar-icon{color:#fff;background:linear-gradient(145deg,#8b5cf6,#6d28d9);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:2.15rem;height:2.15rem;line-height:1;display:inline-flex;box-shadow:0 2px 8px #5b21b647}.sidebar-icon svg{stroke-width:2.25px;width:1.48rem;height:1.48rem}.sidebar-link:hover .sidebar-icon{background:linear-gradient(145deg,#a78bfa,#7c3aed);box-shadow:0 3px 10px #5b21b652}.sidebar-link-active .sidebar-icon{color:#fff;background:linear-gradient(145deg,#5b21b6,#4c1d95);box-shadow:0 0 0 2px #a78bfa8c,0 3px 10px #4c1d9561}@media (max-width:900px){.app-with-sidebar .shell{width:100%;max-width:1320px;margin-left:0;margin-right:auto;padding-left:.85rem;padding-right:.85rem}.sidebar{width:auto;height:auto;margin-bottom:1rem;padding:0;position:static}.sidebar-panel{border-radius:var(--radius);height:auto}.sidebar-nav{flex-flow:column;align-content:stretch;gap:.35rem;padding:0 .5rem .5rem;display:flex;overflow-y:visible}.sidebar-link{flex:none;gap:.62rem;width:100%;min-width:0;min-height:2.85rem;padding:.7rem .9rem;font-size:.98rem}.sidebar-user{flex-direction:column;align-items:stretch}.sidebar-logout-btn{width:100%;min-height:2.85rem;font-size:.84rem}.app-main,.main--grid{grid-template-columns:1fr}}.site-header{border-radius:var(--radius);box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(18px);color:var(--text);background:linear-gradient(135deg,#fffffff0,#f8f5ffe0);border:1px solid #ffffff8c;margin-bottom:1.5rem;padding:1.25rem 1.5rem}.header-top{align-items:center;gap:3.2rem;display:flex}.header-top h1{margin:0;padding-left:.5rem}.logo{align-items:center;gap:.65rem;text-decoration:none;display:inline-flex}.logo--header{gap:.419em;font-size:1.55rem}.logo--header .logo-text-stack{gap:.142em}.logo--header .logo-mark-img{width:1.613em;height:1.613em}.auth-shell .logo{cursor:pointer;align-self:center;width:fit-content;max-width:100%;margin-bottom:1.25rem;margin-left:auto;margin-right:auto;display:flex}.logo-subline{font-family:var(--font-display), var(--font-sans), sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--purple-600);white-space:nowrap;font-size:.62rem;font-weight:700;line-height:1}.logo--header .logo-subline{letter-spacing:.14em;font-size:.38em}.logo--on-dark .logo-wordmark{background:linear-gradient(#fff 0%,#f5f0ff 45%,#ddd6fe 100%);-webkit-background-clip:text;background-clip:text}.logo--on-dark .logo-subline{color:#e9e0ff}.logo:hover{text-decoration:none}.logo--header:hover .logo-wordmark{filter:brightness(1.08)}.logo-wordmark{font-family:var(--font-display), var(--font-sans), sans-serif;font-size:inherit;letter-spacing:.11em;text-transform:lowercase;background:linear-gradient(118deg, var(--purple-950) 0%, var(--purple-700) 42%, var(--purple-500) 100%);color:#0000;-webkit-background-clip:text;background-clip:text;margin:0;font-weight:800;line-height:1;display:block}.logo-mark-img{filter:drop-shadow(0 6px 16px #6d28d952);flex-shrink:0;display:block}.logo-text-stack{flex-direction:column;align-items:flex-start;min-width:0;display:flex}.site-header h1,.header h1{font-size:var(--font-title-page);color:var(--purple-950);font-weight:700;line-height:1.35}.main{flex-direction:column;gap:1rem;display:flex}.main--grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:1rem;display:grid}.card{border-radius:var(--radius);box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(14px);color:var(--text);background:#fffffff7;border:1px solid #ffffff9e;padding:1.25rem 1.5rem}.card h2,.card h3{color:var(--purple-950);font-size:var(--font-title-section);margin-bottom:.5rem;font-weight:700;line-height:1.4}.card--form{width:100%;max-width:400px;margin-left:auto;margin-right:auto;padding:1.5rem 1.75rem 1.65rem}.card--form-wide{max-width:520px}.card--panel{padding:1rem 1.25rem}.card--panel .list-item{align-items:center}.user-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.user-bar-name{color:var(--purple-950);font-weight:700}.user-bar-email{color:var(--text-muted);font-size:.88rem}.link-btn{color:var(--purple-700);cursor:pointer;font:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.link-btn:hover{color:var(--purple-900)}.auth-shell{flex-direction:column;align-items:stretch;padding-top:2rem;display:flex}.auth-page-title{text-align:center;font-size:var(--font-title-page);color:#fff;text-shadow:0 2px 28px #7c3aed73;margin:0 0 1.25rem;font-weight:700;line-height:1.35}.auth-back-link{text-align:center;margin-top:1rem}.auth-back-link a{color:var(--purple-200)}.auth-back-link a:hover{color:#fff}.btn{border-radius:var(--radius-btn);cursor:pointer;border:none;justify-content:center;align-items:center;gap:.35rem;padding:.72rem 1.25rem;font-size:.95rem;font-weight:700;transition:transform .15s,box-shadow .15s,background .15s;display:inline-flex}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg, var(--purple-700), var(--purple-500));color:#fff;box-shadow:0 8px 20px #6d28d93d}.btn-primary:hover:not(:disabled){box-shadow:0 10px 24px #6d28d952}.btn-secondary{color:var(--purple-800);background:#fff;border:1px solid #6d28d92e}.btn-secondary:hover:not(:disabled){background:var(--purple-50)}.card .btn-secondary,.card--form .btn-secondary,.card--panel .btn-secondary{background:linear-gradient(135deg, var(--purple-700), var(--purple-500));color:#fff;border:none;box-shadow:0 8px 20px #6d28d93d}.card .btn-secondary:hover:not(:disabled),.card--form .btn-secondary:hover:not(:disabled),.card--panel .btn-secondary:hover:not(:disabled){background:linear-gradient(135deg, var(--purple-700), var(--purple-500));box-shadow:0 10px 24px #6d28d952}.card a.btn-secondary,.card a.btn-secondary:hover,.card--form a.btn-secondary,.card--form a.btn-secondary:hover,.card--panel a.btn-secondary,.card--panel a.btn-secondary:hover{color:#fff}.btn-danger{background:linear-gradient(135deg, #be123c, var(--danger));color:#fff;box-shadow:0 8px 20px #e11d482e}.btn-success{background:linear-gradient(135deg, #047857, var(--success));color:#fff;box-shadow:0 8px 20px #0596692e}.btn-row{flex-wrap:wrap;gap:.5rem;display:flex}.form{flex-direction:column;gap:.85rem;display:flex}.form label{color:var(--purple-950);flex-direction:column;gap:.35rem;font-size:.9rem;font-weight:600;display:flex}.form-label-line{align-items:baseline;gap:.15rem;display:inline-flex}.form input,.form select,.form textarea{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-input);color:var(--text);padding:.65rem .85rem;font-size:1rem;transition:border-color .15s,box-shadow .15s}.form input:focus,.form select:focus,.form textarea:focus{border-color:var(--purple-400);outline:none;box-shadow:0 0 0 4px #a78bfa2e}.error{color:var(--danger);font-size:var(--font-message);font-weight:600;line-height:var(--line-message)}.action-feedback{flex-direction:column;gap:.5rem;display:flex}.action-feedback__success{color:#047857;font-size:var(--font-message);font-weight:600;line-height:var(--line-message);border-radius:var(--radius-sm);background:#0596691a;border:1px solid #05966947;margin:0;padding:.65rem .85rem}.action-feedback__error{color:var(--danger);font-size:var(--font-message);font-weight:600;line-height:var(--line-message);border-radius:var(--radius-sm);background:#dc26260f;border:1px solid #dc262638;margin:0;padding:.65rem .85rem}.notice{color:var(--purple-800);font-size:var(--font-message);font-weight:600;line-height:var(--line-message)}.form-footer{font-size:var(--font-message);color:var(--text-muted);line-height:var(--line-message);margin-top:1rem}.form-footer.meta{font-size:var(--font-message);line-height:var(--line-message);margin-top:.65rem}.form-intro{font-size:var(--font-message);color:var(--text-muted);line-height:var(--line-message);margin-bottom:.15rem}.form-section-title{font-size:var(--font-title-section);color:var(--purple-900);margin-top:.15rem;font-weight:700}.card--form h3,.form h3{font-size:var(--font-title-section);color:var(--purple-900);margin-top:.15rem;margin-bottom:0;font-weight:700}.checkbox-label{cursor:pointer;align-items:center;flex-direction:row!important;gap:.55rem!important}.checkbox-label input[type=checkbox]{width:1.05rem;height:1.05rem;accent-color:var(--purple-600);flex-shrink:0;margin:0}.pdf-guide-page{flex-direction:column;gap:12px;min-height:60vh;display:flex}.pdf-guide-page__back{margin:0}.pdf-guide-page__pending{background:var(--card,#fff);border:1px solid var(--line,#ece6da);border-radius:14px;padding:20px 16px;line-height:1.6}.pdf-guide-viewer{flex-direction:column;flex:1;gap:8px;min-height:70vh;display:flex}.pdf-guide-viewer__frame{border:1px solid var(--line,#ece6da);background:#fff;border-radius:12px;flex:1;width:100%;min-height:70vh;display:block}.pdf-guide-viewer__fallback{margin:0}.shell--narrow .form [type=submit],.card--form .form [type=submit]{width:100%;margin-top:.35rem}.form-steps{gap:.4rem;margin-bottom:1.15rem;display:flex}.form-step{background:var(--purple-100);border-radius:999px;flex:1;height:4px}.form-step--active{background:linear-gradient(90deg, var(--purple-600), var(--purple-400))}.form-step--done{background:var(--purple-400)}.form-step-label{color:var(--purple-700);letter-spacing:.04em;margin-bottom:.85rem;font-size:.82rem;font-weight:700}.card--form .btn-row{margin-top:.35rem}.card--form .btn-row .btn{flex:1;min-width:0}.empty-state{text-align:center;color:var(--text-muted);padding:2rem 1rem;font-size:.9rem}.list{flex-direction:column;gap:.85rem;list-style:none;display:flex}.list-item{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.meta{color:var(--text-muted);font-size:var(--font-message);line-height:var(--line-message)}.badge{letter-spacing:.02em;background:var(--purple-100);color:var(--purple-800);border-radius:999px;padding:.2rem .55rem;font-size:.72rem;font-weight:700;display:inline-block}.badge-confirmed{color:#065f46;background:#d1fae5}.badge-pending{color:#92400e;background:#fef3c7}.badge-completed{background:var(--purple-100);color:var(--purple-900)}.badge-cancelled{color:#9f1239;background:#ffe4e6}.teacher-rank-badge{white-space:nowrap;vertical-align:middle;color:#fff;border:1px solid #0000;border-radius:999px;align-items:center;gap:.35rem;font-weight:700;line-height:1;display:inline-flex;box-shadow:0 2px 6px #0f062429}.teacher-rank-badge--sm{padding:.14rem .55rem .14rem .14rem;font-size:.72rem}.teacher-rank-badge--md{padding:.16rem .62rem .16rem .16rem;font-size:.78rem}.teacher-rank-badge--lg{padding:.18rem .72rem .18rem .18rem;font-size:.84rem}.teacher-rank-badge-icon-wrap{color:#fff;box-shadow:none;background:0 0;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.teacher-rank-badge--sm .teacher-rank-badge-icon-wrap{width:1.25rem;height:1.25rem}.teacher-rank-badge--md .teacher-rank-badge-icon-wrap{width:1.4rem;height:1.4rem}.teacher-rank-badge--lg .teacher-rank-badge-icon-wrap{width:1.55rem;height:1.55rem}.teacher-rank-badge-icon{flex-shrink:0;width:92%;height:92%}.teacher-rank-badge-label{letter-spacing:.02em;padding-right:.05rem}.teacher-rank-badge--standard,.teacher-rank-badge--bronze{background:linear-gradient(145deg,#ea580c,#9a3412);border-color:#fdba74a6}.teacher-rank-badge--silver{background:linear-gradient(145deg,#64748b,#334155);border-color:#cbd5e18c}.teacher-rank-badge--gold{background:linear-gradient(145deg,#f59e0b,#b45309);border-color:#fcd34da6}.teacher-rank-badge--premium,.teacher-rank-badge--platinum{background:linear-gradient(145deg,#8b5cf6,#5b21b6);border-color:#c4b5fda6}.admin-rank-badge{color:#fff;letter-spacing:.02em;vertical-align:middle;white-space:nowrap;border-radius:6px;padding:.15rem .45rem;font-size:.62rem;font-weight:800;line-height:1.2;display:inline-block}.admin-rank-badge--sm{padding:.12rem .4rem;font-size:.58rem}.admin-rank-badge--md{padding:.15rem .45rem;font-size:.62rem}.admin-rank-badge--lg{padding:.18rem .55rem;font-size:.7rem}.admin-rank-badge--gold{background:#2fb6c9}.admin-rank-badge--silver{background:#5b6b99}.admin-rank-badge--standard,.admin-rank-badge--bronze{background:#6b7280}.admin-rank-badge--premium{background:#1d2a4d}.teacher-rank-line{flex-wrap:wrap;align-items:center;gap:.35rem .5rem;display:inline-flex}.admin-rank-card{flex-direction:column;align-items:flex-start;gap:.45rem;display:flex}.admin-rank-detail{width:100%;margin:0}.admin-teacher-card{min-width:0;container-type:inline-size}.admin-teacher-card-head{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.admin-teacher-name{font-size:1rem;line-height:1.35}.admin-teacher-name-link{color:var(--purple-900);font-weight:700;text-decoration:none}.admin-teacher-name-link:hover{color:var(--purple-700);text-underline-offset:.15em;text-decoration:underline}.admin-payment-participants{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.lesson-request-page{flex-direction:column;width:100%;display:flex}.teacher-lesson-request-layout{grid-template-columns:minmax(0,1fr) minmax(280px,360px);align-items:start;gap:1rem;width:100%;display:grid}.teacher-lesson-request-layout--history{grid-template-columns:minmax(0,1fr)}.teacher-home-section-head{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.teacher-home-section-head h3{margin:0}.teacher-home-section-link{white-space:nowrap;text-decoration:none}.teacher-home-section-link:hover{text-decoration:underline}.teacher-home-dashboard{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-areas:"stat-today stat-week panel-today""shortcut-requests shortcut-bookings panel-today""panel-week-lessons panel-week-bookings panel-cancelled";align-items:stretch;gap:1rem;width:100%;display:grid}.teacher-home-area-stat-today{grid-area:stat-today}.teacher-home-area-stat-week{grid-area:stat-week}.teacher-home-area-panel-today{grid-area:panel-today;min-height:100%}.teacher-home-area-shortcut-requests{grid-area:shortcut-requests}.teacher-home-area-shortcut-bookings{grid-area:shortcut-bookings}.teacher-home-area-panel-week-lessons{grid-area:panel-week-lessons}.teacher-home-area-panel-week-bookings{grid-area:panel-week-bookings}.teacher-home-area-panel-cancelled{grid-area:panel-cancelled}.teacher-home-stat{flex-direction:column;justify-content:center;min-height:6.5rem;display:flex}.teacher-home-shortcut{align-self:start;position:relative}.teacher-home-panel{flex-direction:column;min-width:0;min-height:0;display:flex}.teacher-home-panel--compact h3{font-size:var(--font-title-sub)}.teacher-home-panel-head{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.65rem;display:flex}.teacher-home-panel-head h3{margin:0}.teacher-home-panel-head-actions{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.teacher-home-panel-expand{border:1px solid var(--border);border-radius:var(--radius-sm);min-width:1.75rem;min-height:1.75rem;color:var(--text-muted);cursor:pointer;background:#fff;justify-content:center;align-items:center;padding:0;font-size:.75rem;line-height:1;display:inline-flex}.teacher-home-panel-expand:hover{border-color:var(--purple-300);color:var(--purple-600);background:var(--purple-50)}.teacher-home-panel-empty,.teacher-home-panel-list{margin:0}.teacher-home-panel-item{align-items:flex-start}.teacher-home-panel-item-body{flex:1;min-width:0}.teacher-home-panel--compact .teacher-home-panel-item .btn{flex-shrink:0}@media (max-width:1100px){.teacher-home-dashboard{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"stat-today stat-week""panel-today panel-today""shortcut-requests shortcut-bookings""panel-week-lessons panel-week-bookings""panel-cancelled panel-cancelled"}}@media (max-width:640px){.teacher-home-dashboard{grid-template-columns:1fr;grid-template-areas:"stat-today""stat-week""panel-today""shortcut-requests""shortcut-bookings""panel-week-lessons""panel-week-bookings""panel-cancelled"}}.teacher-lesson-request-main{flex-direction:column;gap:1rem;min-width:0;display:flex}.teacher-lesson-request-schedule{min-width:0;position:sticky;top:1rem}.teacher-lesson-request-schedule-card{padding:.85rem 1rem 1rem}.teacher-lesson-request-schedule-title{font-size:var(--font-title-section);color:var(--purple-950);margin:0 0 .75rem;font-weight:700}.teacher-lesson-request-schedule-empty{margin:0}.teacher-lesson-request-schedule-legend{margin-bottom:.65rem}.lesson-request-item-card--schedule-active{box-shadow:inset 0 0 0 2px #7c3aed52}.teacher-lesson-request-schedule-calendar.event-calendar--week{border-radius:var(--radius-sm);border:1px solid #7c3aed1f;overflow:hidden}.teacher-lesson-request-schedule-calendar.event-calendar--single-day .event-calendar-week-header{display:none}.teacher-lesson-request-schedule-calendar.event-calendar--single-day .event-calendar-week-columns{grid-template-columns:minmax(0,1fr)}@media (max-width:960px){.teacher-lesson-request-layout{grid-template-columns:1fr}.teacher-lesson-request-schedule{position:static}}.lesson-request-filter-card:has(.lesson-request-calendar){overflow:visible}.lesson-request-tab-panel[hidden]{display:none}.lesson-request-pending-section{padding:.85rem 1rem 1rem}.lesson-request-pending-section .lesson-request-list{margin:0}.lesson-request-item-head{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.35rem;display:flex}.lesson-request-item-head-main{align-items:baseline;gap:.5rem;min-width:0;display:flex}.lesson-request-item-grade{flex-shrink:0}.lesson-request-item-student{color:var(--purple-950);font-size:1.05rem}.lesson-request-item-head-actions{flex-shrink:0;align-items:center;gap:.5rem;margin-left:auto;display:flex}.lesson-request-item-card{padding:.75rem 1rem}.lesson-request-item-line{color:var(--text-muted);font-size:var(--font-message);flex-wrap:wrap;align-items:center;gap:.35rem;margin:0;line-height:1.45;display:flex}.lesson-request-item-line+.lesson-request-item-line{margin-top:.2rem}.lesson-request-item-consultation{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.lesson-request-item-accept-block{color:#b45309;margin:0 0 .35rem}.lesson-request-accept-modal h3{color:var(--purple-950);margin:0 0 .5rem}.lesson-request-accept-modal-intro{margin:0 0 .85rem}.lesson-request-accept-summary{gap:.65rem;margin:0;display:grid}.lesson-request-accept-summary dt{color:var(--text-muted);margin-bottom:.12rem;font-size:.78rem}.lesson-request-accept-summary dd{margin:0;font-weight:600;line-height:1.45}.lesson-request-accept-modal--success{text-align:center}.lesson-request-accept-success{flex-direction:column;align-items:center;gap:.55rem;padding:.35rem 0 .15rem;display:flex}.lesson-request-accept-success-icon{width:4.5rem;height:4.5rem;margin-bottom:.15rem}.lesson-request-accept-check{width:100%;height:100%}.lesson-request-accept-check-circle{fill:none;stroke:var(--success);stroke-width:2.5px;stroke-dasharray:151;stroke-dashoffset:151px;animation:.55s forwards lesson-request-check-circle}.lesson-request-accept-check-mark{fill:none;stroke:var(--success);stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:48;stroke-dashoffset:48px;animation:.35s .45s forwards lesson-request-check-mark}.lesson-request-accept-success-lead{font-size:var(--font-message);line-height:var(--line-message);margin:0}.lesson-request-accept-success-detail,.lesson-request-accept-success-note{margin:0}.lesson-request-accept-success-detail{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}@keyframes lesson-request-check-circle{to{stroke-dashoffset:0}}@keyframes lesson-request-check-mark{to{stroke-dashoffset:0}}.lesson-request-pay-link{color:var(--purple-700);font-weight:600;text-decoration:none}.lesson-request-pay-link:hover{text-decoration:underline}.lesson-request-filter-tabs .booking-filter-tab{padding:.8rem .45rem .75rem;font-size:.84rem}.lesson-request-calendar-section{padding:.85rem 1rem 1rem}.lesson-request-form-hint{margin:0 0 .85rem}.lesson-request-calendar{margin-top:0}.lesson-request-modal-date{margin:0 0 1rem}.lesson-request-grade-text{color:var(--purple-950);margin:0 0 .75rem;font-size:.95rem}.lesson-request-modal .lesson-request-time-row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}@media (max-width:520px){.lesson-request-modal .lesson-request-time-row{grid-template-columns:1fr}}.admin-payment-teacher{align-items:center;gap:.35rem;display:inline-flex}.booking-filter-tab--active .admin-teachers-tab-badge{box-shadow:0 0 0 2px #7c3aed2e}.admin-teacher-meta{margin:.2rem 0 0}.admin-teacher-subjects{flex-wrap:wrap;gap:.4rem;margin-top:.45rem;display:flex}.admin-teacher-status-line{margin:.55rem 0 0}.admin-teacher-status{border-radius:999px;align-items:center;padding:.18rem .55rem;font-size:.78rem;font-weight:700;line-height:1.2;display:inline-flex}.admin-teacher-status--approved{color:#166534;background:#dcfce7}.admin-teacher-status--returned{color:#9a3412;background:#ffedd5}.admin-teacher-status--rejected{color:#9f1239;background:#ffe4e6}.admin-teacher-status--suspended{color:#334155;background:#f1f5f9}.admin-teacher-status--pending{color:#1d4ed8;background:#dbeafe}.admin-teacher-status--default{background:var(--purple-100);color:var(--purple-800)}.admin-teacher-list{margin-top:0}@media (min-width:768px){.admin-teacher-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem;display:grid}.admin-teacher-list>li{min-width:0}}@media (min-width:1100px){.admin-teacher-list{grid-template-columns:repeat(3,minmax(0,1fr))}}.admin-teacher-summary{grid-template-columns:1fr;gap:.45rem;margin:.75rem 0 0;display:grid}@container (min-width:17.5rem){.admin-teacher-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}}.admin-teacher-summary>div{flex-direction:column;gap:.2rem;min-width:0;display:flex}.admin-teacher-summary dt{color:var(--text-muted);font-size:.78rem;font-weight:700}.admin-teacher-summary dd{color:var(--purple-950);min-width:0;margin:0;font-size:.92rem;font-weight:600}.admin-teacher-summary .teacher-rank-badge{max-width:100%}.admin-teacher-summary .teacher-rank-badge-label{text-overflow:ellipsis;overflow:hidden}.admin-teacher-status-panel{border-top:1px solid #7c3aed1f;margin-top:.85rem;padding-top:.85rem}.admin-teacher-feedback{gap:.25rem;margin-bottom:.55rem;font-size:.82rem;display:block}.admin-teacher-feedback input{margin-top:.25rem;padding:.42rem .55rem;font-size:.88rem}.admin-teacher-status-tabs.bookings-subtab-bar{border-radius:var(--radius-sm);background:#f8fafcbf;border:1px solid #7c3aed29;flex-wrap:nowrap;gap:0;padding:0;overflow:hidden}.admin-teacher-status-tabs .bookings-subtab{text-align:center;border:none;border-right:1px solid #7c3aed24;border-radius:0;flex:1 1 0;justify-content:center;align-items:center;min-width:0;padding:.5rem .35rem;font-size:.82rem;font-weight:700;line-height:1.2;display:flex}.admin-teacher-status-tabs .bookings-subtab:last-child{border-right:none}.admin-teacher-status-tabs .admin-teacher-status-tab--approve{color:#166534;background:#dcfce7}.admin-teacher-status-tabs .admin-teacher-status-tab--approve.bookings-subtab--active{color:#fff;background:#166534}.admin-teacher-status-tabs .admin-teacher-status-tab--return{color:#9a3412;background:#ffedd5}.admin-teacher-status-tabs .admin-teacher-status-tab--return.bookings-subtab--active{color:#fff;background:#9a3412}.admin-teacher-status-tabs .admin-teacher-status-tab--reject{color:#9f1239;background:#ffe4e6}.admin-teacher-status-tabs .admin-teacher-status-tab--reject.bookings-subtab--active{color:#fff;background:#9f1239}.admin-teacher-status-tabs .admin-teacher-status-tab--suspend{color:#334155;background:#f1f5f9}.admin-teacher-status-tabs .admin-teacher-status-tab--suspend.bookings-subtab--active{color:#fff;background:#334155}.admin-teacher-status-tabs .bookings-subtab:hover:not(:disabled){filter:brightness(.97)}.admin-teacher-status-panel--modal .admin-teacher-feedback{margin-top:.55rem;margin-bottom:0}.admin-teacher-status-panel--modal{margin-top:1rem}.admin-teacher-status-panel-title{color:var(--purple-900);margin:0 0 .55rem;font-size:.88rem;font-weight:700}.admin-teacher-edit-current-status{color:var(--text-muted);margin:0 0 .85rem;font-size:.88rem}.admin-teacher-edit-form{margin-top:.75rem}.teacher-rank-picker{flex-wrap:wrap;gap:.4rem;display:flex}.teacher-rank-badge-btn{cursor:pointer;background:0 0;border:none;border-radius:999px;padding:0;line-height:0}.teacher-rank-badge-btn:not(.teacher-rank-badge-btn--selected) .teacher-rank-badge{opacity:.72}.teacher-rank-badge-btn--selected .teacher-rank-badge{opacity:1;box-shadow:0 0 0 2px var(--purple-600)}.teacher-rank-badge-btn:focus-visible .teacher-rank-badge{outline:2px solid var(--purple-500);outline-offset:2px}.user-role-line{flex-wrap:wrap;align-items:center;gap:.35rem;display:inline-flex}.admin-user-list{margin-top:0}@media (min-width:768px){.admin-user-list--grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem;display:grid}.admin-user-list--grid>li{min-width:0}}.admin-user-card-head{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.4rem;display:flex}.admin-user-name-row{flex-wrap:wrap;align-items:center;gap:.45rem;min-width:0;display:flex}.admin-user-name{color:var(--purple-950);font-size:1rem;font-weight:700;line-height:1.35}.admin-user-card .admin-user-name{color:var(--purple-950)}.admin-user-card-head .profile-name-link.admin-user-name{font-size:1rem;line-height:1.35}.admin-user-email{word-break:break-all;margin:0 0 .25rem}.admin-user-meta{margin:0}.admin-user-card--parent{text-align:left;border:1px solid var(--border);border-radius:var(--radius);width:100%;box-shadow:var(--shadow-sm);color:var(--text);font:inherit;background:#fffffff5;padding:1rem 1.1rem;transition:border-color .15s,box-shadow .15s;display:block}.admin-user-card--parent strong{color:var(--purple-950);font-weight:700}.admin-user-card--parent.admin-user-card--expanded{box-shadow:var(--shadow);border-color:#7c3aed59}.admin-user-students-btn{white-space:nowrap;flex-shrink:0;min-height:2rem;padding:.35rem .65rem;font-size:.82rem}.admin-user-students{border-top:1px solid #7c3aed1f;margin-top:.85rem;padding-top:.85rem}.admin-user-students-title{color:var(--purple-900);margin:0 0 .55rem;font-size:.82rem;font-weight:700}.admin-user-student-list{flex-direction:column;gap:.55rem;margin:0;padding:0;list-style:none;display:flex}@media (min-width:768px){.admin-user-student-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem;display:grid}}.admin-user-student-item{border-radius:var(--radius-sm);background:#f5f3ffd9;border:1px solid #7c3aed1a;flex-direction:column;gap:.12rem;padding:.55rem .65rem;display:flex}.admin-user-student-item strong{color:var(--purple-950);font-size:.9rem}.admin-user-student-email{word-break:break-all}.role-tag{white-space:nowrap;border-radius:999px;align-items:center;padding:.16rem .55rem;font-size:.72rem;font-weight:700;line-height:1.2;display:inline-flex}.role-tag--parent{color:#1e40af;background:#dbeafe}.role-tag--student{color:#166534;background:#dcfce7}.role-tag--teacher{color:#6b21a8;background:#f3e8ff}.role-tag--admin{color:#991b1b;background:#fee2e2}.grid-2{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;display:grid}.stat{text-align:center;background:linear-gradient(180deg, white, var(--purple-50));color:var(--text)}.stat-value{color:var(--purple-700);font-size:2rem;font-weight:800}.stat-label{font-size:var(--font-message);color:var(--text-muted);line-height:var(--line-message)}.menu{flex-direction:column;gap:.65rem;display:flex}.menu a{border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);color:var(--purple-950);background:#fff;align-items:center;gap:.65rem;padding:.9rem 1.1rem;font-weight:600;transition:transform .15s,background .15s,border-color .15s;display:flex}.menu a:before{content:"→";color:var(--purple-500);font-weight:800}.menu a:hover{background:var(--purple-50);border-color:#7c3aed3d;text-decoration:none;transform:translate(2px)}.policy-box{background:var(--purple-50);border-radius:var(--radius-sm);border:1px solid #7c3aed24;margin-top:1rem;padding:.9rem 1rem}.policy-box strong{color:var(--purple-950)}.policy-box ul{margin:.5rem 0 0;padding-left:1.25rem}.policy-box li{color:var(--text-muted);margin-bottom:.25rem;font-size:.88rem}.section-title{color:var(--purple-950);font-size:var(--font-title-section);margin-bottom:1rem;font-weight:700;line-height:1.4}.step-indicator{background:var(--purple-100);color:var(--purple-800);border-radius:999px;align-items:center;gap:.4rem;padding:.35rem .75rem;font-size:.82rem;font-weight:700;display:inline-flex}.mt-sm{margin-top:.5rem}.mt-md{margin-top:.75rem}.flow-nav{flex-direction:column;gap:.65rem;margin-bottom:1rem;display:flex}.flow-nav-summary{border-radius:var(--radius-sm);border:1px solid var(--border);background:#ffffffeb;flex-wrap:wrap;align-items:center;gap:.45rem .75rem;padding:.85rem 1rem;display:flex}.flow-nav-summary-label{color:var(--text-muted);font-size:.82rem;font-weight:700}.flow-nav-summary strong{color:var(--purple-900);font-size:.95rem}.flow-nav-summary-current{color:var(--purple-800);font-size:.92rem;font-weight:600}.flow-nav-steps{flex-wrap:wrap;gap:.45rem;display:flex}.flow-item{align-items:center;gap:.4rem;display:inline-flex}.flow-step{border:1px solid var(--border);color:var(--text-muted);background:#ffffffe0;border-radius:999px;padding:.35rem .75rem;font-size:.78rem;font-weight:600}.flow-step-active{background:var(--purple-600);border-color:var(--purple-600);color:#fff}.flow-step-done{background:var(--purple-100);color:var(--purple-800)}.flow-arrow{color:var(--purple-500);font-size:.8rem;font-weight:700}.hub-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;display:grid}.hub-card{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);color:var(--purple-950);background:#fffffff5;flex-direction:row;align-items:center;gap:.75rem;padding:1.1rem 1.15rem;transition:transform .15s,border-color .15s;display:flex}.hub-card:hover{border-color:#7c3aed47;text-decoration:none;transform:translateY(-2px)}.hub-card-title{flex:1;min-width:0;font-size:1rem;line-height:1.35}.hub-icon{color:#fff;background:linear-gradient(145deg,#8b5cf6,#6d28d9);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:2.35rem;height:2.35rem;line-height:1;display:inline-flex;box-shadow:0 2px 8px #5b21b63d}.hub-icon svg{stroke-width:2.25px;width:1.5rem;height:1.5rem}.hub-card:hover .hub-icon{background:linear-gradient(145deg,#a78bfa,#7c3aed);box-shadow:0 3px 10px #5b21b64d}.search-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.85rem;display:grid}:is(.card.card--form:has(.search-layout),.card.card--form-wide:has(.search-layout)){width:100%;max-width:none;margin-left:0;margin-right:0}.teacher-availability-form .search-layout{grid-template-columns:minmax(0,1fr) minmax(280px,360px)}.registered-availability-sidebar{flex-direction:column;gap:.45rem;display:flex}.search-optional .registered-sidebar-row{grid-template-columns:3.5rem minmax(0,1fr);gap:.35rem}.search-optional .registered-sidebar-row .daily-availability-date{font-size:.72rem}.search-optional .registered-availability-sidebar .availability-time-bar{padding:.35rem .4rem .25rem}.search-optional .registered-availability-sidebar .availability-time-bar-compact{padding:.28rem .4rem .2rem}@media (min-width:900px){.teacher-availability-form .search-calendar-row{flex-direction:row;align-items:flex-end;gap:1rem}.teacher-availability-form .search-calendar-row .search-calendar{flex:1;min-width:0}.teacher-availability-form .btn-search-compact{flex-shrink:0;align-self:flex-end}}.search-layout{grid-template-columns:minmax(0,1fr) 200px;align-items:start;gap:1.25rem;display:grid}.search-main{flex-direction:column;gap:.85rem;min-width:0;display:flex}.search-criteria-row{grid-template-columns:minmax(9rem,.85fr) minmax(10rem,.75fr) minmax(0,1.5fr);align-items:start;gap:.85rem 1.1rem;display:grid}.search-criteria-col{flex-direction:column;gap:.4rem;min-width:0;display:flex}.search-criteria-field{min-width:0;color:var(--purple-950);flex-direction:column;gap:.35rem;font-size:.88rem;font-weight:600;display:flex}.search-criteria-field--subjects{grid-column:span 2}.search-criteria-field--price .price-range{align-items:center;gap:.35rem;display:flex}.search-criteria-field--price .price-range input{flex:1;min-width:0}.search-criteria-col--subjects .search-field-head{margin-bottom:0}.search-criteria-col .booking-date-picker-list{flex-wrap:wrap}.tag-list-compact{gap:.35rem}.tag-list-compact .tag-btn{padding:.35rem .65rem;font-size:.82rem}.search-optional{border-left:1px solid var(--border);flex-direction:column;gap:.75rem;padding:.85rem 0 .85rem 1rem;display:flex}.search-optional-heading{font-size:var(--font-title-sub);color:var(--purple-800);letter-spacing:.02em;margin:0;font-weight:700}.search-optional label{color:var(--purple-950);flex-direction:column;gap:.35rem;font-size:.88rem;font-weight:600;display:flex}.search-optional .price-range{align-items:center;gap:.35rem;display:flex}.search-optional .price-range input{width:100%;min-width:0}.search-optional .availability-block-list{gap:.65rem;margin:0}.search-optional .availability-block-item{border-bottom:1px solid var(--border);flex-direction:column;align-items:stretch;gap:.35rem;padding:.55rem 0}.search-optional .availability-block-item:last-child{border-bottom:none}.search-optional .availability-block-range{color:var(--purple-950);font-size:.88rem}.search-optional .availability-slot-list{margin:0;padding-left:.35rem}.search-optional .availability-slot-item{font-size:.82rem}@media (max-width:768px){.search-layout{grid-template-columns:1fr}.search-optional{border-left:none;border-top:1px solid var(--border);padding:1rem 0 0}}.search-criteria-actions{margin-top:.35rem}.search-criteria-actions .btn{width:100%}.search-criteria-panel{flex-direction:column;gap:1rem;display:flex}.search-criteria-panel-heading{font-size:var(--font-title-sub);color:var(--purple-800);letter-spacing:.02em;margin:0;font-weight:700}.search-criteria-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:.85rem 1rem;display:grid}.search-criteria-panel .search-criteria-actions{margin-top:.15rem}.search-criteria-panel .search-criteria-actions .btn{width:auto;min-width:8rem}.search-criteria-field--rank{grid-column:span 1}.search-rank-direction-chips{margin:.35rem 0 0}.search-rank-picker{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.search-rank-picker-btn{cursor:pointer;opacity:.55;background:0 0;border:2px solid #0000;border-radius:999px;padding:0;transition:opacity .15s,box-shadow .15s;display:inline-flex}.search-rank-picker-btn:hover{opacity:.8}.search-rank-picker-btn--selected{opacity:1;box-shadow:0 0 0 2px #a78bfa8c}.search-rating-min{align-items:center;gap:.4rem;display:flex}.search-rating-min input{flex:1;min-width:0;max-width:6.5rem}.search-rating-min-suffix{color:var(--text-muted);font-size:var(--font-message);white-space:nowrap;font-weight:600}.teacher-criteria-results{margin-top:1rem}.teacher-criteria-heading{color:var(--purple-950);margin:0 0 .85rem;font-size:1rem}.teacher-criteria-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem;margin:0;padding:0;list-style:none;display:grid}.teacher-criteria-item{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);text-align:left;width:100%;color:inherit;padding:.75rem .85rem;text-decoration:none;transition:border-color .15s,box-shadow .15s,background .15s;display:block}.teacher-criteria-item:hover{background:#f5f3ff8c;border-color:#7c3aed59;box-shadow:0 4px 14px #7c3aed14}.teacher-criteria-item-head{align-items:center;gap:.4rem;margin-bottom:.25rem;display:flex}.teacher-criteria-item-head strong{color:var(--purple-950)}.teacher-criteria-item-tags{flex-wrap:wrap;gap:.3rem;margin-top:.45rem;display:flex}.booking-input-calendar-section{margin-bottom:1rem}.booking-input-calendar-section .teacher-booking-calendar{margin-top:.5rem}.teacher-booking-calendar .ec-time-event--green{color:#15803d;background:#22c55e33;border-left-color:#15803d;font-weight:600}.teacher-booking-calendar .ec-time-event-line{font-size:.72rem}.teacher-booking-input-hint{margin:0 0 1rem}.teacher-booking-input-modal-date{margin:0 0 .5rem}.teacher-booking-input-modal-teacher{margin:0 0 1rem}.teacher-booking-input-modal-time-note{margin-top:.35rem}.teacher-booking-input-modal-price{border-top:1px solid var(--border);margin-top:.5rem;padding-top:.75rem}.teacher-booking-input-modal-price h4{font-size:var(--font-title-sub);color:var(--purple-950);margin:0 0 .5rem}.teacher-booking-calendar-wrap{position:relative}.teacher-booking-calendar-loading{margin:0 0 .35rem}.booking-input-duration-row{margin-bottom:.85rem}@media (max-width:960px){.teacher-criteria-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.teacher-criteria-grid{grid-template-columns:1fr}}.search-field-full{flex-direction:column;gap:.5rem;display:flex}.search-field-full-head{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;display:flex}.search-inline-hint{color:#b91c1c;white-space:nowrap;background:#fef2f2;border:1px solid #ef44444d;border-radius:6px;margin:0;padding:.22rem .5rem;font-size:.76rem;font-weight:700;line-height:1.3}.search-grade-tooltip{z-index:1100;color:#92400e;white-space:nowrap;pointer-events:none;background:#fffbeb;border:1px solid #f59e0b73;border-radius:8px;align-items:center;gap:.35rem;padding:.45rem .7rem;font-size:.82rem;font-weight:700;line-height:1.3;animation:.15s ease-out search-grade-tooltip-in;display:inline-flex;position:fixed;box-shadow:0 4px 16px #1e106529}.search-grade-tooltip:before{content:"";background:#fffbeb;border-top:1px solid #f59e0b73;border-left:1px solid #f59e0b73;width:10px;height:10px;position:absolute;top:-6px;left:10px;transform:rotate(45deg)}.search-grade-tooltip-icon{color:#d97706;font-size:.95rem;line-height:1}@keyframes search-grade-tooltip-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.search-time-bar{border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;padding:.65rem .75rem .5rem}.search-time-bar-disabled{opacity:.55;pointer-events:none}.search-time-bar-track{cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;background:linear-gradient(#f8fafc,#eef2ff);border:1px solid #7c3aed33;border-radius:8px;align-items:stretch;height:2.25rem;display:flex;overflow:hidden}.search-time-bar-segment{pointer-events:none;background:0 0;border-right:1px solid #7c3aed1f;flex:1;min-width:0;transition:background 80ms}.search-time-bar-segment:last-child{border-right:none}.search-time-bar-segment.hour-start{border-left:1px solid #7c3aed38}.search-time-bar-segment.selected{background:linear-gradient(180deg, var(--purple-500), var(--purple-600));box-shadow:inset 0 -2px #2e106533}.search-time-bar-segment.available{background:linear-gradient(#86efac,#22c55e);box-shadow:inset 0 -2px #15803d40}.search-time-bar-segment.occupied{background:linear-gradient(#f87171,#dc2626);box-shadow:inset 0 -2px #991b1b8c}.availability-time-bar .search-time-bar-segment.occupied{opacity:1}.availability-time-bar{padding:.5rem .65rem .4rem}.availability-time-bar-compact{padding:.35rem .5rem .25rem}.availability-time-bar-compact .search-time-bar-track{height:1.5rem}.availability-time-bar-track{cursor:default;touch-action:auto;-webkit-user-select:auto;user-select:auto}.booking-time-bar-track{cursor:pointer}.search-time-bar-segment.selectable{opacity:.95}.booking-time-bar .search-time-bar-segment.selected{background:linear-gradient(#2563ebb8,#1d4ed8d1);box-shadow:inset 0 0 0 1px #2563eb8c}.booking-time-bar .search-time-bar-segment.available.selected{background:linear-gradient(#2563eb6b,#1d4ed885),linear-gradient(#86efac,#22c55e);box-shadow:inset 0 0 0 1px #2563eb73,inset 0 -2px #15803d47}.booking-time-bar .search-time-bar-segment.selected-range-start{border-top-left-radius:4px;border-bottom-left-radius:4px}.booking-time-bar .search-time-bar-segment.selected-range-end{border-top-right-radius:4px;border-bottom-right-radius:4px}.booking-time-bar .search-time-bar-segment.selectable{cursor:pointer}.booking-time-bar .search-time-bar-segment.occupied{cursor:not-allowed;pointer-events:none}.booking-selected-summary{color:#1e40af;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;margin-top:.2rem;padding:.45rem .7rem;font-size:.86rem;font-weight:700}.booking-date-label{color:var(--purple-900);margin:.35rem 0 0;font-size:.92rem}.booking-input-header h2{margin-bottom:0}.booking-input-header .teacher-detail-name-row{margin-bottom:.25rem}.booking-step-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem;margin-bottom:.85rem;display:flex}.booking-step-toolbar h3{margin:0}.booking-input-side{flex-direction:column;gap:.75rem;width:fit-content;max-width:12.5rem;display:flex}.booking-input-lesson-summary{flex-direction:column;gap:.45rem;display:flex}.booking-input-section-heading{color:var(--purple-950);margin:0;font-size:1.02rem;font-weight:700;line-height:1.3}.booking-input-booking-meta{border-bottom:1px solid var(--border);flex-direction:column;gap:.45rem;padding-bottom:.7rem;display:flex}.booking-input-meta-line{color:var(--purple-900);flex-direction:column;gap:.15rem;margin:0;font-size:.98rem;line-height:1.4;display:flex}.booking-input-meta-label{color:var(--text-muted);letter-spacing:.02em;font-size:.78rem;font-weight:700}.booking-input-meta-line strong{color:var(--purple-950);font-weight:700}.booking-input-meta-line .teacher-rank-line{font-weight:600}.booking-input-grid{grid-template-columns:minmax(0,1fr) minmax(10.5rem,13.5rem);align-items:start;gap:1.25rem 1.5rem;display:grid}.booking-input-fields-row{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:.75rem 1rem;display:grid}.booking-input-fields-row>label,.booking-input-campaign-field{min-width:0;margin:0}.booking-input-campaign-field{flex-direction:column;gap:.35rem;display:flex}.booking-input-campaign-applied{color:var(--success);margin:0;font-size:.82rem;font-weight:600;line-height:1.35}.booking-input-col--right{border-left:1px solid var(--border);padding-left:1.25rem}.booking-input-col .form{gap:.85rem}.booking-input-price-panel{flex-direction:column;gap:.5rem;display:flex}.booking-input-price-panel h4{color:var(--purple-950);margin:0;font-size:1.02rem;font-weight:700}.booking-input-actions{border-top:1px solid var(--border);flex-direction:column;grid-column:1/-1;gap:.75rem;padding-top:.25rem;display:flex}@media (max-width:768px){.booking-input-grid,.booking-input-fields-row{grid-template-columns:1fr}.booking-input-col--right{border-left:none;border-top:1px solid var(--border);padding-top:1rem;padding-left:0}}.booking-date-picker,.booking-duration-picker{flex-direction:column;gap:.4rem;display:flex}.booking-date-picker-list{flex-wrap:wrap;gap:.4rem;display:flex}.booking-date-chip{border-radius:var(--radius-btn);color:var(--purple-900);cursor:pointer;background:#fff;border:1px solid #7c3aed40;padding:.35rem .75rem;font-size:.84rem;font-weight:600;transition:background .15s,border-color .15s,color .15s}.booking-date-chip:hover{background:var(--purple-50)}.booking-date-chip.selected{background:linear-gradient(135deg, var(--purple-600), var(--purple-500));color:#fff;border-color:#0000}.btn-back{justify-content:center;min-width:11.5rem}.daily-availability-bars{flex-direction:column;gap:.45rem;margin-top:.15rem;display:flex}.daily-availability-row{grid-template-columns:4.5rem minmax(0,1fr);align-items:center;gap:.5rem;display:grid}.daily-availability-row:has(.daily-availability-bar-full){grid-template-columns:1fr}.daily-availability-date{color:var(--purple-800);white-space:nowrap;font-size:.78rem;font-weight:700}.weekly-availability-register{flex-direction:column;gap:.65rem;display:flex}.weekly-availability-rows{flex-direction:column;gap:.55rem;display:flex}.register-availability-row{grid-template-columns:4.75rem minmax(0,1fr);align-items:start}.register-availability-bar-wrap{flex-direction:column;gap:.2rem;min-width:0;display:flex}.register-availability-summary{margin:0}.register-availability-unavailable{margin:.35rem 0 0}.register-time-bar{padding:.5rem .65rem .4rem}.register-time-bar-compact{padding:.35rem .65rem .25rem}.register-time-bar-compact .search-time-bar-track{height:1.65rem}.register-time-bar-track{cursor:pointer}.register-time-bar .search-time-bar-segment.occupied,.register-time-bar .search-time-bar-segment.available{pointer-events:none}.delete-time-bar{padding:.5rem .65rem .4rem}.delete-time-bar-compact{padding:.35rem .65rem .25rem}.delete-time-bar-compact .search-time-bar-track{height:1.65rem}.delete-time-bar-track{cursor:pointer}.delete-time-bar .search-time-bar-segment.occupied{pointer-events:none;opacity:.92;background:linear-gradient(#fca5a5,#ef4444);box-shadow:inset 0 -2px #991b1b8c}.delete-time-bar .search-time-bar-segment.deletable{cursor:pointer}.delete-time-bar .search-time-bar-segment.selected-for-delete{background:linear-gradient(#fdba74,#f97316);box-shadow:inset 0 -2px #c2410c73}.availability-filter-card{grid-column:1/-1;padding:0;overflow:hidden}.availability-filter-body{padding:1.25rem 1.5rem}.bookings-filter-card{padding:0;overflow:hidden}.booking-filter-tabs{border-bottom:1px solid var(--border);background:linear-gradient(#f5f3fff2,#fafaffe6);gap:0;display:flex}.booking-filter-tab{min-width:0;color:var(--text-muted);font:inherit;text-align:center;cursor:pointer;background:0 0;border:none;border-bottom:3px solid #0000;border-radius:0;flex:1;justify-content:center;align-items:center;gap:.35rem;margin-bottom:-1px;padding:.85rem .75rem .8rem;font-size:.92rem;font-weight:600;transition:color .15s,border-color .15s,background .15s;display:inline-flex}.booking-filter-tab:hover{color:var(--purple-800);background:#ffffff8c}.booking-filter-tab--active{color:var(--purple-900);background:var(--surface);border-bottom-color:var(--purple-600);font-weight:700;box-shadow:inset 0 1px #ffffffe6}.bookings-subtab-bar{background:var(--surface);flex-wrap:wrap;gap:.45rem;padding:.85rem 1rem 1rem;display:flex}.bookings-subtab{color:var(--text-muted);font:inherit;cursor:pointer;background:#fff;border:1px solid #7c3aed2e;border-radius:999px;align-items:center;gap:.35rem;padding:.45rem .9rem;font-size:.84rem;font-weight:600;transition:background .15s,color .15s,border-color .15s,box-shadow .15s;display:inline-flex}.bookings-subtab:hover{color:var(--purple-800);background:var(--purple-50);border-color:#7c3aed52}.bookings-subtab--active{background:linear-gradient(135deg, var(--purple-700), var(--purple-500));color:#fff;border-color:#0000;box-shadow:0 4px 12px #6d28d938}.bookings-empty-card{text-align:center;padding:2rem 1.5rem}.bookings-empty-message{font-size:var(--font-message);color:var(--text-muted);font-weight:600;line-height:var(--line-message);margin:0}.bookings-filter-tools{background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;gap:.75rem 1rem;padding:.85rem 1rem 0;display:flex}.bookings-filter-field{flex-direction:column;flex:1;gap:.35rem;min-width:min(100%,16rem);display:flex}.bookings-filter-label{color:var(--text-muted);font-size:.78rem;font-weight:700}.bookings-filter-field select{border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;min-height:2.5rem;color:var(--text);font:inherit;background:#fff;padding:.55rem .75rem;font-size:.92rem}.bookings-date-range-bar{border-top:none;border-bottom:1px solid #7c3aed14;padding-top:.75rem}.bookings-date-picker .bookings-date-range-bar{border-bottom:none}.bookings-date-range-bar--split{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:.75rem 1rem}.bookings-date-range-chips{flex-wrap:wrap;flex:auto;gap:.45rem;min-width:0;display:flex}.bookings-calendar-section{background:var(--surface);border-bottom:1px solid #7c3aed14;padding:0 1rem 1rem}.bookings-calendar-section .bookings-filter-label{margin:0 0 .65rem}.bookings-calendar-section .search-calendar-row{margin:0}.bookings-missing-report-toggle{color:var(--text-muted);font:inherit;cursor:pointer;white-space:nowrap;background:#fff;border:2px solid #e11d4859;border-radius:999px;flex-shrink:0;align-items:center;gap:.4rem;margin-left:auto;padding:.4rem .85rem;font-size:.84rem;font-weight:600;transition:background .15s,color .15s,border-color .15s,box-shadow .15s;display:inline-flex}.bookings-missing-report-toggle-mark{color:#fff;background:#fff;border:2px solid #e11d4873;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;width:1rem;height:1rem;font-size:.65rem;font-weight:800;line-height:1;display:inline-flex}.bookings-missing-report-toggle:hover{color:var(--danger);background:#e11d480d;border-color:#e11d488c}.bookings-missing-report-toggle--active{background:var(--danger);color:#fff;border-color:var(--danger);box-shadow:0 0 0 3px #e11d482e,0 4px 12px #e11d4847}.bookings-missing-report-toggle--active .bookings-missing-report-toggle-mark{color:var(--danger);background:#fff;border-color:#fff}.bookings-missing-report-toggle--active .teacher-nav-alert-badge,.teacher-nav-alert-badge--on-toggle{color:var(--danger);box-shadow:none;background:#fff}.student-name-link,.profile-name-link{color:var(--purple-800);font:inherit;font-size:inherit;text-underline-offset:.15em;cursor:pointer;background:0 0;border:none;padding:0;font-weight:700;text-decoration:underline}.student-name-link:hover,.profile-name-link:hover{color:var(--purple-600)}.teacher-student-memos-sections{flex-direction:column;gap:1.25rem;margin-top:.75rem;display:flex}.teacher-student-memos-sections h4{font-size:var(--font-title-sub);color:var(--purple-900);margin:0 0 .55rem;font-weight:700}.admin-parent-memos-students{flex-direction:column;gap:1.5rem;margin-top:.75rem;display:flex}.admin-parent-memos-student{border-top:1px solid #7c3aed1f;padding-top:1rem}.admin-parent-memos-students>.admin-parent-memos-student:first-child{border-top:none;padding-top:0}.admin-parent-memos-student-name{font-size:var(--font-title-sub);color:var(--purple-950);margin:0 0 .75rem;font-weight:700}.admin-parent-memos-student .memo-section-head{font-size:.95rem}.memo-section-head{align-items:center;gap:.45rem;display:inline-flex}.modal-panel h3{font-size:var(--font-title-section);font-weight:700;line-height:1.4}.teacher-search-pick-modal{max-height:min(90vh,52rem);overflow:auto}.teacher-search-pick-intro{margin:0 0 .85rem}.teacher-search-pick-modal-actions{justify-content:space-between;align-items:center}.teacher-search-pick-start-times{flex-direction:column;gap:.45rem;margin-bottom:.85rem;display:flex}.teacher-search-pick-start-times-head{flex-wrap:wrap;align-items:baseline;gap:.35rem .5rem;display:flex}.teacher-search-pick-duration-note{color:var(--text-muted);font-size:.78rem;line-height:1.3}.teacher-search-pick-summary{flex-direction:column;gap:.35rem;display:flex}.teacher-search-pick-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.45rem .6rem;display:flex}.teacher-search-pick-head-meta{flex-wrap:wrap;align-items:center;gap:.4rem .55rem;display:inline-flex}.teacher-search-pick-price{color:var(--text-muted);white-space:nowrap;font-size:.72rem;font-weight:600;line-height:1.2}.teacher-search-pick-slots{margin:0;line-height:1.45}.teacher-search-pick-list{flex-direction:column;gap:.65rem;margin:0 0 1rem;padding:0;list-style:none;display:flex}.teacher-search-pick-teacher{border:1px solid var(--border);border-radius:var(--radius-sm);text-align:left;cursor:pointer;width:100%;font:inherit;background:#fff;padding:.75rem}.teacher-search-pick-teacher:hover{border-color:#7c3aed59}.teacher-search-pick-teacher.selected{border-color:var(--purple-500);outline-offset:-1px;background:#ede9fe73;outline:2px solid #7c3aed40}.teacher-search-pick-times{border-radius:var(--radius-sm);background:var(--purple-50);flex-direction:column;gap:.45rem;margin-top:.65rem;padding:.65rem .75rem;display:flex}.modal-panel--wide{width:min(100%,42rem)}.teacher-profile-modal{flex-direction:column;gap:1rem;display:flex}.teacher-profile-modal-section{border-top:1px solid var(--border);padding-top:.85rem}.teacher-profile-modal-section:first-of-type{border-top:none;padding-top:0}.teacher-profile-modal-section h4{font-size:var(--font-title-sub);color:var(--purple-900);margin:0 0 .55rem;font-weight:700}.teacher-profile-modal .teacher-profile-header h3{font-size:var(--font-title-section);margin:0 0 .35rem}.legend-delete{background:linear-gradient(#fdba74,#f97316)}.search-optional .availability-block-head{justify-content:space-between;align-items:flex-start;gap:.5rem;display:flex}.search-optional .availability-delete-btn{flex-shrink:0;font-size:.78rem}.search-optional .availability-recent-note{margin:-.25rem 0 .15rem}.legend-new{background:linear-gradient(180deg, var(--purple-500), var(--purple-600))}.availability-bar-legend{align-items:center;gap:.75rem;margin-top:.15rem;font-size:.78rem;display:flex}.legend-swatch{vertical-align:middle;border-radius:3px;width:.85rem;height:.65rem;margin-right:.2rem;display:inline-block}.legend-available{background:linear-gradient(#86efac,#22c55e)}.legend-occupied{background:linear-gradient(#f87171,#dc2626)}.teacher-result-availability{border-top:1px solid #7c3aed1a;margin-top:.55rem;padding-top:.55rem}.teacher-result-availability-label{color:var(--purple-800);margin-bottom:.35rem;font-size:.78rem;font-weight:700;display:block}.list-item>div{flex:1;min-width:0}.search-time-bar-labels{grid-template-columns:repeat(13,1fr);margin-top:.35rem;padding:0 .1rem;display:grid}.search-time-bar-hour{color:var(--text-muted);text-align:left;font-size:.72rem;font-weight:600}.search-field-label{color:var(--purple-950);font-size:.92rem;font-weight:600}.search-field-head{justify-content:space-between;align-items:center;gap:.6rem;display:flex}.search-field-action{font-size:.8rem;text-decoration:none}.search-field-action:disabled{opacity:.45;cursor:not-allowed;text-decoration:none}.search-calendar-row{flex-direction:column;align-items:stretch;gap:.75rem;display:flex}.btn-search-compact{border-radius:var(--radius-btn);text-align:center;flex-shrink:0;align-self:flex-end;width:auto;min-width:6.5rem;padding:.55rem 1.3rem;font-size:.88rem;font-weight:700;line-height:1.35}.search-calendar{border-radius:var(--radius-sm);box-sizing:border-box;background:#fff;border:1px solid #7c3aed2e;width:100%;max-width:100%;padding:.77rem}.search-calendar-disabled{opacity:.55;pointer-events:none}.search-calendar-nav{justify-content:space-between;align-items:center;gap:.7rem;margin-bottom:.7rem;display:flex}.search-calendar-nav-btn{border-radius:var(--radius-btn);color:var(--purple-800);cursor:pointer;background:#fff;border:1px solid #7c3aed2e;padding:.35rem .7rem;font-size:1rem;font-weight:700;transition:background .15s,border-color .15s}.search-calendar-nav-btn:hover:not(:disabled){background:var(--purple-50);border-color:#7c3aed59}.search-calendar-nav-btn:disabled{opacity:.4;cursor:not-allowed}.search-calendar-nav-range{text-align:center;font-size:1.05rem;font-weight:600}.search-calendar-months{grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;display:grid}.search-calendar-month{background:#ffffffe0;border:1px solid #7c3aed1f;border-radius:8px;min-width:0;padding:.5rem}.search-calendar-title{color:var(--purple-900);text-align:center;margin-bottom:.42rem;font-size:1.1rem;font-weight:700}.search-calendar-weekdays,.search-calendar-grid{border:1px solid #94a3b866;border-radius:6px;grid-template-columns:repeat(7,1fr);gap:0;display:grid;overflow:hidden}.search-calendar-weekday{text-align:center;color:var(--text-muted);background:#f8fafce6;border-bottom:1px solid #94a3b84d;border-right:1px solid #94a3b833;padding:.25rem 0;font-size:.87rem;font-weight:700}.search-calendar-weekday:nth-child(7){border-right:none}.search-calendar-weekday:nth-child(7n+1){color:#dc2626;background:#fee2e2b8;border-top:2px solid #dc262673}.search-calendar-weekday:nth-child(7n){color:#2563eb;background:#dbeafeb8;border-top:2px solid #2563eb73}.search-calendar-day{min-width:0;min-height:2rem;color:var(--purple-950);cursor:pointer;background:#fff;border:1px solid #94a3b833;border-top:none;border-left:none;border-radius:0;justify-content:center;align-items:center;font-size:clamp(.82rem,2.4vw,1.05rem);font-weight:700;line-height:1;transition:background .15s,color .15s;display:flex}.search-calendar-day:nth-child(7n){border-right:none}.search-calendar-day.sunday:not(.selected):not(.disabled):not(.outside):not(.empty){background:var(--cal-sunday-bg);color:#b91c1c}.search-calendar-day.saturday:not(.selected):not(.disabled):not(.outside):not(.empty){background:var(--cal-saturday-bg);color:#1d4ed8}.search-calendar-day.empty{cursor:default;pointer-events:none;background:#f8fafc8c}.search-calendar-day.empty.sunday{background:var(--cal-sunday-bg-muted)}.search-calendar-day.empty.saturday{background:var(--cal-saturday-bg-muted)}.search-calendar-day.outside{cursor:default;pointer-events:none;color:#94a3b8b8;background:#f8fafc8c;font-weight:600}.search-calendar-day.outside.sunday{background:var(--cal-sunday-bg-muted);color:#dc262661}.search-calendar-day.outside.saturday{background:var(--cal-saturday-bg-muted);color:#2563eb61}.search-calendar-day:not(.outside):not(.empty):not(.disabled):not(.selected):hover{filter:brightness(.97)}.search-calendar-day.today:not(.selected){outline-offset:-2px;z-index:1;outline:2px solid #7c3aed73}.search-calendar-day.selected{background:linear-gradient(135deg, var(--purple-600), var(--purple-500));color:#fff}.search-calendar-day.marked:not(.selected):not(.disabled){color:var(--purple-950);background:#dcfce7e6}.search-calendar-day.marked:not(.selected):not(.disabled).sunday,.search-calendar-day.marked:not(.selected):not(.disabled).saturday{color:#166534;background:#dcfce7d1}.search-calendar-day.disabled{color:#cbd5e1;cursor:not-allowed;background:#f8fafcbf}.search-calendar-day.disabled.sunday,.search-calendar-day.disabled.saturday{color:#cbd5e1;background:#f8fafcbf}@media (max-width:520px){.search-calendar{max-width:100%}.search-calendar-months{grid-template-columns:1fr}}.required-mark{color:var(--danger);margin-left:.15rem;font-weight:700}.teacher-profile-header{align-items:center;gap:1rem;display:flex}.teacher-detail-page{padding:1.25rem 1.5rem}.teacher-detail-top{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.75rem 1rem;margin-bottom:1rem;padding-bottom:1rem;display:flex}.teacher-detail-identity{align-items:center;gap:1rem;min-width:0;display:flex}.teacher-detail-name-block{flex-direction:column;align-items:flex-start;gap:.35rem;min-width:0;display:flex}.teacher-detail-name-block h2{margin-bottom:0}.teacher-detail-name-row{flex-wrap:wrap;align-items:center;gap:.45rem .65rem;display:flex}.teacher-detail-actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;gap:.5rem;display:flex}.teacher-detail-columns{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:1.25rem 2rem;display:grid}.teacher-detail-col--left,.teacher-detail-col--right{min-width:0}.teacher-detail-col--right>.section-heading:first-child{margin-top:0}.teacher-avatar{color:#fff;background:linear-gradient(135deg, var(--purple-600), var(--purple-400));border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:64px;height:64px;font-size:1.5rem;font-weight:800;display:flex}.teacher-photo{object-fit:cover;border-radius:50%;flex-shrink:0;width:64px;height:64px}.teacher-rating{color:var(--purple-800);font-weight:600}.star-rating{align-items:center;gap:.08rem;font-size:1.05rem;line-height:1;display:inline-flex}.average-rating{color:var(--purple-900);align-items:baseline;gap:.06rem;font-weight:700;line-height:1;display:inline-flex}.average-rating--md{font-size:1.05rem}.average-rating--lg{font-size:2rem;font-weight:800}.average-rating-star,.star-rating-filled{color:#d97706}.star-rating-empty{color:#d1d5db}.star-rating-input{gap:.15rem}.star-rating-star{font:inherit;cursor:pointer;color:#d1d5db;background:0 0;border:none;padding:.1rem;font-size:1.35rem;line-height:1;transition:color .12s,transform .12s}.star-rating-star--filled{color:#d97706}.star-rating-star:hover:not(:disabled),.star-rating-star:focus-visible{transform:scale(1.08)}.star-rating-star:disabled{cursor:not-allowed;opacity:.55}.review-head .star-rating{flex-shrink:0}.teacher-rating-link{color:var(--purple-800);font:inherit;font-size:inherit;cursor:pointer;background:0 0;border:none;align-items:center;margin:.15rem 0;padding:0;font-weight:600;text-decoration:none;display:inline-flex}.teacher-rating-link__label{text-underline-offset:.15em;align-items:baseline;gap:0;font-weight:600;text-decoration:underline;display:inline-flex}.teacher-rating-link__count{font:inherit;color:inherit;font-weight:600}.teacher-rating-link .meta{text-decoration:none}.teacher-rating-link .average-rating{font:inherit;font-weight:600;text-decoration:none}.teacher-rating-link .average-rating-star{font-size:inherit}.teacher-reviews-modal-summary{flex-wrap:wrap;align-items:center;gap:.35rem .5rem;margin:0 0 .85rem;display:inline-flex}.teacher-rating-link:hover{color:var(--purple-600)}.teacher-reviews-modal-overview{border-bottom:1px solid #7c3aed1f;grid-template-columns:minmax(6.5rem,auto) 1fr;align-items:start;gap:1.25rem 1.5rem;margin:0 0 1rem;padding-bottom:1rem;display:grid}.teacher-reviews-modal-score{text-align:center;flex-direction:column;align-items:center;gap:.35rem;display:flex}.teacher-reviews-modal-score-value{margin:0;line-height:1}.teacher-reviews-modal-score-value .average-rating--lg{justify-content:center}.teacher-reviews-modal-score .meta{margin:0}.review-rating-bars{flex-direction:column;gap:.4rem;width:100%;min-width:0;display:flex}.review-rating-bar-row{grid-template-columns:1.5rem minmax(0,1fr) 2rem;align-items:center;gap:.65rem;font-size:.9rem;display:grid}.review-rating-bar-label{color:var(--purple-800);text-align:center;font-weight:700;line-height:1}.review-rating-bar-track{background:var(--purple-100);border-radius:999px;height:.55rem;overflow:hidden}.review-rating-bar-fill{background:linear-gradient(90deg, var(--purple-400), var(--purple-600));border-radius:999px;min-width:0;height:100%;transition:width .2s}.review-rating-bar-count{color:var(--text-muted,#475569);font-variant-numeric:tabular-nums;text-align:right;font-size:.82rem}.teacher-reviews-modal .review-list{margin-top:.5rem}.section-heading{color:var(--purple-950);margin-bottom:.65rem;font-size:1rem}.tag-list{flex-wrap:wrap;gap:.4rem;display:flex}.tag{background:var(--purple-100);color:var(--purple-800);border-radius:999px;padding:.25rem .65rem;font-size:.82rem;font-weight:600}.tag-grade{color:#1d4ed8;background:#dbeafe;border:1px solid #bfdbfe}.review-list{flex-direction:column;gap:.75rem;list-style:none;display:flex}.review-item{border-radius:var(--radius-sm);background:var(--purple-50);border:1px solid #7c3aed1a;padding:.75rem}.review-head{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.35rem;display:flex}.slot-list{flex-wrap:wrap;gap:.5rem;list-style:none;display:flex}.slot-chip{border-radius:var(--radius-sm);border:1px solid var(--border);background:#fff;padding:.4rem .75rem;font-size:.88rem}.book-cta{text-align:center;background:linear-gradient(180deg, white, var(--purple-50));color:var(--text)}.tag-btn{cursor:pointer;border:1px solid var(--border);border-radius:var(--radius-btn);background:#fff}.tag-active{background:var(--purple-600);color:#fff;border-color:var(--purple-600)}.subject-tag{color:#475569;background:#f1f5f9;border:1px solid #cbd5e1;border-radius:999px;padding:.2rem .65rem;font-size:.82rem;font-weight:600;line-height:1.3;display:inline-block}.subject-tag--english{color:#475569;background:#f1f5f9;border-color:#cbd5e1}.subject-tag--math{color:#1d4ed8;background:#dbeafe;border-color:#93c5fd}.subject-tag--japanese{color:#b91c1c;background:#fee2e2;border-color:#fca5a5}.subject-tag--science{color:#a16207;background:#fef9c3;border-color:#fde047}.subject-tag--social{color:#15803d;background:#dcfce7;border-color:#86efac}.availability-example{background:var(--purple-50);border-radius:var(--radius-sm);border:1px solid #7c3aed24;margin:.75rem 0;padding:.75rem 1rem}.availability-example pre{white-space:pre-wrap;color:var(--purple-900);margin-top:.35rem;font-family:inherit}.available-now-action{flex-wrap:wrap;align-items:center;gap:.65rem;margin-bottom:.85rem;display:flex}.available-now-action .btn-now{width:auto;padding:.55rem 1rem;font-size:.88rem}.badge-now{color:#92400e;background:#fef3c7}.teacher-result-head{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.25rem;display:flex}.post-lesson-card{background:linear-gradient(180deg, white, var(--purple-50));color:var(--text);border:1px solid #7c3aed2e}.post-lesson-cta{margin-top:.75rem}.btn-now{background:linear-gradient(135deg, var(--purple-700), var(--purple-500))}.legal-section{margin-top:1rem}.booking-detail-card{flex-direction:column;gap:0;padding:0;display:flex;overflow:hidden}.booking-detail-header{background:linear-gradient(180deg, var(--purple-50), white);border-bottom:1px solid var(--border);padding:.85rem 1.25rem}.booking-detail-header-top{flex-wrap:wrap;align-items:center;gap:.4rem .65rem;margin-bottom:.25rem;display:flex}.booking-detail-header h2{margin:0;font-size:1.15rem;font-weight:700;line-height:1.35}.booking-detail-datetime{color:var(--text);margin:0;font-size:.92rem;font-weight:600;line-height:1.5}.booking-detail-record .booking-detail-field{margin-bottom:1.25rem}.booking-detail-record .booking-detail-field:last-child{margin-bottom:0}.booking-detail-field h3{font-size:var(--font-title-sub);color:var(--purple-950);margin:0 0 .4rem;font-weight:700}.booking-detail-field p{color:var(--text);margin:0;font-size:.95rem;font-weight:400;line-height:1.7}.booking-detail-body{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:0 1.25rem;padding:.65rem 1.25rem .85rem;display:grid}.booking-detail-body--single{grid-template-columns:1fr}.booking-detail-card .learning-chart-record-list{gap:0}.booking-detail-card .learning-chart-record{border:none;border-bottom:1px solid var(--border);background:0 0;border-radius:0;padding:1rem 0}.booking-detail-card .learning-chart-record:last-child{border-bottom:none}.booking-detail-section{border-top:none;min-width:0;padding:.55rem 0}.booking-detail-section:first-child{border-top:none}.booking-detail-section--full{grid-column:1/-1}.booking-detail-section h3{letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);margin:0 0 .4rem;font-size:.78rem;font-weight:700}.booking-detail-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.5rem 1rem;display:grid}.booking-detail-item dt{color:var(--text-muted);margin-bottom:.15rem;font-size:.78rem}.booking-detail-item dd{margin:0;font-weight:600}.booking-detail-item dd.meta-line{color:var(--text-muted);font-size:.85rem;font-weight:400}.booking-detail-note{white-space:pre-wrap;margin:0;font-size:.9rem;line-height:1.55}.booking-detail-actions{border-top:1px solid var(--border);background:var(--purple-50);flex-wrap:wrap;gap:.5rem;padding:.75rem 1.25rem;display:flex}.modal-overlay{z-index:1000;justify-content:center;align-items:center;padding:1.25rem;display:flex;position:fixed;inset:0}.modal-backdrop{cursor:pointer;background:#1e106573;border:none;position:absolute;inset:0}.modal-panel{z-index:1;width:min(100%,28rem);max-height:calc(100vh - 2.5rem);position:relative;overflow:auto}.modal-actions{flex-wrap:wrap;gap:.5rem;margin-top:.85rem;display:flex}.modal-actions--end{justify-content:flex-end}.booking-detail-footer{padding:0 1.5rem 1.25rem}.booking-detail-banner{background:linear-gradient(180deg, white, var(--purple-50));color:var(--text);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.5rem 1rem;padding:.75rem 1.25rem;display:flex}.booking-detail-banner h2{margin:0;font-size:1rem;font-weight:700;line-height:1.4}.booking-detail-banner .meta{flex:12rem;margin:0}.booking-detail-price{margin-top:.35rem}.booking-detail-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem .85rem;display:grid}.booking-detail-form-grid .btn-row,.booking-detail-form-grid>.meta,.booking-detail-form-grid>.error,.booking-detail-form-grid>button{grid-column:1/-1}.booking-detail-form-grid label:has(textarea){grid-column:1/-1}.booking-detail-form-grid label{margin:0}.booking-detail-meta-row{flex-wrap:wrap;align-items:center;gap:.35rem .75rem;display:flex}.booking-detail-inline-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.price-breakdown{grid-template-columns:repeat(2,minmax(0,1fr));gap:.2rem .85rem;font-size:.88rem;display:grid}.price-breakdown p{margin:0}.price-breakdown--booking-input{flex-direction:column;gap:.4rem;font-size:.96rem;display:flex}.price-breakdown--booking-input .price-breakdown-total{text-align:right;margin-top:.25rem;font-size:1.08rem}.price-breakdown--campaign-applied .price-breakdown-discount,.price-breakdown--campaign-applied .price-breakdown-campaign,.price-breakdown--campaign-applied .price-breakdown-total,.price-breakdown--campaign-applied .price-breakdown-total strong{color:var(--success)}.price-breakdown p:last-child:not(.price-breakdown-total),.price-breakdown:not(.price-breakdown--booking-input) .price-breakdown-total{grid-column:1/-1;margin-top:.25rem}@media (max-width:720px){.booking-detail-body{grid-template-columns:1fr;gap:0}.booking-detail-form-grid,.price-breakdown{grid-template-columns:1fr}}.learning-chart-page-title{margin:0 0 .25rem}.learning-chart-page-desc{margin:0 0 .85rem}.learning-chart-student-picker{margin-top:.25rem}.learning-chart-student-picker .search-grid{grid-template-columns:minmax(0,1fr)}.learning-chart-student-picker select{width:100%}.parent-student-layout{flex-direction:column;align-items:stretch;gap:.75rem;width:100%;display:flex}.parent-student-filter{flex-direction:column;gap:.35rem;display:flex}.parent-student-filter__label{letter-spacing:.06em;color:var(--text-muted);margin:0;font-size:.72rem;font-weight:700}.parent-student-filter__select{border:1px solid var(--border);border-radius:var(--radius-sm,10px);background:var(--surface-input,var(--surface));width:100%;max-width:100%;color:var(--text);font:inherit;padding:.65rem .75rem;font-size:.9rem}.parent-student-filter__loading,.parent-student-filter__empty{margin:0}.parent-student-nav{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted);box-shadow:var(--shadow-sm);padding:.85rem;position:sticky;top:1rem}.parent-student-nav-label{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin:0 0 .65rem;font-size:.72rem;font-weight:700}.parent-student-nav-list{flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.parent-student-nav-item{border-radius:var(--radius-sm);width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;flex-direction:column;align-items:flex-start;gap:.1rem;padding:.65rem .75rem;transition:background .15s,border-color .15s,color .15s;display:flex}.parent-student-nav-item:hover{background:#7c3aed14;border-color:#7c3aed1f}.parent-student-nav-item--active{color:var(--purple-900);background:linear-gradient(135deg,#7c3aed24,#8b5cf61a);border-color:#7c3aed47;font-weight:600}.parent-student-nav-name{line-height:1.35}.parent-student-nav-grade{color:var(--text-muted);font-size:.82rem;font-weight:400}.parent-student-nav-item--active .parent-student-nav-grade{color:var(--purple-700)}.parent-student-nav-loading,.parent-student-nav-empty{margin:0}.parent-student-main{flex-direction:column;gap:1rem;min-width:0;display:flex}.teacher-student-nav{flex-direction:column;gap:0;display:flex}.teacher-student-grade-tabs{flex-direction:column;gap:.35rem;margin-bottom:.85rem;display:flex}.teacher-student-grade-tab{border-radius:var(--radius-sm);background:var(--surface);width:100%;color:var(--purple-800);font:inherit;text-align:left;cursor:pointer;border:1px solid #7c3aed29;justify-content:space-between;align-items:center;gap:.5rem;padding:.55rem .75rem;font-size:.84rem;font-weight:600;line-height:1.35;transition:background .15s,border-color .15s,color .15s;display:flex}.teacher-student-grade-tab-label{min-width:0}.parent-student-nav-item-head{justify-content:space-between;align-items:center;gap:.45rem;width:100%;display:flex}.parent-student-nav-item-head .parent-student-nav-name{min-width:0}.teacher-nav-alert-badge{background:var(--danger);color:#fff;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;min-width:1.2rem;height:1.2rem;padding:0 .3rem;font-size:.68rem;font-weight:700;line-height:1;display:inline-flex;box-shadow:0 0 0 2px #ffffffd9}.teacher-nav-alert-badge--success{background:var(--success)}.teacher-student-grade-tab--active .teacher-nav-alert-badge{box-shadow:0 0 0 2px #7c3aed2e}.parent-student-nav-item--active .teacher-nav-alert-badge{box-shadow:0 0 0 2px #7c3aed38}.teacher-student-grade-tab:hover{background:#7c3aed14;border-color:#7c3aed3d}.teacher-student-grade-tab--active{color:var(--purple-900);background:linear-gradient(135deg,#7c3aed29,#8b5cf61f);border-color:#7c3aed52}.teacher-student-nav-list-label{margin-top:.15rem}.teacher-student-nav-empty-grade{margin:.35rem 0 0}@media (max-width:768px){.parent-student-layout{grid-template-columns:1fr}.parent-student-nav{position:static}.parent-student-nav-list{flex-direction:column}.parent-student-nav-item{width:100%;min-width:0;min-height:2.75rem}}.student-schedule-layout{grid-template-columns:minmax(0,680px) minmax(280px,360px);justify-content:space-between}.student-schedule-left{flex-direction:column;gap:1rem;min-width:0;display:flex}.student-schedule-calendar-panel{min-width:0}.student-schedule-calendar-panel .search-optional-heading{margin-bottom:.65rem}.student-schedule-upcoming{align-self:start;position:sticky;top:1rem}.schedule-list-card .booking-detail-header{margin-bottom:0}@media (max-width:900px){.student-schedule-layout{grid-template-columns:1fr}.student-schedule-upcoming{position:static}}.learning-chart-section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.learning-chart-section-head h3{font-size:var(--font-title-section);margin:0;font-weight:700}.learning-chart-tags{flex-wrap:wrap;gap:.45rem;margin-top:.5rem;display:flex}.learning-chart-student-meta{margin:0}.learning-chart-student-weak{margin:.35rem 0 0}.learning-chart-record-list{flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.learning-chart-record{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);background:#fff;padding:.85rem 1rem}.learning-chart-record-head{flex-wrap:wrap;align-items:center;gap:.35rem .65rem;margin-bottom:.35rem;display:flex}.learning-chart-record-head strong{color:var(--purple-950)}.learning-chart-record-head--lesson{flex-direction:column;align-items:flex-start;gap:.3rem}.learning-chart-record-subhead{flex-wrap:wrap;align-items:center;gap:.35rem .65rem;display:flex}.learning-chart-last-body{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:start;gap:1.5rem 2.5rem;margin-top:.75rem;display:grid}.student-learning-chart-page{grid-column:1/-1;width:100%}.student-learning-chart-page .booking-detail-header,.student-learning-chart-page .booking-detail-body{padding-left:1.75rem;padding-right:1.75rem}.student-learning-chart-page .learning-chart-last-body{gap:1.75rem 3rem}.student-learning-chart-page .learning-chart-last-side{padding-left:2rem}.student-learning-chart-page .learning-chart-record{padding:.25rem 0}.student-record-row-layout .payment-history-record-row{align-items:flex-start;gap:1.5rem;display:flex}.student-record-row-layout .payment-history-record-main{flex:0 auto;min-width:0}.student-record-row-layout .learning-chart-record-preview{flex:auto;min-width:0}.student-record-row-layout .learning-chart-record-preview .payment-history-sub{margin:0;line-height:1.65}.student-record-row-layout .learning-chart-record-preview .payment-history-sub+.payment-history-sub{margin-top:.35rem}.student-record-row-layout .payment-history-record-action{align-self:center}.student-learning-chart-page .payment-history-detail{font-size:1.05rem}.learning-chart-last-main,.learning-chart-last-side{flex-direction:column;gap:1rem;display:flex}.learning-chart-last-side{border-left:1px solid var(--border);padding-left:1.5rem}@media (max-width:720px){.learning-chart-last-body{grid-template-columns:1fr}.learning-chart-last-side{border-left:none;border-top:1px solid var(--border);padding-top:.5rem;padding-left:0}}.learning-chart-record-body p{margin:.25rem 0 0}.learning-chart-record-body p:first-child{margin-top:0}.learning-chart-record-actions{margin-top:.65rem}.learning-chart-record-expand{padding-top:.85rem}.learning-chart-record-expand-wrap{opacity:0;grid-template-rows:0fr;transition:grid-template-rows .28s,opacity .22s;display:grid}.learning-chart-record-expand-wrap.is-open{opacity:1;grid-template-rows:1fr}.learning-chart-record-expand-inner{min-height:0;overflow:hidden}.learning-chart-record-expand-wrap.is-open .learning-chart-record-expand{border-top:1px solid var(--border)}.payment-history-record-row{justify-content:space-between;align-items:center;gap:1rem;display:flex}.payment-history-record-main{flex:1;min-width:0}.payment-history-two-lines{flex-direction:column;gap:.35rem;display:flex}.payment-history-line{flex-wrap:wrap;align-items:center;gap:.5rem;min-width:0;display:flex}.payment-history-line .payment-history-detail{margin:0}.payment-history-detail{color:var(--text);margin:.35rem 0 0;font-size:1rem;line-height:1.65}.payment-history-sub{margin-top:.35rem}.payment-history-record-action{flex-shrink:0;align-items:center;gap:.85rem;margin-left:auto;display:flex}.payment-history-amount{color:var(--purple-950);white-space:nowrap;font-size:1.1rem}.parent-bookings-columns{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:1.25rem;display:grid}.parent-bookings-column .list{gap:.75rem}.parent-bookings-column-title{font-size:var(--font-title-section);color:#fff;align-items:center;gap:.5rem;margin:0 0 .75rem;font-weight:700;display:flex}.parent-booking-card-row{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.parent-booking-card-main{flex:1;min-width:0}.parent-booking-card-main .badge{margin-top:.5rem}.parent-booking-actions{flex-direction:column;flex-shrink:0;align-items:stretch;gap:.5rem;min-width:7.5rem;display:flex}.parent-booking-actions .btn{width:100%}.teacher-booking-card-row{align-items:center}.teacher-booking-card-body{flex-direction:column;flex:1;gap:.35rem;min-width:0;display:flex}.teacher-booking-card-line1{margin:0}.teacher-booking-card-line2{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.teacher-booking-card-line2-main{flex-wrap:wrap;align-items:center;gap:.35rem .5rem;min-width:0;display:flex}.teacher-booking-card-line2-main .meta,.teacher-booking-card-line2-main .badge{margin:0}.teacher-booking-report-status{white-space:nowrap;flex-shrink:0;font-size:.84rem;font-weight:700}.teacher-booking-report-status--submitted{color:var(--success)}.teacher-booking-report-status--missing{color:var(--danger)}.parent-booking-longterm{border-top:1px solid var(--border);margin-top:.85rem;padding-top:.85rem}@media (max-width:900px){.parent-bookings-columns{grid-template-columns:1fr}}@media (max-width:540px){.parent-booking-card-row{flex-direction:column}.parent-booking-actions{width:100%;min-width:0}}.payment-history-list{flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.payment-history-list>li{margin:0}.booking-detail-card.payment-history-page-card .booking-detail-header{padding:1rem 1.5rem}.booking-detail-card.payment-history-page-card .booking-detail-body{padding:.85rem 1.5rem 1.25rem}.booking-detail-card.payment-history-page-card .booking-detail-summary{max-width:48rem}.booking-detail-card.payment-history-page-card .payment-history-month-bar{border-bottom:1px solid var(--border);background:linear-gradient(#fff,#f8fafcd9);padding:.35rem 1.5rem .85rem}.payment-history-month-matrix{border-bottom:1px solid var(--border);background:linear-gradient(#fff,#f8fafcd9);padding:.35rem 1.5rem .85rem;overflow-x:auto}.payment-history-month-table{border-collapse:separate;border-spacing:.15rem .35rem;table-layout:auto;width:auto;max-width:100%}.payment-history-month-table th,.payment-history-month-table td{text-align:center;vertical-align:middle;padding:0}.payment-history-year-label{width:auto;color:var(--purple-950);white-space:nowrap;font-size:.88rem;font-weight:700;text-align:left!important;padding-right:.45rem!important}.payment-history-month-cell{width:auto;padding:0!important}.payment-history-month-empty{width:3rem;min-height:1.5rem;color:var(--text-muted);justify-content:center;align-items:center;font-size:.82rem;display:inline-flex}.payment-history-month-link{border-radius:var(--radius-sm);width:3rem;min-height:1.5rem;color:var(--purple-800);cursor:pointer;background:#fff;border:1px solid #7c3aed2e;justify-content:center;align-items:center;padding:0;font-size:.82rem;font-weight:600;line-height:1;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.payment-history-month-link:hover{border-color:var(--purple-400);background:var(--purple-50);color:var(--purple-900)}.payment-history-month-link--active{border-color:var(--purple-500);background:linear-gradient(180deg, var(--purple-500), var(--purple-600));color:#fff;box-shadow:0 2px 8px #5b21b638}.payment-history-month-link--active:hover{background:linear-gradient(180deg, var(--purple-500), var(--purple-600));color:#fff}.payment-history-month-link--no-data:not(.payment-history-month-link--active){color:var(--text-muted);background:#f8fafce6;border-color:#94a3b873}.payment-history-month-link--no-data:not(.payment-history-month-link--active):hover{border-color:var(--purple-300);background:var(--purple-50);color:var(--purple-800)}.booking-detail-card.payment-history-page-card .payment-history-list .learning-chart-record{padding:1rem 1.25rem}.booking-detail-card.payment-history-page-card .payment-history-record-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1rem 2rem;display:grid}.booking-detail-card.payment-history-page-card .payment-history-record-action{white-space:nowrap;flex-shrink:0;margin-left:0}.booking-detail-card.payment-history-page-card .payment-history-line.meta{gap:.3rem .85rem}.booking-detail-card.payment-history-page-card .payment-history-line.meta>span{flex-wrap:wrap;align-items:center;gap:.35rem;display:inline-flex}.booking-detail-card .payment-history-list .learning-chart-record{border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;border-bottom:none;padding:.85rem 1rem}.booking-detail-card:has(.payment-history-list){overflow:visible}.booking-detail-card:has(.payment-history-list) .booking-detail-body{overflow:visible}.booking-detail-card .payment-history-list .learning-chart-empty{margin-bottom:0}@media (max-width:720px){.booking-detail-card.payment-history-page-card .payment-history-record-row{grid-template-columns:1fr;align-items:stretch;gap:.85rem}.booking-detail-card.payment-history-page-card .payment-history-record-action{justify-content:space-between;width:100%}}.booking-detail-summary{margin-top:.85rem}.learning-chart-empty{color:var(--text-muted);margin:0;font-size:.9rem}.learning-chart-form{border-radius:var(--radius-sm);background:var(--purple-50);border:1px dashed #7c3aed40;margin-bottom:1rem;padding:1rem}.legal-section h3{color:var(--purple-950);margin-bottom:.35rem;font-size:.95rem}.legal-section p{color:var(--text-muted);font-size:.9rem}.memo-todo-add{gap:.65rem;margin-bottom:1.15rem;display:flex}.memo-todo-add input{flex:1;min-width:0}.memo-readonly-note{margin-bottom:.85rem}.memo-view-tabs{border-top:1px solid var(--border);gap:.5rem;margin-top:1rem;padding-top:.85rem;display:flex}.card--panel>.memo-view-tabs:first-child{border-top:none;margin-top:0;padding-top:0}.memo-view-tab{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);font:inherit;cursor:pointer;background:#fff;flex:1;justify-content:center;align-items:center;gap:.4rem;padding:.55rem .75rem;font-size:.88rem;font-weight:600;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.memo-view-tab:hover{color:var(--purple-800);border-color:#7c3aed40}.memo-view-tab--active{background:var(--purple-50);color:var(--purple-900);border-color:#7c3aed59}.memo-table-text-readonly{word-break:break-word;padding:.1rem 0;line-height:1.55;display:block}.memo-note-add{gap:.5rem;margin-bottom:1rem;display:grid}.memo-note-add-label{color:var(--purple-900);font-size:.85rem;font-weight:700}.memo-note-add-actions{justify-content:flex-end;display:flex}.memo-note-list{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.memo-note-card{border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;gap:.55rem;padding:.75rem .85rem;display:grid}.memo-note-card-head{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.memo-note-date{color:var(--text-muted);white-space:nowrap;font-size:.82rem}.memo-note-textarea{border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;font:inherit;resize:vertical;min-height:4.5rem;padding:.6rem .7rem;line-height:1.55}.memo-note-textarea:focus{border-color:#7c3aed73;outline:2px solid #7c3aed59}.memo-note-body-readonly{white-space:pre-wrap;word-break:break-word;margin:0;line-height:1.6}.memo-note-footer{justify-content:space-between;align-items:center;gap:.75rem;margin-top:.85rem;display:flex}.memo-note-check{margin:0}.memo-note-status-select{border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;margin-left:auto;padding:.25rem .45rem;font-size:.82rem}.memo-note-attachment-label{color:var(--purple-900);gap:.35rem;font-size:.82rem;font-weight:600;display:grid}.memo-note-attachment-input{border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;font:inherit;padding:.45rem .6rem}.memo-note-attachment-input:focus{border-color:#7c3aed73;outline:2px solid #7c3aed59}.memo-attachment{gap:.5rem;display:grid}.memo-attachment-link{color:var(--purple-700);word-break:break-all;font-size:.85rem}.memo-attachment-thumb-wrap{max-width:12rem;display:inline-block}.memo-attachment-thumb{object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--border);width:100%;max-height:8rem;display:block}.memo-status-badge{border-radius:999px;align-items:center;margin-left:auto;padding:.2rem .55rem;font-size:.78rem;font-weight:700;line-height:1.3;display:inline-flex}.memo-status--pending{color:#92400e;background:#fef3c7}.memo-status--resolved{color:#166534;background:#dcfce7}.memo-status--unresolved{color:#991b1b;background:#fee2e2}.profile-name-link--memo{flex-wrap:wrap;align-items:baseline;gap:.35rem;display:inline-flex}.memo-link-hint{color:var(--purple-700);background:var(--purple-50);border:1px solid #7c3aed33;border-radius:999px;padding:.05rem .4rem;font-size:.72rem;font-weight:600;line-height:1.4}.memo-table-wrap{border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;overflow-x:auto}.memo-table{border-collapse:collapse;width:100%;font-size:.9rem}.memo-table thead{background:var(--purple-50)}.memo-table th,.memo-table td{border-bottom:1px solid var(--border);vertical-align:middle;text-align:left;padding:.65rem .75rem}.memo-table th{color:var(--purple-900);white-space:nowrap;font-size:.78rem;font-weight:700}.memo-table tbody tr:last-child td{border-bottom:none}.memo-table-row--done{background:#f5f3ffa6}.memo-table-col-check{text-align:center;width:3.25rem}.memo-table-col-date{white-space:nowrap;width:6.5rem}.memo-table-col-status{white-space:nowrap;width:5.5rem}.memo-table-check{justify-content:center;margin:0}.memo-table-date{color:var(--text-muted);white-space:nowrap;font-size:.82rem}.memo-table-text{width:100%;min-width:8rem;font:inherit;color:var(--text);background:0 0;border:none;padding:.1rem 0}.memo-table-text:focus{box-shadow:inset 0 -2px 0 var(--purple-300);outline:none}.memo-table-status-btn{min-width:4.5rem;padding:.35rem .55rem;font-size:.82rem}.memo-todo-footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:.75rem;margin-top:1rem;padding-top:.85rem;display:flex}.memo-todo-footer .btn{flex-shrink:0}@media (max-width:520px){.memo-table th,.memo-table td{padding:.55rem .5rem}.memo-table-col-date{width:5.5rem}}@media (max-width:768px){.shell{padding:1rem .85rem 2rem}.site-header{margin-bottom:1rem;padding:1rem 1.1rem}.header-top{align-items:center;gap:2.4rem}.header-top h1{padding-left:.35rem;font-size:1.35rem;line-height:1.45}.card{padding:1rem 1.1rem}.card--form,.card--form-wide{padding:1.1rem 1.15rem 1.25rem}.hub-grid{grid-template-columns:1fr}.hub-card{align-items:center;min-height:4.25rem;padding:1rem 1.1rem}.grid-2,.search-grid,.search-criteria-row,.search-criteria-grid{grid-template-columns:1fr}.search-field-head{flex-direction:column;align-items:stretch;gap:.5rem}.list-item{flex-direction:column;align-items:stretch}.list-item .btn,.list-item a.btn{width:100%;min-height:2.75rem}.btn,.card .btn,.card--form .btn,.card--panel .btn{min-height:2.75rem;padding:.7rem 1rem;font-size:.95rem}.btn-row{flex-direction:column;align-items:stretch}.btn-row .btn{width:100%}.booking-date-chip{min-height:2.5rem;padding:.55rem .9rem;font-size:.9rem}.teacher-profile-header{flex-direction:column;align-items:flex-start}.teacher-detail-top{flex-direction:column;align-items:stretch}.teacher-detail-actions .btn{width:100%}.teacher-detail-columns{grid-template-columns:1fr}.learning-chart-record-head{flex-wrap:wrap;gap:.4rem}.payment-history-record-row{flex-direction:column;align-items:stretch}.payment-history-record-action{width:100%}.payment-history-record-action .btn,.payment-history-record-action a.btn{width:100%;min-height:2.75rem}.payment-history-amount{white-space:normal}.form-footer{flex-direction:column;align-items:stretch;gap:.75rem}.form-footer .btn,.form-footer a.btn{width:100%}.modal-actions{flex-direction:column;align-items:stretch}.modal-actions .btn{width:100%}.memo-todo-footer{flex-direction:column;align-items:stretch}.memo-todo-footer .btn{width:100%}.memo-todo-add{flex-direction:column;align-items:stretch}.memo-todo-add .btn{width:100%}.flow-nav-steps{display:none}.parent-booking-card-row{flex-direction:column}.parent-booking-actions{width:100%;min-width:0}.parent-booking-actions .btn{min-height:2.75rem}.parent-bookings-column-title{font-size:1.2rem}.booking-filter-tab{padding:.8rem .45rem .75rem;font-size:.86rem}.bookings-subtab-bar{gap:.35rem;padding:.75rem .85rem .9rem}.bookings-subtab{padding:.42rem .75rem;font-size:.82rem}.bookings-filter-tools{padding-left:.85rem;padding-right:.85rem}.bookings-filter-field{min-width:100%}.availability-filter-body{padding:1rem 1.1rem}}@media (max-width:480px){.shell{padding-left:.7rem;padding-right:.7rem}.search-calendar-nav-btn{min-height:2.5rem;padding:.45rem .55rem;font-size:.82rem}.search-calendar-nav-range{font-size:.88rem}.memo-view-tab{padding:.65rem .5rem;font-size:.82rem}}.event-calendar{border-radius:var(--radius-sm);background:#fff;border:1px solid #7c3aed2e;width:100%;overflow:hidden}.card:has(.event-calendar){padding:.65rem .45rem}.card:has(.event-calendar)>h2{padding-left:.75rem;padding-right:.75rem}.card:has(.event-calendar)>h3{padding-left:.75rem;padding-right:.75rem}.card:has(.event-calendar)>.section-heading{padding-left:.75rem;padding-right:.75rem}.event-calendar-disabled{opacity:.55;pointer-events:none}.event-calendar-toolbar{background:#f8fafcd9;border-bottom:1px solid #94a3b840;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 1rem;display:flex}.event-calendar-toolbar-left{align-items:center;gap:.65rem;min-width:0;display:flex}.event-calendar-today-btn{border-radius:var(--radius-btn);color:var(--purple-800);cursor:pointer;background:#fff;border:1px solid #7c3aed40;padding:.4rem .85rem;font-size:.88rem;font-weight:700}.event-calendar-nav{gap:.25rem;display:flex}.event-calendar-nav-btn{width:2rem;height:2rem;color:var(--purple-800);cursor:pointer;background:#fff;border:1px solid #7c3aed33;border-radius:50%;font-size:1.25rem;line-height:1}.event-calendar-title{color:var(--purple-900);margin:0;font-size:1.15rem;font-weight:700}.event-calendar-view-toggle{border-radius:var(--radius-btn);border:1px solid #7c3aed33;display:flex;overflow:hidden}.event-calendar-view-btn{color:var(--text-muted);cursor:pointer;background:#fff;border:none;padding:.4rem .9rem;font-size:.85rem;font-weight:700}.event-calendar-view-btn--active{background:var(--purple-600);color:#fff}.event-calendar-month{padding:.35rem .25rem}.event-calendar-weekdays{border-bottom:1px solid #94a3b84d;grid-template-columns:repeat(7,1fr);display:grid}.event-calendar-weekday{text-align:center;color:var(--text-muted);padding:.45rem 0;font-size:.78rem;font-weight:700}.event-calendar-weekday.sunday{color:#dc2626}.event-calendar-weekday.saturday{color:#2563eb}.event-calendar-month-grid{grid-template-columns:repeat(7,1fr);min-height:38rem;display:grid}.event-calendar-cell{background:#fff;border-bottom:1px solid #94a3b833;border-right:1px solid #94a3b833;flex-direction:column;min-width:0;min-height:6.75rem;padding:.2rem;display:flex}.event-calendar-cell:nth-child(7n){border-right:none}.event-calendar-cell.sunday:not(.selected){background:var(--cal-sunday-bg)}.event-calendar-cell.saturday:not(.selected){background:var(--cal-saturday-bg)}.event-calendar-cell.outside,.event-calendar-cell.empty{pointer-events:none;background:#f8fafc99}.event-calendar-cell.outside .event-calendar-day-num{color:#94a3b8b3}.event-calendar-cell.today .event-calendar-day-num{background:var(--purple-600);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:1.65rem;height:1.65rem;display:inline-flex}.event-calendar-cell.selected{outline-offset:-2px;background:#ede9fea6;outline:2px solid #7c3aed59}.event-calendar-cell.disabled{opacity:.45}.event-calendar-cell-btn{font:inherit;text-align:left;cursor:pointer;box-sizing:border-box;border:none;width:100%}.event-calendar-cell-btn:disabled{cursor:not-allowed}.event-calendar-cell-btn:not(:disabled):hover{filter:brightness(.98)}.event-calendar-day-btn{cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:.1rem .2rem}.event-calendar-day-num{color:var(--purple-950);font-size:.92rem;font-weight:700}.event-calendar-events{flex-direction:column;flex:1;gap:.12rem;margin-top:.15rem;display:flex;overflow:hidden}.event-calendar-event{text-align:left;cursor:pointer;border:none;border-radius:4px;align-items:center;gap:.25rem;min-width:0;padding:.15rem .4rem;font-size:.72rem;line-height:1.25;text-decoration:none;display:flex;overflow:hidden}.event-calendar-cell-btn:not(.event-calendar-cell--clickable-events) .event-calendar-event{cursor:inherit;pointer-events:none}.event-calendar-cell-interactive[role=button]{cursor:pointer}.event-calendar-cell-interactive[role=button]:hover{filter:brightness(.98)}.event-calendar-event-time{opacity:.9;flex-shrink:0;font-weight:700}.event-calendar-event-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.event-calendar-event--multiline{cursor:pointer;flex-direction:column;align-items:stretch;gap:.05rem;padding:.2rem .35rem}.event-calendar-event-lines{flex-direction:column;gap:.05rem;width:100%;min-width:0;display:flex}.event-calendar-event-line{white-space:nowrap;text-overflow:ellipsis;width:100%;min-width:0;font-weight:600;line-height:1.3;display:block;overflow:hidden}.event-calendar-event--blue{color:#1d4ed8;background:#3b82f62e}.event-calendar-event--green{color:#15803d;background:#22c55e33}.event-calendar-event--red{color:#b91c1c;background:#ef44442e}.event-calendar-event--orange{color:#c2410c;background:#f973162e}.event-calendar-event--purple{color:var(--purple-800);background:#7c3aed2e}.event-calendar-event--teal{color:#0f766e;background:#14b8a62e}.event-calendar-event--gray{color:#475569;background:#94a3b840}.event-calendar-more{color:var(--text-muted);padding-left:.25rem;font-size:.65rem}.event-calendar-week{overflow:auto clip}.event-calendar--week{overflow:visible}.event-calendar--week .event-calendar-week-body,.event-calendar--week .ec-time-hours--week,.event-calendar--week .event-calendar-week-columns .ec-time-column,.event-calendar--week .event-calendar-week-columns .ec-time-column-inner,.event-calendar--week .ec-time-track{height:auto;min-height:0}.event-calendar--week .event-calendar-week .ec-time-track{overflow:visible}.event-calendar--week .ec-time-slot{flex:none;min-height:1.35rem}.teacher-search-calendar.event-calendar--week .ec-time-slot{min-height:1.5rem}.event-calendar-week-header{border-bottom:1px solid #94a3b84d;grid-template-columns:3.5rem repeat(7,1fr);display:grid}.event-calendar-week-gutter{border-right:1px solid #94a3b833}.event-calendar-week-day-head{cursor:pointer;background:#fff;border:none;border-right:1px solid #94a3b826;flex-direction:column;align-items:center;padding:.5rem .25rem;display:flex}.event-calendar-week-day-head.today .event-calendar-week-day-num{background:var(--purple-600);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:inline-flex}.event-calendar-week-day-head.selected{background:#ede9fe80}.event-calendar-week-day-head.sunday:not(.selected){background:var(--cal-sunday-bg)}.event-calendar-week-day-head.saturday:not(.selected){background:var(--cal-saturday-bg)}.event-calendar-week-day-head.sunday .event-calendar-week-day-name{color:#dc2626}.event-calendar-week-day-head.saturday .event-calendar-week-day-name{color:#2563eb}.event-calendar-week-column{min-width:0;height:100%}.event-calendar-week-column.sunday .ec-time-slot.empty{background:var(--cal-sunday-bg)}.event-calendar-week-column.saturday .ec-time-slot.empty{background:var(--cal-saturday-bg)}.event-calendar-week-column.sunday .ec-time-slot.empty:hover{background:var(--cal-sunday-bg-hover)}.event-calendar-week-column.saturday .ec-time-slot.empty:hover{background:var(--cal-saturday-bg-hover)}.event-calendar-week-day-name{color:var(--text-muted);font-size:.72rem;font-weight:700}.event-calendar-week-day-num{color:var(--purple-950);font-size:1.1rem;font-weight:700}.event-calendar-week-body{grid-template-columns:3.5rem 1fr;align-items:stretch;min-height:40rem;display:grid}.event-calendar-week-columns{grid-template-columns:repeat(7,minmax(0,1fr));min-width:0;height:100%;display:grid}.ec-time-column{min-width:0;height:100%}.ec-time-column-inner{grid-template-columns:3.5rem 1fr;height:100%;min-height:40rem;display:grid}.ec-time-column-inner--no-labels{grid-template-columns:1fr}.event-calendar-week-columns .ec-time-column{height:100%;min-height:40rem}.event-calendar-week-columns .ec-time-column-inner{min-height:40rem}.event-calendar-week .ec-time-track{overflow:hidden}.ec-time-column-compact .ec-time-column-inner{min-height:28rem}.ec-time-hours{border-right:1px solid #94a3b833;flex-direction:column;justify-content:space-between;padding:0 .25rem 0 0;display:flex}.ec-time-hour-label{color:var(--text-muted);height:0;font-size:.68rem;line-height:1;transform:translateY(-50%)}.ec-time-track-wrap{min-width:0;position:relative}.ec-time-track{border-right:1px solid #94a3b826;flex-direction:column;height:100%;min-height:40rem;display:flex;position:relative}.ec-time-slot{background:#fff;border-bottom:1px solid #94a3b814;flex:1;min-height:0}.ec-time-column-interactive .ec-time-slot.empty{cursor:crosshair}.ec-time-slot.empty:hover{background:#f8fafce6}.ec-time-slot.registered{background:#22c55e38}.ec-time-slot.available{cursor:pointer;background:#22c55e26}.ec-time-slot.occupied{cursor:not-allowed;background:#ef444426}.ec-time-slot.draft,.ec-time-slot.search-selected{background:#7c3aed47}.ec-time-slot.delete-selected{background:#ef444459}.ec-time-slot.deletable{cursor:pointer;background:#22c55e2e}.ec-time-slot.book-selected{background:#3b82f659}.ec-time-slot.blocked{background:#f8fafccc}.ec-time-event{z-index:2;pointer-events:auto;cursor:pointer;box-sizing:border-box;border-left:3px solid;border-radius:4px;padding:.12rem .25rem;font-size:.62rem;font-weight:600;position:absolute;overflow:hidden}.ec-time-event--blue{color:#1d4ed8;background:#3b82f638}.ec-time-event--green{color:#15803d;background:#22c55e38}.ec-time-event--red{color:#b91c1c;background:#ef444433}.ec-time-event--purple{color:var(--purple-800);background:#7c3aed33}.ec-time-event-label{white-space:pre-line;line-height:1.3;display:block;overflow:hidden}.ec-time-event-lines{flex-direction:column;gap:.02rem;width:100%;min-width:0;display:flex}.ec-time-event-line{white-space:nowrap;text-overflow:ellipsis;width:100%;min-width:0;line-height:1.3;display:block;overflow:hidden}.parent-booking-detail-modal{max-height:min(92vh,52rem);overflow:auto}.event-calendar-time-panel{background:#f8fafc80;border-top:1px solid #94a3b840;padding:1rem}.event-calendar-time-panel-title{color:var(--purple-900);margin:0 0 .75rem;font-weight:700}.event-calendar-time-panel-grid{grid-template-columns:1fr;gap:1rem;display:grid}.event-calendar-time-panel-grid.multi-day{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))}.event-calendar-time-panel-day-label{margin:0 0 .35rem;font-size:.85rem;font-weight:700}.calendar-page-layout{flex-direction:column;gap:1rem;width:100%;display:flex}.calendar-page-sidebar{flex-direction:column;gap:1rem;display:flex}.calendar-page-main{width:100%;min-width:0}@media (min-width:960px){.calendar-page-layout--split{grid-template-columns:1fr 18rem;align-items:start;display:grid}.calendar-page-layout--split-wide{grid-template-columns:1fr}.calendar-page-layout--split-wide .calendar-page-sidebar{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}}@media (max-width:768px){.event-calendar-month-grid{min-height:28rem}.event-calendar-cell{min-height:5rem}.event-calendar-event{padding:.08rem .2rem;font-size:.6rem}.event-calendar-week-body{min-height:28rem}.event-calendar--week .event-calendar-week-body,.event-calendar--week .event-calendar-week-columns .ec-time-column,.event-calendar--week .ec-time-hours--week,.event-calendar--week .ec-time-track{min-height:0}.event-calendar-week-columns .ec-time-column,.ec-time-hours--week,.ec-time-track{min-height:28rem}}.search-submit-row{justify-content:flex-end;margin-top:.5rem;display:flex}.search-time-grid-panel{border-radius:var(--radius-sm);border:1px solid #7c3aed26;width:100%;max-width:28rem;overflow:hidden}.teacher-result-calendar .event-calendar-month-grid,.teacher-result-calendar .event-calendar-week-body{min-height:14rem}.teacher-result-calendar.event-calendar--week .event-calendar-week-body,.teacher-result-calendar.event-calendar--week .event-calendar-week-columns .ec-time-column,.teacher-result-calendar.event-calendar--week .event-calendar-week-columns .ec-time-column-inner,.teacher-result-calendar.event-calendar--week .ec-time-hours--week,.teacher-result-calendar.event-calendar--week .ec-time-track{min-height:0}.teacher-result-calendar .event-calendar-week-columns .ec-time-column,.teacher-result-calendar .event-calendar-week-columns .ec-time-column-inner,.teacher-result-calendar .ec-time-hours--week,.teacher-result-calendar .ec-time-track{min-height:14rem}.teacher-result-calendar .event-calendar-cell{min-height:2.5rem}.teacher-result-calendar .event-calendar-event{display:none}.ec-time-event--decorative{pointer-events:none}.teacher-availability-calendar .ec-time-event--green{color:#15803d;background:#22c55e33;border-left-color:#15803d;font-weight:600}.teacher-availability-calendar .ec-time-event--red{color:#b91c1c;background:#ef44442e;border-left-color:#b91c1c;font-weight:600}.teacher-availability-calendar .ec-time-event--blue{color:#1d4ed8;background:#3b82f62e;border-left-color:#1d4ed8;font-weight:600}.teacher-availability-calendar .ec-time-event--gray{color:#475569;background:#94a3b840;border-left-color:#64748b;font-weight:600}.teacher-availability-calendar .ec-time-event-line{font-size:.72rem}.ec-time-event--request-preview{z-index:4;color:var(--purple-900);background:repeating-linear-gradient(-45deg,#7c3aed24,#7c3aed24 4px,#7c3aed4d 4px 8px);border:1px dashed #6d28d9a6;border-left-width:3px;box-shadow:inset 0 0 0 1px #ffffff59}.teacher-availability-calendar .ec-time-event--request-preview{pointer-events:none}.teacher-availability-calendar.event-calendar--week{--ta-slot-height:2.75rem;--ta-slot-count:26;--ta-grid-height:calc(var(--ta-slot-count) * var(--ta-slot-height))}.teacher-availability-calendar.event-calendar--week .event-calendar-week{overflow:auto visible}.teacher-availability-calendar.event-calendar--week .event-calendar-week-body{grid-template-columns:3.5rem 1fr;align-items:start;min-height:0;display:grid}.teacher-availability-calendar.event-calendar--week .ec-time-hours--week{grid-template-rows:repeat(26, var(--ta-slot-height));min-height:var(--ta-grid-height);height:var(--ta-grid-height);place-content:start;display:grid}.teacher-availability-calendar.event-calendar--week .ec-time-hour-label{place-self:start end;transform:translateY(-50%)}.teacher-availability-calendar.event-calendar--week .ec-time-hour-label:first-child{grid-row:1}.teacher-availability-calendar.event-calendar--week .ec-time-hour-label:nth-child(2){grid-row:3}.teacher-availability-calendar.event-calendar--week .ec-time-hour-label:nth-child(3){grid-row:5}.teacher-availability-calendar.event-calendar--week .ec-time-hour-label:nth-child(4){grid-row:7}.teacher-availability-calendar.event-calendar--week .ec-time-hour-label:nth-child(5){grid-row:9}.teacher-availability-calendar.event-calendar--week .ec-time-hour-label:nth-child(6){grid-row:11}.teacher-availability-calendar.event-calendar--week .ec-time-hour-label:nth-child(7){grid-row:13}.teacher-availability-calendar.event-calendar--week .ec-time-hour-label:nth-child(8){grid-row:15}.teacher-availability-calendar.event-calendar--week .ec-time-hour-label:nth-child(9){grid-row:17}.teacher-availability-calendar.event-calendar--week .ec-time-hour-label:nth-child(10){grid-row:19}.teacher-availability-calendar.event-calendar--week .ec-time-hour-label:nth-child(11){grid-row:21}.teacher-availability-calendar.event-calendar--week .ec-time-hour-label:nth-child(12){grid-row:23}.teacher-availability-calendar.event-calendar--week .ec-time-hour-label:nth-child(13){grid-row:25}.teacher-availability-calendar.event-calendar--week .event-calendar-week-columns{height:auto}.teacher-availability-calendar.event-calendar--week .event-calendar-week-columns .ec-time-column,.teacher-availability-calendar.event-calendar--week .event-calendar-week-columns .ec-time-column-inner,.teacher-availability-calendar.event-calendar--week .ec-time-track{min-height:var(--ta-grid-height);height:auto}.teacher-availability-calendar.event-calendar--week .ec-time-slot{min-height:var(--ta-slot-height);flex:none}.teacher-availability-calendar .ec-time-event{padding:.15rem .3rem;font-size:.72rem}.teacher-availability-calendar--add.event-calendar--week .ec-time-event{pointer-events:none}.teacher-availability-calendar--delete.event-calendar--week .ec-time-event--green{pointer-events:auto;cursor:pointer}.teacher-availability-calendar .ec-time-hour-label{color:var(--purple-900);font-size:.92rem;font-weight:700}.teacher-availability-calendar .event-calendar-week-day-name{font-size:.82rem}.teacher-availability-calendar .event-calendar-week-day-num{font-size:1.2rem}.teacher-availability-calendar .ec-time-slot.pickable{cursor:pointer}.teacher-availability-calendar .ec-time-slot.pickable:hover{background:#22c55e1f}.availability-delete-range-list{flex-direction:column;gap:.5rem;margin:0 0 1rem;padding:0;list-style:none;display:flex}.availability-delete-range-btn{border-radius:var(--radius-sm);width:100%;font:inherit;text-align:left;cursor:pointer;color:var(--purple-950);background:#fff;border:1px solid #7c3aed33;padding:.65rem .85rem;font-weight:600}.availability-delete-range-btn:hover{background:#f8fafcf2}.availability-delete-range-btn--selected{color:#b91c1c;background:#fef2f2d9;border-color:#ef444473}:is(.availability-filter-card:has(.teacher-availability-calendar),.bookings-filter-card:has(.teacher-bookings-calendar),.bookings-filter-card:has(.admin-bookings-calendar)){overflow:visible}.admin-bookings-search-form{border-bottom:1px solid #7c3aed14;grid-template-columns:repeat(3,minmax(0,1fr)) auto;align-items:end;gap:.55rem .7rem;padding:.75rem 1rem;display:grid}.admin-bookings-search-form label{gap:.22rem;margin:0;font-size:.84rem}.admin-bookings-search-form input,.admin-bookings-search-form select{padding:.42rem .55rem;font-size:.88rem}.admin-bookings-search-form .btn{align-self:end;min-height:2.35rem}@media (max-width:720px){.admin-bookings-search-form{grid-template-columns:1fr}.admin-bookings-search-form .btn{width:100%}}.admin-bookings-calendar.event-calendar--week,.teacher-bookings-calendar.event-calendar--week{--bookings-week-slot-height:2.75rem;--bookings-week-slot-count:26;--bookings-week-grid-height:calc(var(--bookings-week-slot-count) * var(--bookings-week-slot-height))}.admin-bookings-calendar.event-calendar--week .event-calendar-week,.teacher-bookings-calendar.event-calendar--week .event-calendar-week{overflow:auto visible}.admin-bookings-calendar.event-calendar--week .event-calendar-week-body,.teacher-bookings-calendar.event-calendar--week .event-calendar-week-body{grid-template-columns:3.5rem 1fr;align-items:start;min-height:0;display:grid}.admin-bookings-calendar.event-calendar--week .ec-time-hours--week,.teacher-bookings-calendar.event-calendar--week .ec-time-hours--week{grid-template-rows:repeat(26, var(--bookings-week-slot-height));min-height:var(--bookings-week-grid-height);height:var(--bookings-week-grid-height);place-content:start;display:grid}.admin-bookings-calendar.event-calendar--week .ec-time-hour-label,.teacher-bookings-calendar.event-calendar--week .ec-time-hour-label{color:var(--purple-900);place-self:start end;font-size:.92rem;font-weight:700;transform:translateY(-50%)}.admin-bookings-calendar.event-calendar--week .ec-time-hour-label:first-child,.teacher-bookings-calendar.event-calendar--week .ec-time-hour-label:first-child{grid-row:1}.admin-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(2),.teacher-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(2){grid-row:3}.admin-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(3),.teacher-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(3){grid-row:5}.admin-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(4),.teacher-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(4){grid-row:7}.admin-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(5),.teacher-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(5){grid-row:9}.admin-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(6),.teacher-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(6){grid-row:11}.admin-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(7),.teacher-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(7){grid-row:13}.admin-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(8),.teacher-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(8){grid-row:15}.admin-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(9),.teacher-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(9){grid-row:17}.admin-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(10),.teacher-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(10){grid-row:19}.admin-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(11),.teacher-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(11){grid-row:21}.admin-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(12),.teacher-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(12){grid-row:23}.admin-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(13),.teacher-bookings-calendar.event-calendar--week .ec-time-hour-label:nth-child(13){grid-row:25}.admin-bookings-calendar.event-calendar--week .event-calendar-week-columns,.teacher-bookings-calendar.event-calendar--week .event-calendar-week-columns{height:auto}.admin-bookings-calendar.event-calendar--week .event-calendar-week-columns .ec-time-column,.admin-bookings-calendar.event-calendar--week .event-calendar-week-columns .ec-time-column-inner,.admin-bookings-calendar.event-calendar--week .ec-time-track,.teacher-bookings-calendar.event-calendar--week .event-calendar-week-columns .ec-time-column,.teacher-bookings-calendar.event-calendar--week .event-calendar-week-columns .ec-time-column-inner,.teacher-bookings-calendar.event-calendar--week .ec-time-track{min-height:var(--bookings-week-grid-height);height:auto}.admin-bookings-calendar.event-calendar--week .ec-time-slot,.teacher-bookings-calendar.event-calendar--week .ec-time-slot{min-height:var(--bookings-week-slot-height);flex:none}.admin-bookings-calendar.event-calendar--week .ec-time-event,.teacher-bookings-calendar.event-calendar--week .ec-time-event{padding:.15rem .3rem;font-size:.72rem}.admin-bookings-calendar.event-calendar--week .ec-time-event-line,.teacher-bookings-calendar.event-calendar--week .ec-time-event-line{font-size:.72rem}.event-calendar--month-show-all,.event-calendar--month-show-all .event-calendar-month{overflow:visible}.event-calendar--month-show-all .event-calendar-month-grid{grid-auto-rows:minmax(6.75rem,auto);min-height:0}.event-calendar--month-show-all .event-calendar-cell{height:auto;min-height:6.75rem}.event-calendar--month-show-all .event-calendar-events{flex:0 auto;overflow:visible}@media (max-width:768px){.event-calendar--month-show-all .event-calendar-month-grid{grid-auto-rows:minmax(5rem,auto)}.event-calendar--month-show-all .event-calendar-cell{min-height:5rem}}.availability-register-modal-date{margin:0 0 1rem}.availability-calendar-legend{border-radius:var(--radius-sm);background:#f8fafce6;border:1px solid #7c3aed24;flex-wrap:wrap;gap:.55rem 1.1rem;margin:0 0 .75rem;padding:.65rem .85rem;list-style:none;display:flex}.availability-calendar-legend li{color:var(--purple-950);align-items:center;gap:.45rem;font-size:.82rem;font-weight:600;display:inline-flex}.availability-legend-swatch{border:1px solid #0f172a1f;border-radius:4px;flex-shrink:0;width:1rem;height:1rem}.availability-legend-swatch--available{background:#22c55e52;border-color:#16a34a73}.availability-legend-swatch--lesson{background:#ef444447;border-color:#dc262673}.availability-legend-swatch--past-lesson{background:#94a3b852;border-color:#64748b73}.availability-legend-swatch--request-preview{background:repeating-linear-gradient(-45deg,#7c3aed2e,#7c3aed2e 3px,#7c3aed57 3px 6px);border-style:dashed;border-color:#6d28d98c}.availability-legend-swatch--draft{background:#7c3aed47;border-color:#6d28d973}.availability-calendar-actions{justify-content:flex-end;margin-top:1rem;display:flex}.ec-time-hours--week{border-right:1px solid #94a3b833;flex-direction:column;justify-content:space-between;min-height:40rem;padding:0 .25rem;display:flex}.teacher-search-calendar .ec-time-hour-label{color:var(--purple-900);font-size:.92rem;font-weight:700}.teacher-search-calendar .event-calendar-week-day-name{font-size:.82rem}.teacher-search-calendar .event-calendar-week-day-num{font-size:1.2rem}.teacher-search-calendar .ec-time-column-interactive .ec-time-slot.empty,.teacher-search-calendar .ec-time-column-interactive .ec-time-slot.search-selected{cursor:pointer}.admin-review-filter-card{padding:.6rem .75rem}.admin-review-filter-bar{flex-wrap:wrap;align-items:center;gap:.75rem 1rem;display:flex}.admin-review-rating-bar{flex-wrap:wrap;flex:16rem;align-items:center;gap:.4rem .55rem;min-width:0;max-width:28rem;display:flex}.admin-review-rating-bound{color:var(--text-muted);text-align:center;flex-direction:column;align-items:center;font-size:.76rem;font-weight:600;line-height:1.15;display:flex}.admin-review-rating-bound strong{color:var(--purple-800);font-size:.86rem}.admin-review-visibility-tabs.bookings-subtab-bar{border-radius:var(--radius-sm);background:#f8fafcbf;border:1px solid #7c3aed29;flex-wrap:nowrap;flex:none;gap:0;padding:0;overflow:hidden}.admin-review-visibility-tabs .bookings-subtab{text-align:center;border:none;border-right:1px solid #7c3aed24;border-radius:0;justify-content:center;align-items:center;min-width:3.75rem;padding:.42rem .7rem;line-height:1.2;display:flex}.admin-review-visibility-tabs .bookings-subtab:last-child{border-right:none}.admin-review-visibility-tabs .bookings-subtab--active{box-shadow:none}.admin-review-rating-label{color:var(--purple-900);font-size:.86rem;font-weight:700}.admin-review-filter-card .star-range-slider{flex:8rem;min-width:min(100%,10rem);max-width:12rem;padding:0}.admin-review-filter-card .star-range-slider-ticks{margin-bottom:.2rem;font-size:.64rem}.admin-review-filter-card .star-range-slider-tick{width:1rem}.admin-review-filter-card .star-range-slider-track{height:2rem}.admin-review-filter-card .star-range-slider-rail,.admin-review-filter-card .star-range-slider-fill{height:.32rem}.admin-review-filter-card .star-range-slider-thumb{border-width:2px;width:1.3rem;height:1.3rem}.admin-review-filter-card .star-range-slider-thumb:after{content:"";position:absolute;inset:-.55rem}.star-range-slider{flex:14rem;min-width:min(100%,18rem);padding:0 .15rem}.star-range-slider-ticks{color:var(--text-muted);-webkit-user-select:none;user-select:none;justify-content:space-between;margin-bottom:.35rem;padding:0 .1rem;font-size:.72rem;font-weight:700;display:flex}.star-range-slider-tick{text-align:center;width:1.5rem}.star-range-slider-track{touch-action:none;cursor:pointer;height:2rem;position:relative}.star-range-slider-rail{background:#94a3b859;border-radius:999px;height:.35rem;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.star-range-slider-fill{background:linear-gradient(90deg, var(--purple-600), var(--purple-500));border-radius:999px;height:.35rem;position:absolute;top:50%;transform:translateY(-50%)}.star-range-slider-thumb{background:var(--purple-700);cursor:grab;touch-action:none;border:2px solid #fff;border-radius:50%;width:1.15rem;height:1.15rem;margin:0;padding:0;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 1px 4px #0f172a38}.star-range-slider-thumb:active{cursor:grabbing;background:var(--purple-800);box-shadow:0 0 0 4px #7c3aed33}.star-range-slider-thumb--max{background:var(--purple-600)}.admin-review-layout{width:100%;margin-top:0}.admin-review-teacher-nav{align-self:start}.admin-review-main{gap:1rem}.admin-review-record-row{align-items:flex-start}.admin-review-record-row .payment-history-record-main>p{margin:.5rem 0 0}.admin-review-teacher-nav .parent-student-nav-item-head{margin-bottom:.15rem}.admin-review-teacher-nav .teacher-rank-badge{flex-shrink:0}.admin-campaign-form-card{padding:.9rem 1rem 1rem}.admin-campaign-form-card h2{font-size:var(--font-title-sub);margin:0 0 .7rem}.admin-campaign-form{gap:0}.admin-campaign-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem .7rem;display:grid}.admin-campaign-form-grid label{gap:.22rem;margin:0;font-size:.82rem}.admin-campaign-form-grid input,.admin-campaign-form-grid select{padding:.4rem .5rem;font-size:.88rem}.admin-campaign-checkbox{color:var(--purple-950);flex-direction:row;grid-column:1/-1;align-items:center;gap:.4rem;font-weight:600;display:flex}.admin-campaign-checkbox input{width:auto;margin:0}.admin-campaign-form-actions{grid-column:1/-1;margin-top:.15rem}@media (max-width:720px){.admin-campaign-form-grid{grid-template-columns:1fr}.admin-campaign-form-grid>div[aria-hidden=true]{display:none}}.admin-payout-page .list{gap:.55rem}.admin-payout-close-card,.admin-payout-list-card{padding:.75rem .95rem}.admin-payout-close-card h3{font-size:var(--font-title-sub);margin:0 0 .5rem}.admin-payout-close-row{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin-top:.65rem;display:flex}.admin-payout-month-matrix{border-bottom:none;margin:0 -.95rem;padding-left:.95rem;padding-right:.95rem}.admin-payout-close-selected{margin:0}.admin-payout-close-fields{flex-wrap:wrap;align-items:flex-end;gap:.5rem .65rem;display:flex}.admin-payout-close-fields label{color:var(--purple-950);flex-direction:column;gap:.2rem;margin:0;font-size:.82rem;font-weight:600;display:flex}.admin-payout-close-fields input{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-input);width:5.5rem;color:var(--text);padding:.4rem .5rem;font-size:.88rem}.admin-payout-close-hint{margin:.4rem 0 0}.admin-payout-message{color:var(--purple-800);margin:.45rem 0 0;font-weight:600}.admin-payout-record-head{flex-wrap:wrap;align-items:center;gap:.35rem .55rem;display:flex}.admin-payout-record-meta{margin:.15rem 0 0}.admin-payout-record-meta strong{color:var(--text);font-weight:700}.admin-payout-failure{margin:.25rem 0 0;font-size:.82rem}.admin-payout-record-action{flex-direction:column;align-items:stretch;gap:.35rem}.admin-payout-record-action .btn{white-space:nowrap;padding:.38rem .7rem;font-size:.82rem}@media (max-width:720px){.admin-payout-record-row{flex-direction:column;align-items:flex-start}.admin-payout-record-action{flex-flow:wrap;width:100%}}.contact-layout{grid-template-columns:minmax(220px,280px) minmax(0,1fr);align-items:start;gap:1rem;display:grid}.contact-layout__sidebar-title,.contact-layout__header h2{margin:0 0 .75rem;font-size:1.05rem}.contact-layout__placeholder{text-align:center;padding:2rem .5rem}.contact-layout__notice{margin-bottom:.75rem}.contact-thread-list{flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.contact-thread-item{text-align:left;border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:.65rem;width:100%;padding:.65rem .75rem}.contact-thread-item--active{border-color:var(--primary);background:color-mix(in srgb, var(--primary) 8%, var(--surface))}.contact-thread-item__name{font-weight:600;display:block}.contact-thread-item__preview{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:.2rem;font-size:.82rem;display:block;overflow:hidden}.contact-thread-item__time{color:var(--text-muted);margin-top:.25rem;font-size:.75rem;display:block}.contact-timeline{flex-direction:column;gap:1rem;max-height:min(52vh,520px);margin-bottom:1rem;padding:.25rem .15rem 1rem;display:flex;overflow-y:auto}.contact-message-row{max-width:88%}.contact-message-row--parent{align-self:flex-end}.contact-message-row--teacher{align-self:flex-start}.contact-message-meta{color:var(--text-muted);margin:0 0 .25rem;font-size:.75rem}.contact-message-row--parent .contact-message-meta{text-align:right}.contact-bubble{border:1px solid var(--border);border-radius:.85rem;padding:.65rem .85rem}.contact-bubble--parent{background:color-mix(in srgb, var(--primary) 12%, var(--surface))}.contact-bubble--teacher{background:var(--surface-elevated,var(--surface))}.contact-bubble__body{white-space:pre-wrap;word-break:break-word;margin:0}.contact-reservation-card{border:1px dashed var(--border);background:var(--surface);border-radius:.55rem;margin-top:.65rem;padding:.55rem .65rem}.contact-reservation-card__label{color:var(--text-muted);margin:0;font-size:.72rem}.contact-reservation-card__time{margin:.2rem 0 .35rem;font-size:.88rem;font-weight:600}.contact-reservation-card__meta{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.contact-composer{border-top:1px solid var(--border);padding-top:.85rem}.contact-composer__link{flex-direction:column;gap:.35rem;margin-bottom:.65rem;font-size:.88rem;display:flex}.contact-composer__row{align-items:flex-end;gap:.65rem;display:flex}.contact-composer__input{resize:vertical;flex:1;min-height:4.5rem}.contact-composer__error{margin:.5rem 0 0}.teacher-booking-parent-link{margin-top:.25rem;font-size:.85rem;display:inline-block}@media (max-width:900px){.contact-layout{grid-template-columns:1fr}.contact-timeline{max-height:45vh}.contact-composer__row{flex-direction:column;align-items:stretch}}
