/*! 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;--spacing:.25rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--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-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-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-ink) 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-ink) 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}}@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}}html{font-size:100%}*{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:22px;height:22px;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}}}@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}.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:var(--text-body);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-surface)}.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-surface)}.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-surface);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{color:var(--color-ink-muted);background:var(--color-idle-soft);border-color:var(--color-line);opacity:1}.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){background:var(--color-secondary-soft)}.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-line);border-radius:var(--radius-pill);background:var(--color-surface);min-height:44px;font-size:var(--text-secondary);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{grid-template-columns:repeat(auto-fill, minmax(var(--chip-min,88px), 1fr));gap:8px;display:grid}.chip-group>.chip{min-width:0;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;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}.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}.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-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)}.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-ink) 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-ink);width:calc(100% - 32px);max-width:448px;color:var(--color-surface);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%)}@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-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{border-radius:var(--radius-card);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);align-items:flex-start;gap:12px;width:100%;min-height:44px;padding:12px 0;display:flex}.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-ink) 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-secondary);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(0,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-secondary);text-align:center;background:0 0;border:0;justify-content:center;align-items:center;gap:8px;padding:8px 12px;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-surface);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}.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-ink) 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-surface)}.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-surface);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}.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-ink) 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>.row{border:1px solid var(--color-line);background:var(--color-surface);border-radius:var(--radius-card);align-items:flex-start;padding:24px}.class-list>.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;background:var(--color-surface);border-bottom:1px solid var(--color-line);align-items:center;gap:12px;min-height:72px;padding:12px 16px;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-surface);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(0,1fr));display:grid}.nav-icon{place-items:center;width:44px;height:28px;display:grid;position:relative}.nav-badge{outline:2px solid var(--color-surface);background:var(--color-bad);min-width:20px;height:20px;color:var(--color-surface);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:96px minmax(0,1fr) 96px;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-ink) 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-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:background-color .12s,color .12s;display:flex;position:relative}.nav-items>a[aria-current=page]{background:var(--color-primary-soft);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-surface);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:88px;padding:20px 28px}.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-link .nav-external{width:14px;height:14px;margin-left:auto}.teacher-shell--rail .sidebar-link .nav-external{display:none}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:24px 40px}.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-primary) url(/assets/ledger-lines.svg) no-repeat right -24px bottom -30px / 200px;color:var(--color-surface);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-primary) 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-surface) 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-surface) 88%, var(--color-primary))}}.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-surface) 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-surface) 24%, transparent)}}.hero-progress progress::-webkit-progress-value{background:var(--color-surface)}.hero-progress progress::-moz-progress-bar{background:var(--color-surface)}.hero-help{color:#e4eaf9;margin-bottom:12px}@supports (color:color-mix(in lab, red, red)){.hero-help{color:color-mix(in srgb, var(--color-surface) 88%, var(--color-primary))}}.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-surface) 35%, transparent)}}.hero-foot{color:var(--color-surface)}.hero-foot .hero-label{margin:0;display:block}.hero-foot .money{font-size:var(--text-section)}.session-card{grid-template-columns:64px 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-section);font-variant-numeric:tabular-nums;line-height:1.4;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;width:56px;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)}.fees-callout{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{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;align-items:center;gap:4px 8px;display:flex}.invoice-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;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;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}.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}}.dashboard-grid{grid-template-columns:minmax(0,1fr);gap:16px;display:grid}.dashboard-grid>*{min-width:0}.dashboard-period{gap:8px;display:grid}.range-tabs{background:var(--color-idle-soft);border-radius:var(--radius-control);grid-template-columns:repeat(4,minmax(0,1fr));gap:2px;padding:4px;display:grid}.range-tabs button{border-radius:var(--radius-inner);min-height:44px;font-size:var(--text-caption);color:var(--color-ink-muted);font-weight:500}.range-tabs button[aria-selected=true]{background:var(--color-surface);color:var(--color-primary);box-shadow:0 2px 5px #172b4d12}@supports (color:color-mix(in lab, red, red)){.range-tabs button[aria-selected=true]{box-shadow:0 2px 5px color-mix(in srgb, var(--color-ink) 7%, transparent)}}.range-tabs button[aria-selected=true]{font-weight:600}.period-selector{justify-content:center;align-items:center;gap:16px;min-height:52px;display:flex}.period-selector strong{text-align:center;flex:1}.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(4,minmax(72px,1fr));gap:8px;display:grid}@media (width<=359px){.quick-actions{grid-template-columns:repeat(2,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-caption);text-align:center;max-width:65px;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%;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-skeleton{border:1px solid var(--color-line);border-radius:var(--radius-card);background:var(--color-skeleton);animation:1.5s infinite pulse}.hero-placeholder{height:250px}.actions-placeholder{height:142px}.chart-placeholder{height:330px}.mix-placeholder{height:270px}@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,.dashboard-skeleton{animation: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:url(/assets/login-background-composite.svg);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:url(/assets/login-background-composite.svg);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-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-surface);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-hint{width:100%;max-width:280px;height:auto;color:var(--color-ink-muted);justify-self:center}.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:0;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-disconnect{justify-content:center;display:flex}.zalo-disconnect-btn{color:var(--color-bad)}.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-surface);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-code{border-radius:var(--radius-card);background:var(--color-primary-soft);justify-items:center;gap:8px;padding:16px;display:grid}.zalo-code-value{font-size:var(--text-hero);letter-spacing:.3em;font-variant-numeric:tabular-nums;padding-left:.3em;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-surface);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}.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{padding:0}.more-signout .row{color:var(--color-bad)}}@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-2{margin-block:calc(var(--spacing) * 2)}.my-3{margin-block:calc(var(--spacing) * 3)}.mt-1{margin-top:var(--spacing)}.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)}.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-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)}.bg-surface{background-color:var(--color-surface)}.\!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))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--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)}.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,)}.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 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)}}
