.notebook{position:relative;display:grid;align-content:center;gap:18px;min-width:0;padding:44px 28px 32px 76px;background-color:var(--paper);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:22px 22px;background-position:-1px -1px;font-family:var(--font-hand);color:var(--pen)}.notebook:before{content:"";position:absolute;top:0;bottom:0;left:54px;width:2px;background:color-mix(in srgb,var(--accent) 55%,transparent)}.nb-title{font-size:1.9rem;font-weight:700;line-height:1.1}.nb-title u{position:relative;text-decoration:none}.nb-rows{display:grid;gap:4px;font-size:1.15rem;line-height:1.6}.nb-row{position:relative;justify-self:start;padding:2px 6px}.nb-row.ans{margin-top:4px;font-weight:700}.nb-row.free{color:color-mix(in srgb,var(--pen) 55%,transparent)}.nb-note{display:flex;align-items:center;gap:10px;margin-top:6px;font-size:1.1rem;transform:rotate(-2deg);transform-origin:left center}.loop,.tick,.uline{overflow:visible;pointer-events:none}.loop{position:absolute;left:-14px;right:-10px;top:-9px;bottom:-9px;width:calc(100% + 24px);height:calc(100% + 18px)}.uline{position:absolute;left:-2px;bottom:-8px;width:104%;height:12px}.tick{flex:none;width:26px;height:22px}.loop path,.tick path,.uline path{fill:none;stroke:var(--accent);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:0}.uline path{stroke-width:3}@keyframes nb-ink{0%{opacity:.12;transform:translateY(5px)}to{opacity:1;transform:none}}@keyframes nb-draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}.nb-title,.nb-row,.nb-note{animation:nb-ink .5s var(--ease-out) both}.nb-title{animation-delay:.1s}.nb-row:nth-child(1){animation-delay:.35s}.nb-row:nth-child(2){animation-delay:.47s}.nb-row:nth-child(3){animation-delay:.59s}.nb-row:nth-child(4){animation-delay:.71s}.nb-row:nth-child(5){animation-delay:.83s}.nb-note{animation-delay:1.5s}.uline path{animation:nb-draw .45s ease-out .45s both}.loop path{animation:nb-draw .7s cubic-bezier(.45,.05,.4,1) 1.05s both}.tick path{animation:nb-draw .3s ease-out 1.75s both}@media(max-width:760px){.notebook{padding:32px 18px 28px 64px}.notebook:before{left:44px}.nb-title{font-size:1.6rem}.nb-rows{font-size:1.02rem}.notebook{gap:12px;padding-block:24px 20px}.nb-row.free{display:none}}@media(prefers-reduced-motion:reduce){.notebook *,.notebook{animation:none!important}}.auth-page{flex:1 0 auto;display:grid;place-items:center;padding:24px 16px;background:var(--bg)}.auth-shell{width:min(940px,100%);min-height:560px;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);border:1px solid var(--line);border-radius:var(--radius-xl);overflow:hidden;background:var(--surface);box-shadow:var(--shadow-card)}.auth-form-side{position:relative;display:grid;align-content:center;gap:24px;min-width:0;padding:56px clamp(24px,4vw,52px)}.auth-toolbar{position:absolute;top:16px;right:16px}.auth-brand{display:flex;align-items:center;gap:12px}.auth-mark{width:42px;height:42px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 2px var(--accent);flex:none}.auth-brand-name{font-family:var(--font-display);font-weight:800;font-size:1.15rem;letter-spacing:-.02em;line-height:1.15}.auth-brand-text{display:grid;gap:2px}.auth-phone,.auth-email{display:inline-flex;align-items:center;gap:6px;font-size:.85rem;color:var(--text-soft);text-decoration:none}.auth-phone:hover,.auth-email:hover{color:var(--accent)}.auth-body{display:grid;gap:26px}.auth-head{display:grid;gap:6px}.auth-title{font-family:var(--font-display);font-size:1.85rem;font-weight:800;letter-spacing:-.025em;line-height:1.15;color:var(--text)}.auth-desc{color:var(--text-muted)}.auth-form{display:grid;gap:16px}.auth-submit{width:100%;justify-content:center;margin-top:8px}.auth-link-row{text-align:center}.auth-link{color:var(--accent);font-weight:600}.auth-footnote{font-size:.82rem;color:var(--text-muted)}@keyframes auth-rise{0%{opacity:.2;transform:translateY(8px)}to{opacity:1;transform:none}}.auth-body{animation:auth-rise .45s var(--ease-out) .2s both}@media(max-width:760px){.auth-shell{grid-template-columns:1fr;min-height:0}.auth-form-side{padding:32px 22px 36px}}@media(prefers-reduced-motion:reduce){.auth-body{animation:none}}.skeleton{display:block;max-width:100%;background-color:var(--skeleton);border-radius:var(--radius-xs);animation:skeleton-pulse 1.4s ease-in-out infinite;animation-delay:calc(var(--sk-index, 0) * .12s)}.skeleton-text{height:12px;border-radius:var(--radius-pill)}.skeleton-circle{border-radius:50%;flex:none}.skeleton-rect{border-radius:var(--radius-sm)}.skeleton-region{display:grid;gap:14px;min-width:0}.skeleton-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skeleton-card{gap:14px}.skeleton-tile{display:grid;gap:10px;padding:24px}.skeleton-list{display:grid;gap:14px}.skeleton-row{display:grid;grid-template-columns:38px minmax(0,1fr);gap:12px;align-items:center}.skeleton-form{gap:16px}.skeleton-field{display:grid;gap:8px}.skeleton-table{display:grid;gap:0;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);overflow:hidden}.skeleton-table-row{display:grid;grid-template-columns:repeat(var(--sk-cols, 4),minmax(0,1fr));gap:16px;align-items:center;padding:14px 16px;border-bottom:1px dashed var(--line)}.skeleton-table-head{border-bottom:1px solid var(--line)}.skeleton-calendar{display:grid;gap:0;padding:0;overflow:hidden}.skeleton-calendar-head,.skeleton-calendar-body{display:grid;grid-template-columns:repeat(var(--sk-cols, 7),minmax(0,1fr))}.skeleton-calendar-head{gap:0;padding:12px 10px;border-bottom:1px solid var(--line);justify-items:center}.skeleton-calendar-body{gap:0;min-height:360px}.skeleton-calendar-col{display:grid;align-content:start;gap:10px;padding:12px 8px;border-left:1px solid var(--line)}.skeleton-page{display:grid;gap:24px;width:100%;max-width:960px;margin:0 auto;padding:24px 16px}.skeleton-page-head{display:grid;gap:10px}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.45}}@media(prefers-reduced-motion:reduce){.skeleton{animation:none;opacity:.7}}:root:not([data-palette]),:root[data-palette=blush-sage]{--hue-accent: #c24d76;--hue-accent-soft: #fbe8ef;--hue-accent-ink: #9a3459;--hue-on-accent: #ffffff;--hue-secondary: #5f8a72;--hue-secondary-soft: #e7f0ea;--hue-secondary-ink: #3f6b53}:root.dark:not([data-palette]),:root.dark[data-palette=blush-sage]{--hue-accent: #f08bb0;--hue-accent-soft: rgba(240, 139, 176, .14);--hue-accent-ink: #f6b3cb;--hue-on-accent: #2a0f1b;--hue-secondary: #8fbf9f;--hue-secondary-soft: rgba(143, 191, 159, .14);--hue-secondary-ink: #b2d6bd}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:600 800;font-display:swap;src:url(/assets/bricolage-grotesque-latin-var-DLoelf7F.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Figtree;font-style:normal;font-weight:400 800;font-display:swap;src:url(/assets/figtree-latin-var-D_ZTVpCC.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Kalam;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/kalam-latin-400-BthBl_aR.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Kalam;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/kalam-latin-700-D2H-9ISU.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #f6f3f4;--surface: #ffffff;--surface-raised: #ffffff;--field: #fbf9fa;--paper: #fffdfb;--grid: rgba(70, 105, 165, .17);--pen: #2b4a8b;--text: #271f23;--text-soft: #4f4248;--text-muted: #75686e;--line: #e8dfe2;--line-strong: #cfc2c8;--scrim: rgba(39, 31, 35, .42);--success: #2d7555;--success-soft: #e2f2ea;--warning: #8a5a00;--warning-soft: #fbf0d8;--danger: #b3261e;--danger-soft: #fbe5e3;--shadow-card: 0 1px 2px rgba(39, 31, 35, .05), 0 6px 18px rgba(39, 31, 35, .05);--shadow-raised: 0 12px 28px color-mix(in srgb, var(--text) 14%, transparent);--shadow-dock: 0 8px 22px color-mix(in srgb, var(--text) 14%, transparent);--block-bg: var(--field);--block-stripe: color-mix(in srgb, var(--text-muted) 22%, transparent);--block-border: var(--line);--block-text: var(--text-muted);--block-btn-bg: var(--surface);--block-btn-border: var(--line);--block-btn-text: var(--text);--block-label-bg: var(--field);--block-label-text: var(--text);--skeleton: color-mix(in srgb, var(--text-muted) 16%, transparent);--color-scheme: light;--accent: var(--hue-accent);--accent-hover: color-mix(in srgb, var(--hue-accent) 88%, #000);--accent-soft: var(--hue-accent-soft);--accent-ink: var(--hue-accent-ink);--on-accent: var(--hue-on-accent);--secondary: var(--hue-secondary);--secondary-soft: var(--hue-secondary-soft);--secondary-ink: var(--hue-secondary-ink)}:root.dark{--bg: #141113;--surface: #1c181a;--surface-raised: #241f22;--field: #211c1f;--paper: #1a1719;--grid: rgba(150, 172, 215, .11);--pen: #a9bff0;--text: #f3edef;--text-soft: #ddd2d7;--text-muted: #ab9ea4;--line: #2f282b;--line-strong: #4a4046;--scrim: rgba(0, 0, 0, .6);--success: #7fd0a8;--success-soft: rgba(127, 208, 168, .14);--warning: #f0c36a;--warning-soft: rgba(240, 195, 106, .14);--danger: #ff8a80;--danger-soft: rgba(255, 138, 128, .14);--shadow-card: none;--shadow-raised: 0 12px 28px rgba(0, 0, 0, .45);--shadow-dock: 0 8px 22px rgba(0, 0, 0, .4);--color-scheme: dark}:root{--font-display: "Bricolage Grotesque", "Figtree", system-ui, sans-serif;--font-body: "Figtree", -apple-system, "Segoe UI", system-ui, sans-serif;--font-hand: "Kalam", "Comic Sans MS", "Segoe Print", cursive;--radius-xs: 8px;--radius-sm: 12px;--radius-md: 14px;--radius-lg: 18px;--radius-xl: 24px;--radius-pill: 999px;--dur-fast: .12s;--dur-base: .22s;--dur-slow: .32s;--ease-out: cubic-bezier(.2, .7, .3, 1);--ease-spring: cubic-bezier(.3, 1.4, .5, 1);--dock-clearance: calc(120px + env(safe-area-inset-bottom)) }body{font-family:var(--font-body);background-color:var(--bg);color:var(--text);min-height:100%;line-height:1.5;font-size:15px;-webkit-font-smoothing:antialiased;transition:background-color var(--dur-slow) ease,color var(--dur-slow) ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{height:100%}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);transition:transform var(--dur-base) var(--ease-out),box-shadow var(--dur-base) ease}.hover-float:hover{transform:translateY(-2px);box-shadow:var(--shadow-raised)}.session-block:hover{border-color:var(--accent)!important;z-index:10!important;box-shadow:var(--shadow-card)}.session-block:hover .session-actions{opacity:1!important}#root{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;position:relative;background:transparent}h1{font-family:var(--font-display);font-size:2rem;font-weight:800;letter-spacing:-.03em;text-wrap:balance}h2{font-family:var(--font-display);font-size:1.5rem;font-weight:700;letter-spacing:-.02em;text-wrap:balance}h3{font-family:var(--font-display);font-size:1.125rem;font-weight:600}p{color:var(--text-soft)}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.app-layout{display:flex;flex:1 0 auto;width:100%;flex-direction:column}.main-content{flex:1;display:flex;flex-direction:column;width:100%;padding-bottom:var(--dock-clearance)}.page-body{flex:1;padding:24px;width:100%;margin:0 auto;max-width:1200px}.portal-shell{display:grid;grid-template-columns:240px minmax(0,1fr);gap:16px;padding:16px;flex:1 0 auto;width:100%;max-width:1320px;margin:0 auto;position:relative;align-items:start;align-content:start}.portal-sidebar{display:flex;flex-direction:column;gap:12px;padding:14px;border-radius:14px;position:sticky;top:16px;height:calc(100vh - 32px);height:calc(100dvh - 32px - env(safe-area-inset-top))}.portal-brand{display:flex;align-items:center;gap:10px;padding-bottom:8px;border-bottom:1px solid var(--line)}.portal-nav{display:flex;flex-direction:column;gap:6px}.portal-nav-link{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:10px;color:var(--text-soft);font-size:.86rem;font-weight:600;border:1px solid transparent;transition:all .15s ease}.portal-nav-link:hover{color:var(--text);background:var(--surface);border-color:var(--line)}.portal-nav-link.active{color:var(--text);background:var(--accent-soft);border-color:var(--accent)}.portal-phone{margin-top:auto;display:flex;align-items:center;gap:8px;padding:9px 10px;font-size:.85rem;color:var(--text-soft);text-decoration:none}.portal-phone:hover{color:var(--accent)}.portal-email{display:flex;align-items:center;gap:8px;padding:9px 10px;font-size:.85rem;color:var(--text-soft);text-decoration:none;overflow-wrap:anywhere}.portal-email:hover{color:var(--accent)}.portal-sidebar-actions{display:flex;align-items:center;gap:8px}.portal-main-wrap{min-width:0;display:flex;flex-direction:column;gap:12px}.portal-topbar{padding:12px 16px;border-radius:12px}.portal-main-content{min-width:0;flex:1;display:flex}.portal-layout-outlet{width:100%;display:flex;flex-direction:column;gap:12px}.portal-page{width:100%;display:grid;gap:16px}.portal-page-surface{padding:24px;border-radius:16px}.portal-settings-grid{display:grid;gap:16px;grid-template-columns:1fr;align-items:start}@media(max-width:980px){.portal-shell{grid-template-columns:1fr;padding:12px}.portal-sidebar{position:static;height:auto}.portal-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}.bottom-dock{position:fixed;bottom:calc(24px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);width:90%;max-width:500px;border-radius:9999px;padding:12px 24px;display:flex;align-items:center;justify-content:space-between;z-index:50}.dock-link{display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--text-muted);transition:color .2s;text-decoration:none}.dock-link:hover,.dock-link.active{color:var(--accent)}.dock-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:-.05em}.dock-add-btn-wrapper{position:relative;top:-24px}.dock-add-btn{width:56px;height:56px;border-radius:50%;background:var(--accent);color:var(--on-accent);display:flex;align-items:center;justify-content:center;border:4px solid var(--surface);box-shadow:var(--shadow-raised);transition:transform .2s;cursor:pointer}.dock-add-btn:hover{transform:scale(1.05) translateY(-2px)}.logout-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:4px;border-radius:4px;transition:color .2s;display:flex;align-items:center}.logout-btn:hover{color:var(--danger)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);transition:transform var(--dur-base) var(--ease-out),box-shadow var(--dur-base) ease}.card:hover{transform:translateY(-4px);box-shadow:var(--shadow-raised)}.card-header{padding:20px 24px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.card-body{padding:24px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:32px}.stat-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-xl);padding:32px;position:relative;overflow:hidden;transition:transform var(--dur-base) var(--ease-out),box-shadow var(--dur-base) ease,border-color var(--dur-base) ease;box-shadow:var(--shadow-card);display:flex;flex-direction:column;align-items:flex-start}.stat-card:hover{transform:translateY(-2px);border-color:var(--line-strong);box-shadow:var(--shadow-raised)}.stat-icon{width:42px;height:42px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;margin-bottom:16px}.stat-icon.violet{background:var(--accent-soft);color:var(--accent)}.stat-icon.teal{background:var(--secondary-soft);color:var(--secondary)}.stat-icon.success{background:var(--success-soft);color:var(--success)}.stat-icon.warning{background:var(--warning-soft);color:var(--warning)}.stat-value{font-size:2.5rem;font-weight:800;letter-spacing:-.05em;line-height:1;color:var(--text-soft)}.stat-label{font-size:.8rem;color:var(--text-muted);margin-top:4px;font-weight:500;text-transform:uppercase;letter-spacing:.08em}.btn{display:inline-flex;align-items:center;gap:8px;padding:9px 18px;border-radius:var(--radius-sm);font-size:.875rem;font-weight:600;cursor:pointer;transition:all .18s ease;border:1px solid transparent;font-family:inherit;white-space:nowrap}.btn-primary{background:var(--accent);color:var(--on-accent);box-shadow:0 2px color-mix(in srgb,var(--accent) 60%,var(--text));transition:transform .08s ease,background-color var(--dur-base) ease}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:active{transform:translateY(2px);box-shadow:none}.btn-primary:disabled{opacity:.75;cursor:progress;transform:none}.btn-secondary{background:var(--surface);color:var(--text-soft);border-color:var(--line)}.btn-secondary:hover{color:var(--text);border-color:var(--line-strong)}.btn-danger{background:var(--danger-soft);color:var(--danger);border-color:color-mix(in srgb,var(--danger) 30%,transparent)}.btn-danger:hover{background:color-mix(in srgb,var(--danger) 25%,transparent)}.btn-sm{padding:6px 12px;font-size:.8rem}.btn-icon{padding:8px}.btn svg{width:16px;height:16px}.form-group{margin-bottom:18px}.form-label{display:block;font-size:.8rem;font-weight:600;color:var(--text);margin-bottom:6px;text-transform:uppercase;letter-spacing:.06em}.form-input,.form-select,.form-textarea{width:100%;background-color:var(--field);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:10px 14px;color:var(--text);font-size:.9rem;font-family:inherit;transition:all .2s ease;outline:none;box-shadow:none;color-scheme:var(--color-scheme)}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--accent);background-color:var(--surface);box-shadow:0 0 0 4px var(--accent-soft)}.form-input::placeholder{color:var(--text-muted)}.form-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.form-textarea{resize:vertical;min-height:80px}.form-row{display:grid;gap:16px}.form-row.cols-2{grid-template-columns:1fr 1fr}.table-wrapper{overflow-x:auto;border-radius:var(--radius-md);border:1px solid var(--line)}table{width:100%;border-collapse:collapse}thead th{background:var(--surface);padding:12px 16px;text-align:left;font-size:.75rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--line)}tbody tr{border-bottom:1px solid var(--line);transition:background .15s}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:var(--surface-raised)}td{padding:14px 16px;font-size:.875rem;vertical-align:middle}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:100px;font-size:.72rem;font-weight:600;text-transform:capitalize}.badge-scheduled{background:var(--accent-soft);color:var(--accent)}.badge-completed{background:var(--success-soft);color:var(--success)}.badge-cancelled{background:#78788c1f;color:var(--text-muted)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--scrim);display:flex;align-items:center;justify-content:center;z-index:200;animation:fadeIn .2s ease}.modal{border-radius:var(--radius-xl);box-shadow:var(--shadow-raised);width:100%;max-width:540px;max-height:90vh;max-height:90dvh;overscroll-behavior:contain;overflow-y:auto;animation:slideUp .25s ease}.modal-header{padding:24px 28px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.modal-body{padding:24px 28px}.modal-footer{padding:16px 28px 24px;display:flex;gap:12px;justify-content:flex-end}.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:28px;gap:16px}.page-title{font-size:1.6rem;font-weight:800;letter-spacing:-.03em}.page-subtitle{color:var(--text-muted);font-size:.875rem;margin-top:2px}.page-header-actions{display:flex;flex-wrap:wrap;gap:12px}.student-detail-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:28px}.student-detail-info{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-bottom:28px}.search-bar{display:flex;align-items:center;gap:10px;background:var(--field);border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px 14px;min-width:260px;transition:border-color .2s}.search-bar:focus-within{border-color:var(--accent)}.search-bar svg{color:var(--text-muted);flex-shrink:0;width:16px;height:16px}.search-bar input{background:none;border:none;outline:none;color:var(--text);font-size:.875rem;font-family:inherit;flex:1}.search-bar input::placeholder{color:var(--text-muted)}.actions{display:flex;gap:6px}.toast{position:fixed;top:calc(16px + env(safe-area-inset-top));left:50%;transform:translate(-50%);z-index:10000;width:max-content;max-width:calc(100vw - 32px);display:flex;align-items:flex-start;gap:10px;margin-bottom:0;box-shadow:0 8px 24px #0000002e}.toast.error-alert{background:linear-gradient(var(--danger-soft),var(--danger-soft)),var(--bg)}.toast.success-alert{background:linear-gradient(var(--success-soft),var(--success-soft)),var(--bg)}.toast .toast-close{background:none;border:none;color:inherit;cursor:pointer;padding:0 2px;font-size:1rem;line-height:1}.badge-archived{background:#78788c24;color:var(--text-muted)}.student-picker-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.student-picker-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:100px;background:var(--accent-soft);border:1px solid var(--accent);color:var(--text);font-size:.8rem;font-weight:600;cursor:pointer;min-height:32px}.student-picker-list{display:flex;flex-direction:column;gap:4px;max-height:220px;overflow-y:auto;background:var(--field);border:1px solid var(--line);border-radius:8px;padding:6px;margin-top:8px;overscroll-behavior:contain}.student-picker-option{display:flex;align-items:center;gap:10px;padding:10px;min-height:44px;border-radius:6px;cursor:pointer;border:1px solid transparent;transition:all .15s}.student-picker-option.selected{background:var(--accent-soft);border-color:var(--accent)}.student-tabs{display:inline-flex;gap:4px;padding:3px;border-radius:10px;background:var(--field);border:1px solid var(--line)}.student-tabs button{border:none;background:transparent;color:var(--text-soft);padding:6px 14px;border-radius:8px;font-size:.8rem;font-weight:600;cursor:pointer}.student-tabs button.active{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #0000001f}.user-avatar{border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;font-weight:700;background:var(--accent-soft);color:var(--accent)}.row-actions{display:flex;gap:8px;justify-content:flex-end}.header-round-btn{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--text);border:none;cursor:pointer;flex-shrink:0}.dashboard-header-actions{display:flex;align-items:center;gap:12px}.confirm-dialog{width:100%;max-width:440px;padding:24px;border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:16px;background:var(--surface)}.confirm-dialog-header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--line)}.confirm-dialog-header h2{font-size:1.2rem;font-weight:800}.confirm-dialog-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.payments-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:28px}@media(max-width:767px){.page-body{padding:16px}.page-header{flex-wrap:wrap;margin-bottom:20px}.card-header{padding:14px 16px;flex-wrap:wrap;gap:8px}.search-bar{min-width:0;flex:1 1 200px}.dashboard-header-actions{gap:8px}.payments-summary-grid{grid-template-columns:minmax(0,1fr);gap:12px}.payments-summary-grid .stat-card{padding:20px}.payments-summary-grid .stat-value{font-size:2rem}.confirm-dialog-actions{flex-direction:column-reverse;align-items:stretch}.confirm-dialog-actions .btn{justify-content:center}.responsive-table thead{display:none}.responsive-table,.responsive-table tbody{display:block}.responsive-table tr{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 12px;padding:12px 16px}.responsive-table td{display:block;padding:0;min-width:0}.responsive-table td.cell-primary{grid-column:1}.responsive-table td.cell-meta{grid-column:1;font-size:.8rem;overflow-wrap:anywhere}.responsive-table td.cell-meta[data-label]:before{content:attr(data-label) ": ";color:var(--text-muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}.responsive-table td.cell-aside{grid-column:2;grid-row:1;text-align:right}.responsive-table td.cell-actions{grid-column:2;grid-row:1 / span 3}.responsive-table td.cell-actions-row{grid-column:1 / -1}.responsive-table td.cell-actions-row .row-actions{justify-content:flex-start;flex-wrap:wrap}.responsive-table td.cell-hide-phone{display:none}}.error-alert{background:var(--danger-soft);border:1px solid color-mix(in srgb,var(--danger) 30%,transparent);border-radius:var(--radius-sm);padding:10px 14px;color:var(--danger);font-size:.85rem;margin-bottom:16px}.success-alert{background:var(--success-soft);border:1px solid color-mix(in srgb,var(--success) 35%,transparent);border-radius:var(--radius-sm);padding:10px 14px;color:var(--success);font-size:.85rem;margin-bottom:16px}.field-error{color:var(--danger);font-size:.75rem;margin-top:4px;display:block}.input-error{border-color:var(--danger)!important;background:var(--danger-soft)!important}.input-error:focus{box-shadow:0 0 0 4px color-mix(in srgb,var(--danger) 20%,transparent)!important}.session-row{display:flex;align-items:center;gap:16px;padding:14px 0;border-bottom:1px solid var(--line)}.session-row:last-child{border-bottom:none}.session-time-block{width:52px;text-align:center;flex-shrink:0}.session-time-day{font-size:.65rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em}.session-time-num{font-size:1.4rem;font-weight:800;line-height:1;color:var(--accent)}.session-time-month{font-size:.65rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em}.session-info{flex:1}.session-title{font-weight:600;font-size:.9rem}.session-meta{font-size:.78rem;color:var(--text-muted);margin-top:2px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:20px;height:20px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}.full-page-loader{flex:1 0 auto;display:flex;align-items:center;justify-content:center;background:var(--bg)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted)}.empty-state svg{margin:0 auto 16px;opacity:.3;display:block}.empty-state h3{color:var(--text-soft);font-size:1rem;margin-bottom:8px}.topbar{height:60px;border-bottom:1px solid var(--line);background:var(--surface);display:flex;align-items:center;padding:0 32px;gap:16px;position:sticky;top:0;z-index:50}.topbar-breadcrumb{font-size:.875rem;color:var(--text-muted);flex:1}.topbar-breadcrumb span{color:var(--text);font-weight:600}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line);border-radius:100px}::-webkit-scrollbar-thumb:hover{background:var(--line-strong)}@keyframes pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1)}to{opacity:1;transform:scale(1)}}.dayhead{display:flex;align-items:flex-end;gap:14px}.dayhead-num{font-family:var(--font-display);font-weight:800;font-size:4.2rem;line-height:.82;letter-spacing:-.05em;font-variant-numeric:tabular-nums;color:var(--accent)}.dayhead-meta{display:grid;gap:2px;padding-bottom:2px}.dayhead-meta b{font-size:1.05rem;text-transform:capitalize}.dayhead-meta span{font-size:.82rem;color:var(--text-muted);text-transform:capitalize}@media(max-width:480px){.dayhead-num{font-size:3.2rem}}.pen-strike{position:relative;display:inline-block;color:var(--text-muted)}.pen-strike:after{content:"";position:absolute;left:-2px;right:-2px;top:52%;height:2px;border-radius:var(--radius-pill);background:var(--pen);transform:scaleX(1);transform-origin:left center}:root{color-scheme:var(--color-scheme)}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;-webkit-tap-highlight-color:transparent;background-color:var(--bg)}#root{padding-top:env(safe-area-inset-top);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);overflow-x:clip}a,button,input,select,textarea,label,[role=button]{touch-action:manipulation}.bottom-dock,.dock-link,.btn,.header-round-btn,.portal-nav-link,.student-tabs{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}body:has(.modal-backdrop){overflow:hidden}@media(display-mode:standalone){html,body{overscroll-behavior-y:none}}@media(hover:none){.card:hover,.stat-card:hover,.hover-float:hover{transform:none;box-shadow:var(--shadow-card)}.stat-card:hover{border-color:var(--line)}.dock-add-btn:hover{transform:none}.btn:not(.btn-primary):active,.header-round-btn:active,.dock-link:active,.portal-nav-link:active{transform:scale(.96)}.dock-add-btn:active{transform:scale(.92)}}@media(pointer:coarse){input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea{font-size:16px!important}*{scrollbar-width:none}*::-webkit-scrollbar{display:none}}@media(max-width:767px){:root{--dock-clearance: calc(100px + max(12px, env(safe-area-inset-bottom))) }.bottom-dock{bottom:max(12px,env(safe-area-inset-bottom));width:calc(100% - 24px - env(safe-area-inset-left) - env(safe-area-inset-right));padding:8px 6px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));justify-items:center}.dock-link{min-width:0;max-width:100%;padding:4px 0}.dock-label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9.5px;letter-spacing:0}.dock-add-btn-wrapper{top:-20px}.modal-backdrop{align-items:flex-end!important;padding:calc(env(safe-area-inset-top) + 24px) 0 0}.modal-backdrop>*{width:100%!important;max-width:none!important;max-height:100%;overflow-y:auto;overscroll-behavior:contain;border-bottom:none;border-radius:var(--radius-xl) var(--radius-xl) 0 0!important;animation:sheetUp var(--dur-slow) var(--ease-out)}.modal-backdrop>*:after{content:"";display:block;flex:none;height:env(safe-area-inset-bottom)}.modal-header{padding:18px 20px 14px}.modal-body{padding:18px 20px}.modal-footer{padding:12px 20px 20px}.stat-card{padding:20px}.stat-value{font-size:2rem;overflow-wrap:anywhere}.page-header-actions .btn{flex:1 1 auto;justify-content:center}.student-detail-stats{gap:12px}.student-detail-stats .stat-card{padding:16px}.student-detail-stats .stat-value{font-size:clamp(1.4rem,7vw,2rem)}.student-detail-stats .stat-label{letter-spacing:.04em}.student-detail-info{grid-template-columns:minmax(0,1fr);gap:12px}}.portal-next-session{padding:20px;display:grid;gap:4px}.portal-next-label{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-ink)}.portal-next-day{font-family:var(--font-display);font-size:1.45rem;font-weight:800;letter-spacing:-.02em;color:var(--text)}.portal-next-day:first-letter{text-transform:uppercase}.portal-next-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px;color:var(--text-soft)}.portal-book-cta{justify-content:center;min-height:52px;font-size:1rem;border-radius:var(--radius-md)}.portal-dash-section{display:grid;gap:8px}.portal-section-title{font-size:.85rem;font-weight:700;color:var(--text-soft);padding:0 4px}.portal-section-link{justify-self:center;font-size:.88rem;font-weight:600;padding:6px}.portal-session-list{overflow:hidden}.portal-session-row{display:flex;align-items:center;gap:14px;padding:14px 16px}.portal-session-row+.portal-session-row{border-top:1px solid var(--line)}.portal-session-date{width:44px;flex:none;display:grid;justify-items:center}.portal-session-date span{font-size:.7rem;color:var(--text-muted);text-transform:uppercase}.portal-session-date b{font-family:var(--font-display);font-size:1.4rem;font-weight:800;line-height:1;color:var(--accent)}.portal-session-info{min-width:0}.portal-session-subject{font-weight:600;color:var(--text)}.portal-session-when{font-size:.82rem;color:var(--text-muted)}.portal-mobile-header,.portal-tabbar,.portal-mobile-segments,.portal-mobile-only{display:none}@media(max-width:767px),(orientation:landscape)and (max-height:500px){.portal-shell{grid-template-columns:minmax(0,1fr);padding:0 16px calc(84px + env(safe-area-inset-bottom));gap:16px}.portal-dash-history{display:none}.portal-upcoming-row{flex-wrap:wrap;gap:10px;padding:14px 16px!important}.portal-upcoming-row>div:first-child{flex:1 1 100%;min-width:0}.portal-upcoming-badge,.portal-sidebar,.portal-topbar{display:none}.portal-mobile-header{display:flex;align-items:center;gap:12px;padding-top:16px}.portal-mobile-logo{width:40px;height:40px;border-radius:50%;object-fit:cover;flex:none}.portal-mobile-heading{flex:1;min-width:0}.portal-mobile-heading span{display:block;font-size:.8rem;color:var(--text-muted)}.portal-mobile-heading h1{font-size:clamp(1.2rem,6vw,1.5rem);line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.portal-mobile-avatar{width:44px;height:44px;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent-ink);font-weight:700;font-size:.95rem}.portal-tabbar{position:fixed;z-index:50;left:0;right:0;bottom:0;display:flex;padding:6px calc(8px + env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) calc(8px + env(safe-area-inset-left));background:var(--surface);border-top:1px solid var(--line);-webkit-user-select:none;user-select:none}.portal-tab{flex:1;min-width:0;min-height:50px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--text-muted);font-size:11px;font-weight:600}.portal-tab svg{width:24px;height:24px}.portal-tab.active,.portal-tab.active:hover{color:var(--accent)}.portal-mobile-segments{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;padding:4px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--text-muted) 14%,transparent)}.portal-mobile-segments a{min-height:38px;display:flex;align-items:center;justify-content:center;border-radius:9px;font-size:.9rem;font-weight:600;color:var(--text-soft)}.portal-mobile-segments a.active{background:var(--surface);color:var(--text);box-shadow:0 1px 3px color-mix(in srgb,var(--text) 14%,transparent)}.portal-page-surface{padding:18px}.portal-profile{display:grid;gap:18px}.portal-profile-account{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:var(--radius-md);background:var(--surface);min-width:0}.portal-profile-account strong{overflow-wrap:anywhere;color:var(--text)}.portal-profile-group{display:grid;gap:6px}.portal-profile-caption{font-family:var(--font-body);font-size:.75rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);padding:0 4px}.portal-profile-list{border-radius:var(--radius-md);background:var(--surface);overflow:hidden}.portal-profile-row{width:100%;min-height:54px;display:flex;align-items:center;gap:12px;padding:0 16px;border:none;background:none;color:var(--text);font:inherit;font-size:.95rem;text-align:left;cursor:pointer}.portal-profile-row+.portal-profile-row{border-top:1px solid var(--line)}.portal-profile-row>svg{color:var(--text-muted);flex:none}.portal-profile-row>span:first-of-type{flex:1;min-width:0;overflow-wrap:anywhere}.portal-profile-value{color:var(--text-muted);font-size:.9rem}.portal-switch{width:44px;height:26px;flex:none;border-radius:13px;background:var(--line-strong);position:relative;transition:background-color var(--dur-base) ease}.portal-switch:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform var(--dur-base) var(--ease-out)}[aria-checked=true]>.portal-switch{background:var(--accent)}[aria-checked=true]>.portal-switch:after{transform:translate(18px)}.portal-profile-logout{display:block;width:100%;min-height:52px;border:none;border-radius:var(--radius-md);background:var(--surface);color:var(--danger);font:inherit;font-weight:600;cursor:pointer}}@media(orientation:landscape)and (max-height:500px){:root{--dock-clearance: calc(76px + env(safe-area-inset-bottom)) }.bottom-dock{bottom:max(8px,env(safe-area-inset-bottom));max-width:420px;padding:6px 20px}.dock-label{display:none}.dock-link svg{width:22px;height:22px}.dock-add-btn-wrapper{top:0}.dock-add-btn{width:44px;height:44px;border-width:2px}.dock-add-btn svg{width:24px;height:24px}}@media(max-width:359px){.dock-label{font-size:9px;letter-spacing:-.03em}.header-round-btn{width:42px;height:42px}.dashboard-header-actions{gap:6px}}@keyframes sheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}
