/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-latin-400-normal-PpnXBOrz.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-400-normal-bXgqVju9.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-vietnamese-400-normal-CRcqvyg1.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-400-normal-BuGn0gnm.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-latin-500-normal-B6LVzGNe.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-500-normal-BJkVuMHw.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-vietnamese-500-normal-DREgrEoJ.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-500-normal-CfdwVo8-.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/be-vietnam-pro-latin-600-normal-BZDkUTrt.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-600-normal-5IO4e7bK.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/be-vietnam-pro-vietnamese-600-normal-nyU-ZL2p.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-600-normal-DkpCIyan.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/be-vietnam-pro-latin-700-normal-DlW1Zbsh.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-700-normal-C2EtzaOi.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/be-vietnam-pro-vietnamese-700-normal-Csr0PCuG.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-700-normal-By_5yT39.woff)format("woff")}@layer theme{:root,:host{--font-sans:"Be Vietnam Pro", system-ui, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-white:#fff;--spacing:.25rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-sm:.25rem;--animate-spin:spin 1s linear infinite;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-paper:#f6f8fc;--color-surface:#fff;--color-ink:#172b4d;--color-ink-muted:#5b6b82;--color-line:#e2e8f0;--color-control-line:#8290a6;--color-input-line:#d1dbe8;--color-secondary-soft:#eef2f8;--color-secondary-line:#d1dbe8;--color-secondary-hover:#e4ebf5;--color-secondary-press:#d8e2f0;--color-primary:#1f4fd1;--color-primary-press:#183fa8;--color-primary-soft:#e8eefc;--color-on-primary:#fff;--color-hero:#1f4fd1;--color-on-hero:#fff;--color-qr-paper:#fff;--color-chip-line:var(--color-input-line);--color-toast:var(--color-ink);--color-on-toast:var(--color-surface);--color-toast-line:var(--color-ink);--art-login:url(/assets/login-background-composite.svg);--color-shadow:var(--color-ink);--color-ok:#15803d;--color-ok-text:#116932;--color-ok-soft:#e7f5ec;--color-wait:#b45309;--color-wait-text:#92400e;--color-wait-soft:#fdf1dc;--color-info:#1d4ed8;--color-info-soft:#e6eefe;--color-part:#c2410c;--color-part-text:#9a3412;--color-part-soft:#fdebdd;--color-bad:#b91c1c;--color-bad-soft:#fde8e8;--color-idle:#6b7280;--color-idle-soft:#eef1f6;--color-skeleton:#e9ecf2}@supports (color:color-mix(in lab, red, red)){:root,:host{--color-skeleton:color-mix(in srgb, var(--color-ink) 6%, var(--color-paper))}}:root,:host{--color-zalo:#0068ff;--color-zalo-press:#0055d4;--color-zalo-soft:#e6f0ff;--color-zalo-ink:#0068ff;--color-on-zalo:#fff;--color-google-ink:#1f1f1f;--color-google-line:#747775;--radius-card:20px;--radius-control:14px;--radius-inner:12px;--radius-badge:8px;--radius-sheet:24px;--radius-pill:999px;--shadow-card:0 3px 16px #172b4d08}@supports (color:color-mix(in lab, red, red)){:root,:host{--shadow-card:0 3px 16px color-mix(in srgb, var(--color-shadow) 3%, transparent)}}:root,:host{--shadow-raised:0 12px 32px #172b4d1a}@supports (color:color-mix(in lab, red, red)){:root,:host{--shadow-raised:0 12px 32px color-mix(in srgb, var(--color-shadow) 10%, transparent)}}:root,:host{--text-hero:2.25rem;--text-display:1.75rem;--text-display--line-height:1.25;--text-title:1.1875rem;--text-title--line-height:1.35;--text-section:1.0625rem;--text-section--line-height:1.4;--text-body:1rem;--text-body--line-height:1.6;--text-secondary:.875rem;--text-secondary--line-height:1.5;--text-caption:.8125rem;--text-caption--line-height:1.45;--text-dense:min(.875rem, 18px);--text-dense-caption:min(.8125rem, 16px)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}@media (width>=768px){:root{--text-display:2rem;--text-title:1.5625rem;--text-section:1.125rem}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background:var(--color-paper);scroll-padding-top:calc(96px + env(safe-area-inset-top));scroll-padding-bottom:calc(120px + env(safe-area-inset-bottom));font-size:100%}@supports (font:-apple-system-body){html{font:-apple-system-body;font-family:var(--font-sans)}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-paper:#0e1320;--color-surface:#171e2e;--color-ink:#e8edf6;--color-ink-muted:#a3b0c6;--color-line:#2b3549;--color-control-line:#7a8ba6;--color-input-line:#3a4660;--color-secondary-soft:#1f2840;--color-secondary-line:#3a4660;--color-secondary-hover:#27324d;--color-secondary-press:#2f3c5c;--color-primary:#8aacff;--color-primary-press:#6f95f5;--color-primary-soft:#1d2a50;--color-on-primary:#0b1530;--color-hero:#1c3a8c;--color-on-hero:#fff;--color-ok:#4ade80;--color-ok-text:#86efac;--color-ok-soft:#12301f;--color-wait:#fbbf24;--color-wait-text:#fcd34d;--color-wait-soft:#3a2a0c;--color-info:#8aacff;--color-info-soft:#1b2a4f;--color-part:#fb923c;--color-part-text:#fdba74;--color-part-soft:#3a2010;--color-bad:#f87171;--color-bad-soft:#3b1618;--color-idle:#94a3b8;--color-idle-soft:#232c3f;--color-zalo-soft:#14284d;--color-zalo-ink:#4d94ff;--color-google-ink:#e8eaed;--color-google-line:#8e918f;--color-shadow:#000;--shadow-card:0 3px 16px #00000059;--shadow-raised:0 12px 32px #0000008c;--color-chip-line:#7a8ba6;--color-toast:#27324d;--color-on-toast:#e8edf6;--color-toast-line:#3a4660;--art-login:url(/assets/login-background-composite-dark.svg)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--color-paper:#0e1320;--color-surface:#171e2e;--color-ink:#e8edf6;--color-ink-muted:#a3b0c6;--color-line:#2b3549;--color-control-line:#7a8ba6;--color-input-line:#3a4660;--color-secondary-soft:#1f2840;--color-secondary-line:#3a4660;--color-secondary-hover:#27324d;--color-secondary-press:#2f3c5c;--color-primary:#8aacff;--color-primary-press:#6f95f5;--color-primary-soft:#1d2a50;--color-on-primary:#0b1530;--color-hero:#1c3a8c;--color-on-hero:#fff;--color-ok:#4ade80;--color-ok-text:#86efac;--color-ok-soft:#12301f;--color-wait:#fbbf24;--color-wait-text:#fcd34d;--color-wait-soft:#3a2a0c;--color-info:#8aacff;--color-info-soft:#1b2a4f;--color-part:#fb923c;--color-part-text:#fdba74;--color-part-soft:#3a2010;--color-bad:#f87171;--color-bad-soft:#3b1618;--color-idle:#94a3b8;--color-idle-soft:#232c3f;--color-zalo-soft:#14284d;--color-zalo-ink:#4d94ff;--color-google-ink:#e8eaed;--color-google-line:#8e918f;--color-shadow:#000;--shadow-card:0 3px 16px #00000059;--shadow-raised:0 12px 32px #0000008c;--color-chip-line:#7a8ba6;--color-toast:#27324d;--color-on-toast:#e8edf6;--color-toast-line:#3a4660;--art-login:url(/assets/login-background-composite-dark.svg)}}:root[data-theme-switching] *,:root[data-theme-switching] :before,:root[data-theme-switching] :after{transition:none!important}*{box-sizing:border-box}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-sans);font-size:var(--text-body);margin:0;line-height:1.6}@media (width>=481px){body{background:#f0f4fc}@supports (color:color-mix(in lab, red, red)){body{background:color-mix(in srgb, var(--color-primary-soft) 45%, var(--color-paper))}}}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:var(--color-primary);text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--color-primary);outline-offset:3px}h1{font-size:var(--text-title);font-weight:700;line-height:1.4}h2,h3{font-size:var(--text-section);font-weight:600}input:not([type=checkbox]):not([type=radio]),textarea,select{border:1px solid var(--color-control-line);border-radius:var(--radius-control);background:var(--color-surface);width:100%;min-height:48px;color:var(--color-ink);font:inherit;padding:12px}input[type=checkbox],input[type=radio]{width:24px;height:24px;accent-color:var(--color-primary);flex-shrink:0}label{font-weight:500;display:block}small{font-size:var(--text-caption)}progress{appearance:none;border-radius:var(--radius-pill);background:var(--color-line);border:0;height:8px;overflow:hidden}progress::-webkit-progress-bar{background:var(--color-line);border-radius:var(--radius-pill)}progress::-webkit-progress-value{background:var(--color-primary);border-radius:var(--radius-pill)}progress::-moz-progress-bar{background:var(--color-primary);border-radius:var(--radius-pill)}::view-transition-old(root){animation-duration:.18s}::view-transition-new(root){animation-duration:.18s}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}::view-transition-old(root){animation:none}::view-transition-new(root){animation:none}}.grid:not([class*=grid-cols]),.actions,.sheet-danger,.danger-zone,.radio-cards,.status-legend dl,.period-picker,.skeleton-group,.field,.callout-body,.switch-row-text,.install-card,.install-steps,.action-bar,.more-group,.today-grid,.today-section,.today-extras,.absence-row,.fees-head,.fees-summary,.invoice-main,.dashboard-period,.auth-form,.login-clean-actions,.bank-search,.bank-search-details,.zalo-intro,.zalo-perks,.zalo-help,.zalo-status,.zalo-stat,.zalo-step,.zalo-step-form,.zalo-step-body,.zalo-message,.zalo-checklist ul,.chat-list,.chat-thread,.chat-message{grid-template-columns:minmax(0,1fr)}.content>*,.card{min-width:0}}@layer components{.page{width:100%;max-width:480px;min-height:100dvh;padding-bottom:calc(24px + env(safe-area-inset-bottom));background:var(--color-paper);margin:0 auto}.page:not(:has(.topbar)){padding-top:env(safe-area-inset-top)}.content{flex-direction:column;gap:20px;padding:24px 16px 20px;display:flex}.content h1{text-wrap:balance}.card{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:16px;display:block}.card:not(.grid):not(.flex)>*+.btn{margin-top:16px}.card:not(.grid):not(.flex)>.btn+.btn{margin-top:12px}.btn{border-radius:var(--radius-control);min-width:44px;min-height:52px;font-weight:600;font-size:min(var(--text-body), 22px);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:10px 16px;line-height:1.4;transition:background-color .12s,border-color .12s;display:inline-flex}.btn-primary{background:var(--color-primary);color:var(--color-on-primary)}.btn-primary:active:not(:disabled){background:var(--color-primary-press)}.btn-secondary{color:var(--color-ink);border-color:var(--color-secondary-line);background:var(--color-secondary-soft)}.btn-secondary:active:not(:disabled){background:var(--color-secondary-press);border-color:var(--color-control-line)}.btn-ghost{color:var(--color-primary);text-underline-offset:4px;background:0 0;font-weight:500;text-decoration:underline;text-decoration-thickness:1px}.btn-ghost:active:not(:disabled){background:var(--color-secondary-soft)}.btn-zalo{background:var(--color-zalo);color:var(--color-on-zalo)}.btn-zalo:active:not(:disabled){background:var(--color-zalo-press)}.btn-success,.btn-success-outline{--action-color:var(--color-ok);--action-ink:var(--color-ok-text);--action-soft:var(--color-ok-soft)}.btn-warning,.btn-warning-outline{--action-color:var(--color-wait);--action-ink:var(--color-wait-text);--action-soft:var(--color-wait-soft)}.btn-danger,.btn-danger-outline{--action-color:var(--color-bad);--action-ink:var(--color-bad);--action-soft:var(--color-bad-soft)}.btn-success,.btn-warning,.btn-danger{color:var(--color-on-primary);background:var(--action-color);border-color:var(--action-color)}.btn-success-outline,.btn-warning-outline,.btn-danger-outline{color:var(--action-ink);background:var(--color-surface);border-color:var(--action-color)}.btn-success:active:not(:disabled),.btn-warning:active:not(:disabled),.btn-danger:active:not(:disabled){background:var(--action-color)}@supports (color:color-mix(in lab, red, red)){.btn-success:active:not(:disabled),.btn-warning:active:not(:disabled),.btn-danger:active:not(:disabled){background:color-mix(in srgb, var(--action-color) 85%, var(--color-ink))}}.btn-success-outline:active:not(:disabled),.btn-warning-outline:active:not(:disabled),.btn-danger-outline:active:not(:disabled){background:var(--action-soft)}.btn:disabled:not([aria-busy=true]){color:var(--color-ink-muted);background:var(--color-idle-soft);border-color:var(--color-line);opacity:1}.btn[aria-busy=true]{opacity:.8;cursor:progress;pointer-events:none}.btn[aria-busy=true]>svg:not(.btn-spinner){display:none}.btn--compact{min-height:44px;font-size:var(--text-secondary);padding:8px 12px}@media (hover:hover){.btn-primary:hover:not(:disabled):not(:active){background:var(--color-primary-press)}.btn-secondary:hover:not(:disabled):not(:active){background:var(--color-secondary-hover);border-color:var(--color-control-line)}.btn-ghost:hover:not(:disabled),.row:hover,.icon-button:hover:not(:disabled),.quick-actions>:hover{background:var(--color-secondary-soft)}.chip:hover:not(:disabled):not([aria-checked=true]){background:var(--color-secondary-hover)}.btn-success-outline:hover:not(:disabled),.btn-warning-outline:hover:not(:disabled),.btn-danger-outline:hover:not(:disabled){background:var(--action-soft)}}.actions{gap:12px;display:grid}.actions--inline{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column}@media (width>=768px){.actions{flex-flow:row-reverse wrap;justify-content:flex-start;display:flex}.actions>.btn{min-width:200px}.actions--fill,.content--narrow .actions{display:grid}.content--narrow .actions>.btn,.actions--fill>.btn{min-width:0}}.chip{border:1px solid var(--color-chip-line);border-radius:var(--radius-pill);background:var(--color-surface);min-height:44px;font-size:var(--text-dense);flex-shrink:0;justify-content:center;align-items:center;gap:8px;padding:8px 16px;font-weight:500;transition:background-color .12s,border-color .12s;display:inline-flex}.chip svg{flex-shrink:0}.chip[aria-checked=true],.chip[aria-pressed=true],.chip[aria-selected=true]{color:var(--color-primary);border-color:var(--color-primary);background:var(--color-primary-soft)}.chip-group{flex-wrap:wrap;gap:8px;display:flex}.chip-group>.chip{flex:1 1 var(--chip-min,64px);min-width:max-content;max-width:100%}@media (width>=768px){.chip-group{max-width:640px}}.chip-group.chip-scroll{overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none;flex-wrap:nowrap;gap:8px;max-width:none;margin-inline:-16px;padding-inline:16px;scroll-padding-inline:16px;display:flex;overflow-x:auto}.chip-scroll::-webkit-scrollbar{display:none}.chip-group.chip-scroll>.chip{scroll-snap-align:start;white-space:nowrap;flex:none}.chip-count{border-radius:var(--radius-pill);background:var(--color-secondary-soft);min-width:24px;height:24px;color:var(--color-ink-muted);font-size:var(--text-caption);text-align:center;font-variant-numeric:tabular-nums;padding:0 8px;font-weight:600;line-height:24px}.chip[aria-checked=true] .chip-count{background:var(--color-surface);color:var(--color-primary)}@media (width>=768px){.chip-group.chip-scroll{flex-wrap:wrap;margin-inline:0;padding-inline:0;overflow:visible}}.row{text-align:left;width:100%;min-height:64px;color:var(--color-ink);border-bottom:1px solid var(--color-line);align-items:center;gap:12px;padding:16px 0;display:flex}.class-row{border-bottom:1px solid var(--color-line);align-items:center;gap:8px;display:flex}.class-row:last-child{border-bottom:0}.class-row>.row{border-bottom:0;flex:1;min-width:0}.class-row-more{flex-shrink:0}.row:last-child{border-bottom:0}.row>.grow{min-width:0}.row:active{background:var(--color-primary-soft)}.row.tone-bad,.row.tone-wait,.row.tone-info{color:var(--color-ink)}.row-icon{border-radius:var(--radius-inner);background:var(--color-primary-soft);width:40px;height:40px;color:var(--color-primary);flex-shrink:0;place-items:center;display:grid}.avatar{border-radius:var(--radius-control);background:var(--color-primary-soft);width:44px;height:44px;color:var(--color-primary);flex-shrink:0;place-items:center;font-weight:600;display:grid}.muted{color:var(--color-ink-muted);font-size:var(--text-secondary)}.help-text{font-size:var(--text-caption)}.play-icon{background:var(--color-primary-soft);border-radius:50%;place-items:center;width:28px;height:28px;display:grid}.money{font-variant-numeric:tabular-nums;letter-spacing:-.01em;white-space:nowrap;font-weight:600}.display{font-size:var(--text-display);letter-spacing:-.7px;font-weight:700}.money--hero{font-size:var(--text-hero);letter-spacing:-1px;font-weight:700;line-height:1.2}.money-unit{margin-left:.04em;font-size:.62em;font-weight:600}.icon-button{border-radius:var(--radius-control);justify-content:center;align-items:center;min-width:44px;min-height:44px;transition:background-color .12s;display:inline-flex}.icon-button:active{background:var(--color-primary-soft)}.badge{border-radius:var(--radius-badge);font-size:var(--text-dense-caption);white-space:nowrap;color:var(--tone-foreground,var(--color-ink-muted));background:var(--tone-background,var(--color-idle-soft));flex-shrink:0;align-items:center;gap:4px;padding:4px 8px;font-weight:500;display:inline-flex}.status-dot{background:currentColor;border-radius:50%;flex-shrink:0;width:8px;height:8px}.tone-ok{--tone-background:var(--color-ok-soft);--tone-foreground:var(--color-ok-text)}.tone-wait{--tone-background:var(--color-wait-soft);--tone-foreground:var(--color-wait-text)}.tone-info{--tone-background:var(--color-info-soft);--tone-foreground:var(--color-info)}.tone-part{--tone-background:var(--color-part-soft);--tone-foreground:var(--color-part-text)}.tone-bad{--tone-background:var(--color-bad-soft);--tone-foreground:var(--color-bad)}.tone-idle{--tone-background:var(--color-idle-soft);--tone-foreground:var(--color-ink-muted)}.tone-ok,.tone-wait,.tone-info,.tone-part,.tone-bad,.tone-idle{background:var(--tone-background);color:var(--tone-foreground)}.card.tone-ok,.card.tone-wait,.card.tone-info,.card.tone-part,.card.tone-bad,.card.tone-idle{border-color:var(--tone-foreground)}@supports (color:color-mix(in lab, red, red)){.card.tone-ok,.card.tone-wait,.card.tone-info,.card.tone-part,.card.tone-bad,.card.tone-idle{border-color:color-mix(in srgb, var(--tone-foreground) 24%, var(--color-line))}}.card.tone-ok,.card.tone-wait,.card.tone-info,.card.tone-part,.card.tone-bad,.card.tone-idle{color:var(--color-ink)}.callout{border:1px solid var(--tone-foreground);align-items:flex-start;gap:12px;padding:12px 16px;display:flex}@supports (color:color-mix(in lab, red, red)){.callout{border:1px solid color-mix(in srgb, var(--tone-foreground) 24%, var(--color-line))}}.callout{border-radius:var(--radius-control);color:var(--color-ink)}.callout>svg{color:var(--tone-foreground);flex-shrink:0;margin-top:2px}.callout-body{flex:1;gap:4px;min-width:0;display:grid}.callout-title{font-weight:600}.callout .btn{margin-top:8px}.icon-tile{border-radius:var(--radius-inner);background:var(--color-primary-soft);width:44px;height:44px;color:var(--color-primary);flex-shrink:0;place-items:center;display:grid}.icon-tile.tone-ok,.icon-tile.tone-wait,.icon-tile.tone-info,.icon-tile.tone-part,.icon-tile.tone-bad,.icon-tile.tone-idle{background:var(--tone-background);color:var(--tone-foreground)}.icon-tile--zalo{background:var(--color-zalo-soft);color:var(--color-zalo-ink)}.section-header{justify-content:space-between;align-items:center;gap:12px;min-height:44px;display:flex}.section-header>a,.section-header>button{min-height:44px;font-size:var(--text-secondary);align-items:center;font-weight:600;display:inline-flex}.section-count{border-radius:var(--radius-badge);background:var(--color-primary-soft);min-width:24px;color:var(--color-primary);font-size:var(--text-caption);text-align:center;padding:2px 8px;font-weight:600}.ledger{margin:0}.ledger-row{border-bottom:1px dashed var(--color-line);justify-content:space-between;align-items:baseline;gap:12px;padding:12px 0;display:flex}.ledger-row:last-child{border-bottom:0}.ledger-row:has(+.ledger-total){border-bottom:0}.ledger-row dt{color:var(--color-ink-muted);font-size:var(--text-secondary)}.ledger-row dd{text-align:right;margin:0}.ledger-total{border-top:3px double var(--color-ink);margin-top:4px;font-weight:600}.ledger-total dt{color:var(--color-ink);font-weight:600}.overlay{background:#172b4d80;position:fixed;inset:0}@supports (color:color-mix(in lab, red, red)){.overlay{background:color-mix(in srgb, var(--color-shadow) 50%, transparent)}}.overlay{z-index:40;justify-content:center;align-items:flex-end;display:flex}.sheet{background:var(--color-surface);border-radius:var(--radius-sheet) var(--radius-sheet) 0 0;width:100%;max-width:480px;max-height:90dvh;box-shadow:var(--shadow-raised);padding:16px 20px;padding-bottom:calc(24px + env(safe-area-inset-bottom));animation:.18s ease-out slide;overflow:auto}@media (width>=768px){.overlay{align-items:center;padding:24px}.sheet{border-radius:var(--radius-card);max-width:520px;max-height:88dvh;padding:24px;padding-bottom:calc(24px + env(safe-area-inset-bottom))}.sheet-handle{display:none}}.toast{bottom:calc(84px + env(safe-area-inset-bottom));background:var(--color-toast);width:calc(100% - 32px);max-width:448px;color:var(--color-on-toast);border:1px solid var(--color-toast-line);border-radius:var(--radius-inner);box-shadow:var(--shadow-raised);z-index:60;align-items:center;gap:8px;padding:12px 16px;animation:.18s ease-out both toast-enter;display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast--error{background:var(--color-bad);border-color:var(--color-bad);color:var(--color-on-primary)}@media (width>=768px){.toast{max-width:500px;bottom:32px}}.skeleton{background:var(--color-skeleton);border-radius:var(--radius-card);height:100px;animation:1.5s infinite pulse}.skeleton-head{gap:8px;width:100%;display:grid}.skeleton-row{border-radius:var(--radius-inner);height:64px}.skeleton-group{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-card);gap:12px;padding:16px;display:grid}.empty-state{text-align:center;justify-items:center;gap:12px;padding:32px 16px;display:grid}.empty-state-icon{background:var(--color-primary-soft);width:72px;height:72px;color:var(--color-primary);border-radius:50%;place-items:center;display:grid}.empty-state-title{font-size:var(--text-section);font-weight:600}.empty-state>p:not(.empty-state-title){max-width:36ch;color:var(--color-ink-muted)}.error-state .empty-state-icon{background:var(--color-idle-soft);color:var(--color-ink-muted)}.check-label{align-items:center;gap:12px;min-height:48px;padding:4px 0;font-weight:400;display:flex}.field{gap:8px;display:grid}.field input:focus,.field textarea:focus{border-color:var(--color-primary)}.field-error{color:var(--color-bad);font-size:var(--text-secondary)}.field-control{position:relative}.field-control>input{padding-right:56px}.field-trailing{align-items:center;gap:4px;height:100%;padding-right:4px;display:flex;position:absolute;top:0;right:0}.qr-box{--color-ink:#172b4d;--color-ink-muted:#5b6b82;--color-primary:#1f4fd1;--color-line:#e2e8f0;border-radius:var(--radius-card);background:var(--color-qr-paper);color:var(--color-ink);box-shadow:var(--shadow-card)}.switch-row{text-align:left;width:100%;min-height:56px;color:var(--color-ink);align-items:center;gap:12px;padding:8px 0;display:flex}.switch-row-text{flex:1;min-width:0;display:grid}.switch-track{border-radius:var(--radius-pill);background:var(--color-control-line);flex-shrink:0;width:44px;height:26px;transition:background-color .18s;position:relative}.switch-track:after{content:"";background:var(--color-surface);border-radius:50%;width:22px;height:22px;transition:transform .18s;position:absolute;top:2px;left:2px}.switch-row[aria-checked=true] .switch-track{background:var(--color-primary)}.switch-row[aria-checked=true] .switch-track:after{transform:translate(18px)}.stepper-bars{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:4px;margin-top:8px;display:grid}.stepper-bars>span{border-radius:var(--radius-pill);background:var(--color-line);height:6px}.stepper-bars>span[data-done=true]{background:var(--color-primary)}.notification-list{margin:0;padding:0;list-style:none}.notification-row{text-align:left;align-items:flex-start;width:100%;min-height:64px}.notification-dot{background:var(--color-primary);vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:8px;display:inline-block}.attention-card{border-color:var(--color-wait)}.inbox-item{text-align:left;border-top:1px solid var(--color-line);flex-wrap:wrap;align-items:flex-start;gap:12px;width:100%;min-height:48px;padding:12px 0;display:flex}.inbox-item>.grow{flex-basis:12rem;min-width:0}.inbox-item>.btn{margin-left:auto}.card>h2+.inbox-item{border-top:0}.inbox-item>svg{flex-shrink:0;margin-top:2px}.install-card{gap:12px;display:grid}.install-steps{gap:8px;margin:0;padding:0;list-style:none;display:grid}.install-steps li{align-items:center;gap:8px;min-height:44px;display:flex}.otp-control{min-height:60px;position:relative}.otp-native{z-index:1;opacity:0;cursor:text;width:100%;height:100%;position:absolute;inset:0}.otp-cells{border-radius:var(--radius-control);grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;display:grid}.otp-cells span{border:1px solid var(--color-control-line);border-radius:var(--radius-inner);background:var(--color-surface);min-height:58px;color:var(--color-ink);font-size:var(--text-display);font-variant-numeric:tabular-nums;place-items:center;font-weight:600;display:grid}.otp-control:focus-within .otp-active{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-soft)}.otp-control:has(:focus-visible){outline:3px solid var(--color-primary);outline-offset:4px;border-radius:var(--radius-inner)}.support-link span{text-wrap:balance}.action-bar{z-index:15;width:100%;max-width:480px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--color-line);background:var(--color-surface);gap:8px;display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 -4px 16px #172b4d0d}@supports (color:color-mix(in lab, red, red)){.action-bar{box-shadow:0 -4px 16px color-mix(in srgb, var(--color-shadow) 5%, transparent)}}body:has(>.action-bar) .page{padding-bottom:calc(100px + env(safe-area-inset-bottom))}body:has(>.action-bar .action-bar-summary) .page{padding-bottom:calc(128px + env(safe-area-inset-bottom))}.action-bar-summary{color:var(--color-ink-muted);font-size:var(--text-secondary);text-align:center;margin:0}.action-bar-buttons{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:12px;display:grid}.action-bar-buttons:has(>:nth-child(2)){grid-template-columns:minmax(0,1fr) minmax(0,2fr);grid-auto-flow:row}@media (width>=768px){:is(body:has(>.action-bar) .page,body:has(>.action-bar .action-bar-summary) .page){padding-bottom:32px}.action-bar{max-width:none;box-shadow:none;background:0 0;border-top:0;justify-content:flex-end;align-items:center;padding:0 28px 24px;display:flex;position:static;transform:none}:is(.action-bar-buttons,.action-bar-buttons:has(>:nth-child(2))){gap:12px;display:flex}.action-bar .btn{min-width:200px}.action-bar--top{padding:0}.action-bar--top .btn{min-width:0;padding-inline:20px}}.help-link{min-height:44px;color:var(--color-primary);font-size:var(--text-dense);align-self:flex-start;align-items:center;gap:8px;font-weight:500;display:inline-flex}.help-link svg:last-of-type{color:var(--color-ink-muted)}.chip-group.chip-segmented,.tabs{border-radius:var(--radius-control);background:var(--color-idle-soft);grid-auto-columns:minmax(max-content,1fr);grid-auto-flow:column;gap:4px;padding:4px;display:grid}.chip-segmented .chip,.tab{border-radius:var(--radius-inner);min-height:44px;color:var(--color-ink-muted);font-size:var(--text-dense);text-align:center;background:0 0;border:0;justify-content:center;align-items:center;gap:8px;padding:8px;font-weight:500;line-height:1.3;display:inline-flex}.chip-segmented .chip[aria-checked=true],.tab[aria-selected=true]{background:var(--color-surface);color:var(--color-ink);box-shadow:var(--shadow-card);font-weight:600}.tab-badge{border-radius:var(--radius-pill);background:var(--color-bad);min-width:20px;height:20px;color:var(--color-on-primary);font-size:var(--text-caption);padding:0 6px;font-weight:600;line-height:20px}.sheet-danger{border-top:1px solid var(--color-line);gap:12px;margin-top:8px;padding-top:16px;display:grid}.danger-zone{border-top:1px solid var(--color-line);margin-top:16px;padding-top:24px;display:grid}.pending-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;display:flex}.btn-quiet-danger{color:var(--color-bad)}.radio-cards{gap:8px;display:grid}.radio-card{border:1px solid var(--color-control-line);border-radius:var(--radius-control);background:var(--color-surface);text-align:left;align-items:flex-start;gap:12px;min-height:56px;padding:12px 16px;display:flex}.radio-card[aria-checked=true]{border-color:var(--color-primary);background:var(--color-primary-soft)}.radio-card-dot{border:2px solid var(--color-control-line);background:var(--color-surface);border-radius:50%;flex-shrink:0;width:22px;height:22px;margin-top:2px}.radio-card[aria-checked=true] .radio-card-dot{border-color:var(--color-primary);box-shadow:inset 0 0 0 4px var(--color-surface);background:var(--color-primary)}.radio-card-title{font-weight:600;display:block}.radio-card-text{color:var(--color-ink-muted);font-size:var(--text-secondary);display:block}@media (width>=768px){.radio-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}.status-legend{font-size:var(--text-secondary)}.status-legend summary{min-height:44px;color:var(--color-primary);cursor:pointer;text-underline-offset:4px;align-items:center;font-weight:500;text-decoration:underline;text-decoration-thickness:1px;display:flex}.status-legend dl{border:1px solid var(--color-line);border-radius:var(--radius-control);background:var(--color-surface);gap:8px;padding:12px 16px;display:grid}.status-legend dl>div{grid-template-columns:9.5rem minmax(0,1fr);align-items:center;gap:12px;display:grid}.status-legend dt .badge{white-space:nowrap}.status-legend dd{color:var(--color-ink-muted);margin:0}.period-picker{gap:4px;display:grid}.period-range{text-align:center;font-size:var(--text-caption);margin:0}.attendance-legend{color:var(--color-ink-muted);font-size:var(--text-secondary);flex-wrap:wrap;gap:8px 16px;margin:0;padding:0;list-style:none;display:flex}.attendance-legend li{align-items:center;gap:6px;display:inline-flex}.btn,.chip,.tab,.badge,.section-count,.chip-count,.tab-badge,.nav-label,.nav-badge,.nav-items>a,.nav-items>button,.sidebar-link,.header-account,.help-link,.support-link,.auth-help,.auth-guide,.callout-link,.group-action,.all-actions,.pill,th{white-space:nowrap}.btn,.chip,.tab{min-width:0;max-width:100%}.ellipsis{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.clamp-2{-webkit-line-clamp:2;line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.check-label-text{flex:1;min-width:0;display:grid}.row>.grow,.row-main{min-width:0}.money,.money-unit{white-space:nowrap}.money--hero{font-size:clamp(1.75rem, 10vw, var(--text-hero))}.display{font-size:clamp(1.5rem, 8vw, var(--text-display))}.copy-value{overflow-wrap:anywhere;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--text-secondary);font-weight:500}.topbar h1{-webkit-line-clamp:3;line-clamp:3;overflow-wrap:anywhere;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.topbar--parent{position:static}.topbar--parent h1{-webkit-line-clamp:unset;line-clamp:unset;display:block}.topbar--root h1{-webkit-line-clamp:1;line-clamp:1}h1,h2,h3,.empty-state-title,.callout-title,.today-greet{text-wrap:balance}p,li,dd,.muted{text-wrap:pretty}:where(.content,.sheet) :where(p,dd){max-width:60ch}:where(.empty-state,.text-center,.splash-screen,.auth-screen) :where(p){margin-inline:auto}:where(.field)>:where(p),:where(p.field-error){margin-inline:0}.form-heading{text-align:center;gap:8px;margin-bottom:24px;display:grid}.form-heading>h1,.form-heading>h2{font-size:var(--text-display);letter-spacing:-.02em;text-wrap:balance;font-weight:700;line-height:1.25}.form-heading>h2{font-size:var(--text-title)}.form-heading-sub{color:var(--color-ink-muted);font-size:var(--text-secondary);text-wrap:balance;margin-inline:auto;line-height:1.5}.zalo-step-body>header.form-heading{gap:8px}.zalo-step-body>header.form-heading>.muted{text-wrap:balance;margin-inline:auto}.help-link-wrap{align-self:flex-start;justify-items:start;display:grid}.login-leave-note{color:var(--color-ink-muted);font-size:var(--text-caption);text-align:center;text-wrap:balance;margin-top:12px;line-height:1.5}.parent-footer a{align-items:center;min-height:44px;padding-inline:4px;display:inline-flex}.leave-guide{border:1px solid var(--color-secondary-line);border-radius:var(--radius-control);background:var(--color-secondary-soft);color:var(--color-ink);font-size:var(--text-secondary);gap:8px;padding:12px 16px;line-height:1.5;display:grid}.leave-guide[data-state=away]{border-color:var(--color-primary)}.leave-guide-title{align-items:center;gap:8px;font-weight:600;display:flex}.leave-guide-steps{gap:4px;margin:0;padding-left:20px;list-style:decimal;display:grid}.leave-guide p{margin:0}.leave-guide details{gap:8px;display:grid}.leave-guide details>summary{cursor:pointer;min-height:44px;list-style:none}.leave-guide details>summary::-webkit-details-marker{display:none}.leave-guide details>summary:after{content:"Xem";color:var(--color-primary);text-underline-offset:4px;margin-left:auto;font-weight:600;text-decoration:underline}.leave-guide details[open]>summary:after{content:"Thu gọn"}.leave-guide-resume{color:var(--color-ink-muted)}.leave-guide-back{border-radius:var(--radius-inner);background:var(--color-ok-soft);color:var(--color-ok-text);padding:8px 12px;font-weight:500}.leave-guide>.btn{min-height:44px;font-size:var(--text-secondary);justify-self:start;padding-block:8px}.class-facts{gap:16px;display:grid}.class-facts-label{color:var(--color-ink-muted);font-size:var(--text-caption);margin-bottom:4px;font-weight:500}.fee-figure{color:var(--color-ink);flex-wrap:wrap;align-items:baseline;column-gap:6px;display:flex}.fee-figure-unit{color:var(--color-ink-muted);font-size:var(--text-section);white-space:nowrap;font-weight:600}.schedule-chips{gap:8px;margin:0;padding:0;list-style:none;display:grid}.schedule-chips>li{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.day-chips{flex-wrap:wrap;gap:6px;display:flex}.day-chip,.time-chip{border-radius:var(--radius-badge);min-height:36px;font-size:var(--text-body);white-space:nowrap;justify-content:center;align-items:center;padding:0 12px;font-weight:700;display:inline-flex}.day-chip{background:var(--color-primary-soft);min-width:44px;color:var(--color-primary)}.time-chip{background:var(--color-secondary-soft);color:var(--color-ink);font-variant-numeric:tabular-nums}.class-facts-card{padding:20px}.public-class>.muted{margin:4px 0 16px}.pay-hero-student{font-size:var(--text-title);line-height:1.3}.pay-hero-amount{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;display:flex}.pay-hero-meta{color:var(--color-ink-muted);font-size:var(--text-secondary)}.pay-lines{border:1px solid var(--color-line);border-radius:var(--radius-inner);font-size:var(--text-secondary);gap:8px;padding:12px;display:grid}.pay-lines li{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.pay-line-text{overflow-wrap:break-word;min-width:0}.pay-hero-claimed{border-radius:var(--radius-inner);padding:12px;font-weight:600}.auth-screen{background:var(--color-paper);flex-direction:column;display:flex}.auth-header{justify-content:space-between;align-items:center;gap:12px;min-height:76px;padding:20px 24px 12px;display:flex}.auth-header-brand{color:var(--color-ink);align-items:center;gap:8px;display:flex}.auth-header-brand>.brand-mark{width:35px;height:35px}.auth-header-brand>span{font-size:var(--text-title);letter-spacing:-.9px;font-weight:700}.auth-help{min-height:44px;color:var(--color-ink-muted);font-size:var(--text-caption);align-items:center;gap:8px;font-weight:500;display:flex}.auth-back{border:1px solid var(--color-line);border-radius:var(--radius-control);background:var(--color-surface);width:36px;min-width:44px;height:44px;color:var(--color-ink);place-items:center;display:grid}.auth-panel{border:1px solid var(--color-line);background:var(--color-surface);border-radius:var(--radius-card);padding:20px;box-shadow:0 4px 16px #172b4d08}@supports (color:color-mix(in lab, red, red)){.auth-panel{box-shadow:0 4px 16px color-mix(in srgb, var(--color-shadow) 3%, transparent)}}.auth-panel>.btn,.auth-form>.btn{min-height:52px;font-size:var(--text-body)}.auth-panel>.btn svg:last-child:not(:first-child),.auth-form>.btn svg:last-child{margin-left:auto}.auth-panel>.btn svg:first-child:not(:last-child){margin-right:auto}.auth-panel .btn-secondary{color:var(--color-ink);border-color:var(--color-line)}.auth-form-page{min-height:100dvh}.auth-form-main{flex-direction:column;flex:1;gap:24px;padding:14px 24px 24px;display:flex}.auth-stage{justify-content:space-between;align-items:center;gap:24px;margin:0 0 4px;padding:0;list-style:none;display:flex;position:relative}.auth-stage:before{content:"";background:var(--color-line);height:1px;position:absolute;top:14px;left:20px;right:20px}.auth-stage li{color:var(--color-ink-muted);font-size:var(--text-caption);background:var(--color-paper);align-items:center;gap:8px;display:flex;position:relative}.auth-stage li:first-child{padding-right:12px}.auth-stage li:last-child{padding-left:12px}.auth-stage li>span{border:1px solid var(--color-line);background:var(--color-surface);width:27px;height:27px;color:var(--color-ink-muted);font-size:var(--text-caption);border-radius:50%;place-items:center;display:grid}.auth-stage li[aria-current=step]{color:var(--color-primary);font-weight:600}.auth-stage li[aria-current=step]>span{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-on-primary)}.auth-form-intro{padding-top:12px}.auth-form-icon{border:1px solid #cbd6ec;place-items:center;width:64px;height:64px;display:grid;position:relative}@supports (color:color-mix(in lab, red, red)){.auth-form-icon{border:1px solid color-mix(in srgb, var(--color-primary) 12%, var(--color-line))}}.auth-form-icon{background:var(--color-surface);color:var(--color-primary);border-radius:var(--radius-card);margin-bottom:24px;box-shadow:0 4px 10px #1f4fd10a}@supports (color:color-mix(in lab, red, red)){.auth-form-icon{box-shadow:0 4px 10px color-mix(in srgb, var(--color-primary) 4%, transparent)}}.auth-form-icon>span{background:var(--color-ok);width:23px;height:23px;color:var(--color-on-primary);border:3px solid var(--color-paper);border-radius:50%;place-items:center;display:grid;position:absolute;bottom:-3px;right:-3px}.auth-form-intro h1{font-size:var(--text-display);letter-spacing:-1px;text-wrap:balance;font-weight:700;line-height:1.35}.auth-form-intro p{color:var(--color-ink-muted);font-size:var(--text-secondary);margin-top:12px;line-height:1.75}.auth-form-page .auth-panel{padding:22px 20px}.auth-form{gap:18px;display:grid}.auth-form label{font-size:var(--text-secondary);font-weight:600}.auth-form input:not(.otp-native){border-color:var(--color-control-line);border-radius:var(--radius-control);background:var(--color-surface);font-variant-numeric:tabular-nums;min-height:54px}.auth-form input::placeholder{color:var(--color-ink-muted);font-weight:400}.auth-input-hint{font-size:var(--text-caption);color:var(--color-ink-muted);margin-top:-10px}.auth-security-note{color:var(--color-ink-muted);align-items:flex-start;gap:8px;padding:0 6px;display:flex}.auth-security-note svg{color:var(--color-primary);flex-shrink:0;margin-top:2px}.auth-security-note p{font-size:var(--text-caption);line-height:1.7}.auth-form-footer{font-size:var(--text-caption);color:var(--color-ink-muted);flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:24px 16px 12px;display:flex}.auth-destination{border-bottom:1px solid var(--color-line);align-items:center;gap:8px;padding-bottom:18px;display:flex}.auth-destination-icon{border-radius:var(--radius-inner);background:var(--color-paper);width:35px;height:40px;color:var(--color-ink-muted);place-items:center;display:grid}.auth-destination>div{flex:1}.auth-destination>div>span{font-size:var(--text-caption);color:var(--color-ink-muted);display:block}.auth-destination strong{font-size:var(--text-body);letter-spacing:.3px;font-weight:600}.auth-destination>button{min-width:44px;min-height:44px;font-size:var(--text-caption);color:var(--color-primary);font-weight:600}.auth-form .otp-cells{gap:8px}.auth-form .otp-cells span{border-color:var(--color-control-line);border-radius:var(--radius-inner);background:var(--color-surface);min-height:52px;font-size:var(--text-title)}.auth-form .otp-control{min-height:52px}.auth-resend{font-size:var(--text-caption);color:var(--color-ink-muted);justify-content:space-between;align-items:center;gap:8px;display:flex}.auth-resend .btn{font-size:var(--text-caption);min-height:44px;padding:4px}.auth-verifying{font-size:var(--text-caption);color:var(--color-primary)}.onboarding-header{z-index:10;background:var(--color-paper);position:sticky;top:0}.onboarding-header .auth-header{padding-bottom:10px}.onboarding-progress{border-bottom:1px solid var(--color-line);padding:2px 24px 20px}.onboarding-progress>div{width:100%}.onboarding-progress>div>div>span{flex:1;width:auto;height:4px}.onboarding-progress>div>p{font-size:var(--text-caption);color:var(--color-ink-muted)}.onboarding-page>.content{border-radius:var(--radius-card);background:var(--color-surface);border:1px solid var(--color-line);gap:22px;margin:18px 16px 0;padding:24px 16px}.onboarding-page>.content>h1{font-size:var(--text-display);letter-spacing:-.8px}.onboarding-page .field input,.onboarding-page .field select,.onboarding-page .field textarea{border-color:var(--color-control-line);background:var(--color-surface)}.onboarding-page .chip{font-size:var(--text-caption)}.onboarding-page .card{box-shadow:none;background:var(--color-paper)}.onboarding-page .bank-options button{min-height:86px}.onboarding-page .bank-logo{height:26px}.onboarding-done{padding-top:48px}.onboarding-done>.brand-mark{width:56px;height:56px}.onboarding-done>h1{margin-top:12px}@media (height<=760px){.auth-header{min-height:68px;padding-top:16px}}.auth-form-footer>span{align-items:center;gap:8px;display:inline-flex}.auth-guide{min-height:44px;color:var(--color-primary);font-size:var(--text-caption);justify-content:center;align-items:center;gap:6px;font-weight:500;display:inline-flex}@media (width<=359px){.auth-header{padding-inline:16px}.auth-help-text,.auth-help-arrow{display:none}.auth-help{justify-content:center;min-width:44px}.auth-header .auth-header-brand>.auth-wordmark{width:112px;height:auto}}.teacher-main{min-width:0}@media (width>=481px) and (width<=767px){.page{box-shadow:0 0 60px #172b4d0d}@supports (color:color-mix(in lab, red, red)){.page{box-shadow:0 0 60px color-mix(in srgb, var(--color-shadow) 5%, transparent)}}}@media (width>=768px){.page{max-width:720px}.teacher-main>.content{gap:24px;max-width:1120px;margin:0 auto;padding:24px 28px}.teacher-shell .teacher-main>.content.content--narrow{max-width:640px}.teacher-main .class-list{box-shadow:none;background:0 0;border:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;padding:0;display:grid}.class-list>.class-row{border:1px solid var(--color-line);background:var(--color-surface);border-radius:var(--radius-card);align-items:flex-start;padding-right:8px}.class-list>.class-row>.row{align-items:flex-start;padding:24px}.class-list>.class-row .class-row-more{margin-top:16px}.class-list>.class-row .muted{margin-top:8px;line-height:1.9}.teacher-shell[data-screen=settings] .content,.teacher-shell[data-screen=students] .content,.teacher-shell[data-screen=invoices] .content,.teacher-shell[data-screen=more] .content,.teacher-shell[data-route="/classes/new"] .content,.teacher-shell[data-route$=\/edit] .content,.teacher-shell[data-route$=\/import] .content,.teacher-shell[data-route="/fees/send"] .content,.teacher-shell[data-route="/reports/ledger"] .content,.teacher-shell[data-route=\/unmatched] .content,.teacher-shell--focused .teacher-main>.content{max-width:800px}.auth-screen.auth-form-page{max-width:580px;padding-bottom:24px}.auth-form-main{padding:28px 40px}.auth-form-page .auth-header{padding:28px 40px 12px}.auth-form-page .auth-panel{padding:28px}.auth-form-intro h1{max-width:380px;font-size:var(--text-display)}.auth-form-icon{width:72px;height:72px}.page.onboarding-page{max-width:800px}.onboarding-page .auth-header{padding:24px 40px 12px}.onboarding-progress{padding:8px 40px 24px}.onboarding-page>.content{gap:24px;margin:24px 40px;padding:32px}.onboarding-page>.content>h1{font-size:var(--text-display)}.onboarding-page .bank-options{gap:12px}.onboarding-page .bank-options button{min-height:104px}.onboarding-page .bank-options .bank-logo{max-width:100px;height:40px}.page.onboarding-done{max-width:640px;padding:72px 40px 40px}.page.splash-screen{width:100%;max-width:none}}@media (width>=1100px){.teacher-main>.content{padding:28px 40px}}.topbar{z-index:10;min-height:calc(72px + env(safe-area-inset-top));padding:calc(12px + env(safe-area-inset-top)) 16px 12px;background:var(--color-surface);border-bottom:1px solid var(--color-line);align-items:center;gap:12px;display:flex;position:sticky;top:0}.topbar h1{font-size:var(--text-title);letter-spacing:-.5px;flex:1;line-height:1.35}.topbar-copy{flex:1;min-width:0}.topbar-copy h1{flex:none}.topbar-eyebrow{max-width:100%;color:var(--color-ink-muted);font-size:var(--text-caption);text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px;display:block;overflow:hidden}.topbar-back{background:var(--color-paper);color:var(--color-ink);border:0;border-radius:50%;flex-shrink:0}.topbar-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.topbar-actions .btn{min-height:44px;font-size:var(--text-secondary);padding:8px 12px}.topbar-context-action,.header-icons{display:contents}.header-account,.account-avatar{background:var(--color-primary-soft);width:44px;height:44px;color:var(--color-primary);border-radius:50%;flex-shrink:0;place-items:center;font-weight:600;display:grid}.header-account[aria-current=page]{box-shadow:0 0 0 2px var(--color-primary)}.header-notifications,.topbar-primary{display:none}.header-notification-count{border:2px solid var(--color-surface);background:var(--color-bad);min-width:20px;height:20px;color:var(--color-on-primary);font-size:var(--text-caption);text-align:center;border-radius:10px;padding:0 4px;font-weight:600;line-height:16px;position:absolute;top:0;right:0}.nav-items{grid-template-columns:repeat(5,minmax(max-content,1fr));display:grid}.nav-icon{place-items:center;width:44px;height:28px;display:grid;position:relative}.nav-icon svg{transform-origin:50%;transition:transform .28s cubic-bezier(.34,1.56,.64,1),stroke-width .2s ease-out,fill .2s ease-out,color .2s ease-out}.nav-items>a:active .nav-icon svg,.nav-items>button:active .nav-icon svg{transition-duration:80ms,.2s,.2s,.2s;transform:scale(.86)}.nav-items>a[aria-current=page] .nav-icon svg{stroke-width:2.4px;fill:currentColor}@supports (color:color-mix(in lab, red, red)){.nav-items>a[aria-current=page] .nav-icon svg{fill:color-mix(in srgb, currentColor 20%, transparent)}}.nav-badge{outline:2px solid var(--color-surface);background:var(--color-bad);min-width:20px;height:20px;color:var(--color-on-primary);font-size:var(--text-caption);text-align:center;border-radius:10px;padding:0 4px;font-weight:600;line-height:20px;position:absolute;top:2px;left:calc(50% + 6px)}.nav-badge--info{background:var(--color-primary)}.sidebar-bottom,.tablet-nav-brand,.sidebar-create{display:none}.sidebar-wordmark{width:144px;max-width:100%;height:auto;display:block}.auth-header-brand .auth-wordmark{width:136px;height:auto;display:block}@media (width<=767px){.teacher-topbar.topbar--root{grid-template-columns:44px minmax(0,1fr) 44px;display:grid}.teacher-topbar.topbar--root .topbar-copy{text-align:center;grid-area:1/2}.teacher-topbar.topbar--root .topbar-actions{display:contents}.teacher-topbar.topbar--root .header-account{grid-area:1/1;justify-self:start}.teacher-topbar.topbar--root .header-icons{grid-area:1/3;justify-self:end;gap:8px;display:flex}.teacher-topbar.topbar--root .topbar-context-action{display:none}.teacher-topbar .header-notifications{background:var(--color-paper);width:44px;height:44px;color:var(--color-ink);border-radius:50%;display:inline-flex;position:relative}.teacher-topbar.topbar--back{grid-template-columns:44px minmax(0,1fr) minmax(44px,auto);display:grid}.teacher-topbar.topbar--back .topbar-copy{text-align:center}.teacher-topbar.topbar--back .topbar-copy--left{text-align:left}.teacher-topbar.topbar--back h1{font-size:var(--text-section)}.topbar--back .header-account{display:none}.teacher-topbar .topbar-actions :is(a.btn,button.btn):has(.lucide-plus){background:var(--color-paper);width:44px;color:var(--color-ink);border:0;border-radius:50%;gap:0;padding:0;font-size:0}.teacher-topbar .topbar-actions :is(a.btn,button.btn):has(.lucide-plus) svg{width:22px;height:22px}.teacher-shell:not(.teacher-shell--focused):not(.teacher-shell--no-tabs){padding-bottom:calc(96px + env(safe-area-inset-bottom))}.teacher-shell--no-tabs .bottom-nav{display:none}body:has(.teacher-shell:not(.teacher-shell--no-tabs) .bottom-nav) .toast{bottom:calc(96px + env(safe-area-inset-bottom))}.teacher-shell .bottom-nav{z-index:20;width:100%;max-width:480px;min-height:72px;padding:4px 4px calc(4px + env(safe-area-inset-bottom));border-top:1px solid var(--color-line);background:var(--color-surface);position:fixed;bottom:0;box-shadow:0 -4px 24px #172b4d0d}@supports (color:color-mix(in lab, red, red)){.teacher-shell .bottom-nav{box-shadow:0 -4px 24px color-mix(in srgb, var(--color-shadow) 5%, transparent)}}.nav-items>a,.nav-items>button{border-radius:var(--radius-control);min-height:62px;color:var(--color-ink-muted);font-size:var(--text-dense-caption);white-space:nowrap;background:0 0;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:4px 0;font-weight:500;transition:color .2s ease-out;display:flex;position:relative}.nav-items>a[aria-current=page]{color:var(--color-primary);font-weight:600}.nav-items>a[href=\/more],.nav-items>a[href=\/inbox]{display:none}.nav-icon svg{width:24px;height:24px}.nav-items>.mobile-nav-create{color:var(--color-primary);justify-content:flex-start;padding-top:0;font-weight:600}.mobile-nav-create .nav-icon{background:var(--color-primary);width:56px;height:56px;color:var(--color-on-primary);box-shadow:0 0 0 4px var(--color-surface), 0 6px 14px #1f4fd13d;border-radius:50%;margin-top:-16px}@supports (color:color-mix(in lab, red, red)){.mobile-nav-create .nav-icon{box-shadow:0 0 0 4px var(--color-surface), 0 6px 14px color-mix(in srgb, var(--color-primary) 24%, transparent)}}.mobile-nav-create .nav-icon{transition:background-color .12s}.mobile-nav-create .nav-icon svg{width:28px;height:28px}.mobile-nav-create:active .nav-icon{background:var(--color-primary-press)}.mobile-nav-create:focus-visible{outline:none}.mobile-nav-create:focus-visible .nav-icon{outline:3px solid var(--color-primary);outline-offset:7px}}@media (width>=768px){.page.teacher-shell{--sidebar-w:240px;width:100%;max-width:none;padding:0 0 32px var(--sidebar-w);position:relative}.page.teacher-shell--rail{--sidebar-w:88px}.page.teacher-shell--focused{max-width:960px;padding-left:0}.teacher-main{width:100%;min-width:0;min-height:100dvh}.teacher-main>.topbar{min-height:calc(88px + env(safe-area-inset-top));padding:calc(20px + env(safe-area-inset-top)) 28px 20px}.teacher-topbar .topbar-copy{flex-direction:column;display:flex}.teacher-topbar .topbar-eyebrow{order:-1;margin-bottom:2px}.teacher-topbar .header-account{display:none}.topbar-primary{align-items:center;gap:12px;display:flex}.teacher-topbar .topbar-back{border:1px solid var(--color-line);background:var(--color-surface)}.teacher-shell .bottom-nav{z-index:20;width:var(--sidebar-w);border-right:1px solid var(--color-line);background:var(--color-surface);flex-direction:column;padding:24px 16px 16px;display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto}.tablet-nav-brand{justify-content:flex-start;align-items:center;padding:0 0 24px 8px;display:flex}.tablet-nav-brand .brand-mark{width:40px;height:40px;display:none}.teacher-shell--rail .tablet-nav-brand .brand-mark{display:block}.teacher-shell--rail .tablet-nav-brand .sidebar-wordmark{display:none}.teacher-shell--rail .tablet-nav-brand{justify-content:center;padding-left:0}.sidebar-create{width:100%;margin-bottom:16px;display:inline-flex}.teacher-shell--rail .sidebar-create{align-self:center;width:48px;min-height:48px;padding:0}.teacher-shell--rail .sidebar-create .nav-label{display:none}.nav-items{flex-direction:column;gap:4px;display:flex}.nav-items>a,.sidebar-link,.sidebar-install{border-radius:var(--radius-control);min-height:48px;color:var(--color-ink-muted);font-size:var(--text-secondary);align-items:center;gap:12px;padding:8px 12px;font-weight:500;transition:background-color .12s,color .12s;display:flex;position:relative}.nav-items>a:hover,.sidebar-link:hover{background:var(--color-secondary-soft)}.nav-items>a[aria-current=page],.sidebar-link[aria-current=page]{background:var(--color-primary-soft);color:var(--color-primary);font-weight:600}.nav-icon{flex-shrink:0;width:28px;height:28px}.nav-icon svg{width:22px;height:22px}.nav-label{min-width:0}.nav-badge{outline:0;margin-left:auto;position:static}.sidebar-bottom{gap:4px;margin-top:auto;padding-top:16px;display:grid}.sidebar-install{border:1px solid var(--color-line);background:var(--color-surface);width:100%;color:var(--color-primary)}.sidebar-theme{text-align:left;width:100%}a.sidebar-account{border-top:1px solid var(--color-line);min-height:64px;color:var(--color-ink);align-items:center;gap:12px;margin-top:8px;padding:12px 8px 0;display:flex}.sidebar-account>span:nth-child(2){flex:1;min-width:0}.sidebar-account strong{font-size:var(--text-caption);line-height:1.5;display:block}.sidebar-account small{color:var(--color-ink-muted);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.sidebar-nav-toggle{border-radius:var(--radius-control);width:44px;min-height:44px;color:var(--color-ink-muted);justify-content:center;align-items:center;margin:8px 0 0 auto;display:flex}.sidebar-nav-toggle:hover{background:var(--color-secondary-soft)}.teacher-shell--rail .bottom-nav{align-items:stretch;padding-inline:4px}.teacher-shell--rail .nav-items>a,.teacher-shell--rail .sidebar-link,.teacher-shell--rail .sidebar-install{min-height:60px;font-size:var(--text-caption);text-align:center;flex-direction:column;justify-content:center;gap:4px;padding:8px 2px;line-height:1.3}.teacher-shell--rail .nav-badge{outline:2px solid var(--color-surface);margin:0;position:absolute;top:4px;left:calc(50% + 4px)}.teacher-shell--rail a.sidebar-account{justify-content:center;padding-inline:0}.teacher-shell--rail .sidebar-account>span:nth-child(2),.teacher-shell--rail .sidebar-account>svg{display:none}.teacher-shell--rail .sidebar-nav-toggle{margin-inline:auto}}@media (width>=1100px){.teacher-main>.topbar{padding:calc(24px + env(safe-area-inset-top)) 40px 24px}.teacher-main>.content{padding:28px 40px}}.today-greet{font-size:var(--text-section);font-weight:600}.today-grid{gap:20px;display:grid}.today-grid>*{min-width:0}.today-section{align-content:start;gap:8px;display:grid}.today-hero{background:var(--color-hero) url(/assets/ledger-lines.svg) no-repeat right -24px bottom -30px / 200px;color:var(--color-on-hero);border:0;padding:20px;position:relative;overflow:hidden;box-shadow:0 8px 22px #1f4fd129}@supports (color:color-mix(in lab, red, red)){.today-hero{box-shadow:0 8px 22px color-mix(in srgb, var(--color-hero) 16%, transparent)}}.hero-top{font-size:var(--text-caption);align-items:center;gap:8px;font-weight:500;display:flex}.hero-tile{border-radius:var(--radius-badge);background:#ffffff24;place-items:center;width:32px;height:32px;display:grid}@supports (color:color-mix(in lab, red, red)){.hero-tile{background:color-mix(in srgb, var(--color-on-hero) 14%, transparent)}}.hero-label{color:#e4eaf9;margin-top:12px}@supports (color:color-mix(in lab, red, red)){.hero-label{color:color-mix(in srgb, var(--color-on-hero) 88%, var(--color-hero))}}.hero-label{font-size:var(--text-caption)}.today-hero .money--hero{display:block}.hero-progress{font-size:var(--text-caption);align-items:center;gap:12px;margin:8px 0;font-weight:600;display:flex}.hero-progress progress{background:#ffffff3d;flex:1;width:100%;min-width:0;height:8px}@supports (color:color-mix(in lab, red, red)){.hero-progress progress{background:color-mix(in srgb, var(--color-on-hero) 24%, transparent)}}.hero-progress progress::-webkit-progress-bar{background:#ffffff3d}@supports (color:color-mix(in lab, red, red)){.hero-progress progress::-webkit-progress-bar{background:color-mix(in srgb, var(--color-on-hero) 24%, transparent)}}.hero-progress progress::-webkit-progress-value{background:var(--color-on-hero)}.hero-progress progress::-moz-progress-bar{background:var(--color-on-hero)}.hero-help{color:#e4eaf9;margin-bottom:12px}@supports (color:color-mix(in lab, red, red)){.hero-help{color:color-mix(in srgb, var(--color-on-hero) 88%, var(--color-hero))}}.hero-help{font-size:var(--text-caption)}.hero-foot{border-top:1px dashed #ffffff59;justify-content:space-between;align-items:center;gap:12px;min-height:56px;padding-top:12px;display:flex}@supports (color:color-mix(in lab, red, red)){.hero-foot{border-top:1px dashed color-mix(in srgb, var(--color-on-hero) 35%, transparent)}}.hero-foot{color:var(--color-on-hero)}.hero-foot .hero-label{margin:0;display:block}.hero-foot .money{font-size:var(--text-section)}.session-card{grid-template-columns:max-content minmax(0,1fr);gap:0 16px;padding:16px;display:grid}.session-time{border-right:2px solid var(--color-primary-soft);padding-right:12px}.session-time strong{font-size:var(--text-title);font-variant-numeric:tabular-nums;font-weight:700;line-height:1.3;display:block}.session-subject{font-size:var(--text-section);font-weight:600;line-height:1.4}.session-meta{color:var(--color-ink-muted);font-size:var(--text-caption);flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0 16px;display:flex}.session-card>.btn{min-height:56px;font-size:var(--text-section);grid-column:1/-1}.todo-card{padding-block:0;padding-inline:16px}.todo-card>.row{min-height:64px;padding-block:12px}.todo-text{flex:1;min-width:0}.todo-done{align-items:center;gap:12px;min-height:64px;display:flex}.today-upcoming{display:none}.upcoming-time{font-variant-numeric:tabular-nums;flex-shrink:0;min-width:3.5rem;font-weight:600}.today-extras{gap:20px;display:grid}.absence-row{border-bottom:1px solid var(--color-line);gap:8px;padding:12px 0;display:grid}.absence-row:last-child{border-bottom:0}.absence-quote{border-radius:var(--radius-inner);background:var(--color-paper);font-size:var(--text-secondary);padding:8px 12px}.absence-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}@media (width>=900px){.today-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:24px}.today-grid>.today-todo{grid-column:1/-1}.today-todo .todo-card{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;display:grid}.todo-card>.row:nth-last-child(-n+2):nth-child(odd),.todo-card>.row:last-child{border-bottom:0}.today-hero{padding:24px}}@media (width>=1100px){.today-grid{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);grid-template-areas:"hero session""todo upcoming"}.today-grid>.today-hero{grid-area:hero;padding:28px}.today-grid>.today-sessions{grid-area:session}.today-grid>.today-todo{grid-area:todo/auto}.today-grid>.today-upcoming{grid-area:upcoming;display:grid}.today-todo .todo-card{display:block}.today-hero .money--hero{font-size:2.75rem}}.month-picker{justify-content:space-between;align-items:center;gap:12px;display:flex}.month-picker-label{text-align:center;font-size:var(--text-section);letter-spacing:-.01em;flex:1;font-weight:700}.month-step{border:1px solid var(--color-line);background:var(--color-surface);border-radius:50%}.fees-content{gap:16px}.fees-head{gap:12px;display:grid}.fees-head-actions{gap:12px;display:flex}.fees-summary{gap:8px;display:grid}.fees-summary .ledger{margin-bottom:4px}.fees-progress{font-size:var(--text-caption);font-variant-numeric:tabular-nums;align-items:center;gap:12px;font-weight:600;display:flex}.fees-progress progress{background:var(--color-primary-soft);flex:1;width:100%;min-width:0}.fees-progress progress::-webkit-progress-bar{background:var(--color-primary-soft)}.invoice-sub>.money{margin-left:auto}.fees-callout{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;min-height:32px;display:flex}.callout-link{white-space:nowrap;align-items:center;gap:4px;min-height:44px;font-weight:600;display:inline-flex}.fees-group{grid-template-columns:minmax(0,1fr);gap:8px;display:grid}.fees-group .section-header h2{font-size:var(--text-secondary);color:var(--color-ink-muted);font-weight:600}.group-action{min-height:44px;color:var(--color-primary);font-size:var(--text-secondary);align-items:center;gap:4px;padding-inline:4px;font-weight:600;display:inline-flex}.group-action--muted{color:var(--color-ink-muted)}.fees-filter-empty{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.fees-unmatched{min-height:64px;color:var(--color-ink);align-items:center;gap:12px;display:flex}.invoice-list{padding:0 16px}.invoice-list ul{margin:0;padding:0;list-style:none}.invoice-list .invoice-row{border-bottom:1px solid var(--color-line)}.invoice-list .invoice-row:last-child{border-bottom:0}.invoice-link .avatar{width:40px;height:40px}.invoice-link>svg{display:none}.invoice-link{min-height:64px;color:var(--color-ink);align-items:center;gap:12px;padding:12px 0;display:flex}.invoice-main{flex:1;gap:4px;min-width:0;display:grid}.invoice-name{color:var(--color-ink);font-weight:600;line-height:1.4}.invoice-sub{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 8px;display:flex}.invoice-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:8px;padding-bottom:12px;display:grid}.data-table-card{padding:0;overflow:hidden}.data-table{border-collapse:collapse;width:100%;font-size:var(--text-secondary)}.data-table thead th{background:var(--color-surface);border-bottom:1px solid var(--color-line);color:var(--color-ink-muted);font-size:var(--text-caption);text-align:left;padding:12px 16px;font-weight:600;position:sticky;top:0}.data-table .num{text-align:right;white-space:nowrap}.data-table .group-row th{background:var(--color-paper);border-bottom:1px solid var(--color-line);height:44px;color:var(--color-ink-muted);font-size:var(--text-caption);text-align:left;padding:0 16px;font-weight:600}.data-table .group-row th>span{margin-right:12px}.data-table tbody tr:not(.group-row) td{border-bottom:1px solid var(--color-line);vertical-align:middle;height:56px;padding:8px 16px}.data-table tbody tr.invoice-row{cursor:pointer;transition:background-color .12s}.data-table tbody tr.invoice-row:hover{background:var(--color-primary-soft)}.data-table .invoice-name{font-size:var(--text-body);display:block}.data-table .col-class-inline{display:block}.data-table .col-class{display:none}.data-table .col-actions{white-space:nowrap;text-align:right;width:1%}.data-table .invoice-actions{justify-content:flex-end;margin-top:0;padding:0;display:flex}@media (width>=1100px){.data-table .col-class{display:table-cell}.data-table .col-class-inline{display:none}}.fees-strip{grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;row-gap:16px;display:grid}.fees-strip>div{border-left:1px solid var(--color-line);min-width:0;padding-inline:20px}.fees-strip>div:first-child{border-left:0;padding-left:0}.fees-strip .display{font-size:var(--text-title)}.fees-strip>.fees-strip-bar{border-left:0;border-top:1px dashed var(--color-line);grid-column:1/-1;gap:8px;padding:16px 0 0;display:grid}.data-table td:first-child{min-width:150px;max-width:280px}.data-table td.col-class{max-width:220px}.data-table .invoice-actions{gap:8px}.data-table .invoice-actions .btn{padding-inline:10px}@media (width<=1099px){.data-table thead th,.data-table tbody tr:not(.group-row) td{padding-inline:10px}}@media (width>=768px){.fees-content{gap:20px}.fees-head .month-picker{justify-content:flex-start}.fees-head .month-picker-label{flex:none;min-width:160px}}@media (width>=1100px){.fees-head{grid-template-columns:minmax(0,1fr) auto;align-items:center}.fees-strip{grid-template-columns:repeat(3,minmax(0,1fr)) minmax(0,1.4fr)}.fees-strip>.fees-strip-bar{border-top:0;border-left:1px solid var(--color-line);grid-column:auto;padding:0 0 0 20px}}.channel-list{grid-template-columns:minmax(0,1fr);gap:8px;display:grid}.channel-option{min-width:0}.channel-option .radio-card{width:100%}.channel-option .radio-card:disabled .radio-card-title{color:var(--color-ink-muted)}.channel-text{flex:1;min-width:0}.channel-extra{gap:8px;padding:8px 4px 4px 38px;display:grid}.channel-note,.channel-auto{color:var(--color-ink-muted);font-size:var(--text-secondary)}.channel-auto{margin-top:12px}.channel-option .radio-card-title{text-wrap:balance}.channel-auto a{white-space:nowrap;color:var(--color-primary);text-decoration:underline}.channel-skeleton{border-radius:var(--radius-control);height:176px}.fees-period{min-width:0;position:relative}.fees-content[data-fetching=true]>:not(.fees-head){opacity:.6}.fees-content>:not(.fees-head){transition:opacity .15s}.invoice-period{min-width:0;font-size:var(--text-caption);align-items:center;gap:4px 8px;display:flex}.invoice-period>.badge{flex-shrink:0}.fees-summary>.btn{justify-self:start}.fees-strip{align-items:end}.fees-facts{font-size:var(--text-secondary);flex-wrap:wrap;gap:4px 16px;display:flex}.fees-facts>li{min-width:0}@media (prefers-reduced-motion:reduce){.fees-content>:not(.fees-head){transition:none}}.dashboard-grid{grid-template-columns:minmax(0,1fr);gap:16px;display:grid}.dashboard-grid>*{min-width:0}.dashboard-period{gap:8px;display:grid}.dashboard-grid .card{border-radius:var(--radius-card);padding:20px}.dashboard-hero{position:relative;overflow:hidden}.dashboard-eyebrow{color:var(--color-primary);font-size:var(--text-caption);align-items:center;gap:8px;margin-bottom:16px;font-weight:600;display:flex}.eyebrow-dot{background:var(--color-primary);border-radius:50%;width:7px;height:7px}.dashboard-total{font-size:var(--text-hero);letter-spacing:-1.4px;font-variant-numeric:tabular-nums;margin:4px 0 8px;font-weight:700;line-height:1.4}.dashboard-comparison{font-size:var(--text-caption);align-items:center;gap:4px;margin:8px 0 0;display:flex}.hero-meter{font-size:var(--text-caption);font-variant-numeric:tabular-nums;align-items:center;gap:12px;margin:16px 0 8px;display:flex}.meter{border-radius:var(--radius-badge);background:var(--color-primary-soft);flex:1;min-width:0;height:8px;overflow:hidden}.meter>span{border-radius:inherit;background:var(--color-primary);height:100%;display:block}.dashboard-hero .meter{height:10px}.meter-neutral{background:var(--color-idle-soft)}.meter-neutral>span{background:var(--color-ink-muted)}.dashboard-hero>.muted:last-child{font-size:var(--text-caption)}.quick-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}@media (width>=480px){.quick-actions{grid-template-columns:repeat(4,minmax(0,1fr))}}.quick-actions>*{border:1px solid var(--color-line);background:var(--color-surface);min-height:94px;color:var(--color-ink);border-radius:var(--radius-control);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:12px 4px;display:flex;position:relative}.quick-actions svg{width:24px;height:24px;color:var(--color-primary);stroke-width:1.8px}.quick-actions span{font-size:var(--text-dense-caption);text-align:center;white-space:nowrap;max-width:100%;font-weight:500;line-height:1.45}.quick-badge{text-align:center;background:var(--color-primary-soft);min-width:18px;height:18px;color:var(--color-primary);border-radius:var(--radius-badge);line-height:18px;font-size:var(--text-caption);position:absolute;top:5px;right:5px}.all-actions{width:100%;min-height:44px;font-size:var(--text-caption);color:var(--color-ink-muted);justify-content:center;align-items:center;gap:8px;margin-top:4px;display:flex}.dashboard-section-title{justify-content:space-between;align-items:center;gap:8px;display:flex}.dashboard-section-title p{font-size:var(--text-caption);margin-top:4px}.small-icon{background:var(--color-primary-soft);border-radius:var(--radius-inner);width:36px;height:36px;color:var(--color-primary);flex-shrink:0;place-items:center;display:grid}.chart-detail{min-height:56px;font-size:var(--text-caption);color:var(--color-ink-muted);align-items:center;padding:8px 0;display:flex}.chart-detail.is-selected{color:var(--color-primary);font-weight:500}.chart-scroll{overscroll-behavior-x:contain;max-width:100%;overflow-x:auto}.bar-stage{position:relative}.bar-stage svg{width:100%;height:188px;display:block}.bar-targets{display:flex;position:absolute;top:0;bottom:0;right:0}.bar-targets button{border-radius:var(--radius-badge);background:0 0;flex:1;min-width:44px}.bar-targets button:focus-visible{outline-offset:-3px}.chart-table-toggle{font-size:var(--text-caption);min-height:44px;margin:8px auto 0;display:flex}.bar-chart table{border-collapse:collapse;width:100%;font-size:var(--text-caption)}.bar-chart th,.bar-chart td{border-bottom:1px solid var(--color-line);text-align:left;font-variant-numeric:tabular-nums;padding:12px 4px}.bar-chart td:nth-child(2){white-space:nowrap}.chart-column{transform-origin:50% 150px;animation:.2s ease-out bar-grow}.stacked-bar{background:var(--color-idle-soft);border-radius:4px;gap:2px;height:16px;margin:24px 0 16px;display:flex;overflow:hidden}.stacked-bar span{flex-basis:0;min-width:0}.chart-legend a{min-height:52px;color:var(--color-ink);font-size:var(--text-caption);align-items:center;gap:8px;display:flex}.legend-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.chart-legend strong{text-align:right;font-size:var(--text-caption);font-variant-numeric:tabular-nums;margin-left:auto;font-weight:600}.chart-legend small{color:var(--color-ink-muted);font-weight:400;display:block}.sparkline{width:100%;height:40px;margin:20px 0 10px}.dashboard-attendance .dashboard-section-title strong{font-size:var(--text-display);font-variant-numeric:tabular-nums}.dashboard-attendance>.muted{font-size:var(--text-caption)}.class-meter-row{color:var(--color-ink);border-bottom:1px solid var(--color-line);padding:20px 0;display:block}.class-meter-row:last-child{border:0;padding-bottom:0}.class-meter-row>div:first-child{justify-content:space-between;align-items:center;gap:12px;display:flex}.class-meter-row small{color:var(--color-ink-muted);margin-top:3px;display:block}.class-meter-row p{font-size:var(--text-caption);font-variant-numeric:tabular-nums;margin:12px 0 10px}.dashboard-alerts .row{font-size:var(--text-secondary)}.dashboard-alerts .row-icon{background:var(--color-wait-soft)}.year-amount{font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:baseline;gap:8px;margin-top:14px;display:flex}.year-amount strong{font-size:var(--text-title)}.dashboard-year>.muted{font-size:var(--text-caption);margin-top:14px}.dashboard-period{position:relative}.dashboard-progress{border-radius:var(--radius-pill);opacity:0;pointer-events:none;height:3px;transition:opacity .15s;position:absolute;bottom:-10px;left:0;right:0;overflow:hidden}.dashboard-progress:after{content:"";background:var(--color-primary);transform-origin:0;animation:1s ease-in-out infinite progress-slide;position:absolute;inset:0;transform:scaleX(.3)}.dashboard-progress[data-active=true]{opacity:1}.dashboard-grid{transition:opacity .15s}.dashboard-grid.is-fetching{opacity:.6}.dashboard-hero-skeleton{gap:14px;margin-top:16px;display:grid}.skeleton-bar{border-radius:var(--radius-badge);background:var(--color-skeleton);height:16px;animation:1.5s infinite pulse;display:block}.skeleton-bar--total{width:62%;height:44px}.skeleton-bar--short{width:78%}.dashboard-chart-skeleton{border-radius:var(--radius-inner);height:244px}.dashboard-mix-skeleton{border-radius:var(--radius-inner);height:148px;margin-top:16px}.dashboard-spark-skeleton{border-radius:var(--radius-inner);height:40px;margin:20px 0 10px}.dashboard-class-skeleton{border-radius:var(--radius-inner);height:120px;margin-top:16px}.dashboard-year-skeleton{border-radius:var(--radius-inner);height:56px;margin-top:14px}@media (width>=768px){.dashboard-period{grid-template-columns:minmax(260px,1fr) minmax(200px,1fr);align-items:center;gap:16px}.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:20px}.dashboard-hero,.quick-actions-wrap,.dashboard-inflow,.dashboard-alerts,.dashboard-year,.dashboard-error,.dashboard-empty{grid-column:1/-1}.dashboard-grid .card{padding:24px}.dashboard-grid .dashboard-hero{padding:28px}.dashboard-total{font-size:var(--text-hero)}.quick-actions{gap:12px}.quick-actions>*{min-height:98px}.quick-actions span{max-width:none;font-size:var(--text-secondary)}.dashboard-classes{grid-column:1/-1}.dashboard-mix,.dashboard-attendance{align-self:stretch}.chart-scroll .bar-stage{max-width:100%}}@media (width>=1100px){.dashboard-hero{grid-column:1}.quick-actions-wrap{grid-column:2;align-self:center}.dashboard-inflow{grid-column:1}.dashboard-mix{grid-column:2}.dashboard-attendance{grid-column:1}.dashboard-classes{grid-area:span 2/2}.dashboard-alerts{grid-column:1}.dashboard-year{grid-column:1/-1}}@media (prefers-reduced-motion:reduce){.chart-column,.skeleton-bar,.dashboard-progress:after{animation:none}.dashboard-grid{transition:none}}.password-toggle{color:var(--color-ink-muted)}.auth-text-link{min-height:44px;color:var(--color-primary);font-size:var(--text-secondary);justify-content:center;align-items:center;font-weight:500;display:inline-flex}.auth-forgot{align-self:flex-end;margin-top:-8px}.auth-switch,.auth-small-policy{text-align:center;font-size:var(--text-secondary);color:var(--color-ink-muted)}.auth-switch a{align-items:center;min-height:44px;font-weight:600;display:inline-flex}.auth-small-policy{font-size:var(--text-caption);line-height:1.8}.auth-small-policy a{text-underline-offset:3px;text-decoration:underline}.auth-email-address{overflow-wrap:anywhere;color:var(--color-ink)}.email-success-icon{color:var(--color-ok-text);background:var(--color-ok-soft)}.captcha-container{max-width:100%;height:0;font-size:var(--text-caption);color:var(--color-ink-muted);margin:0;overflow:hidden}.captcha-container .grecaptcha-badge{visibility:hidden}.captcha-note{font-size:var(--text-caption);color:var(--color-ink-muted);text-align:center;margin:4px 0 0;line-height:1.5}.captcha-note a{color:inherit;text-underline-offset:2px;text-decoration:underline}.auth-screen{background-color:var(--color-surface);background-image:var(--art-login);background-position:top;background-repeat:no-repeat;background-size:100% 100%}.auth-screen.auth-form-page{max-width:480px;padding-bottom:0}.auth-form-page .auth-header{width:100%;min-height:64px;padding:12px 24px}.auth-form-page .auth-form-main{flex:none;gap:24px;width:100%;max-width:428px;margin:auto;padding:12px 24px 24px}.auth-form-page .auth-form-intro{text-align:center;padding:0}.auth-identity{flex-direction:column;align-items:center;margin-bottom:24px;display:flex}.auth-identity img:first-child{width:88px;height:88px}.auth-identity img:last-child{width:100px;height:auto;margin-top:-8px}.auth-form-page .auth-form-intro h1{max-width:none;font-size:var(--text-display);letter-spacing:-.04em}.auth-form-page .auth-form-intro p{margin-top:8px;line-height:1.6}.auth-form-page .auth-panel{box-shadow:none;background:0 0;border:0;border-radius:0;padding:0}.auth-form-page .auth-form{gap:12px}.auth-form-page .field{position:relative}.auth-form-page .field:not(:has(.otp-control))>label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.auth-form-page .field input:not(.otp-native){border:1px solid var(--color-control-line);border-radius:var(--radius-control);min-height:54px;font-size:var(--text-body);background-color:var(--color-surface);background-position:17px 17px;background-repeat:no-repeat;background-size:20px;background-image:var(--auth-field-icon,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235b6b82' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='m3 6 9 7 9-7'/%3E%3C/svg%3E"));padding:13px 16px 13px 48px}.auth-form-page .password-field input{--auth-field-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235b6b82' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='10' width='16' height='11' rx='2'/%3E%3Cpath d='M8 10V6a4 4 0 0 1 8 0v4m-4 5v2'/%3E%3C/svg%3E")}.auth-form-page input[autocomplete=name]{--auth-field-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235b6b82' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21v-2a8 8 0 0 1 16 0v2'/%3E%3C/svg%3E")}.auth-form-page input[type=tel]{--auth-field-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235b6b82' stroke-width='1.8' stroke-linecap='round'%3E%3Crect x='6' y='2' width='12' height='20' rx='3'/%3E%3Cpath d='M11 18h2'/%3E%3C/svg%3E")}.auth-form-page .field input:not(.otp-native):focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft);outline:none}.auth-form-page .field input:not(.otp-native)[aria-invalid=true]{border-color:var(--color-bad)}.auth-form-page .password-field .field-control>input:not(.otp-native){padding-right:56px}.auth-form-page .auth-security-note{text-align:left;justify-content:center}.auth-success-mark{color:var(--color-ok-text);margin:0 auto 12px}.auth-form-page .captcha-container:empty{display:none}@media (width>=768px){.auth-screen.auth-form-page,.email-auth-page .auth-form-intro h1{max-width:none}}@media (height<=740px){.auth-form-page .auth-form-main{gap:16px}.auth-identity{margin-bottom:16px}.auth-identity img:first-child{width:64px;height:64px}}.auth-login.login-clean{background-color:var(--color-surface);background-image:var(--art-login);background-position:top;background-repeat:no-repeat;background-size:100% 100%;flex-direction:column;display:flex}.login-clean-main{flex-direction:column;flex:1;justify-content:center;width:100%;max-width:428px;margin:0 auto;padding:8px 24px 24px;display:flex}.login-clean-art{flex-direction:column;align-items:center;margin:0 0 16px;display:flex}.login-clean-art img:first-child{width:72px;height:72px}.login-clean-art .login-brand-wordmark{width:112px;height:auto;margin-top:-6px}.login-heading{text-align:center;margin-bottom:20px}.login-heading h1{font-size:var(--text-display);letter-spacing:-.04em;text-wrap:balance;font-weight:700;line-height:1.3}.login-heading p{color:var(--color-ink-muted);font-size:var(--text-secondary);margin-top:4px}.login-direct-form{width:100%}.login-direct-form .auth-form{gap:12px}.login-email-form .field input{border:1px solid var(--color-control-line);border-radius:var(--radius-control);background:var(--color-surface);min-height:52px;font-size:var(--text-body);padding:12px 16px 12px 48px;transition:border-color .12s,box-shadow .12s}.login-email-form .field input::placeholder{color:var(--color-ink-muted);opacity:1}.login-email-form .field input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft);outline:none}.login-email-form .field input[aria-invalid=true]{border-color:var(--color-bad)}.login-email-form .password-field .field-control>input{padding-right:56px}.field-leading{height:100%;color:var(--color-ink-muted);pointer-events:none;align-items:center;display:flex;position:absolute;top:0;left:16px}.field-control:focus-within .field-leading{color:var(--color-primary)}.login-account-links{justify-content:flex-end;margin-top:-4px;display:flex}.login-account-links a{font-size:var(--text-secondary)}.login-email-form .captcha-container:empty{display:none}.login-clean-actions{gap:12px;margin-top:20px;display:grid}.login-method-divider{color:var(--color-ink-muted);font-size:var(--text-caption);align-items:center;gap:12px;margin:0;display:flex}.login-method-divider:before,.login-method-divider:after{content:"";background:var(--color-line);flex:1;height:1px}.login-providers{grid-template-columns:repeat(var(--provider-count,1), minmax(0, 1fr));gap:8px;display:grid}.login-providers>.btn{border-radius:var(--radius-control);min-width:0;min-height:48px;font-size:var(--text-secondary);white-space:nowrap;gap:8px;padding:8px}.login-providers>.btn svg,.login-providers>.btn img{flex-shrink:0}.login-providers[data-count="1"]>.btn{font-size:var(--text-body)}.login-providers>.btn:has(.animate-spin)>svg:not(.animate-spin){display:none}.login-providers>.btn:has(.animate-spin)>img{display:none}.login-providers>.google-signin{border-color:var(--color-google-line);background:var(--color-surface);color:var(--color-google-ink);font-weight:500}.login-providers>.google-signin:active:not(:disabled){background:var(--color-secondary-soft)}.login-create{text-align:center;color:var(--color-ink-muted);font-size:var(--text-secondary)}.login-create a{align-items:center;min-height:44px;font-weight:600;display:inline-flex}.login-footer{width:100%;padding:8px 16px calc(12px + env(safe-area-inset-bottom,0px));text-align:center;margin-top:auto}.login-clean-trust{font-size:var(--text-caption);color:var(--color-ink-muted);justify-content:center;align-items:center;gap:8px;margin:0 0 8px;display:flex}.login-clean-trust svg{color:var(--color-ok)}.login-clean-policy{text-align:center;color:var(--color-ink-muted);font-size:var(--text-caption);margin:0;line-height:1.7}.login-clean-policy a{color:var(--color-ink);text-decoration:underline;-webkit-text-decoration-color:var(--color-line);-webkit-text-decoration-color:var(--color-line);-webkit-text-decoration-color:var(--color-line);text-decoration-color:var(--color-line);text-underline-offset:3px}@media (width>=768px){.auth-login.login-clean{width:100%;max-width:none}.login-clean>.auth-header{width:100%;max-width:1120px;margin:0 auto;padding:28px 40px}.login-providers{gap:12px}.login-providers>.btn{min-height:52px}}@media (height<=800px){.login-clean-art{margin-bottom:8px}.login-clean-art img:first-child{width:56px;height:56px}.login-heading{margin-bottom:12px}.login-heading h1{font-size:var(--text-title)}.login-clean-actions{gap:8px;margin-top:12px}}.bank-logo{background:var(--color-surface);flex-shrink:0;justify-content:center;align-items:center;width:76px;height:34px;display:inline-flex}.bank-logo img{object-fit:contain;width:100%;height:100%}.bank-logo>span{font-size:var(--text-caption);overflow-wrap:anywhere;font-weight:600;line-height:1.2}.bank-identity{align-items:center;gap:12px;padding:16px 0;display:flex}.bank-identity>.bank-logo{border:1px solid var(--color-line);border-radius:var(--radius-inner);width:70px;height:48px;padding:8px}.bank-picker{border:0;padding:0}.bank-picker legend{margin-bottom:12px;font-weight:500}.bank-options{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.bank-options button{background:var(--color-surface);border:1px solid var(--color-chip-line);border-radius:var(--radius-control);flex-direction:column;justify-content:center;align-items:center;gap:8px;min-width:0;min-height:92px;padding:12px 8px 8px;transition:background-color .12s,border-color .12s;display:flex;position:relative}.bank-options button[aria-checked=true]{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary);background:var(--color-surface)}.bank-options .bank-logo{border-radius:var(--radius-badge);width:100%;height:28px;padding:2px}.bank-name{font-size:var(--text-caption);font-weight:500}.bank-selected{width:20px;height:20px;color:var(--color-on-primary);background:var(--color-primary);border:2px solid var(--color-paper);border-radius:50%;place-items:center;display:grid;position:absolute;top:-4px;right:-4px}.bank-search{gap:12px;min-width:0;display:grid}.sheet:has(.bank-search){--bank-list-gutter:20px;padding-inline:0}.sheet:has(.bank-search)>.flex{margin-inline:var(--bank-list-gutter)}.bank-search-input,.bank-search-count,.bank-search-empty{margin-inline:var(--bank-list-gutter,20px)}.bank-open-search{border-radius:var(--radius-control);gap:8px;width:100%;min-height:48px}.bank-search-input{position:relative}.bank-search-input>svg{color:var(--color-ink-muted);pointer-events:none;position:absolute;top:17px;left:16px}.bank-search-input label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.bank-search-input input{background:var(--color-paper);border:1px solid var(--color-line);border-radius:var(--radius-control);width:100%;min-height:54px;font-size:var(--text-body);padding:14px 46px}.bank-search-input input::placeholder{font-size:var(--text-secondary);color:var(--color-ink-muted)}.bank-search-input input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft);outline:none}.bank-search-clear{width:44px;height:44px;color:var(--color-ink-muted);border-radius:var(--radius-inner);place-items:center;display:grid;position:absolute;top:5px;right:4px}.bank-search-count{color:var(--color-ink-muted);font-size:var(--text-caption);padding:0 4px}.bank-search-list{margin:0;padding:0;list-style:none}.bank-search-list>li+li{border-top:1px solid var(--color-line)}.bank-search-result{width:100%;min-height:88px;padding:14px var(--bank-list-gutter,20px);text-align:left;border-radius:0;align-items:center;gap:12px;display:flex}.bank-search-result .bank-logo{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-inner);flex:0 0 48px;width:48px;height:48px;padding:8px}.bank-search-result .bank-logo--detailed{padding:5px}.bank-logo--icon img{object-fit:contain;width:100%;height:100%}.bank-search-details{flex:1;gap:3px;min-width:0;display:grid}.bank-search-details strong{font-size:var(--text-body);color:var(--color-ink);font-weight:600}.bank-search-details>span{font-size:var(--text-caption);color:var(--color-ink-muted);overflow-wrap:anywhere;line-height:1.5}.bank-search-details small{font-size:var(--text-caption);color:var(--color-ink-muted)}.bank-search-check{color:var(--color-primary);flex-shrink:0}.bank-search-result[aria-current=true]{background:var(--color-primary-soft);border-radius:0}.bank-search-result:active{background:var(--color-paper)}.bank-search-result:focus-visible,.bank-search-clear:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.bank-search-empty{text-align:center;color:var(--color-ink-muted);justify-items:center;gap:12px;padding:24px 8px;display:grid}.bank-search-empty strong{color:var(--color-ink)}@media (hover:hover){.bank-search-result:hover,.bank-search-clear:hover{background:var(--color-paper)}}@media (width>=768px){.sheet:has(.bank-search){--bank-list-gutter:24px}}.brand-tile{fill:var(--color-primary)}.brand-pages{fill:var(--color-surface)}.brand-mark-animated .brand-pages{transform-origin:32px 38px;animation:.5s ease-out .1s both brand-pages-enter}.splash-screen{text-align:center;background:var(--color-paper);flex-direction:column;justify-content:center;align-items:center;min-height:100dvh;display:flex;position:relative;overflow:hidden}.splash-screen:before,.splash-screen:after{content:"";border:1px solid var(--color-line);pointer-events:none;border-radius:50%;position:absolute;top:45%;left:50%;transform:translate(-50%,-50%)}.splash-screen:before{width:min(80vw,420px);height:min(80vw,420px)}.splash-screen:after{opacity:.5;width:min(104vw,540px);height:min(104vw,540px)}.splash-center{z-index:1;flex-direction:column;align-items:center;margin-top:-60px;display:flex;position:relative}.splash-symbol{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-card);place-items:center;width:104px;height:104px;margin:0 0 16px;display:grid;box-shadow:0 12px 40px #1f4fd114}@supports (color:color-mix(in lab, red, red)){.splash-symbol{box-shadow:0 12px 40px color-mix(in srgb, var(--color-primary) 8%, transparent)}}.splash-symbol{animation:.6s both splash-enter}.splash-symbol .brand-mark{width:80px;height:80px;display:block}.splash-center h1{justify-content:center;line-height:1;animation:.6s .1s both splash-enter;display:flex}.splash-wordmark{width:128px;height:auto;display:block}.splash-center p{font-size:var(--text-secondary);color:var(--color-ink-muted);margin-top:8px;animation:.6s .15s both splash-enter}.splash-progress{background:var(--color-line);border-radius:var(--radius-badge);width:72px;height:4px;margin:28px auto 0;overflow:hidden}.splash-progress span{background:var(--color-primary);transform-origin:0;width:100%;height:100%;animation:1.5s both splash-load;display:block}.splash-footer{z-index:1;bottom:calc(32px + env(safe-area-inset-bottom));justify-items:center;gap:12px;padding:0 16px;display:grid;position:absolute}.splash-footer p{font-size:var(--text-caption);color:var(--color-ink-muted);align-items:center;gap:8px;display:flex}.install-card>.btn{justify-self:stretch}.install-step-icon{border-radius:var(--radius-inner);background:var(--color-primary-soft);width:32px;height:32px;color:var(--color-primary);flex-shrink:0;place-items:center;display:grid}.install-coach{z-index:65;background:#172b4d99;justify-content:center;align-items:center;padding:24px 16px;display:flex;position:fixed;inset:0}@supports (color:color-mix(in lab, red, red)){.install-coach{background:color-mix(in srgb, var(--color-shadow) 60%, transparent)}}.install-coach-card{border-radius:var(--radius-card);background:var(--color-surface);width:100%;max-width:400px;box-shadow:var(--shadow-raised);gap:16px;padding:20px;display:grid}.install-coach-card h2{font-size:var(--text-title);text-wrap:balance}.install-steps--big{font-size:var(--text-body)}.install-steps--big .install-step-icon{width:40px;height:40px}.install-coach-arrow{background:var(--color-primary);width:64px;height:64px;color:var(--color-on-primary);border-radius:50%;place-items:center;animation:1s ease-in-out infinite alternate install-nudge;display:grid;position:fixed}.install-coach[data-spot=bar] .install-coach-arrow{bottom:calc(12px + env(safe-area-inset-bottom));left:calc(50% - 32px)}.install-coach[data-spot=more] .install-coach-arrow{bottom:calc(12px + env(safe-area-inset-bottom));right:12px}.install-coach[data-spot=ipad] .install-coach-arrow{top:calc(12px + env(safe-area-inset-top));animation-name:install-nudge-up;right:24px;transform:rotate(180deg)}@keyframes install-nudge{0%{translate:0 -6px}to{translate:0 6px}}@keyframes install-nudge-up{0%{translate:0 6px}to{translate:0 -6px}}@media (prefers-reduced-motion:reduce){.install-coach-arrow{animation:none}}.auth-header-actions{padding-right:env(safe-area-inset-right);align-items:center;gap:8px;display:flex}.auth-install{min-width:44px;min-height:44px;color:var(--color-primary);font-size:var(--text-caption);text-underline-offset:3px;background:0 0;border:0;justify-content:center;align-items:center;gap:8px;padding:0 4px;font-weight:500;text-decoration:underline;display:inline-flex}.auth-header-actions .auth-help{justify-content:center;min-width:44px}@media (width<=767px){:is(.auth-header-actions:has(.auth-install) .auth-help-text,.auth-header-actions:has(.auth-install) .auth-help-arrow){display:none}}@media (width>=768px){.auth-header-actions{gap:16px}.auth-install{font-size:var(--text-secondary)}}.sidebar-install{border:1px solid var(--color-line);border-radius:var(--radius-control);background:var(--color-surface);width:100%;min-height:44px;color:var(--color-primary);font-size:var(--text-secondary);align-items:center;gap:8px;padding:0 12px;font-weight:500;display:flex}.teacher-shell--nav-icons .sidebar-install{justify-content:center;padding:0}.teacher-shell--nav-icons .sidebar-install span{display:none}@media (width>=768px){.install-card>.btn{justify-self:start;min-width:200px}}.zalo-link{min-height:44px;color:var(--color-primary);overflow-wrap:anywhere;align-items:center;text-decoration:underline;display:inline-flex}.zalo-page,.zalo-wizard{gap:20px}.zalo-title{font-size:var(--text-title);letter-spacing:-.02em;font-weight:700;line-height:1.35}.zalo-title:focus{outline:none}.zalo-intro{gap:8px;display:grid}.zalo-methods{gap:16px;display:grid}.zalo-method{flex-direction:column;gap:16px;height:100%;display:flex}.zalo-method>.btn{margin-top:auto}.zalo-method--bot{border-color:#94abe4}@supports (color:color-mix(in lab, red, red)){.zalo-method--bot{border-color:color-mix(in srgb, var(--color-primary) 40%, var(--color-line))}}.zalo-method-oa{align-content:start;gap:12px;display:grid}.zalo-method-head{align-items:flex-start;gap:12px;display:flex}.zalo-method-head h2{line-height:1.4}.zalo-perks{gap:8px;margin:0;padding:0;list-style:none;display:grid}.zalo-perks li{align-items:center;gap:8px;display:flex}.zalo-perks--wide{display:none}.zalo-help{justify-items:start;gap:8px;display:grid}@media (width>=768px){.zalo-methods{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}.zalo-methods>.zalo-method-oa>.card{height:100%}.zalo-method-oa{grid-template-rows:auto 1fr}.zalo-perks--wide{display:grid}.zalo-page{max-width:760px}}.zalo-status{gap:16px;display:grid}.zalo-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.zalo-stat{border-radius:var(--radius-inner);background:var(--color-paper);color:var(--color-ink);gap:8px;padding:12px;display:grid}.zalo-stat.tone-wait{background:var(--color-wait-soft);color:var(--color-ink)}.zalo-stat-value{font-variant-numeric:tabular-nums;align-items:baseline;gap:2px;display:flex}.zalo-stat-value strong{font-size:var(--text-title);font-weight:700;line-height:1.2}.zalo-settings{padding-block:0}.zalo-setting{border-bottom:1px solid var(--color-line);align-items:center;gap:12px;min-height:64px;padding:8px 0;display:flex}.zalo-setting:last-child{border-bottom:0}.zalo-setting .switch-row{flex:1;min-width:0}.zalo-setting-text{min-width:0}.zalo-setting--link{padding-block:8px}.zalo-danger{gap:12px;margin-top:8px}.zalo-danger h2{font-size:var(--text-section,17px)}.zalo-broken-out{border-top:1px solid;flex-wrap:wrap;align-items:center;gap:4px 8px;margin-top:4px;padding-top:12px;display:flex}@supports (color:color-mix(in lab, red, red)){.zalo-broken-out{border-top:1px solid color-mix(in srgb, currentColor 14%, transparent)}}.zalo-step{gap:20px;animation:.18s cubic-bezier(.2,.8,.2,1) both step-in;display:grid}.zalo-step-form{gap:20px;display:grid}.zalo-step-body{gap:16px;display:grid}.zalo-step-body>header{gap:8px;display:grid}.zalo-step-actions{margin-top:4px}.zalo-why{margin-top:-12px}.zalo-guide-card{background:var(--color-secondary-soft);border-color:var(--color-secondary-line);box-shadow:none;padding:16px 12px}.zalo-guide{counter-reset:guide;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.zalo-guide>li{counter-increment:guide;align-content:start;justify-items:center;gap:8px;display:grid}.zalo-phone{width:100%;max-width:96px;height:auto}.zalo-guide-caption{font-size:var(--text-caption);text-align:center;line-height:1.45;display:block}.zalo-guide-caption:before{content:counter(guide);background:var(--color-primary);width:24px;height:24px;color:var(--color-on-primary);border-radius:50%;place-items:center;margin:0 auto 4px;font-weight:600;display:grid}.zalo-message{border-radius:var(--radius-card);background:var(--color-secondary-soft);gap:8px;padding:12px;display:grid}.zalo-message-from{font-size:var(--text-caption);align-items:center;gap:8px;font-weight:600;display:flex}.zalo-message-avatar{place-items:center;width:24px;height:24px;display:grid}.zalo-message-bubble{border-radius:var(--radius-inner);background:var(--color-surface);font-size:var(--text-secondary);padding:12px}.zalo-message-bubble mark{background:var(--color-wait-soft);color:var(--color-wait-text);border-radius:4px;padding:0 4px;font-family:ui-monospace,monospace;font-weight:600}.zalo-step .field-trailing .btn{min-height:44px;padding-inline:8px}.zalo-success{text-align:center;justify-items:center}.zalo-success>p{max-width:300px}.zalo-success-mark{background:var(--color-ok-soft);width:88px;height:88px;color:var(--color-ok);border-radius:50%;place-items:center;display:grid}.zalo-success-mark path{stroke-dasharray:40;animation:.24s cubic-bezier(.2,.8,.2,1) 80ms both draw-check}.zalo-checklist{text-align:left;width:100%}.zalo-checklist ul{gap:12px;margin:0;padding:0;list-style:none;display:grid}.zalo-checklist li{align-items:flex-start;gap:12px;display:flex}.zalo-checklist li>svg{flex-shrink:0;margin-top:2px}.zalo-wide{flex-wrap:wrap;align-items:flex-start;gap:16px 24px;display:flex}.zalo-wide-qr{text-align:center;flex:200px;justify-items:center;gap:8px;min-width:0;display:grid}.zalo-wide-body{flex:240px;gap:12px;min-width:0;display:grid}.zalo-qr{width:100%;max-width:192px;padding:8px}.zalo-steps{gap:4px;margin:0;padding-left:20px;list-style:decimal;display:grid}.zalo-linked{align-items:center;gap:8px;font-weight:600;display:flex}.zalo-code{border-radius:var(--radius-card);background:var(--color-primary-soft);justify-items:center;gap:8px;padding:16px;display:grid}.zalo-code-row{align-items:center;gap:8px;max-width:100%;display:flex}.zalo-code-value{font-size:min(var(--text-hero), 9vw);letter-spacing:.2em;font-variant-numeric:tabular-nums;-webkit-user-select:all;user-select:all;padding-left:.2em;font-weight:700}.chat-list{gap:0;display:grid}.chat-row{border-bottom:1px solid var(--color-line);min-height:64px;color:inherit;align-items:center;gap:12px;padding:8px 4px;text-decoration:none;display:flex}.chat-row:last-child{border-bottom:0}.chat-unread{border-radius:var(--radius-pill);background:var(--color-primary);min-width:24px;height:24px;color:var(--color-on-primary);font-size:var(--text-caption);text-align:center;padding:0 8px;font-weight:600;line-height:24px}.chat-thread{gap:12px;margin:0;padding:0;list-style:none;display:grid}.chat-message{gap:4px;max-width:85%;display:grid}.chat-message--in{justify-self:start}.chat-message--out{justify-self:end}.chat-meta{font-size:var(--text-caption);color:var(--color-ink-muted)}.chat-message--out .chat-meta{text-align:right}.chat-bubble{border-radius:var(--radius-control);border:1px solid var(--color-line);background:var(--color-surface);overflow-wrap:anywhere;white-space:pre-wrap;padding:8px 12px}.chat-message--out .chat-bubble{background:var(--color-primary-soft);border-color:#0000}.chat-message--notice .chat-bubble,.chat-message--announcement .chat-bubble{background:var(--color-secondary-soft);border-style:dashed}.chat-message--auto .chat-bubble{background:var(--color-secondary-soft)}.chat-image{min-width:44px;min-height:44px;display:inline-flex}.chat-image img{border-radius:var(--radius-inner);object-fit:cover;max-width:220px;max-height:220px}.chat-composer{background:var(--color-paper);gap:8px;padding:12px 0;display:grid;position:sticky;bottom:0}.chat-composer textarea{min-height:88px}.chat-composer .counter,.announce-counter{font-size:var(--text-caption);color:var(--color-ink-muted);text-align:right}.auto-card{grid-template-columns:minmax(0,1fr);gap:12px;display:grid}.auto-head{align-items:center;gap:12px;display:flex}.auto-head h2{min-width:0;line-height:1.4}.auto-next{overflow-wrap:anywhere;font-weight:600}.auto-group{border:1px solid var(--color-line);border-radius:var(--radius-card);background:var(--color-paper);grid-template-columns:minmax(0,1fr);gap:12px;padding:12px;display:grid}.auto-remind-row{align-items:flex-end;gap:8px;display:flex}.auto-remind-row>.field{flex:1;min-width:0}.auto-remove{flex-shrink:0;min-width:44px}.auto-explain{gap:8px;display:grid}.auto-link{border-bottom:0;border-top:1px solid var(--color-line)}.invoice-auto{flex-wrap:wrap;gap:4px 8px;display:flex}.fees-auto-line{overflow-wrap:anywhere;align-items:center;gap:8px;display:flex}.inbox-content{gap:16px}.inbox-panel{flex-direction:column;gap:16px;display:flex}.inbox-toolbar{justify-content:flex-end;margin-bottom:-8px;display:flex}.chat-list{grid-template-columns:minmax(0,1fr)}.chat-list>li{min-width:0}.chat-row .avatar{flex-shrink:0}.teacher-main:has(>.chat-content){flex-direction:column;display:flex}.teacher-main>.chat-content{flex:1;width:100%}.chat-content .chat-thread{flex:1}.chat-content .chat-composer{padding:12px 16px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--color-line);background:var(--color-surface);margin-top:auto;margin-inline:-16px}.detail-head,.detail-history{flex-direction:column;gap:20px;min-width:0;display:flex}.detail-side{flex-direction:column;gap:16px;min-width:0;display:flex}.detail-content{gap:20px}@media (width>=1100px){.detail-split{grid-template:"head side""history side"1fr/minmax(0,1fr) 360px;align-items:start;gap:24px;display:grid}.detail-split .detail-head{grid-area:head}.detail-split .detail-history{grid-area:history}.detail-split .detail-side{grid-area:side;position:sticky;top:112px}.teacher-shell[data-screen=invoices] .teacher-main>.content.detail-split{max-width:1120px}}.send-list{padding:4px 16px}.send-row{border-top:1px solid var(--color-line);align-items:center;gap:8px;display:flex}.send-row>:first-child{flex:1;min-width:0}.more-group{gap:8px;display:grid}.more-signout .row{color:var(--color-bad)}.more-signout .row-icon{background:var(--color-bad-soft);color:var(--color-bad)}.nudge-steps{gap:8px;padding-left:24px;list-style:decimal;display:grid}.nudge-steps li::marker{color:var(--color-primary);font-weight:600}.invite-kit-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;display:flex}.invite-kit-pending{min-height:44px;color:var(--color-primary);text-underline-offset:4px;align-items:center;font-weight:600;text-decoration:underline;display:inline-flex}.invite-kit-main{grid-template-columns:112px minmax(0,1fr);align-items:start;gap:16px;display:grid}.invite-kit-qr{border-radius:var(--radius-card);width:112px;padding:0;display:block}.invite-qr{border:1px solid var(--color-line);width:112px;padding:8px}.invite-kit-side{gap:8px;min-width:0;display:grid}.invite-kit-link{gap:2px;min-width:0;display:grid}.invite-kit-link-value{font-weight:600}.invite-kit-actions{grid-template-columns:repeat(auto-fit,minmax(max-content,1fr));gap:12px;display:grid}.invite-kit-guide{color:var(--color-ink-muted);font-size:var(--text-secondary)}.qr-fullscreen{--color-ink:#172b4d;--color-ink-muted:#5b6b82;--color-primary:#1f4fd1;--color-secondary-soft:#eef2f8;z-index:50;padding:calc(24px + env(safe-area-inset-top)) 24px calc(24px + env(safe-area-inset-bottom));background:var(--color-qr-paper);color:var(--color-ink);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex;position:fixed;inset:0}.qr-fullscreen-close{top:calc(12px + env(safe-area-inset-top));background:var(--color-secondary-soft);color:var(--color-ink);position:absolute;right:12px}.qr-fullscreen-title{max-width:100%;font-size:var(--text-title);text-wrap:balance;font-weight:700}.qr-fullscreen-code{aspect-ratio:1;width:min(84vw,56dvh,480px)}.qr-fullscreen-help{max-width:32ch;font-size:var(--text-secondary)}.qr-fullscreen-link{color:var(--color-ink-muted);font-family:ui-monospace,monospace;font-size:var(--text-secondary);overflow-wrap:anywhere}.plan-page{gap:24px}@media (width>=768px){.teacher-shell[data-screen=settings] .content.plan-page{max-width:1120px}}.plan-section{gap:12px;min-width:0;display:grid}.plan-current{gap:12px;display:grid}.plan-current-head{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.plan-current-name{flex:8rem;min-width:0}.plan-current-name h2{font-size:clamp(1.5rem, 8vw, var(--text-display));line-height:1.2}.plan-usage{border-radius:var(--radius-inner);background:var(--color-secondary-soft);gap:8px;padding:12px;display:grid}.plan-usage-row{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.plan-usage-figure{font-size:var(--text-title);font-variant-numeric:tabular-nums;white-space:nowrap}.plan-usage .meter{background:var(--color-surface);flex:none;width:100%;height:10px}.plan-usage--full .meter>span{background:var(--color-wait)}.plan-cycle{justify-items:start;gap:8px;display:grid}.plan-cycle>:first-child{width:100%;max-width:360px}.plan-saving{font-size:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:8px;display:flex}.plan-grid{grid-template-columns:minmax(0,1fr);gap:16px;display:grid}.plan-card{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-card);min-width:0;box-shadow:var(--shadow-card);flex-direction:column;gap:8px;padding:20px 16px;display:flex}.plan-card--recommended{border:2px solid var(--color-primary);box-shadow:var(--shadow-raised);order:-1}.plan-card--current{border-color:var(--color-ok)}.plan-card-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.plan-card-head h3{font-size:var(--text-title)}.plan-audience{text-wrap:balance}.plan-price{flex-wrap:wrap;align-items:baseline;column-gap:4px;margin-top:8px;display:flex}.plan-amount{font-size:clamp(1.5rem, 8vw, var(--text-display));letter-spacing:-.5px;font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:700}.plan-unit{color:var(--color-ink-muted);white-space:nowrap}.plan-price-note{font-size:var(--text-caption)}.plan-benefits{border-top:1px solid var(--color-line);gap:8px;margin:12px 0 16px;padding:12px 0 0;list-style:none;display:grid}.plan-benefits li{grid-template-columns:18px minmax(0,1fr);align-items:start;gap:8px;display:grid}.plan-benefits li>svg{color:var(--color-ok-text);margin-top:3px}.plan-benefit--no,.plan-benefits li.plan-benefit--no>svg{color:var(--color-ink-muted)}.plan-limit{font-weight:600}.plan-cta{margin-top:auto}.plan-cta>p:not(.plan-trial){align-items:center;min-height:52px;display:flex}.plan-trial{color:var(--color-info);margin-bottom:8px;font-weight:600}@media (width>=768px){.plan-card{padding:24px 20px}.plan-cycle>:first-child{max-width:320px}}@media (width>=1100px){.plan-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}.plan-card--recommended{order:0}}.plan-compare-card{padding:8px 16px}.plan-compare{border-collapse:collapse;table-layout:fixed;width:100%}.plan-compare th,.plan-compare td{text-align:center;border-bottom:1px solid var(--color-line);vertical-align:middle;padding:12px 8px}.plan-compare thead th{font-size:var(--text-section);white-space:nowrap}.plan-compare th[scope=row],.plan-compare thead th:first-child{text-align:left;width:42%;font-weight:500}.plan-compare thead th:first-child{font-weight:600}.plan-compare .plan-compare-group td{text-align:left;font-size:var(--text-secondary);color:var(--color-ink-muted);border-bottom-color:var(--color-ink-muted);padding-top:20px}.plan-compare .is-current{background:var(--color-ok-soft)}.plan-compare tbody:last-child tr:last-child>*{border-bottom:0}.plan-yes{color:var(--color-ok-text);display:inline}.plan-no{color:var(--color-ink-muted);display:inline}.plan-cell-text{text-wrap:balance;font-weight:600}.plan-list{gap:20px;display:grid}.plan-list h3{font-size:var(--text-secondary);color:var(--color-ink-muted);border-bottom:1px solid var(--color-ink-muted);padding-bottom:4px}.plan-list-row{border-bottom:1px solid var(--color-line);gap:8px;padding:12px 0;display:grid}.plan-list-label{text-wrap:balance;font-weight:500}.plan-list dl{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.plan-list dl>div{border-radius:var(--radius-inner);background:var(--color-secondary-soft);align-content:start;justify-items:start;gap:2px;padding:8px;display:grid}.plan-list dl>div.is-current{background:var(--color-ok-soft)}.plan-list dt{font-size:var(--text-caption);color:var(--color-ink-muted)}.plan-list dd{font-size:var(--text-secondary);min-width:0}.plan-faq{padding:0 16px}.plan-faq details{border-bottom:1px solid var(--color-line)}.plan-faq details:last-child{border-bottom:0}.plan-faq summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;min-height:56px;padding:8px 0;font-weight:600;list-style:none;display:flex}.plan-faq summary::-webkit-details-marker{display:none}.plan-faq summary:after{content:"";border-right:2px solid var(--color-primary);border-bottom:2px solid var(--color-primary);flex:none;width:10px;height:10px;margin-right:4px;transition:transform .18s;transform:rotate(45deg)}.plan-faq details[open] summary:after{transform:rotate(-135deg)}.plan-faq details>p{padding-bottom:16px}.plan-help{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.plan-pay-summary{text-align:center;justify-items:center;gap:4px;display:grid}.plan-pay-details{border:1px solid var(--color-line);border-radius:var(--radius-inner);gap:4px;padding:12px 16px;display:grid}.plan-pay-details .bank-identity{border-bottom:1px solid var(--color-line);padding-bottom:8px}.plan-pay-holder{padding:8px 0;display:grid}.plan-done{text-align:center;justify-items:center;gap:8px;padding:8px 0;display:grid}.plan-done h3{font-size:var(--text-title);text-wrap:balance}.plan-done-icon{border-radius:var(--radius-pill);background:var(--color-ok-soft);width:64px;height:64px;color:var(--color-ok-text);place-items:center;display:grid}.schedule-editor{gap:12px;min-width:0;display:grid}.schedule-row{border:1px solid var(--color-line);border-radius:var(--radius-inner);background:var(--color-surface);grid-template-columns:minmax(0,1fr) 44px;align-items:start;gap:8px;min-width:0;margin:0;padding:12px;display:grid}.schedule-row-fields{grid-template-columns:minmax(0,1fr);gap:8px;min-width:0;display:grid}@media (width>=480px){.schedule-row-fields{grid-template-columns:88px minmax(0,1fr) minmax(0,1fr)}}.schedule-row-remove{border:1px solid var(--color-input-line);border-radius:var(--radius-control);background:var(--color-surface);width:44px;height:44px;color:var(--color-ink-muted);justify-content:center;align-items:center;display:inline-flex}.schedule-row-remove:hover{border-color:var(--color-control-line);color:var(--color-bad)}.schedule-actions{flex-wrap:wrap;gap:8px;display:flex}.schedule-toggle{justify-self:start}.schedule-summary{overflow-wrap:anywhere;margin:0}.schedule-conflicts{margin:0 0 8px;padding-left:18px}.course-fields{gap:12px;min-width:0;display:grid}.course-dates{grid-template-columns:repeat(auto-fit,minmax(min(100%,9.5rem),1fr));align-items:start;gap:12px;min-width:0;display:grid}.course-fields .muted{margin:0}.course-line{flex-wrap:wrap;align-items:center;gap:4px 8px;min-width:0;display:flex}.course-line .badge,.course-range{white-space:nowrap;flex-shrink:0}.ended-toggle{border:1px solid var(--color-secondary-line);border-radius:var(--radius-control);background:var(--color-secondary-soft);width:100%;min-height:48px;color:var(--color-ink);justify-content:space-between;align-items:center;gap:12px;padding:8px 16px;font-weight:600;display:flex}.ended-toggle:active{background:var(--color-secondary-press)}.ended-toggle svg{flex-shrink:0;transition:transform .15s}.ended-toggle[aria-expanded=true] svg{transform:rotate(180deg)}.ended-group{gap:12px;display:grid}.ended-group .class-row .font-semibold{color:var(--color-ink-muted)}.student-badges{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.dup-card{padding:16px}.dup-pair{gap:12px;min-width:0;display:grid}.dup-kind{flex-wrap:wrap;align-items:center;gap:4px 8px;margin:0;display:flex}.dup-compare{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.dup-record{border:1px solid var(--color-line);border-radius:var(--radius-inner);background:var(--color-paper);align-content:start;gap:4px;min-width:0;padding:12px;display:grid}.dup-record h3{margin:0;font-size:16px;font-weight:600}.dup-record p{margin:0}.dup-guardian{overflow-wrap:anywhere}@media (width<=359px){.dup-compare{grid-template-columns:minmax(0,1fr)}}.dup-actions{flex-wrap:wrap;gap:8px;display:flex}.dup-hint{color:var(--color-ink-muted);margin:0}.dup-hint a{color:var(--color-primary);text-underline-offset:4px;font-weight:600;text-decoration:underline}.import-row-dup{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:0 16px 12px;display:flex}.import-row--dup{background:var(--color-wait-soft)}.period-bar{gap:4px;min-width:0;display:grid}.period-step{align-items:center;gap:8px;min-height:52px;display:flex}.period-words{text-align:center;flex:1;justify-items:center;gap:2px;min-width:0;display:grid}.period-label{overflow-wrap:anywhere;text-wrap:balance;max-width:100%}.period-dates{font-size:var(--text-caption)}.period-edit{min-height:44px;color:var(--color-primary);font-size:var(--text-dense);text-underline-offset:4px;text-align:left;padding:0 8px;font-weight:500;text-decoration:underline}.period-presets{max-width:none}.period-sheet-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.period-overlap p{margin:0}.fee-picker{gap:12px;min-width:0;display:grid}.fee-options{gap:8px;display:grid}.fee-option{min-width:0}.fee-option-head{text-align:left;border:1px solid var(--color-control-line);border-radius:var(--radius-control);background:var(--color-surface);align-items:flex-start;gap:12px;width:100%;min-height:56px;padding:12px 16px;display:flex}.fee-option-head[aria-checked=true]{border-color:var(--color-primary);background:var(--color-primary-soft)}.fee-option-head[aria-checked=true] .radio-card-dot{border-color:var(--color-primary);box-shadow:inset 0 0 0 4px var(--color-surface);background:var(--color-primary)}.fee-option-text{gap:2px;min-width:0;display:grid}.fee-example{color:var(--color-ink);font-size:var(--text-secondary);font-variant-numeric:tabular-nums;font-weight:500}.fee-fields{gap:16px;min-width:0;padding:16px 4px 8px;display:grid}.fee-fields>*{min-width:0}.fee-policy{gap:2px;display:grid}.fee-policy p{font-size:var(--text-secondary);margin:0 0 0 36px}.fee-course-hint{gap:8px;display:grid}.fee-course-hint p{margin:0}.fee-per-session{font-variant-numeric:tabular-nums;margin:-8px 0 0}.fee-summary{gap:4px;display:grid}.fee-summary p{margin:0}.fee-note{font-size:var(--text-caption);margin:0}@media (width>=768px){.fee-options{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.fee-option[data-selected=true]{grid-column:1/-1}}.credit-card{gap:12px;min-width:0;display:grid}.credit-card h2,.credit-card p{margin:0}.credit-account{gap:8px;min-width:0;display:grid}.credit-account+.credit-account{border-top:1px solid var(--color-line);padding-top:16px}.credit-head{justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}.credit-title{flex:1;min-width:0;font-weight:600}.credit-balance{font-size:var(--text-display);font-variant-numeric:tabular-nums;font-weight:700;line-height:1.25}.credit-balance[data-state=low]{color:var(--color-wait-text)}.credit-balance[data-state=empty],.credit-balance[data-state=owing]{color:var(--color-bad)}.credit-note{font-size:var(--text-secondary)}.credit-unpaid{border-radius:var(--radius-inner);background:var(--color-idle-soft);justify-items:start;gap:8px;padding:12px;display:grid}.credit-skeleton{border-radius:var(--radius-card);height:120px}.credit-card .meter{height:8px}.credit-actions{flex-wrap:wrap;gap:8px;display:flex}.credit-history{margin:0;padding:0;list-style:none;display:grid}.credit-entry{border-top:1px solid var(--color-line);justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:10px 0;display:flex}.credit-entry-main{flex:1;min-width:0;display:grid}.credit-entry-title{font-weight:600}.credit-entry-note{overflow-wrap:anywhere}.credit-entry-delta{font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;font-weight:700}.credit-entry-delta[data-sign=plus],.adjust-delta[data-sign=plus]{color:var(--color-ok-text)}.credit-entry-delta[data-sign=minus],.adjust-delta[data-sign=minus]{color:var(--color-bad)}.adjust-stepper{justify-content:center;align-items:center;gap:20px;display:flex}.adjust-step{border-radius:var(--radius-pill);flex:none;min-width:56px;min-height:56px;padding:0}.adjust-delta{min-width:112px;font-size:var(--text-display);font-variant-numeric:tabular-nums;white-space:nowrap;justify-content:center;align-items:baseline;gap:6px;margin:0;font-weight:700;line-height:1.25;display:flex}.adjust-unit{font-size:var(--text-secondary);color:var(--color-ink-muted);font-weight:400}.adjust-preview{text-align:center;font-variant-numeric:tabular-nums;margin:0;font-weight:600}.guide-overlay{z-index:70;align-items:stretch}.guide-viewer{background:var(--color-surface);flex-direction:column;width:100%;height:100dvh;animation:.18s ease-out slide;display:flex}.guide-viewer-bar{min-height:56px;padding:calc(4px + env(safe-area-inset-top)) 8px 4px 16px;border-bottom:1px solid var(--color-line);align-items:center;gap:8px;display:flex}.guide-viewer-bar h2{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--text-section);flex:1;overflow:hidden}.guide-viewer-tab{min-height:44px;color:var(--color-primary);font-size:var(--text-secondary);text-underline-offset:3px;white-space:nowrap;align-items:center;gap:6px;padding-inline:8px;font-weight:500;text-decoration:underline;display:inline-flex}.guide-viewer-frame{background:var(--color-surface);width:100%;padding-bottom:env(safe-area-inset-bottom);border:0;flex:1}@media (width>=768px){.guide-overlay{align-items:center}.guide-viewer{border-radius:var(--radius-card);max-width:960px;height:min(88dvh,900px);box-shadow:var(--shadow-raised);overflow:hidden}.guide-viewer-bar{padding-top:4px}}}@layer utilities{.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.my-3{margin-block:calc(var(--spacing) * 3)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-1{height:var(--spacing)}.h-4{height:calc(var(--spacing) * 4)}.h-8{height:calc(var(--spacing) * 8)}.h-16{height:calc(var(--spacing) * 16)}.h-40{height:calc(var(--spacing) * 40)}.min-h-11{min-height:calc(var(--spacing) * 11)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-60{width:calc(var(--spacing) * 60)}.w-full{width:100%}.max-w-full{max-width:100%}.min-w-0{min-width:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-card{border-radius:var(--radius-card)}.rounded-control{border-radius:var(--radius-control)}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-line{border-color:var(--color-line)}.bg-line{background-color:var(--color-line)}.\!p-0{padding:0!important}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-20{padding-block:calc(var(--spacing) * 20)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-pre-wrap{white-space:pre-wrap}.text-bad{color:var(--color-bad)}.text-info{color:var(--color-info)}.text-ink-muted{color:var(--color-ink-muted)}.text-ok{color:var(--color-ok)}.text-primary{color:var(--color-primary)}.text-wait{color:var(--color-wait)}.text-white{color:var(--color-white)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.sepia{--tw-sepia:sepia(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}@keyframes pulse{50%{opacity:.5}}@keyframes slide{0%{opacity:.5;transform:translateY(30px)}}@keyframes toast-enter{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@keyframes step-in{0%{opacity:0;transform:translate(12px)}}@keyframes draw-check{0%{stroke-dashoffset:40px}to{stroke-dashoffset:0}}@keyframes bar-grow{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes progress-slide{0%{transform:translate(-100%)scaleX(.3)}to{transform:translate(340%)scaleX(.3)}}@keyframes splash-enter{0%{opacity:0;transform:translateY(8px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes splash-load{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes brand-pages-enter{0%{opacity:0;transform:translateY(4px)scale(.92)}to{opacity:1;transform:translateY(0)scale(1)}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
