:root{--bg:#f2f4ef;--surface:#fff;--ink:#14231d;--muted:#4a564f;--line:#e2e6df;--field-line:#8a968e;--primary:#244d3b;--primary-press:#1a3a2c;--primary-tint:#e7f0e9;--amber:#8a4b08;--amber-tint:#fff4df;--red:#a32a1f;--red-tint:#fdecea;--green:#1f6b3f;--green-tint:#e7f3e6;--neutral-tint:#eef0ec;--radius:14px;--radius-small:10px;--shadow:0 1px 2px #14231d0f, 0 1px 1px #14231d0a;--ease:cubic-bezier(.23, 1, .32, 1);--tabbar-height:64px;--tabbar-offset:max(12px, calc(env(safe-area-inset-bottom) - 10px));--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, "Segoe UI", Roboto, sans-serif;--primary-fill:#244d3b;--on-primary:#fff;--red-fill:#a32a1f;--toast:#14231d;--on-toast:#fff;--scrim:#14231d73;--shadow-raised:0 8px 24px #14231d29;--progress:#b8740f;--card-border:transparent;--bar:#ffffff94;--topbar-bg:#f2f4efc7;--sidebar-bg:#e4e9e1d1;--sheen:linear-gradient(180deg, #ffffff80, transparent 50%);--glass-shadow:0 10px 30px #14231d29, 0 0 0 .5px #14231d1a, inset 0 1px 0 #ffffffd9;--glass-ring:0 2px 10px #14231d1a, 0 0 0 .5px #14231d1a, inset 0 1px 0 #ffffffe6;--primary-glow:0 4px 14px #244d3b59, inset 0 1px 0 #ffffff59;--tab-selected:#244d3b29;--menu-bg:#ffffffdb;--fill:#14231d14;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#0c110f;--surface:#18201c;--ink:#edf2ee;--muted:#a2aea7;--line:#2a342f;--field-line:#6b7871;--primary:#8fd0ad;--primary-fill:#3a7d5e;--primary-press:#2f6b50;--primary-tint:#1f3a2d;--amber:#f0b45e;--amber-tint:#3a2a12;--red:#ff8a7a;--red-fill:#b3382c;--red-tint:#3d1d19;--green:#7cc995;--green-tint:#1c3524;--neutral-tint:#232c27;--shadow:none;--shadow-raised:0 8px 24px #00000080;--toast:#edf2ee;--on-toast:#14231d;--scrim:#0000008c;--progress:#d9952e;--bar:#222c2794;--topbar-bg:#0c110fb8;--sidebar-bg:#18201cd1;--sheen:linear-gradient(180deg, #ffffff1f, transparent 50%);--glass-shadow:0 10px 30px #00000080, 0 0 0 .5px #ffffff14, inset 0 1px 0 #ffffff29;--glass-ring:0 2px 10px #0006, 0 0 0 .5px #ffffff14, inset 0 1px 0 #ffffff24;--primary-glow:0 4px 14px #00000073, inset 0 1px 0 #ffffff40;--tab-selected:#8fd0ad2e;--menu-bg:#222c27db;--fill:#edf2ee1a}select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23a2aea7' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")}}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){:root{--bar:var(--surface);--topbar-bg:var(--bg);--sidebar-bg:var(--surface);--menu-bg:var(--surface)}}@media (prefers-reduced-transparency:reduce),(prefers-contrast:more){:root{--bar:var(--surface);--topbar-bg:var(--bg);--sidebar-bg:var(--surface);--menu-bg:var(--surface);--sheen:none}}@media (prefers-contrast:more){:root{--card-border:var(--field-line)}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.45}h1,h2,h3,p{margin:0}button,input,select,textarea{font:inherit;color:inherit}button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button,summary{cursor:pointer}button:disabled{cursor:default;opacity:.55}a{color:inherit;text-underline-offset:3px}:focus-visible{outline:3px solid var(--primary);outline-offset:2px}svg{flex:none}.meta,.small{color:var(--muted);font-size:14px}.muted{color:var(--muted)}.text-amber{color:var(--amber)}.text-green{color:var(--green)}.pre-wrap{white-space:pre-wrap}.row{align-items:center;gap:8px;display:flex}.row.wrap{flex-wrap:wrap}.spread{justify-content:space-between}.wide{grid-column:1/-1}.full{width:100%}.eyebrow{color:var(--muted);font-size:14px;font-weight:500}.app-shell{min-height:100dvh}.main-shell{min-width:0;padding-bottom:calc(var(--tabbar-height) + var(--tabbar-offset) + 16px)}main{max-width:720px;margin:0 auto;padding:12px 16px 16px}.sidebar{display:none}.topbar{z-index:20;min-height:60px;padding:calc(8px + env(safe-area-inset-top)) 16px 8px;background:var(--topbar-bg);-webkit-backdrop-filter:blur(20px)saturate(180%);backdrop-filter:blur(20px)saturate(180%);justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.topbar-title{flex-direction:column-reverse;display:flex}.topbar-title h1{letter-spacing:-.021em;font-size:30px;font-weight:700;line-height:1.12}.topbar-title p{color:var(--muted);letter-spacing:.02em;text-transform:uppercase;font-size:14px;font-weight:600}.topbar-actions{align-items:center;gap:8px;display:flex}.add-btn{background:var(--primary-fill);width:44px;height:44px;box-shadow:var(--primary-glow);color:var(--on-primary);border:0;border-radius:50%;justify-content:center;align-items:center;transition:transform 80ms ease-out,background-color .15s ease-out;display:inline-flex}.add-btn:active{background:var(--primary-press);transform:scale(.95)}.add-label{display:none}.avatar-btn{background:var(--bar);width:44px;height:44px;box-shadow:var(--glass-ring);color:var(--ink);border:0;border-radius:50%;font-size:14px;font-weight:700}.demo-bar{border-radius:var(--radius-small);background:var(--neutral-tint);color:var(--muted);justify-content:space-between;align-items:center;gap:12px;margin:0 16px;padding:8px 12px;font-size:14px;display:flex}.demo-bar a{min-width:44px;min-height:44px;color:var(--ink);flex:none;align-items:center;margin:-8px 0;font-weight:500;display:inline-flex}.tabbar{right:16px;bottom:var(--tabbar-offset);z-index:30;max-width:480px;height:var(--tabbar-height);box-sizing:border-box;background:var(--bar);-webkit-backdrop-filter:blur(16px)saturate(190%);backdrop-filter:blur(16px)saturate(190%);box-shadow:var(--glass-shadow);border-radius:34px;grid-template-columns:repeat(4,1fr);margin:0 auto;padding:4px;display:grid;position:fixed;left:16px}.tabbar:before{content:"";border-radius:inherit;background:var(--sheen);pointer-events:none;position:absolute;inset:0}.tabbar button{min-width:0;color:var(--muted);background:0 0;border:0;border-radius:30px;flex-direction:column;justify-content:center;align-items:center;gap:1px;font-size:14px;font-weight:500;transition:background-color .15s ease-out;display:flex;position:relative}.tabbar button.active{background:var(--tab-selected);color:var(--primary);font-weight:700}.tabbar button.active svg{stroke-width:2.3px}.tabbar button:active{background:var(--tab-selected)}.button{border-radius:var(--radius-small);text-align:center;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;min-height:48px;padding:10px 16px;font-size:16px;font-weight:500;line-height:1.2;text-decoration:none;transition:transform 80ms ease-out,background-color .15s ease-out;display:inline-flex}.button:active:not(:disabled),.chip:active:not(:disabled),.icon-btn:active:not(:disabled){transform:scale(.98)}.button.primary{background:var(--primary-fill);color:var(--on-primary)}.button.primary:active:not(:disabled){background:var(--primary-press)}.button.secondary{background:var(--primary-tint);color:var(--primary)}.button.secondary:active:not(:disabled){background:color-mix(in srgb, var(--primary-tint) 80%, var(--primary))}.button.danger{background:var(--red-fill);color:var(--on-primary)}.button.icon-only{flex:none;width:48px;padding:0}.button.small-icon{width:44px;min-height:44px}.button.small-button{white-space:nowrap;min-height:44px;padding:8px 12px;font-size:14px}.text-button{min-height:44px;color:var(--primary);background:0 0;border:0;align-items:center;gap:6px;padding:0;font-size:14px;font-weight:500;display:inline-flex}.icon-btn{border-radius:var(--radius-small);width:44px;height:44px;color:var(--ink);background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;transition:transform 80ms ease-out;display:inline-flex}.chip{background:var(--fill);border:1px solid #0000;border-radius:22px;flex:none;min-height:44px;padding:8px 14px;font-size:14px;font-weight:500;transition:transform 80ms ease-out}.chip.selected{border-color:var(--primary-fill);background:var(--primary-fill);color:var(--on-primary)}.chip-row{scrollbar-width:none;gap:8px;margin:0 -16px;padding:2px 16px;display:flex;overflow-x:auto}.chip-row::-webkit-scrollbar{display:none}.segmented{border-radius:var(--radius-small);background:var(--neutral-tint);padding:3px;display:inline-flex}.segmented button{min-height:38px;color:var(--muted);background:0 0;border:0;border-radius:8px;padding:6px 14px;font-size:14px;font-weight:500}.segmented .selected{background:var(--surface);box-shadow:var(--shadow);color:var(--ink);font-weight:700}.wide-segments{grid-template-columns:repeat(3,1fr);width:100%;display:grid}.badge{background:var(--neutral-tint);color:var(--muted);white-space:nowrap;border-radius:6px;align-items:center;padding:2px 8px;font-size:14px;font-weight:500;display:inline-flex}.badge.green{background:var(--green-tint);color:var(--green)}.badge.amber{background:var(--amber-tint);color:var(--amber)}.badge.red{background:var(--red-tint);color:var(--red)}.number-pill{background:var(--amber-tint);min-width:24px;color:var(--amber);text-align:center;border-radius:12px;padding:0 6px;font-size:14px;font-weight:700;display:inline-block}.panel{border:1px solid var(--card-border);border-radius:var(--radius);background:var(--surface)}.panel-head{justify-content:space-between;align-items:flex-start;gap:12px;padding:16px;display:flex}.panel-head h2,.list-section h2,.month-panel h2{letter-spacing:-.012em;font-size:20px;font-weight:700;line-height:1.25}.panel-head p{color:var(--muted);margin-top:4px;font-size:14px}.list-section{margin-top:24px}.list-section>h2{margin-bottom:8px}.section-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:4px;display:flex}.heading-value{float:right;font-variant-numeric:tabular-nums;font-size:20px}.list-note{margin-top:12px}.list-foot{margin-top:8px}.error-banner{border-radius:var(--radius-small);background:var(--red-tint);color:var(--red);justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;padding:12px;font-weight:500;display:flex}.empty{text-align:center;padding:32px 16px}.empty-icon{color:var(--muted);margin-bottom:8px;display:inline-flex}.empty h3{font-size:17px}.empty p{color:var(--muted);font-size:14px}.explain{color:var(--muted);margin-top:12px;font-size:14px}.explain summary{min-height:44px;color:var(--primary);padding:10px 0;font-weight:500}.explain .pay-grid{margin-top:4px}.hero{border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);border:1px solid var(--card-border);padding:16px}.hero-eyebrow{color:var(--muted);font-size:14px;font-weight:500}.hero-closeout .hero-eyebrow,.hero-now .hero-eyebrow{border-radius:999px;padding:2px 10px;font-weight:600;display:inline-flex}.hero-closeout .hero-eyebrow{background:var(--amber-tint);color:var(--amber)}.hero-now .hero-eyebrow{background:var(--green-tint);color:var(--green)}.hero-head{align-items:baseline;gap:12px;margin-top:2px;display:flex}.hero-time{font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:34px;font-weight:700;line-height:1.15}.hero-name{text-align:left;background:0 0;border:0;align-items:center;gap:4px;min-width:0;min-height:44px;padding:0;font-size:20px;font-weight:700;display:inline-flex}.hero-pickup{font-size:17px}.hero-goal{color:var(--muted);margin-top:4px}.hero-money{margin-top:4px;font-weight:500}.hero-actions{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.hero-actions .button:not(.icon-only){flex:1}.hero-then{border-radius:var(--radius-small);background:var(--primary-tint);min-height:48px;color:var(--primary);align-items:center;gap:8px;margin-top:8px;padding:10px 12px;font-weight:500;text-decoration:none;display:flex}.hero-then:active{background:var(--line)}.hero-empty h2{font-size:20px}.hero-empty p{color:var(--muted);margin:4px 0 12px}.todo-list{border:1px solid var(--card-border);border-radius:var(--radius);background:var(--surface);margin-top:12px;overflow:hidden}.todo-row{text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:52px;padding:10px 16px;display:flex}.todo-row+.todo-row{border-top:1px solid var(--line)}.todo-row.is-action{color:var(--amber);font-weight:500}.todo-row:active,.add-row:active{background:var(--neutral-tint)}.today-aside{display:none}.month-panel{padding:16px}.money-row{font-variant-numeric:tabular-nums;justify-content:space-between;gap:12px;padding:8px 0;display:flex}.money-row:first-of-type{margin-top:8px}.money-row.total{border-top:1px solid var(--line);margin-bottom:8px;font-weight:700}.lesson-list,.record-list,.learner-list{border:1px solid var(--card-border);border-radius:var(--radius);background:var(--surface)}.lesson-row{grid-template-columns:56px minmax(0,1fr) auto;align-items:start;gap:12px;padding:12px 16px;display:grid;position:relative}.lesson-row+.lesson-row,.gap-row+.lesson-row,.lesson-row+.gap-row{border-top:1px solid var(--line)}:is(.lesson-row:has(.row-link:active),.learner-row:has(.row-link:active)){background:var(--neutral-tint)}.lesson-row-time{font-variant-numeric:tabular-nums;flex-direction:column;display:flex}.lesson-row-time small{color:var(--muted);white-space:nowrap;font-size:14px}.lesson-row-time strong{font-size:17px;font-weight:700}.lesson-row-time span{color:var(--muted);font-size:14px}.lesson-row-main{flex-direction:column;min-width:0;display:flex}.row-link{color:var(--ink);text-align:left;background:0 0;border:0;padding:0;font-size:17px;font-weight:700}.row-link:after{content:"";position:absolute;inset:0}.above{z-index:1;position:relative}.lesson-row-meta{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}a.lesson-row-meta{text-decoration:underline;-webkit-text-decoration-color:var(--field-line);text-decoration-color:var(--field-line);margin:-8px 0;padding:12px 0}.lesson-row-money{font-size:14px;font-weight:500}.lesson-row-side{align-self:center}.lesson-row.is-done .lesson-row-time strong,.lesson-row.is-done .row-link{font-weight:500}.lesson-row.is-cancelled .row-link,.lesson-row.is-cancelled .lesson-row-time strong{color:var(--muted);font-weight:500;text-decoration:line-through}.gap-row{background:var(--bg);width:100%;min-height:44px;color:var(--muted);border:0;justify-content:space-between;align-items:center;padding:4px 16px 4px 84px;font-size:14px;display:flex}.gap-row+.lesson-row{border-top:0}.gap-action{color:var(--primary);align-items:center;gap:4px;font-weight:500;display:inline-flex}.gap-row:active{background:var(--neutral-tint)}.diary-label{white-space:nowrap;align-items:center;min-height:44px;padding:0 2px;font-size:17px;display:inline-flex;position:relative}.diary-label strong{font-weight:700}.diary-label input{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.diary-label input::-webkit-calendar-picker-indicator{cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.day-add{border:1px dashed var(--field-line);border-radius:var(--radius);width:100%;min-height:52px;color:var(--primary);background:0 0;justify-content:center;align-items:center;gap:8px;margin-top:12px;font-weight:500;display:flex}.day-add:active{background:var(--neutral-tint)}.search-input{align-items:center;margin-bottom:8px;display:flex;position:relative}.search-input svg{color:var(--muted);position:absolute;left:14px}.search-input input{background:var(--fill);border:1px solid #0000;border-radius:12px;width:100%;min-height:48px;padding:10px 14px 10px 42px}@media (prefers-contrast:more){.search-input input{border-color:var(--field-line)}}.learner-list{margin-top:12px}.list-section .learner-list{margin-top:0}.learner-row{align-items:center;gap:12px;min-height:64px;padding:10px 16px;display:flex;position:relative}.learner-row+.learner-row{border-top:1px solid var(--line)}.learner-row-main{flex-direction:column;flex:1;min-width:0;display:flex}.learner-balance{font-variant-numeric:tabular-nums;flex:none;font-size:16px;font-weight:500}.learner-row>svg{color:var(--muted)}.record-bar{justify-content:space-between;align-items:center;display:flex}.record-head{margin-bottom:12px}.record-title{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.record-contact{flex:none;gap:8px;display:flex}.record-head h2{font-size:26px;font-weight:700;line-height:1.2}.record-balance{font-variant-numeric:tabular-nums;margin:2px 0 6px;font-size:20px;font-weight:700}.record-balance small{color:var(--muted);font-size:14px;font-weight:400;display:block}.record-actions{gap:8px;display:flex}.record-actions .button:not(.icon-only){flex:1;padding-inline:8px}.detail-list{padding:4px 16px}.detail-list p{overflow-wrap:anywhere;padding:10px 0}.detail-list p+p{border-top:1px solid var(--line)}.danger-link{min-height:44px;color:var(--red);background:0 0;border:0;margin:24px auto 0;padding:8px 12px;font-size:14px;font-weight:500;display:block}.money>.segmented{margin-bottom:12px}.summary-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:16px;display:grid}.summary-item{border:1px solid var(--line);border-radius:var(--radius-small);background:var(--surface);flex-direction:column;min-width:0;padding:10px 12px;display:flex}.summary-item span{color:var(--muted);font-size:14px;line-height:1.25}.summary-item strong{font-variant-numeric:tabular-nums;margin-top:auto;padding-top:4px;font-size:20px;font-weight:700}.summary-item small{color:var(--muted);font-size:14px;line-height:1.25}.all-clear{border-radius:var(--radius);background:var(--green-tint);color:var(--green);align-items:center;gap:8px;padding:14px 16px;font-weight:500;display:flex}.record-row{align-items:flex-start;gap:8px;min-height:64px;padding:10px 4px 10px 16px;display:flex;position:relative}.record-row+.record-row{border-top:1px solid var(--line)}.record-main{flex-direction:column;flex:1;min-width:0;display:flex}.record-main strong{font-size:16px;font-weight:500}.record-amount{font-variant-numeric:tabular-nums;flex-direction:column;flex:none;align-items:flex-end;display:flex}.record-amount strong{font-size:16px;font-weight:700}.record-amount small{color:var(--muted);font-size:14px}.record-row.is-void .record-main strong,.record-row.is-void .record-amount strong{color:var(--muted);font-weight:500;text-decoration:line-through}.row-menu{flex:none}.row-menu summary,.row-menu-spacer{width:44px;height:44px;color:var(--muted);justify-content:center;align-items:center;margin-top:-6px;list-style:none;display:inline-flex}.row-menu summary::-webkit-details-marker{display:none}.row-menu-panel{z-index:5;border:1px solid var(--line);border-radius:var(--radius-small);background:var(--surface);min-width:170px;box-shadow:var(--shadow-raised);position:absolute;top:44px;right:8px;overflow:hidden}.row-menu-panel button{text-align:left;background:0 0;border:0;width:100%;min-height:44px;padding:10px 14px;display:block}.row-menu-panel button+button{border-top:1px solid var(--line)}.row-menu-panel button:active{background:var(--neutral-tint)}.row-menu-panel .is-danger{color:var(--red)}.attention-panel{border-color:var(--amber);margin-top:12px}.money .attention-panel,.learners .attention-panel{margin:0 0 12px}.attention-panel .panel-head{padding-bottom:8px}.attention-row{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:12px 16px;display:flex}.attention-row .row .button{min-height:44px;padding:8px 12px;font-size:14px}.cell-sub{color:var(--muted);font-size:14px;display:block}.modal{background:var(--surface);width:100%;max-width:100%;max-height:92dvh;color:var(--ink);transition:transform .24s var(--ease), opacity .2s ease-out;border:0;border-radius:20px 20px 0 0;margin:auto 0 0;padding:0;overflow:hidden}.modal[open]{flex-direction:column;display:flex}.modal>form{flex-direction:column;min-height:0;display:flex}.modal::backdrop{background:var(--scrim,#14231d73);opacity:calc(1 - var(--drag,0));transition:opacity .2s ease-out}.modal.dragging::backdrop{transition:none}@starting-style{.modal[open]{opacity:0;transform:translateY(40px)}.modal[open]::backdrop{opacity:0}}.sheet-grip{touch-action:none;flex:none;justify-content:center;padding:8px 0 4px;display:flex}.sheet-handle{background:var(--field-line);border-radius:2px;width:36px;height:4px}.modal-head{touch-action:none;flex:none;justify-content:space-between;align-items:flex-start;gap:8px;padding:8px 8px 8px 16px;display:flex}.modal-head h2{padding-top:6px;font-size:20px;font-weight:700;line-height:1.25}.modal-head p{color:var(--muted);font-size:14px}.modal-body{overscroll-behavior:contain;flex:1;min-height:0;padding:4px 16px 16px;overflow-y:auto}.modal-footer{padding:12px 16px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--surface);flex:none;grid-template-columns:1fr 2fr;gap:8px;display:grid}.series-scope,.repeat-preview{gap:6px;display:grid}.wide-segments.two{grid-template-columns:repeat(2,1fr)}.send-reminders{margin:-8px 0 4px}.reminder-list{padding-bottom:calc(16px + env(safe-area-inset-bottom));gap:0;display:grid}.reminder-row{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:12px 0;display:flex}.reminder-row>div:first-child{flex-direction:column;display:flex}.modal-footer.stacked{grid-template-columns:1fr}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:end;gap:12px;display:grid}.field{flex-direction:column;gap:4px;min-width:0;display:flex}.field label{font-size:14px;font-weight:500}.field small{color:var(--muted);font-size:14px}:where(input:not([type=checkbox],[type=radio],[type=file],[type=hidden]),select,textarea){border:1px solid var(--field-line);border-radius:var(--radius-small);background:var(--surface);width:100%;min-width:0;min-height:48px;padding:10px 12px;font-size:16px}select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234a564f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;background-size:20px;padding-right:36px}textarea{resize:vertical}input[type=file]{width:100%;font-size:14px}input[type=file]::file-selector-button{border:1px solid var(--field-line);border-radius:var(--radius-small);background:var(--surface);min-height:44px;color:var(--ink);font:inherit;margin-right:10px;padding:8px 14px;font-weight:500}input[type=date],input[type=time]{appearance:none}.slot-picker{flex-direction:column;gap:4px;display:flex}.more-fields{border-top:1px solid var(--line)}.more-fields summary{min-height:44px;color:var(--primary);padding:11px 0;font-size:16px;font-weight:500}.more-fields .form-grid{padding-bottom:8px}.lesson-quick{gap:8px;display:flex}.lesson-quick .button:not(.icon-only){flex:1}.payment-tools{gap:8px;padding-bottom:8px;display:grid}.allocation-preview{border-radius:var(--radius-small);background:var(--neutral-tint);grid-template-columns:repeat(2,1fr);gap:8px;padding:12px;display:grid}.allocation-preview div{flex-direction:column;display:flex}.allocation-preview span{color:var(--muted);font-size:14px}.add-list{padding-bottom:calc(16px + env(safe-area-inset-bottom))}.add-row{border:0;border-top:1px solid var(--line);text-align:left;background:0 0;align-items:center;gap:12px;width:100%;min-height:56px;padding:8px 4px;display:flex}.add-row span{flex:1;font-weight:500}.closeout{padding-bottom:calc(16px + env(safe-area-inset-bottom));gap:12px;display:grid}.pay-choices p{margin-bottom:8px}.pay-choices strong{font-variant-numeric:tabular-nums;font-size:20px}.pay-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.pay-grid .button{padding-inline:8px}.closeout-note{border-radius:var(--radius-small);gap:8px;padding:12px;font-weight:500;display:grid}.closeout-note.is-clear{background:var(--green-tint);color:var(--green)}.closeout-note.is-owing{background:var(--amber-tint);color:var(--amber)}.closeout-note .button{color:var(--ink)}.toast{right:16px;bottom:calc(var(--tabbar-height) + var(--tabbar-offset) + 12px);z-index:50;border-radius:var(--radius-small);background:var(--toast);color:var(--on-toast);transition:transform .18s var(--ease), opacity .18s ease-out;align-items:center;gap:8px;padding:6px 6px 6px 14px;font-weight:500;display:flex;position:fixed;left:16px}@starting-style{.toast{opacity:0;transform:translateY(12px)}}.toast>span:first-child{display:inline-flex}.toast .icon-btn{color:var(--on-toast);margin-left:auto}details>summary{justify-content:space-between;align-items:center;gap:8px;list-style:none;display:flex}details>summary::-webkit-details-marker{display:none}details:not(.row-menu)>summary:after{content:"";border-bottom:2px solid;border-right:2px solid;flex:none;width:8px;height:8px;margin-right:4px;transition:transform .15s ease-out;transform:rotate(45deg)}details[open]:not(.row-menu)>summary:after{transform:rotate(-135deg)}.add-menu{background:var(--menu-bg);-webkit-backdrop-filter:blur(24px)saturate(180%);backdrop-filter:blur(24px)saturate(180%);width:240px;box-shadow:var(--shadow-raised), 0 0 0 .5px var(--line);color:var(--ink);transform-origin:100% 0;transition:opacity .15s ease-out, transform .15s var(--ease);border:0;border-radius:14px;margin:0;padding:6px;inset:auto}@starting-style{.add-menu:popover-open{opacity:0;transform:scale(.96)}}.add-menu button{text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:10px;width:100%;min-height:44px;padding:0 10px;font-size:15px;display:flex}.add-menu button svg{color:var(--primary)}.add-menu button:hover{background:var(--primary-fill);color:var(--on-primary)}.add-menu button:hover svg{color:inherit}.settings-layout{gap:16px;display:grid}.settings-form .panel-head{padding-bottom:8px}.settings-fields{padding:8px 16px 16px}.settings-section{border-top:1px solid var(--line);padding:0 16px}.settings-section>summary{min-height:56px;font-size:17px;font-weight:700}.settings-section[open]{padding-bottom:16px}.settings-section>p{margin:0 0 12px}.settings-section .form-grid{margin-top:12px}.input-prefix{border:1px solid var(--field-line);border-radius:var(--radius-small);background:var(--surface);align-items:stretch;display:flex;overflow:hidden}.input-prefix span{background:var(--neutral-tint);color:var(--muted);align-items:center;padding:0 10px;display:inline-flex}.input-prefix input{border:0;border-radius:0}.check-field{gap:10px;margin-top:12px;display:flex}.check-field input{width:22px;height:22px;accent-color:var(--primary);margin-top:1px}.check-field small{color:var(--muted);font-size:14px;display:block}.day-checkboxes{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.day-checkboxes label{position:relative}.day-checkboxes input{opacity:0;position:absolute}.day-checkboxes span{border:1px solid var(--field-line);border-radius:var(--radius-small);justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:0 8px;font-size:14px;font-weight:500;display:inline-flex}.day-checkboxes input:checked+span{border-color:var(--primary-fill);background:var(--primary-fill);color:var(--on-primary)}.day-checkboxes input:focus-visible+span{outline:3px solid var(--primary);outline-offset:2px}.settings-save{bottom:calc(var(--tabbar-height) + var(--tabbar-offset) + 8px);border-top:1px solid var(--line);border-radius:0 0 var(--radius) var(--radius);background:var(--surface);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex;position:sticky}.integrations-panel{padding-bottom:8px}.integration-card{border-top:1px solid var(--line);padding:16px}.integration-card h3{margin-top:8px;font-size:17px}.integration-card p{color:var(--muted);margin:4px 0 8px;font-size:14px}.provider-logo{background:var(--neutral-tint);border-radius:8px;justify-content:center;align-items:center;min-width:36px;height:36px;padding:0 8px;font-size:14px;font-weight:700;display:inline-flex}.integration-note{margin:0}.conflict-list{margin:0 0 12px;padding:0;list-style:none}.conflict-list li{border-top:1px solid var(--line);padding:8px 0}.settings-help{padding:16px}.settings-help h3{font-size:17px}.settings-help p{color:var(--muted);margin:4px 0 8px;font-size:14px}.settings-help .text-button{display:flex}.signout-form{margin-top:16px}.service-area-editor{border:1px solid var(--line);border-radius:var(--radius-small);overflow:hidden}.area-map{z-index:0;background:var(--neutral-tint);height:300px}.area-toolbar{flex-wrap:wrap;gap:8px;padding:12px;display:flex}.area-toolbar .button{min-height:44px;padding:8px 12px;font-size:14px}.service-area-editor>p{padding:0 12px 12px;font-size:14px}.coordinate-entry{color:var(--muted);padding:0 12px 12px;font-size:14px}.coordinate-entry summary{min-height:44px;padding:10px 0}.coordinate-entry>.row{flex-wrap:wrap;align-items:flex-end;gap:8px}.coordinate-entry label{flex:1;min-width:110px}.leaflet-container{font-family:var(--font)!important}.leaflet-control-attribution{font-size:12px!important}.auth-page{place-items:center;min-height:100dvh;padding:16px;display:grid}.auth-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);width:100%;max-width:420px;padding:24px}.auth-card h1{margin:4px 0;font-size:26px;font-weight:700;line-height:1.2}.auth-card form{gap:12px;margin-top:16px;display:grid}.auth-card label{gap:4px;font-size:14px;font-weight:500;display:grid}.auth-card [role=status]{margin-top:12px}.auth-card small{color:var(--muted);font-size:14px}.public-page{max-width:620px;margin:0 auto;padding:32px 16px;line-height:1.55}.public-page h1{margin-bottom:12px;font-size:26px;font-weight:700;line-height:1.2}.public-page h2{margin:20px 0 4px;font-size:17px}.public-page p{margin-bottom:12px}.public-form{gap:16px;margin-bottom:16px;display:grid}.public-form label{font-size:14px;font-weight:500;display:block}.public-form label:has(input[type=checkbox]){gap:8px;font-size:16px;font-weight:400;display:flex}.public-form input[type=checkbox]{width:22px;height:22px;accent-color:var(--primary);flex:none;margin:0}.public-form details summary{min-height:44px;color:var(--primary);font-weight:500}.public-slots{gap:8px;display:grid}.phone-only{display:block}@media (min-width:900px){.app-shell{grid-template-columns:232px minmax(0,1fr);display:grid}.sidebar{border-right:1px solid var(--line);background:var(--sidebar-bg);flex-direction:column;gap:16px;height:100dvh;padding:20px 12px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;padding:0 8px;font-weight:700;line-height:1.2;text-decoration:none;display:flex}.brand-mark{border-radius:var(--radius-small);background:var(--primary-fill);width:36px;height:36px;color:var(--on-primary);justify-content:center;align-items:center;display:inline-flex}.sidebar nav{gap:4px;display:grid}.sidebar-foot{gap:4px;margin-top:auto;display:grid}.nav-item{border-radius:var(--radius-small);width:100%;min-height:44px;color:var(--ink);text-align:left;background:0 0;border:0;align-items:center;gap:12px;padding:8px 12px;font-weight:500;display:flex}.nav-item svg{color:var(--primary)}.nav-item:hover{background:var(--neutral-tint)}.nav-item.active{background:var(--tab-selected);color:var(--primary);font-weight:700}.main-shell{padding-bottom:32px}.tabbar,.avatar-btn,.phone-only{display:none}main{max-width:1040px;padding:16px 32px 32px}.topbar{max-width:1040px;margin:0 auto;padding:20px 32px 8px}.demo-bar{max-width:976px;margin:0 auto}.add-btn{width:auto;box-shadow:none;border-radius:999px;gap:6px;padding:0 16px 0 12px;font-weight:600}.add-label{display:inline}.add-btn:hover,.button.primary:hover{background:var(--primary-press)}.button.secondary:hover,.chip:not(.selected):hover{background:var(--tab-selected)}.today-grid{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:24px;display:grid}.today-aside{display:block}.learners,.learner-record,.money{max-width:720px}.settings-layout{grid-template-columns:minmax(0,1fr) 320px;align-items:start}.settings-save{bottom:0}.modal{border-radius:16px;width:480px;margin:auto}.sheet-grip{display:none}.toast{min-width:280px;bottom:24px;left:256px;right:auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important}.button:active:not(:disabled),.chip:active:not(:disabled),.icon-btn:active:not(:disabled),.add-btn:active{transform:none}@starting-style{.modal[open],.toast{transform:none}}}.field-label{font-size:14px;font-weight:500}.closeout-skills{border:0;gap:8px;min-width:0;margin:0;padding:0;display:grid}.closeout-skills legend{margin-bottom:4px;padding:0;font-size:14px;font-weight:500}.skill-pick{grid-template-columns:minmax(0,1fr) minmax(0,11rem);align-items:center;gap:8px;display:grid}.skill-pick>span{overflow-wrap:anywhere;font-weight:500;display:grid}.skill-pick small{color:var(--muted);font-size:14px;font-weight:400}.skill-pick.is-changed select{border-color:var(--primary);background-color:var(--primary-tint);font-weight:600}.card-scan{gap:6px;display:grid}.card-scan .button{cursor:pointer;position:relative}.card-scan .button:focus-within{outline:2px solid var(--primary);outline-offset:2px}.card-scan .button.is-disabled{opacity:.6;cursor:default}.file-input-hidden{clip-path:inset(50%);white-space:nowrap;opacity:0;width:1px;height:1px;position:absolute;overflow:hidden}.card-scan-note{color:var(--muted);margin:0;font-size:14px}.card-scan-note a{color:var(--primary);font-weight:500}.check-note{color:var(--amber)!important;font-weight:600!important}.skill-pick.is-unsure select{border-color:var(--amber);background-color:var(--amber-tint)}.card-says{border-radius:var(--radius-small);background:var(--primary-tint);padding:8px 12px;font-size:15px}.card-says.is-unsure{background:var(--amber-tint);color:var(--amber)}.pay-grid .button.is-suggested{outline:3px solid var(--primary);outline-offset:2px}.progress-panel{gap:10px;padding:16px;display:grid}.progress-headline{font-size:17px}.progress-headline strong{font-variant-numeric:tabular-nums}.progress-bar{background:var(--neutral-tint);border-radius:999px;gap:2px;height:12px;display:flex;overflow:hidden}.progress-bar span{flex-basis:0}.progress-bar .is-independent,.key-independent:before{background:var(--green)}.progress-bar .is-progress,.key-progress:before{background:var(--progress)}.progress-bar .is-new,.key-new:before{background:var(--neutral-tint);box-shadow:inset 0 0 0 1px var(--field-line)}.progress-key{flex-wrap:wrap;gap:4px 16px;display:flex}.progress-key span:before{content:"";vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:6px;display:inline-block}.progress-subhead{margin:16px 0 8px;font-size:15px;font-weight:600}.skill-row{text-align:left;background:0 0;border:0;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 12px;width:100%;min-height:56px;padding:10px 16px;display:grid}.skill-row+.skill-row{border-top:1px solid var(--line)}.skill-row:active{background:var(--neutral-tint)}.skill-row-name{font-weight:500}.skill-level{color:var(--muted);grid-row:2;font-size:14px}.skill-level.level-4,.skill-level.level-5{color:var(--green)}.skill-pips{grid-area:1/2/span 2;gap:4px;display:flex}.skill-pips i{width:10px;height:10px;box-shadow:inset 0 0 0 1.5px var(--field-line);border-radius:50%}.skill-pips i.on{background:var(--primary-fill);box-shadow:none}.all-skills summary{margin-top:8px}.all-skills .skill-group:first-of-type .progress-subhead{margin-top:4px}.all-skills .skill-list,.all-skills .progress-subhead{color:var(--ink)}.skill-sheet{padding-bottom:calc(16px + env(safe-area-inset-bottom));gap:12px;display:grid}.level-list{gap:8px;display:grid}.level-choice{border:1px solid var(--line);border-radius:var(--radius-small);background:var(--surface);text-align:left;min-height:56px;transition:transform .12s var(--ease);gap:2px;padding:10px 14px;display:grid}.level-choice:active:not(:disabled){transform:scale(.98)}.level-choice span{color:var(--muted);font-size:14px}.level-choice.selected{border-color:var(--primary);background:var(--primary-tint);box-shadow:inset 0 0 0 1px var(--primary)}.skill-history h3{margin-bottom:4px;font-size:15px}.skill-history ul{margin:0;padding:0;list-style:none}.skill-history li{justify-content:space-between;gap:12px;padding:8px 0;display:flex}.skill-history li+li{border-top:1px solid var(--line)}@media (prefers-reduced-motion:reduce){.level-choice{transition:none}}.demo-bar .text-button{flex:none;min-height:44px;margin:-8px 0}
.diary-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin:-4px 0 12px;display:flex}.diary-nav{flex:100%;align-items:center;min-width:0;margin-left:-8px;display:flex}.diary-label{flex:0 auto;justify-content:center;min-width:0}.diary-label strong{text-overflow:ellipsis;overflow:hidden}.button.diary-today{margin-left:auto}.diary-views{flex:100%;grid-template-columns:repeat(4,1fr);display:grid}.diary-note{align-items:flex-start;gap:8px;margin:-4px 0 12px;display:flex}.diary-note svg{margin-top:2px}.busy-row,.cal-busy,.cal-busy-chip,.month-busy{background:repeating-linear-gradient(135deg, var(--neutral-tint) 0 6px, var(--surface) 6px 12px)}.busy-row-title{color:var(--muted);font-size:17px;font-weight:700}.busy-warning{border-radius:var(--radius-small);background:var(--amber-tint);color:var(--amber);align-items:flex-start;gap:8px;padding:12px;font-size:14px;font-weight:500;display:flex}.busy-warning svg{margin-top:1px}.schedule{gap:12px;display:grid}.schedule-head{top:calc(60px + env(safe-area-inset-top));z-index:5;background:var(--bg);align-items:center;gap:8px;min-height:48px;margin:0 -16px 4px;padding:0 8px 0 16px;display:flex;position:sticky}.schedule-title{background:0 0;border:0;align-items:center;gap:8px;min-height:44px;padding:0;font-size:17px;font-weight:700;display:inline-flex}.schedule-head .meta{flex:1}.schedule .day-add{margin-top:4px}.month{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden;container-type:inline-size}.month-weekdays,.month-days{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.month-weekdays span{border-bottom:1px solid var(--line);color:var(--muted);text-align:center;padding:8px 0;font-size:13px;font-weight:500}.month-day{border:0;border-bottom:1px solid var(--line);border-left:1px solid var(--line);text-align:center;background:0 0;flex-direction:column;align-items:center;gap:4px;min-width:0;min-height:72px;padding:6px 2px;display:flex;position:relative}.month-day:nth-child(7n+1){border-left:0}.month-day:active{background:var(--neutral-tint)}.month-day.outside .month-date{color:var(--muted);font-weight:400}.month-day.outside{background:color-mix(in srgb, var(--bg) 60%, transparent)}.month-date{border-radius:14px;justify-content:center;align-items:center;min-width:28px;height:28px;font-size:15px;font-weight:700;display:inline-flex}.month-day.today .month-date{background:var(--primary-fill);color:var(--on-primary)}.month-count{background:var(--primary-tint);min-width:22px;height:22px;color:var(--primary);border-radius:11px;justify-content:center;align-items:center;padding:0 6px;font-size:13px;font-weight:700;display:inline-flex}.month-day.past .month-count{background:var(--neutral-tint);color:var(--muted)}.month-chips{display:none}.month-busy{border:1px solid var(--line);color:#0000;border-radius:3px;width:calc(100% - 8px);height:6px;margin-top:auto;font-size:0;overflow:hidden}@container (min-width:640px){.month-day{text-align:left;align-items:stretch;min-height:104px;padding:6px}.month-date{align-self:flex-start}.month-count{display:none}.month-chips{gap:2px;display:grid}.month-chip,.month-more{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.month-chip{border-left:3px solid var(--primary);background:var(--primary-tint);border-radius:4px;padding:1px 6px}.month-day.past .month-chip{border-left-color:var(--field-line);background:var(--neutral-tint)}.month-more{color:var(--muted)}.month-busy{width:auto;height:auto;color:var(--muted);margin-top:0;padding:1px 6px;font-size:13px;font-weight:500}}@media (min-width:900px){.diary-nav{flex:auto}.diary-views{flex:none;width:340px}.schedule-head{margin:0 0 4px;padding:0 8px 0 0;top:76px}.month-day:hover{background:var(--neutral-tint)}}
.cal{--gutter:44px;--hour-h:52px;--head-h:52px;--allday-h:30px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);display:flex;overflow:hidden}.cal-gutter{width:var(--gutter);flex:none}.cal-corner{height:var(--head-h);border-bottom:1px solid var(--line)}.cal-hours{position:relative}.cal-scroll{overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;flex:1;min-width:0;overflow-x:auto;container-type:inline-size}.cal-scroll::-webkit-scrollbar{display:none}.cal-week{--day-w:calc(100cqw / 3.3);grid-template-columns:repeat(7, var(--day-w));display:grid;position:relative}@container (min-width:440px){.cal-week{--day-w:calc(100cqw / 5)}}@container (min-width:600px){.cal-week{--day-w:minmax(0, 1fr)}}.cal-day-head{height:var(--head-h);border:0;border-bottom:1px solid var(--line);border-left:1px solid var(--line);background:var(--surface);scroll-snap-align:start;flex-direction:column;justify-content:center;align-items:center;padding:4px 0;display:flex}.cal-day-head span{color:var(--muted);font-size:13px;font-weight:500}.cal-day-head strong{border-radius:14px;justify-content:center;align-items:center;min-width:28px;height:28px;font-size:17px;display:inline-flex}.cal-day-head.today span{color:var(--primary)}.cal-day-head.today strong{background:var(--primary-fill);color:var(--on-primary)}.cal-day-head:active{background:var(--neutral-tint)}.cal-allday-label{height:var(--allday-h);border-bottom:1px solid var(--line);color:var(--muted);text-align:center;justify-content:center;align-items:center;font-size:12px;line-height:1.1;display:flex}.cal-allday{height:var(--allday-h);border-bottom:1px solid var(--line);border-left:1px solid var(--line);padding:3px 2px}.cal-busy-chip{color:var(--muted);border-radius:6px;padding:2px 6px;font-size:13px;font-weight:500;display:block}.cal-hour-label{color:var(--muted);font-variant-numeric:tabular-nums;margin-top:3px;font-size:12px;position:absolute;right:6px}.cal-col{border-left:1px solid var(--line);position:relative;overflow:hidden}.cal-col.today{background:color-mix(in srgb, var(--primary-tint) 45%, transparent)}.cal-slot{width:100%;height:var(--hour-h);border:0;border-top:1px solid var(--line);background:0 0;padding:0;display:block}.cal-slot:first-child{border-top:0}.cal-slot:active{background:var(--neutral-tint)}.cal-lesson,.cal-busy,.cal-travel{border-radius:6px;position:absolute}.cal-lesson{z-index:2;border:0;border-left:3px solid var(--primary);background:var(--primary-tint);min-height:24px;color:var(--ink);text-align:left;flex-direction:column;align-items:flex-start;padding:3px 6px;line-height:1.2;display:flex;overflow:hidden}.cal-lesson:active{filter:brightness(.95)}.cal-block-time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.cal-block-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:13px;font-weight:700;overflow:hidden}.cal-block-flag{color:var(--amber);margin-top:2px;font-size:12px;font-weight:700}.cal-lesson.tone-reserved{border-left-style:dashed;border-left-color:var(--amber);background:var(--amber-tint)}.cal-lesson.tone-closeout{border-left-color:var(--amber);background:var(--amber-tint)}.cal-lesson.tone-done{border-left-color:var(--green);background:var(--neutral-tint)}.cal-lesson.tone-done .cal-block-name{font-weight:500}.cal-lesson.tone-noshow{border-left-color:var(--red);background:var(--red-tint)}.cal-travel{z-index:1;background:repeating-linear-gradient(180deg, color-mix(in srgb, var(--primary) 14%, transparent) 0 2px, transparent 2px 5px);pointer-events:none;border-radius:0 0 6px 6px}.cal-busy{z-index:1;border:1px solid var(--line);border-left:3px solid var(--field-line);pointer-events:none;flex-direction:column;min-height:20px;padding:2px 6px;line-height:1.2;display:flex;overflow:hidden}.cal-busy-label{color:var(--muted);font-size:13px;font-weight:700}.cal-now{z-index:3;background:var(--red);pointer-events:none;height:2px;position:absolute;left:0;right:0}.cal-now:before{content:"";background:var(--red);border-radius:50%;width:10px;height:10px;position:absolute;top:-4px;left:-5px}@media (min-width:900px){.cal{--hour-h:56px;--gutter:52px}.cal-slot:hover{background:var(--neutral-tint)}.cal-lesson:hover{filter:brightness(.97)}}@media (prefers-reduced-motion:reduce){.cal-scroll{scroll-behavior:auto}}
