:root{--color-bg:#f4f2f3;--color-surface:#fff;--color-surface-2:#faf7f8;--color-text:#241d20;--color-text-2:#4a4045;--color-muted:#7c7176;--color-border:#e8e1e4;--color-border-soft:#f0eaec;--color-primary:#8e2a4e;--color-primary-dark:#722040;--color-primary-soft:#f7e8ee;--color-primary-ink:#fff;--color-brass:#b6803a;--color-brass-soft:#f4ead6;--color-success:#2f7d5b;--color-success-soft:#dcefe5;--color-warning:#b0761c;--color-warning-soft:#f7ead0;--color-danger:#cf4436;--color-danger-soft:#fbe4e1;--color-info:#3f6bb0;--color-info-soft:#e5edf8;--color-violet:#7c5cc4;--color-violet-soft:#ece6f8;--color-neutral-soft:#f0eaec;--radius-sm:9px;--radius:13px;--radius-lg:20px;--shadow-1:0 1px 2px #24141c0f, 0 1px 1px #24141c0a;--shadow-2:0 2px 4px #24141c0d, 0 6px 16px #24141c12;--shadow-3:0 8px 20px #24141c1a, 0 20px 48px #24141c24;--shadow:var(--shadow-1);--tab-bar-height:3.75rem;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Apple SD Gothic Neo", "Noto Sans KR", sans-serif;--font-serif:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:16px;line-height:1.5}h1{letter-spacing:-.02em;margin:0 0 .5rem;font-size:1.45rem;font-weight:700}h2{letter-spacing:-.01em;margin:0;font-size:1.1rem;font-weight:650}h3{margin:0;font-size:1rem}p{margin:.25rem 0}a{color:var(--color-primary);text-decoration:none}.muted{color:var(--color-muted);font-size:.875rem}.app-shell{flex-direction:column;min-height:100dvh;display:flex}.app-header{z-index:10;background:color-mix(in srgb, var(--color-surface) 88%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(10px);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:.7rem 1rem;display:flex;position:sticky;top:0}.app-brand{font-family:var(--font-serif);color:var(--color-text);font-size:1.25rem;font-style:italic;font-weight:400}.app-main{padding-bottom:calc(var(--tab-bar-height) + env(safe-area-inset-bottom) + 1rem);flex:1}.page{flex-direction:column;gap:.9rem;max-width:60rem;margin:0 auto;padding:1rem;display:flex}.page-header{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.section-title{text-transform:uppercase;letter-spacing:.1em;color:var(--color-muted);margin-top:.5rem;font-size:.72rem;font-weight:600}.back-link{align-self:flex-start;font-weight:500}.tab-bar{z-index:10;height:calc(var(--tab-bar-height) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:color-mix(in srgb, var(--color-surface) 90%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(10px);border-top:1px solid var(--color-border);display:flex;position:fixed;bottom:0;left:0;right:0}.tab-link{color:var(--color-muted);flex:1;justify-content:center;align-items:center;font-size:.85rem;font-weight:500;transition:color .15s;display:flex}.tab-link-active{color:var(--color-primary);font-weight:700}.app-nav{display:none}@media (width>=768px){.app-nav{gap:.15rem;margin-left:1.25rem;margin-right:auto;display:flex}.app-nav .tab-link{border-radius:var(--radius-sm);flex:none;padding:.4rem .85rem;font-size:.9rem}.app-nav .tab-link:hover{color:var(--color-text);background:var(--color-border-soft)}.app-nav .tab-link-active{color:var(--color-primary);background:var(--color-primary-soft)}.tab-bar{display:none}.app-main{padding-bottom:2rem}}.btn{border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);background:var(--color-surface);cursor:pointer;text-align:center;white-space:nowrap;justify-content:center;align-items:center;gap:.45rem;padding:.6rem 1.05rem;font-family:inherit;font-size:.92rem;font-weight:600;transition:transform .12s,box-shadow .16s,background-color .16s,border-color .16s;display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)}.btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.btn:disabled{opacity:.5;cursor:default}.btn-primary{color:var(--color-primary-ink);background:linear-gradient(180deg, color-mix(in srgb, var(--color-primary) 92%, white) 0%, var(--color-primary) 58%, var(--color-primary-dark) 100%);box-shadow:var(--shadow-1), inset 0 1px 0 #ffffff2e;border-color:#0000}.btn-primary:not(:disabled):hover{box-shadow:var(--shadow-2), inset 0 1px 0 #ffffff38}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.btn-secondary:not(:disabled):hover{border-color:var(--color-muted);box-shadow:var(--shadow-1)}.btn-ghost{color:var(--color-muted);background:0 0;border-color:#0000;padding:.5rem .65rem}.btn-ghost:not(:disabled):hover{color:var(--color-text);background:var(--color-border-soft)}.btn-block{width:100%}.btn-danger{color:var(--color-danger);border-color:color-mix(in srgb, var(--color-danger) 45%, transparent);background:0 0}.btn-danger:not(:disabled):hover{background:var(--color-danger-soft);border-color:var(--color-danger)}.btn-danger-solid{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.btn-danger-solid:not(:disabled):hover{background:color-mix(in srgb, var(--color-danger) 85%, #000)}.confirm-body{color:var(--color-text-2);flex-direction:column;gap:.75rem;display:flex}.confirm-details{flex-direction:column;gap:.25rem;margin:0;padding-left:1.2rem;font-size:.92rem;display:flex}.confirm-actions{border-top:1px solid var(--color-border-soft);justify-content:flex-end;gap:.5rem;margin-top:.25rem;padding-top:.9rem;display:flex}.btn-sm{padding:.4rem .75rem;font-size:.84rem}.header-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.title-with-badge{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.menu-anchor{display:inline-flex;position:relative}.menu-backdrop{z-index:20;position:fixed;inset:0}.menu{z-index:30;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);min-width:12rem;max-width:calc(100vw - 1.5rem);box-shadow:var(--shadow-3);flex-direction:column;gap:2px;padding:.35rem;animation:.14s menu-in;display:flex;position:absolute;top:calc(100% + 6px);right:0}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.menu-item{text-align:left;border-radius:var(--radius-sm);font:inherit;color:var(--color-text);cursor:pointer;background:0 0;border:0;padding:.55rem .7rem;font-size:.92rem}a.menu-item{text-decoration:none;display:block}a.menu-item:hover{background:var(--color-border-soft)}a.menu-item-narrow{display:none}@media (width<=540px){.calendar-timetable-link{display:none}a.menu-item-narrow{display:block}}.menu-item:not(:disabled):hover{background:var(--color-border-soft)}.menu-item:disabled{opacity:.5;cursor:default}.menu-item-danger{color:var(--color-danger)}.menu-item-danger:not(:disabled):hover{background:var(--color-danger-soft)}.icon-btn{letter-spacing:.05em;width:2.2rem;padding:.4rem 0;font-size:1.1rem;line-height:1}.icon-btn-sm{width:1.9rem;padding:.25rem 0;font-size:1rem}.menu-divider{border:0;border-top:1px solid var(--color-border-soft);margin:.2rem 0}.enrolment-actions{flex-wrap:wrap;gap:.5rem;margin-top:.25rem;display:flex}.input{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-2);width:100%;color:var(--color-text);padding:.65rem .8rem;font-family:inherit;font-size:1rem;transition:border-color .15s,box-shadow .15s,background-color .15s}.input:focus{border-color:var(--color-primary);background:var(--color-surface);box-shadow:0 0 0 3px var(--color-primary-soft);outline:none}.input-compact{width:auto;padding:.4rem .6rem}.field{color:var(--color-text-2);flex-direction:column;flex:1;gap:.35rem;font-size:.85rem;font-weight:600;display:flex}.field-row{gap:.75rem;display:flex}.form-stack{flex-direction:column;gap:.85rem;display:flex}.form-section-title{margin-top:.25rem;font-size:.95rem;font-weight:650}.form-error{color:var(--color-danger);margin:0;font-size:.9rem}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-1);padding:.95rem 1.05rem}.card-button{text-align:left;width:100%;font-family:inherit;font-size:inherit;color:inherit;cursor:pointer;transition:box-shadow .16s,border-color .16s,transform .12s;display:block}.card-button:hover{border-color:var(--color-muted);box-shadow:var(--shadow-2)}.card-button:active{transform:translateY(1px)}.list-row.guardian-row{flex-direction:row;justify-content:space-between;align-items:center;gap:.75rem}.list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.list-plain{gap:0}.list-plain .list-row{box-shadow:none;background:0 0;border:0;border-radius:0;padding:.55rem .25rem}.list-plain .list-row+.list-row{border-top:1px solid var(--color-border-soft)}.list-row{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);box-shadow:var(--shadow-1);flex-direction:column;gap:.15rem;padding:.8rem 1rem;transition:box-shadow .16s,border-color .16s,transform .12s;display:flex}a.list-row:hover{border-color:var(--color-muted);box-shadow:var(--shadow-2)}a.list-row:active{transform:translateY(1px)}.list-row-title{flex-wrap:wrap;align-items:center;gap:.5rem;font-weight:650;display:flex}.avatar{color:#fff;background:linear-gradient(150deg, var(--color-primary), var(--color-brass));width:2.35rem;height:2.35rem;box-shadow:var(--shadow-1);border-radius:12px;flex:none;place-items:center;font-size:.95rem;font-weight:700;display:grid}.avatar-md{border-radius:15px;width:2.9rem;height:2.9rem;font-size:1.15rem}.list-row-lead{flex-direction:row;align-items:center;gap:.7rem}.list-row-lead .list-row-body{flex-direction:column;flex:1;gap:.15rem;min-width:0;display:flex}.identity-head{align-items:center;gap:.7rem;min-width:0;display:flex}.identity-head h1,.identity-head h2{margin:0}.identity-head .identity-body{flex-direction:column;gap:.1rem;min-width:0;display:flex}.identity-head .identity-sub{color:var(--color-muted);font-size:.8rem}.list-row-inactive{opacity:.55}.badge{background:var(--color-neutral-soft);color:var(--color-muted);border-radius:999px;align-items:center;gap:.35rem;padding:.2rem .65rem .2rem .55rem;font-size:.74rem;font-weight:600;display:inline-flex}.badge:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.badge-active{background:var(--color-success-soft);color:var(--color-success)}.badge-paused{background:var(--color-warning-soft);color:var(--color-warning)}.badge-ended{background:var(--color-danger-soft);color:var(--color-danger)}.badge-admin{background:var(--color-violet-soft);color:var(--color-violet)}.feedback{text-align:center;color:var(--color-muted);background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius);padding:1.5rem 1rem}.feedback-error{border-color:var(--color-danger);color:var(--color-danger);flex-direction:column;align-items:center;gap:.5rem;display:flex}.toast-stack{z-index:100;pointer-events:none;flex-direction:column;gap:.5rem;width:min(92vw,26rem);display:flex;position:fixed;top:.75rem;left:50%;transform:translate(-50%)}.toast{background:var(--color-text);color:var(--color-bg);border-radius:var(--radius);box-shadow:var(--shadow-3);padding:.75rem 1rem;font-size:.9rem;animation:.2s toast-in}@keyframes toast-in{0%{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:none}}.auth-page{background:radial-gradient(120% 90% at 85% -10%, var(--color-primary-soft) 0%, transparent 55%), radial-gradient(90% 70% at -5% 0%, var(--color-brass-soft) 0%, transparent 45%), var(--color-bg);justify-content:center;align-items:center;min-height:100dvh;padding:1rem;display:flex}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:100%;max-width:24rem;box-shadow:var(--shadow-3);text-align:center;flex-direction:column;gap:.75rem;padding:2rem 1.75rem;display:flex}.auth-brand{font-family:var(--font-serif);letter-spacing:-.01em;margin-bottom:.25rem;font-size:2.4rem;font-style:italic;font-weight:400}.auth-mode-switch{align-self:center;margin-bottom:.25rem}.auth-stack .landing-art{max-width:min(13rem,34dvh)}.auth-link{font:inherit;color:var(--color-primary);text-underline-offset:2px;cursor:pointer;background:0 0;border:0;border-radius:6px;align-self:center;padding:.15rem .25rem;font-size:.85rem;text-decoration:underline}.auth-link:hover{color:var(--color-primary-dark)}.auth-link:disabled{opacity:.6;cursor:default}.auth-fineprint{margin-top:.15rem;font-size:.78rem}.toggle-row{cursor:pointer;align-items:center;gap:.6rem;font-weight:600;display:flex}.toggle-row input[type=checkbox]{width:1.15rem;height:1.15rem;accent-color:var(--color-primary)}.invoice-logo-preview{object-fit:contain;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;align-self:flex-start;max-width:12rem;max-height:4rem;padding:.35rem}.invoice-pdf-link{align-self:flex-start;padding-left:0}.student-search{box-sizing:border-box;width:100%;margin-bottom:.75rem}.btn-danger-text{color:var(--color-danger)}.btn-danger-text:hover{color:var(--color-danger);background:var(--color-danger-soft)}.pay-icon{color:#fff;width:3.5rem;height:3.5rem;box-shadow:var(--shadow-1);border-radius:50%;justify-content:center;align-items:center;margin:0 auto;font-size:1.75rem;font-weight:700;display:flex}.pay-icon-success{background:var(--color-success)}.pay-icon-cancelled{background:var(--color-muted)}.calendar-header{flex-direction:column;gap:.55rem;margin-bottom:.75rem;display:flex}.calendar-header-row{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.calendar-date-lead{font-family:var(--font-serif);letter-spacing:-.01em;font-variant-numeric:tabular-nums;margin:0;font-size:1.4rem;font-weight:600}.calendar-nav{gap:.35rem;display:flex}.calendar-header-actions{align-items:center;gap:.5rem;display:flex}.calendar-header-tools{flex-wrap:wrap;justify-content:flex-start}.teacher-filter{-webkit-appearance:none;appearance:none;border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:var(--color-surface);color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;cursor:pointer;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%237c7176' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right .7rem center;background-repeat:no-repeat;max-width:12rem;padding:.55rem 2rem .55rem .9rem;font-family:inherit;font-size:.92rem;font-weight:600;line-height:1.2;transition:border-color .15s,box-shadow .15s;overflow:hidden}.teacher-filter:hover{border-color:var(--color-muted);box-shadow:var(--shadow-1)}.teacher-filter:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft);outline:none}.segmented{background:var(--color-neutral-soft);border-radius:999px;gap:2px;padding:3px;display:inline-flex}.segmented-btn{white-space:nowrap;color:var(--color-muted);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:.35rem .9rem;font-family:inherit;font-size:.84rem;font-weight:600;transition:background-color .16s,color .16s,box-shadow .16s}.segmented-btn-active{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-1)}.calendar-scroll{-webkit-overflow-scrolling:touch;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);max-height:max(22rem,100dvh - 17rem);box-shadow:var(--shadow-1);overflow:auto}.calendar-scroll[data-mode="7"]{scroll-snap-type:x proximity}.calendar-scroll[data-mode="7"] .cal-col{scroll-snap-align:start}.cal-grid{display:grid}.cal-corner{z-index:6;background:var(--color-surface-2);border-bottom:1px solid var(--color-border);position:sticky;top:0;left:0}.cal-head{z-index:5;border-bottom:1px solid var(--color-border);border-left:1px solid var(--color-border-soft);background:var(--color-surface-2);flex-wrap:wrap;justify-content:center;align-items:baseline;gap:.35rem;padding:.35rem .2rem;font-size:.78rem;font-weight:650;display:flex;position:sticky;top:0}.cal-head-date{color:var(--color-muted);font-variant-numeric:tabular-nums;font-size:.72rem;font-weight:500}.cal-head-today{color:var(--color-primary);box-shadow:inset 0 -2px 0 var(--color-primary)}.cal-head-today .cal-head-date{color:var(--color-primary)}.cal-gutter{z-index:4;background:var(--color-surface);position:sticky;left:0}.cal-time{color:var(--color-muted);text-align:right;border-top:1px solid var(--color-border-soft);box-sizing:border-box;font-variant-numeric:tabular-nums;padding-top:2px;padding-right:.3rem;font-size:.66rem;line-height:1}.cal-gutter .cal-time:first-child{border-top:none}.cal-col{border-left:1px solid var(--color-border-soft);position:relative;container-type:inline-size}.cal-cell{border-top:1px solid var(--color-border-soft);box-sizing:border-box}.cal-col .cal-cell:first-child{border-top:none}.cal-evt{display:flex;position:absolute;left:2px;right:2px}.cal-evt .lesson-card{flex:1;height:100%}.cal-evt-slim .lesson-card{flex-direction:row;align-items:center;gap:.35rem;padding:.1rem .45rem}.cal-evt-slim .lesson-name{flex:auto;min-width:0}.cal-evt-slim .session-count,.cal-evt-slim .pending-badge{display:none}.cal-nowline{border-top:2px solid var(--color-danger);z-index:2;pointer-events:none;position:absolute;left:0;right:0}.cal-nowline:before{content:"";background:var(--color-danger);border-radius:50%;width:6px;height:6px;position:absolute;top:-4px;left:-1px}@container (width<=6rem){.session-count,.session-state,.pending-badge{display:none}}.lesson-card{border:1px solid var(--color-border);border-left:3px solid var(--color-muted);background:var(--color-surface);width:100%;min-width:0;box-shadow:var(--shadow-1);color:var(--color-text);text-align:left;cursor:pointer;border-radius:8px;flex-direction:column;align-items:flex-start;gap:.05rem;padding:.3rem .45rem;font-family:inherit;font-size:.78rem;line-height:1.3;transition:box-shadow .14s,transform .12s;display:flex;overflow:hidden}.lesson-card:hover{box-shadow:var(--shadow-2)}.lesson-card:active{transform:translateY(1px)}.lesson-card>span{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.session-group{border-left-color:var(--color-primary)}.session-private{border-left-color:var(--color-brass)}.lesson-time{font-variant-numeric:tabular-nums;font-weight:700}.lesson-name{font-weight:500}.session-count{color:var(--color-muted);font-size:.66rem}.session-state{text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:4px;font-size:.62rem;font-weight:650;display:inline-flex}.session-state:before{content:"";background:currentColor;border-radius:50%;flex:none;width:5px;height:5px}.st-present,.st-held{color:var(--color-success)}.st-absent{color:var(--color-warning)}.st-cancelled{color:var(--color-muted)}.st-rescheduled,.st-moved{color:var(--color-violet)}.st-credited{color:var(--color-primary)}.session-sig-present,.session-sig-held{opacity:.72}.session-sig-absent{background:var(--color-warning-soft)}.session-sig-cancelled{opacity:.55}.session-sig-cancelled .lesson-name{text-decoration:line-through}.session-sig-credited{background:var(--color-primary-soft);opacity:.85}.lesson-pending{border:1px dashed var(--color-muted);border-left:3px dashed var(--color-muted);color:var(--color-muted);box-shadow:none;opacity:.85;background:0 0}.lesson-pending .lesson-time,.lesson-pending .lesson-name{color:var(--color-muted)}.pending-badge{text-transform:uppercase;letter-spacing:.06em;color:var(--color-warning);font-size:.68rem}.chip-row{flex-wrap:wrap;gap:.5rem;display:flex}.chip{border:1px solid color-mix(in srgb, var(--color-primary) 40%, transparent);background:var(--color-surface);color:var(--color-primary);cursor:pointer;border-radius:999px;padding:.45rem .9rem;font-family:inherit;font-size:.9rem;font-weight:600;transition:background-color .16s,border-color .16s}.chip:not(:disabled):hover{background:var(--color-primary-soft);border-color:var(--color-primary)}.chip:disabled{opacity:.5;cursor:default}.swap-option{white-space:normal;text-align:left;justify-content:flex-start}.suggest-btn{align-self:flex-start}.enrolment-slot-actions{flex-wrap:wrap;gap:.5rem;display:flex}.free-times{flex-wrap:wrap;gap:.35rem;margin-top:.35rem;display:flex}.free-chip{border:1px solid var(--color-border);background:var(--color-surface);font-variant-numeric:tabular-nums;cursor:pointer;border-radius:999px;padding:.25rem .65rem;font-size:.85rem}.free-chip:hover{border-color:var(--color-brass);color:var(--color-brass)}.free-chip-active,.free-chip-active:hover{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-ink)}.warn-hint{color:var(--color-warning);margin-top:.25rem;font-size:.85rem}.availability-row{flex-direction:row;justify-content:space-between;align-items:baseline;gap:.75rem}.sheet-overlay{z-index:50;-webkit-backdrop-filter:blur(2px);background:#24141c80;justify-content:center;align-items:flex-end;animation:.18s overlay-in;display:flex;position:fixed;inset:0}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.sheet{background:var(--color-surface);border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-width:30rem;padding:.65rem 1rem calc(1rem + env(safe-area-inset-bottom));box-shadow:var(--shadow-3);overscroll-behavior:contain;max-height:90dvh;animation:.22s cubic-bezier(.22,1,.36,1) sheet-in;overflow-y:auto}.sheet:before{content:"";background:var(--color-border);border-radius:999px;width:2.25rem;height:.25rem;margin:.15rem auto .6rem;display:block}@keyframes sheet-in{0%{opacity:.4;transform:translateY(12%)}to{opacity:1;transform:none}}.sheet-header{z-index:1;background:var(--color-surface);justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;padding-block:.4rem;display:flex;position:sticky;top:-.65rem}.sheet-title{font-size:1rem}.sheet-action-done{background:var(--color-success);color:#fff;border-color:#0000}.sheet-action-missed{background:var(--color-warning);color:#fff;border-color:#0000}.sheet-action-cancelled{background:var(--color-danger);color:#fff;border-color:#0000}.sheet-action-scheduled{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}@media (width>=640px){.sheet-overlay{align-items:center;padding:1rem}.sheet{border-radius:var(--radius-lg)}}.pay-buttons{flex-direction:column;gap:.5rem;display:flex}.bank-row{align-items:center;gap:.6rem;display:flex}.bank-row-label{flex:0 0 7rem}.bank-row-value{font-variant-numeric:tabular-nums;word-break:break-all;flex:1;font-weight:650}.btn-copy{padding:.35rem .6rem;font-size:1rem;line-height:1}.bank-reference{background:var(--color-warning-soft);border:1px solid color-mix(in srgb, var(--color-warning) 40%, transparent);border-radius:var(--radius);flex-direction:column;gap:.35rem;padding:.65rem .8rem;display:flex}.bank-reference .bank-row-value{font-size:1.05rem}.bank-reference-hint{color:var(--color-warning);margin:0;font-size:.85rem;font-weight:600}.billing-section{flex-direction:column;gap:.5rem;display:flex}.invoice-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.invoice-info{flex-direction:column;gap:.1rem;display:flex}.invoice-amount{font-variant-numeric:tabular-nums;margin:0;font-size:1.05rem;font-weight:700}.invoice-actions{gap:.5rem;display:flex}.student-card{flex-direction:column;gap:.7rem;display:flex}.reserved-schedule{border:1px dashed var(--color-border);border-radius:var(--radius);flex-direction:column;gap:.15rem;padding:.6rem .75rem;display:flex}.reserved-time{margin:0;font-weight:600}.invoice-cta{background:var(--color-primary-soft);border:1px solid color-mix(in srgb, var(--color-primary) 30%, transparent);border-radius:var(--radius);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.85rem 1rem;display:flex}.invoice-cta .invoice-amount{color:var(--color-text)}.progress{flex-direction:column;gap:.3rem;display:flex}.progress-track{background:var(--color-neutral-soft);border-radius:999px;height:.55rem;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--color-brass), color-mix(in srgb, var(--color-brass) 55%, var(--color-primary)));border-radius:999px;height:100%;transition:width .25s}.progress-label{color:var(--color-muted);font-size:.82rem}.availability-grid{touch-action:none;-webkit-user-select:none;user-select:none;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-1);gap:3px;padding:.6rem;display:grid}.grid-row-contents{display:contents}.grid-corner{min-width:3rem}.grid-day-header{text-align:center;padding:.25rem 0;font-size:.82rem;font-weight:650}.grid-time-label{color:var(--color-muted);font-variant-numeric:tabular-nums;justify-content:flex-end;align-items:center;min-width:3rem;padding-right:.4rem;font-size:.75rem;display:flex}.grid-cell{background:var(--color-neutral-soft);border:1px solid var(--color-border);cursor:pointer;border-radius:7px;height:2.1rem;transition:background-color .1s,border-color .1s}.grid-cell-selected{background:var(--color-success);border-color:var(--color-success)}.enrolment-card{flex-direction:column;gap:.4rem;display:flex}.enrolment-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.teacher-roster{flex-direction:column;gap:.5rem;display:flex}.class-row{flex-direction:column;gap:.6rem;display:flex}.class-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.class-name{margin-right:auto;font-weight:650}.class-head>button{order:1}.class-teachers{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.teacher-chip{background:var(--color-brass-soft);color:var(--color-brass);border-radius:999px;align-items:center;gap:.3rem;padding:.25rem .35rem .25rem .65rem;font-size:.8rem;font-weight:600;display:inline-flex}.teacher-chip-sub{background:var(--color-primary-soft);color:var(--color-primary)}.sub-badge,.makeup-badge,.moved-badge,.credited-badge{text-transform:uppercase;letter-spacing:.05em;border-radius:999px;align-items:center;padding:.05rem .4rem;font-size:.66rem;font-weight:700;display:inline-flex}.sub-badge{background:color-mix(in srgb, var(--color-brass) 22%, transparent);color:var(--color-brass);margin-left:.1rem}.makeup-badge{background:var(--color-violet-soft);color:var(--color-violet);margin-left:.4rem}.moved-badge{background:var(--color-neutral-soft);color:var(--color-muted);margin-left:.4rem}.credited-badge{background:var(--color-primary-soft);color:var(--color-primary);margin-left:.4rem}.chip-remove{width:1.15rem;height:1.15rem;color:inherit;font:inherit;cursor:pointer;opacity:.7;background:0 0;border:0;border-radius:50%;place-items:center;font-size:.95rem;line-height:1;transition:opacity .14s,background-color .14s;display:grid}.chip-remove:not(:disabled):hover{opacity:1;background:color-mix(in srgb, currentColor 18%, transparent)}.chip-remove:disabled{opacity:.4;cursor:default}.teacher-add.input,.teacher-add{border:1px dashed color-mix(in srgb, var(--color-primary) 40%, transparent);width:auto;color:var(--color-primary);cursor:pointer;background:0 0;border-radius:999px;flex:none;padding:.3rem .7rem;font-size:.8rem;font-weight:600}.teacher-add:focus{border-style:solid;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft);outline:none}.roster-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.roster-row{align-items:center;gap:.6rem;display:flex}.roster-info{flex-direction:column;flex:1;gap:.1rem;min-width:0;display:flex}.roster-name{flex-wrap:wrap;align-items:center;gap:.15rem;min-width:0;font-weight:600;display:flex}.teacher-list .roster-row{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-1);margin-bottom:.5rem;padding:.7rem .9rem}.teacher-list .roster-row>.btn{flex:none;margin-left:auto}.roster-list:not(.teacher-list) .roster-row{border-bottom:1px solid var(--color-border-soft);padding:.6rem 0}.roster-list:not(.teacher-list) .roster-row:last-child{border-bottom:0}.roster-cancelled{opacity:.55}.roster-actions{flex-wrap:wrap;justify-content:flex-end;gap:.35rem;margin-left:auto;display:flex}.roster-action.btn{padding:.3rem .6rem;font-size:.78rem}.roster-action-done{color:var(--color-success);border-color:color-mix(in srgb, var(--color-success) 40%, transparent)}.roster-action-done:not(:disabled):hover{background:var(--color-success-soft);border-color:var(--color-success)}.roster-action-missed{color:var(--color-warning);border-color:color-mix(in srgb, var(--color-warning) 40%, transparent)}.roster-action-missed:not(:disabled):hover{background:var(--color-warning-soft);border-color:var(--color-warning)}.roster-action-cancelled{color:var(--color-danger);border-color:color-mix(in srgb, var(--color-danger) 40%, transparent)}.roster-action-cancelled:not(:disabled):hover{background:var(--color-danger-soft);border-color:var(--color-danger)}.roster-action-credit{color:var(--color-brass);border-color:color-mix(in srgb, var(--color-brass) 40%, transparent)}.roster-action-credit:not(:disabled):hover{background:var(--color-brass-soft);border-color:var(--color-brass)}.roster-action-makeup{color:var(--color-violet);border-color:color-mix(in srgb, var(--color-violet) 40%, transparent)}.roster-action-makeup:not(:disabled):hover{background:var(--color-violet-soft);border-color:var(--color-violet)}.roster-teachers{border-bottom:1px solid var(--color-border-soft);flex-wrap:wrap;align-items:center;gap:.4rem;margin-bottom:.25rem;padding-bottom:.75rem;display:flex}.roster-teachers-label{text-transform:uppercase;letter-spacing:.08em;color:var(--color-muted);font-size:.72rem;font-weight:700}.group-enrol-form{flex-direction:column;gap:.6rem;display:flex}.slot-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.slot-row{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-1);justify-content:space-between;align-items:center;gap:.75rem;padding:.7rem .9rem;display:flex}.slot-row-full{opacity:.6}.slot-info{flex-direction:column;gap:.1rem;min-width:0;display:flex}.slot-name{font-weight:650}.slot-subname{font-size:.85rem}.slot-spots{font-size:.82rem}.slot-full-badge{text-transform:uppercase;letter-spacing:.06em;color:var(--color-muted);background:var(--color-neutral-soft);border-radius:999px;flex:none;padding:.25rem .6rem;font-size:.72rem;font-weight:700}.slot-join{flex:none}.zone{flex-direction:column;gap:.7rem;display:flex}.zone-head{border-bottom:1px solid var(--color-border);align-items:baseline;gap:.5rem;padding-bottom:.5rem;display:flex}.zone-name{font-family:var(--font-serif);color:var(--color-text);font-size:1.15rem;font-style:italic}.zone-hint{color:var(--color-muted);margin-left:auto;font-size:.74rem}.settings-block{flex-direction:column;gap:.5rem;display:flex}.prog-list{flex-direction:column;gap:.6rem;display:flex}.prog{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-1);overflow:hidden}.prog-top{align-items:flex-start;gap:.5rem;padding:.85rem .95rem;display:flex}.prog-main{flex:1;min-width:0}.prog-name{flex-wrap:wrap;align-items:center;gap:.5rem;font-weight:650;display:flex}.prog-meta{color:var(--color-muted);font-variant-numeric:tabular-nums;margin-top:.1rem;font-size:.84rem}.kind-badge{letter-spacing:.02em;border-radius:999px;align-items:center;padding:.12rem .5rem;font-size:.7rem;font-weight:700;display:inline-flex}.kind-group{background:var(--color-primary-soft);color:var(--color-primary)}.kind-private{background:var(--color-neutral-soft);color:var(--color-muted)}.prog-classes{border-top:1px solid var(--color-border-soft);background:var(--color-surface-2);flex-direction:column;padding:.3rem .55rem .5rem;display:flex}.prog-classes .class-row{padding:.55rem .45rem}.prog-classes .class-row+.class-row{border-top:1px solid var(--color-border-soft)}.prog-noclasses{padding:.5rem .45rem}.class-when{color:var(--color-muted);font-variant-numeric:tabular-nums;font-size:.8rem}.spots-badge{background:var(--color-info-soft);color:var(--color-info);border-radius:999px;align-items:center;padding:.05rem .45rem;font-size:.72rem;font-weight:600;display:inline-flex}.add-class{align-self:flex-start;margin:.15rem .15rem .1rem}.lang-row{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.lang-label{font-size:.9rem;font-weight:600}@media (width>=768px){h1{font-size:1.65rem}}@media (prefers-reduced-motion:reduce){*{transition-duration:.001ms!important;animation-duration:.001ms!important}}.schedule-page{flex-direction:column;gap:.75rem;width:100%;max-width:72rem;margin:0 auto;padding:1rem;display:flex}.schedule-header{align-items:center;gap:.5rem;display:flex}.schedule-title{margin:0;font-size:1.1rem}.schedule-controls{flex-wrap:wrap;align-items:flex-end;gap:.75rem;display:flex}.field-inline{flex-direction:column;gap:.2rem}.field-inline>span{color:var(--color-muted);font-size:.72rem}.schedule-legend{color:var(--color-muted);align-items:center;gap:.35rem;font-size:.72rem;display:inline-flex}.schedule-legend:before{content:"";background:var(--color-success-soft);border:1px solid var(--color-success);border-radius:4px;width:.9rem;height:.9rem}.board-scroll{-webkit-overflow-scrolling:touch;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);max-height:max(22rem,100dvh - 19rem);box-shadow:var(--shadow-1);overflow:auto}.board{min-width:560px;display:grid}.board-corner{z-index:6;background:var(--color-surface-2);border-bottom:1px solid var(--color-border);position:sticky;top:0;left:0}.board-col-head{z-index:5;text-align:center;border-bottom:1px solid var(--color-border);border-left:1px solid var(--color-border-soft);background:var(--color-surface-2);padding:.4rem 0;font-size:.78rem;font-weight:600;position:sticky;top:0}.board-gutter{z-index:4;background:var(--color-surface);position:sticky;left:0}.board-time{color:var(--color-muted);text-align:right;border-top:1px solid var(--color-border-soft);box-sizing:border-box;padding-top:2px;padding-right:.3rem;font-size:.66rem;line-height:1}.board-col{border-left:1px solid var(--color-border-soft);position:relative}.board-cell{border-top:1px solid var(--color-border-soft);box-sizing:border-box}.board-cell-free{background:var(--color-success-soft)}.board-cell-pick{cursor:pointer;text-align:left;width:100%;font:inherit;background:0 0;border-bottom:0;border-left:0;border-right:0;padding:0;display:block}.board-cell-pick.board-cell-free{background:var(--color-success-soft)}.board-cell-plus{font-variant-numeric:tabular-nums;color:var(--color-primary);opacity:0;padding:.2rem .4rem;font-size:.75rem;transition:opacity .12s;display:block}.board-cell-pick:hover,.board-cell-pick:focus-visible{background:var(--color-primary-soft);outline:none}.board-cell-pick:hover .board-cell-plus,.board-cell-pick:focus-visible .board-cell-plus{opacity:1}.board-block{border:1px solid var(--color-border);border-left:3px solid var(--color-muted);text-align:left;cursor:pointer;color:var(--color-text);background:var(--color-surface);box-shadow:var(--shadow-1);border-radius:8px;flex-direction:column;gap:1px;padding:3px 6px;display:flex;position:absolute;left:3px;right:3px;overflow:hidden}.board-block-group{border-left-color:var(--color-primary)}.board-block-private{border-left-color:var(--color-brass)}.board-block-full{background:var(--color-primary);border-color:var(--color-primary-dark);color:var(--color-primary-ink)}.board-block-full .board-block-meta{color:inherit}.board-block-name{white-space:nowrap;text-overflow:ellipsis;font-size:.72rem;font-weight:600;overflow:hidden}.board-block-meta{color:var(--color-text-2);white-space:nowrap;text-overflow:ellipsis;font-size:.62rem;overflow:hidden}.schedule-add{margin-left:auto}.board-roster{flex-wrap:wrap;gap:.35rem;margin-top:.25rem;display:flex}.board-move{border-top:1px solid var(--color-border-soft);padding-top:.5rem}.board-move>summary{cursor:pointer;color:var(--color-primary);font-size:.8rem}.board-archive{color:var(--color-danger);align-self:flex-start}.board-rails{flex-direction:column;gap:.35rem;display:flex}.rail-hint{color:var(--color-muted);font-size:.72rem}.rail{gap:.35rem;padding-bottom:.15rem;display:flex;overflow-x:auto}.rail-chip{cursor:grab;white-space:nowrap;user-select:none;flex:none}.rail-chip:active{cursor:grabbing}.rail-chip-teacher{background:var(--color-primary-soft)}.rail-chip-student{background:var(--color-info-soft)}.board-block-dragging{z-index:3;opacity:.85;box-shadow:var(--shadow-3)}.board-block-resize{cursor:ns-resize;touch-action:none;justify-content:center;align-items:flex-end;height:12px;display:flex;position:absolute;bottom:0;left:0;right:0}.board-block-resize:after{content:"";opacity:0;background:currentColor;border-radius:2px;width:26px;height:3px;margin-bottom:2px;transition:opacity .15s}.board-block:hover .board-block-resize:after,.board-block-dragging .board-block-resize:after{opacity:.45}.check-row{cursor:pointer;align-items:center;gap:.5rem;font-size:.88rem;display:flex}.check-row input{width:1.05rem;height:1.05rem;accent-color:var(--color-primary)}.board-flags{border-top:1px solid var(--color-border-soft);flex-direction:column;gap:.4rem;padding-top:.5rem;display:flex}.closure-chip{text-transform:uppercase;letter-spacing:.05em;font-size:.64rem}.closure-public{background:var(--color-info-soft);color:var(--color-info)}.closure-school{background:var(--color-warning-soft);color:var(--color-warning)}.closure-adhoc{background:var(--color-danger-soft);color:var(--color-danger)}.cal-head-closed{color:var(--color-muted);text-decoration:line-through}.cal-head-closable{cursor:pointer}.cal-col-closed .cal-cell{background:repeating-linear-gradient(-45deg, var(--color-surface-2), var(--color-surface-2) 6px, var(--color-border-soft) 6px, var(--color-border-soft) 7px)}.cal-closure-label{z-index:1;text-transform:uppercase;letter-spacing:.05em;color:var(--color-muted);white-space:nowrap;text-overflow:ellipsis;pointer-events:none;font-size:.62rem;font-weight:650;position:absolute;top:2px;left:4px;right:4px;overflow:hidden}.settings-menu{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-1);flex-direction:column;display:flex;overflow:hidden}.settings-menu-row{color:var(--color-text);border-top:1px solid var(--color-border-soft);justify-content:space-between;align-items:center;gap:.75rem;padding:.85rem 1rem;transition:background-color .14s;display:flex}.settings-menu-row:first-child{border-top:none}.settings-menu-row:hover{background:var(--color-surface-2)}.settings-menu-info{flex-direction:column;gap:.1rem;min-width:0;display:flex}.settings-menu-label{font-weight:650}.settings-menu-hint{color:var(--color-muted);font-size:.8rem}.settings-menu-chevron{color:var(--color-muted);flex:none;font-size:1.2rem}.synced-summary{justify-content:space-between;align-items:center;gap:.75rem;padding:.6rem .9rem;display:flex}.app-error{background:var(--color-bg);justify-content:center;align-items:center;min-height:100dvh;padding:1.5rem;display:flex}.app-error-card{text-align:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);max-width:24rem;box-shadow:var(--shadow-1);flex-direction:column;align-items:center;gap:1rem;padding:2rem 1.5rem;display:flex}.app-error-title{font-family:var(--font-serif);margin:0;font-size:1.4rem;font-weight:600}.auth-stack{flex-direction:column;align-items:center;gap:1rem;width:100%;max-width:24rem;display:flex}.landing-art{filter:drop-shadow(0 6px 14px #24141c14);width:100%;max-width:21rem;height:auto}.la-kid{transform-origin:112px 212px;animation:5.5s ease-in-out infinite alternate la-sway}.la-kid-horn{transform-origin:286px 212px;animation-duration:6.5s;animation-delay:-1.5s}.la-note{opacity:0;animation:4.5s ease-in-out infinite la-float}.la-note-2{animation-duration:5.2s;animation-delay:1.1s}.la-note-3{animation-duration:4.1s;animation-delay:2.2s}@keyframes la-sway{0%{transform:rotate(-1.6deg)}to{transform:rotate(1.6deg)}}@keyframes la-float{0%{opacity:0;transform:translateY(6px)}25%{opacity:.9}70%{opacity:.7}to{opacity:0;transform:translateY(-26px)}}@media (prefers-reduced-motion:reduce){.la-kid,.la-note{animation:none}.la-note{opacity:.85}}.help-hero{text-align:center;flex-direction:column;align-items:center;gap:.5rem;display:flex}.help-hero .landing-art{max-width:15rem}.help-hero .muted{max-width:40ch}.help-toc{flex-wrap:wrap;gap:.4rem;padding:.5rem 0 .25rem;display:flex}.help-toc a{color:var(--color-text-2);background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;padding:.25rem .7rem;font-size:.82rem;font-weight:600;text-decoration:none}.help-toc a:hover{border-color:var(--color-primary);color:var(--color-primary)}.help-section{border-top:1px solid var(--color-border-soft);padding-top:.5rem;scroll-margin-top:4.5rem}.help-h2{align-items:baseline;gap:.5rem;margin:.5rem 0 .1rem;font-size:1.2rem;display:flex}.help-num{font-family:var(--font-serif);color:var(--color-primary);font-size:.95rem;font-weight:600}.help-kicker{color:var(--color-muted);margin:0 0 .4rem;font-size:.9rem}.help-note{background:var(--color-surface);border:1px solid var(--color-border-soft);border-left:3px solid var(--color-primary);border-radius:var(--radius-sm);margin:.75rem 0;padding:.7rem .9rem}.help-note p{margin:0}.help-note-good{border-left-color:var(--color-success)}.help-note-brass{border-left-color:var(--color-brass)}.help-table-wrap{margin:.6rem 0;overflow-x:auto}.help-table{border-collapse:collapse;width:100%;font-size:.9rem}.help-table th,.help-table td{text-align:left;border-bottom:1px solid var(--color-border);vertical-align:top;padding:.5rem .7rem}.help-table th{text-transform:uppercase;letter-spacing:.06em;color:var(--color-muted);font-size:.68rem}.help-table td:first-child{white-space:nowrap;font-weight:650}.landing{background:radial-gradient(120% 80% at 85% -10%, var(--color-primary-soft) 0%, transparent 55%), radial-gradient(90% 60% at -5% 0%, var(--color-brass-soft) 0%, transparent 45%), var(--color-bg);flex-direction:column;min-height:100dvh;display:flex}.landing-topbar,.landing-foot{justify-content:space-between;align-items:center;gap:1rem;width:100%;max-width:68rem;margin:0 auto;display:flex}.landing-topbar{padding:1rem 1.25rem}.landing-topbar-actions{align-items:center;gap:.6rem;display:flex}.landing-lang .segmented-btn{padding:.3rem .6rem;font-size:.8rem}.landing-main{flex-direction:column;flex:1;gap:3rem;width:100%;max-width:68rem;margin:0 auto;padding:1rem 1.25rem 3rem;display:flex}.landing-hero{text-align:center;flex-direction:column;align-items:center;gap:1.5rem;padding-top:1.5rem;display:flex}.landing-hero-copy{max-width:40rem}.landing-title{font-family:var(--font-serif);letter-spacing:-.01em;margin:0 0 .75rem;font-size:clamp(2rem,5vw,3.1rem);font-weight:400;line-height:1.1}.landing-lead{color:var(--color-text-2);margin:0;font-size:clamp(1.05rem,2vw,1.3rem);line-height:1.5}.landing-cta{flex-wrap:wrap;gap:.75rem;margin-top:1.5rem;display:flex}.landing-cta-center{justify-content:center}.landing-cta .btn{padding:.7rem 1.4rem;font-size:1rem}.landing-cta-note{margin:.75rem 0 0;font-size:.875rem}.landing-hero-art{width:min(360px,80%)}.landing-hero-art .landing-art{width:100%;height:auto}@media (width>=820px){.landing-hero{text-align:left;flex-direction:row;justify-content:space-between;gap:2.5rem;padding-top:2.5rem}.landing-hero-copy{flex:1}.landing-hero-art{flex:0 0 42%;width:auto}.landing-cta{justify-content:flex-start}}.landing-features{grid-template-columns:1fr;gap:.9rem;margin:0;padding:0;list-style:none;display:grid}@media (width>=620px){.landing-features{grid-template-columns:1fr 1fr}}@media (width>=940px){.landing-features{grid-template-columns:1fr 1fr 1fr}}.landing-feature{flex-direction:column;gap:.4rem;display:flex}.landing-feature-title{font-size:1.02rem;font-weight:650}.landing-feature .muted{font-size:.92rem;line-height:1.5}.landing-h2{font-family:var(--font-serif);margin:0 0 1rem;font-size:1.7rem;font-weight:400}.landing-why-list{color:var(--color-text-2);flex-direction:column;gap:.5rem;margin:0;padding-left:1.1rem;line-height:1.55;display:flex}.landing-why-list strong{color:var(--color-text)}.landing-final{text-align:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);padding:2.5rem 1.5rem}.landing-final .landing-lead{max-width:34rem;margin:0 auto}.landing-foot{border-top:1px solid var(--color-border);padding:1.25rem}.landing-foot .app-brand{font-size:1.05rem}a.segmented-btn{color:inherit;text-decoration:none}.landing-foot-links{gap:1rem;font-size:.9rem;display:flex}.landing-foot-links a{color:var(--color-muted);text-decoration:none}.landing-foot-links a:hover{color:var(--color-primary)}@media (width<=640px){.landing-guide-link{display:none}}.landing-foot-signin{display:none}@media (width<=480px){.landing-topbar{padding-inline:1rem}.landing-topbar-actions{gap:.4rem}.landing-signin{display:none}.landing-foot-signin{display:inline}.landing-foot{flex-wrap:wrap}}.landing-hero-art .pm{width:100%}.pm{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-2);overflow:hidden}.pm-bar{border-bottom:1px solid var(--color-border-soft);background:var(--color-surface-2);align-items:center;gap:.4rem;padding:.5rem .75rem;display:flex}.pm-dot{background:var(--color-border);border-radius:50%;width:8px;height:8px}.pm-dot:first-child{background:color-mix(in srgb, var(--color-primary) 55%, white)}.pm-bar-title{color:var(--color-muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:.72rem}.pm-grid{background:var(--color-border-soft);grid-template-columns:2.2rem repeat(5,minmax(0,1fr));gap:1px;padding:1px;display:grid}.pm-corner,.pm-day,.pm-time,.pm-cell{background:var(--color-surface)}.pm-day{color:var(--color-text-2);text-align:center;padding:.35rem 0;font-size:.68rem;font-weight:600}.pm-time{color:var(--color-muted);text-align:right;font-variant-numeric:tabular-nums;padding:.3rem .25rem 0 0;font-size:.56rem}.pm-cell{min-height:2.6rem;padding:2px}.pm-block{border:1px solid var(--color-border);border-left:3px solid var(--color-muted);min-width:0;height:100%;box-shadow:var(--shadow-1);border-radius:6px;flex-direction:column;gap:1px;padding:3px 5px;display:flex;overflow:hidden}.pm-block-private{border-left-color:var(--color-brass)}.pm-block-group{border-left-color:var(--color-primary)}.pm-block-name{white-space:nowrap;text-overflow:ellipsis;font-size:.6rem;font-weight:600;overflow:hidden}.pm-block-sub{color:var(--color-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.54rem;overflow:hidden}.landing-spotlight{text-align:center;background:radial-gradient(120% 120% at 50% 0%, var(--color-primary-soft) 0%, transparent 70%), var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);padding:2.75rem 1.5rem}.landing-spotlight-eyebrow{text-transform:uppercase;letter-spacing:.12em;color:var(--color-primary);margin:0 0 .5rem;font-size:.72rem;font-weight:600}.landing-spotlight-title{font-family:var(--font-serif);margin:0 0 .75rem;font-size:clamp(1.8rem,4vw,2.6rem);font-weight:400;line-height:1.1}.landing-spotlight .landing-lead{max-width:40rem;margin:0 auto}.landing-final .landing-art{width:min(220px,60%);height:auto;margin:0 auto .75rem;display:block}.setup-card{border-color:color-mix(in srgb, var(--color-primary) 25%, var(--color-border));background:radial-gradient(140% 120% at 100% 0%, var(--color-primary-soft) 0%, transparent 55%), var(--color-surface);flex-direction:column;gap:.9rem;max-width:34rem;margin:0 auto 1rem;display:flex}.setup-head{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.setup-title{font-family:var(--font-serif);margin:0 0 .15rem;font-size:1.35rem;font-weight:400}.setup-steps{flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.setup-step{opacity:.55;align-items:flex-start;gap:.65rem;display:flex}.setup-step-active,.setup-step-done{opacity:1}.setup-step-marker{background:var(--color-neutral-soft);width:1.55rem;height:1.55rem;color:var(--color-muted);border-radius:50%;flex:none;justify-content:center;align-items:center;margin-top:.05rem;font-size:.8rem;font-weight:700;display:inline-flex}.setup-step-done .setup-step-marker{background:var(--color-success-soft);color:var(--color-success)}.setup-step-active .setup-step-marker{background:var(--color-primary);color:var(--color-primary-ink)}.setup-step-body{flex-direction:column;flex:1;gap:.35rem;min-width:0;display:flex}.setup-step-title{font-weight:650}.setup-templates{flex-wrap:wrap;gap:.4rem;display:flex}.setup-mini-form{flex-direction:column;gap:.6rem;margin-top:.25rem;display:flex}.setup-mini-actions{align-items:center;gap:.5rem;display:flex}.setup-mini-actions-wrap{flex-wrap:wrap}.quick-back{align-self:flex-start;margin-bottom:.25rem;padding-left:.25rem}.quick-menu{flex-direction:column;gap:.6rem;display:flex}.quick-choice{text-align:left;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);cursor:pointer;flex-direction:column;gap:.15rem;width:100%;padding:.85rem 1rem;transition:border-color .15s,background-color .15s;display:flex}.quick-choice:hover{border-color:color-mix(in srgb, var(--color-primary) 40%, var(--color-border));background:var(--color-primary-soft)}.quick-choice-title{font-size:1rem;font-weight:650}.quick-choice-hint{font-size:.85rem}.quick-success{flex-direction:column;gap:.9rem;display:flex}.quick-success-title{margin:0;font-weight:650}.reminder-hours-row{align-items:flex-end}.badge-reminder-sent{background:var(--color-success-soft);color:var(--color-success)}.badge-reminder-pending,.badge-reminder-sending{background:var(--color-neutral-soft);color:var(--color-muted)}.badge-reminder-failed{background:var(--color-danger-soft);color:var(--color-danger)}.last-reminder{line-height:1.6}.tabular{font-variant-numeric:tabular-nums}.page-wide{max-width:76rem}.detail-header{align-items:flex-start}.detail-header .identity-body h1{margin:0}.detail-layout{grid-template-columns:minmax(0,1fr) 18rem;align-items:start;gap:1.25rem;display:grid}.detail-main{flex-direction:column;gap:.75rem;min-width:0;display:flex}.detail-section-title{font-family:var(--font-serif);margin:0;font-size:1.2rem;font-weight:500}.detail-aside{flex-direction:column;gap:0;padding:.25rem 1rem;display:flex}.aside-block{border-top:1px solid var(--color-border-soft);flex-direction:column;gap:.5rem;padding:.85rem 0;display:flex}.aside-block:first-child,.detail-notes+.aside-block{border-top:0}.aside-block .section-title{margin:0}.aside-row{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.aside-row .identity-body{flex-direction:column;min-width:0;display:flex}.aside-wrap{overflow-wrap:anywhere}.detail-notes{color:var(--color-text-2);border-bottom:1px solid var(--color-border-soft);margin:0;padding:.85rem 0}.avail-summary{flex-direction:column;gap:.25rem;margin:0;font-size:.9rem;display:flex}.avail-summary>div{grid-template-columns:3rem 1fr;gap:.5rem;display:grid}.avail-summary dt{color:var(--color-muted)}.avail-summary dd{margin:0}.enrolment-when{color:var(--color-text-2);margin:0}.enrolment-billing{flex-wrap:wrap;gap:.35rem .9rem;font-size:.9rem;display:flex}.enrolment-foot{border-top:1px solid var(--color-border-soft);justify-content:flex-end;align-items:center;gap:.5rem;margin-top:.15rem;padding-top:.6rem;display:flex}.enrolment-ended{opacity:.75}.ended-enrolments summary{cursor:pointer;padding:.25rem 0}.ended-enrolments .list{margin-top:.5rem}@media (width<=760px){.detail-layout{grid-template-columns:minmax(0,1fr)}}.badge-info{background:var(--color-info-soft);color:var(--color-info)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.segmented-count{color:var(--color-muted);margin-left:.35rem;font-weight:500}.billing-summary{background:var(--color-border-soft);border:1px solid var(--color-border-soft);border-radius:var(--radius);grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;display:grid;overflow:hidden}.billing-summary>div{background:var(--color-surface);flex-direction:column;gap:.1rem;min-width:0;padding:.85rem 1rem;display:flex}.summary-label{text-transform:uppercase;letter-spacing:.08em;color:var(--color-muted);font-size:.72rem;font-weight:600}.summary-value{font-family:var(--font-serif);font-size:1.55rem;font-weight:500;line-height:1.2}.summary-warn{color:var(--color-warning)}.billing-summary .muted{font-size:.82rem}.billing-tools{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.billing-search{width:16rem;max-width:100%;margin-left:auto}.invoice-table{padding:0;overflow:visible}.invoice-tr{border-top:1px solid var(--color-border-soft);grid-template-columns:minmax(0,1.4fr) minmax(0,1.4fr) 6.5rem 9.5rem 6.5rem 7.5rem;align-items:center;gap:.75rem;padding:.55rem 1rem;font-size:.92rem;display:grid}.invoice-th{text-transform:uppercase;letter-spacing:.06em;color:var(--color-muted);border-top:0;border-bottom:1px solid var(--color-border);font-size:.72rem;font-weight:600}.invoice-th+.invoice-tr{border-top:0}.invoice-tr .num{text-align:right}.invoice-who{align-items:center;gap:.55rem;min-width:0;font-weight:500;display:flex}.invoice-who a,.invoice-who>span:last-child{text-overflow:ellipsis;white-space:nowrap;color:var(--color-text);overflow:hidden}.invoice-for{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.invoice-ref{font-variant-numeric:tabular-nums}.invoice-amt{font-weight:600}.invoice-acts{justify-content:flex-end;align-items:center;gap:.35rem;display:flex}@media (width<=760px){.billing-summary{grid-template-columns:minmax(0,1fr)}.billing-search{width:100%;margin-left:0}.invoice-th{display:none}.invoice-tr{border-top:1px solid var(--color-border-soft);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"who amt""for for""state acts";gap:.3rem .75rem}.invoice-th+.invoice-tr{border-top:0}.invoice-who{grid-area:who}.invoice-amt{grid-area:amt}.invoice-for{grid-area:for}.invoice-sent{display:none}.invoice-state{grid-area:state}.invoice-acts{grid-area:acts}}.cal-evt-stack{z-index:1}.lesson-stack{border:1px solid var(--color-border);border-left:3px solid var(--color-text-2);background:var(--color-surface);min-width:0;height:100%;box-shadow:var(--shadow-1);border-radius:8px;flex-direction:column;flex:1;padding:.2rem .3rem .25rem .4rem;font-size:.76rem;line-height:1.3;display:flex;overflow-y:auto}.lesson-stack-head{white-space:nowrap;align-items:baseline;gap:.3rem;display:flex;overflow:hidden}.lesson-stack-count{color:var(--color-muted);text-overflow:ellipsis;font-size:.68rem;overflow:hidden}.lesson-stack-row{text-align:left;border:0;border-left:2px solid var(--color-muted);width:100%;font:inherit;color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;cursor:pointer;background:0 0;border-radius:0;margin-top:.15rem;padding:.05rem 0 .05rem .35rem;font-weight:500;text-decoration:none;display:block;overflow:hidden}.lesson-stack-row:hover{background:var(--color-border-soft)}.lesson-stack-row.session-group{border-left-color:var(--color-primary)}.lesson-stack-row.session-private{border-left-color:var(--color-brass)}.lesson-stack-row.session-sig-cancelled{color:var(--color-muted);text-decoration:line-through}.lesson-stack-pending{color:var(--color-muted);border-left-style:dashed}.calendar-week-count{color:var(--color-muted);font-variant-numeric:tabular-nums;font-size:.85rem}.calendar-title{flex-direction:column;min-width:0;display:flex}.calendar-add{align-items:center;gap:.3rem;display:inline-flex}@media (width<=480px){.calendar-add-label{display:none}.calendar-add{justify-content:center;width:2.2rem;padding-inline:0}}.rail-students{align-items:center}.rail-search{flex:0 0 12rem}.student-picker{flex-direction:column;gap:.4rem;display:flex}.picker-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.picker-row{border-radius:var(--radius-sm);width:100%;font:inherit;color:var(--color-text);text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.55rem;padding:.35rem .45rem;display:grid}.picker-row:not(:disabled):hover{background:var(--color-primary-soft)}.picker-row:disabled{cursor:default}.picker-row-busy{opacity:.6}.picker-name{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.picker-note{color:var(--color-muted);text-align:right;text-overflow:ellipsis;white-space:nowrap;max-width:14rem;font-size:.8rem;overflow:hidden}.picker-more{font-size:.82rem}.enrolment-title{flex-direction:column;min-width:0;display:flex}.enrolment-title .muted{font-size:.85rem}.enrolment-unplaced{border-radius:var(--radius-sm);background:var(--color-warning-soft);color:var(--color-warning);margin:0;padding:.45rem .65rem;font-size:.9rem}.enrolment-unplaced a{color:inherit;font-weight:600}.public-brand{color:inherit;text-decoration:none}.public-nav{gap:.9rem;font-size:.9rem;display:flex}.public-nav a{color:var(--color-muted);text-decoration:none}.public-nav a:hover{color:var(--color-primary)}.public-main{flex:1;width:100%;max-width:48rem;padding-block:1.5rem 3rem}.public-h1{font-family:var(--font-serif);margin:0;font-size:clamp(1.8rem,4vw,2.4rem);font-weight:400;line-height:1.15}.public-eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--color-primary);margin:0;font-size:.8rem;font-weight:600}.public-intro{color:var(--color-muted);margin:0;font-size:1.08rem;line-height:1.6}.public-crumb a,.public-intro a{color:var(--color-primary)}.public-cta{flex-wrap:wrap;gap:.6rem;margin-top:1.5rem;display:flex}.article-prose{font-size:1.02rem;line-height:1.7}.article-prose h2{font-family:var(--font-serif);margin:2rem 0 .5rem;font-size:1.45rem;font-weight:400}.article-prose h3{margin:1.5rem 0 .4rem;font-size:1.08rem}.article-prose p,.article-prose ul,.article-prose ol{margin:.6rem 0}.article-prose li+li{margin-top:.3rem}.article-prose a{color:var(--color-primary)}.article-prose blockquote{background:var(--color-surface);border:1px solid var(--color-border-soft);border-left:3px solid var(--color-primary);border-radius:var(--radius-sm);margin:1rem 0;padding:.7rem .9rem}.article-prose blockquote p{margin:0}.article-prose table{border-collapse:collapse;width:100%;margin:1rem 0;font-size:.95rem}.article-prose th,.article-prose td{text-align:left;border-bottom:1px solid var(--color-border);vertical-align:top;padding:.5rem .6rem}.article-prose th{letter-spacing:.04em;text-transform:uppercase;color:var(--color-muted);font-size:.8rem}.case-list{gap:.8rem;margin:1rem 0 0;padding:0;list-style:none;display:grid}.case-card-link{color:inherit;text-decoration:none;display:block}.case-card-title{font-family:var(--font-serif);margin:0 0 .3rem;font-size:1.3rem;font-weight:400}.case-card:hover{border-color:color-mix(in srgb, var(--color-primary) 40%, var(--color-border))}.case-card-meta{color:var(--color-muted);margin-top:.5rem;font-size:.8rem;display:block}@media (width<=640px){.public-nav{display:none}}
