:root,[data-theme=light]{--bg:#f6f1f1;--bg-2:#ebe3e4;--surface:#fff;--surface-2:#f8f3f3;--ink:#1c1619;--ink-2:#5e5357;--ink-3:#8e8287;--line:#1c161914;--line-2:#1c161926;--glass:#ffffff94;--glass-strong:#ffffffe0;--glass-border:#fffffff2;--glass-hi:inset 0 1px 0 #fff, inset 0 -1px 0 #1c16190a;--shadow:0 1px 2px #16161a0a, 0 10px 28px -12px #16161a24;--accent:oklch(84% .09 350);--accent-ink:#1c1619;--accent-text:oklch(52% .15 350);--ok:oklch(64% .13 155);--ok-text:oklch(48% .11 155);--warn:oklch(76% .15 70);--warn-text:oklch(52% .12 60);--bad:oklch(62% .19 25);--bad-text:oklch(52% .18 25);--info:oklch(62% .12 250);--info-text:oklch(50% .13 255);--blob1:oklch(88% .08 350/.75);--blob2:oklch(90% .06 300/.6);--scrim:#1410124d;--inverse:#2a1f24;--inverse-ink:#f6f1f1;--stripe:#1c16190f;--seg-shadow:0 1px 2px #00000014, 0 2px 8px -2px #00000014;--mono:"JetBrains Mono", ui-monospace, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--bg:#120f10;--bg-2:#070506;--surface:#1c1719;--surface-2:#251f22;--ink:#f1ebed;--ink-2:#afa3a8;--ink-3:#7d7177;--line:#ffffff12;--line-2:#ffffff24;--glass:#22221f8c;--glass-strong:#1e1e1cdb;--glass-border:#ffffff1a;--glass-hi:inset 0 1px 0 #ffffff17;--shadow:0 1px 2px #0000004d, 0 14px 34px -14px #000000b3;--accent:oklch(80% .1 350);--accent-ink:#1a1215;--accent-text:oklch(82% .1 350);--ok:oklch(74% .14 155);--ok-text:oklch(76% .14 155);--warn:oklch(80% .14 72);--warn-text:oklch(82% .13 75);--bad:oklch(68% .17 25);--bad-text:oklch(74% .15 25);--info:oklch(72% .11 250);--info-text:oklch(76% .1 250);--blob1:oklch(55% .12 350/.16);--blob2:oklch(50% .1 300/.12);--scrim:#0000008c;--inverse:#f1ebed;--inverse-ink:#120f10;--stripe:#ffffff0d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);min-height:100vh;color:var(--ink);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;font-family:Onest,system-ui,-apple-system,sans-serif;font-size:15px;line-height:1.4}button,input,select,textarea{font-variant-numeric:tabular-nums;font-family:inherit}a{color:var(--accent-text);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,p{margin:0}input[type=date],input[type=time]{color-scheme:inherit}.mono{font-family:var(--mono)}.muted{color:var(--ink-3)}.muted-2{color:var(--ink-2)}.blobs{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.blobs:before,.blobs:after{content:"";border-radius:50%;position:absolute}.blobs:before{background:var(--blob1);filter:blur(100px);width:620px;height:620px;top:-260px;right:-160px}.blobs:after{background:var(--blob2);filter:blur(110px);width:560px;height:560px;bottom:-280px;left:-200px}.page{z-index:1;flex-direction:column;gap:16px;max-width:1240px;margin:0 auto;padding:30px 24px 72px;display:flex;position:relative}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:14px;display:flex}.eyebrow{font-family:var(--mono);color:var(--ink-3);letter-spacing:.02em;font-size:12px}.eyebrow-caps{font-family:var(--mono);color:var(--ink-3);letter-spacing:.04em;text-transform:uppercase;font-size:11.5px}.h1{letter-spacing:-.03em;margin:6px 0 0;font-size:34px;font-weight:650;line-height:1.1}.h2{letter-spacing:-.015em;margin:0;font-size:19px;font-weight:650}.h3{font-size:17px;font-weight:650}.row{align-items:center;gap:8px;display:flex}.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:22px;min-width:0}.card-pad{padding:20px}.card-pad-lg{padding:22px}.card-list{overflow:hidden}.card-inverse{background:var(--inverse);color:var(--inverse-ink);text-align:left;border:0;border-radius:22px;padding:20px}button.card-inverse{cursor:pointer;width:100%;font:inherit;flex-direction:column;gap:6px;display:flex}.glass{background:var(--glass);-webkit-backdrop-filter:blur(24px)saturate(180%);border:1px solid var(--glass-border);box-shadow:var(--glass-hi), var(--shadow)}.tile{background:var(--surface-2);border-radius:12px;padding:9px 10px}.tile-lg{background:var(--surface-2);border-radius:14px;padding:12px 14px}.tile-label{color:var(--ink-3);font-size:12px}.tile-value{margin-top:2px;font-size:16px;font-weight:600}.divider-top,.list-row{border-top:1px solid var(--line)}.btn{cursor:pointer;white-space:nowrap;color:var(--ink);background:0 0;border:0;border-radius:13px;justify-content:center;align-items:center;gap:8px;padding:11px 16px;font-size:14px;font-weight:600;text-decoration:none;transition:background .15s,opacity .15s;display:inline-flex}.btn:hover{text-decoration:none}.btn:disabled{cursor:default;opacity:.55}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover:not(:disabled){filter:brightness(.97)}.btn-secondary{background:var(--surface);border:1px solid var(--line-2);color:var(--ink);font-weight:550}.btn-secondary:hover:not(:disabled){background:var(--surface-2)}.btn-outline{border:1px solid var(--line-2);color:var(--ink);background:0 0;font-weight:500}.btn-outline:hover:not(:disabled){background:var(--surface-2)}.btn-inverse{background:var(--inverse);color:var(--inverse-ink)}.btn-soft-ok{background:color-mix(in oklab, var(--ok) 16%, transparent);color:var(--ok-text)}.btn-soft-ok:hover:not(:disabled){background:color-mix(in oklab, var(--ok) 26%, transparent)}.btn-danger-text{background:var(--surface);border:1px solid var(--line-2);color:var(--bad-text)}.btn-sm{border-radius:11px;padding:8px 12px;font-size:13px;font-weight:550}.btn-md{border-radius:11px;padding:9px 14px;font-size:13.5px}.btn-lg{border-radius:14px;width:100%;padding:14px;font-size:15px;font-weight:650}.btn-link{cursor:pointer;color:var(--accent-text);background:0 0;border:0;padding:0;font-size:13.5px;font-weight:600}.btn-link.muted-link{color:var(--ink-2)}.icon-btn{border:1px solid var(--line);background:var(--surface);width:38px;height:38px;color:var(--ink);cursor:pointer;border-radius:12px;flex:none;place-items:center;display:grid}.close-btn{border:1px solid var(--line-2);background:var(--surface);width:34px;height:34px;color:var(--ink);cursor:pointer;border-radius:50%;flex:none;font-size:15px}.stepper-btn{width:34px;height:34px;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:10px;font-size:16px}.stepper-btn:hover{background:var(--surface-2)}.theme-glyph{background:linear-gradient(90deg,currentColor 50%,#0000 50%);border:1.5px solid;border-radius:50%;width:15px;height:15px}.seg{background:var(--line);border-radius:14px;gap:2px;max-width:100%;padding:4px;display:flex;overflow-x:auto}.seg-btn{cursor:pointer;color:var(--ink-2);white-space:nowrap;background:0 0;border:0;border-radius:10px;flex:none;align-items:center;gap:7px;padding:8px 14px;font-size:14px;font-weight:500;display:flex}.seg-sm .seg-btn{padding:7px 12px;font-size:13.5px}.seg-fill .seg-btn{flex:1;justify-content:center}.seg-btn.active{background:var(--surface);color:var(--ink);box-shadow:var(--seg-shadow)}.seg-count{opacity:.55;font-family:var(--mono);font-size:12px}.chips{flex-wrap:wrap;gap:6px;display:flex}.chips-scroll{gap:6px;max-width:100%;padding-bottom:2px;display:flex;overflow-x:auto}.chip{cursor:pointer;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);border-radius:999px;flex:none;align-items:center;gap:6px;padding:6px 11px;font-size:13px;font-weight:500;display:flex}.chip.active{background:var(--inverse);color:var(--inverse-ink);border-color:var(--inverse)}.chip-count{opacity:.6;font-family:var(--mono);font-size:11.5px}.dot{border-radius:50%;flex:none;width:7px;height:7px;display:inline-block}.pill{white-space:nowrap;border-radius:999px;align-items:center;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.badge-warn{background:var(--warn);color:#16161a;border-radius:10px;place-items:center;min-width:20px;height:20px;padding:0 6px;font-size:11.5px;font-weight:650;display:inline-grid}.avatar{color:#16161a;border-radius:50%;flex:none;place-items:center;font-weight:650;display:grid}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field-label{color:var(--ink-2);font-size:12.5px;font-weight:600}.field-hint{color:var(--ink-3);font-size:12px}.input{border:1px solid var(--line-2);background:var(--surface);height:46px;color:var(--ink);border-radius:12px;outline:none;width:100%;min-width:0;padding:0 14px;font-size:14.5px}.input:focus{border-color:var(--accent-text)}.input[readonly],.input:disabled{border-color:var(--line);background:var(--surface-2);color:var(--ink-2)}.input-lg{border-radius:13px;height:48px;font-size:15px}.input-sm{border-radius:13px;height:42px;font-size:14px}select.input{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--ink-3) 50%), linear-gradient(135deg, var(--ink-3) 50%, transparent 50%);background-position:calc(100% - 18px),calc(100% - 13px);background-repeat:no-repeat;background-size:5px 5px;padding-right:34px}textarea.input{resize:vertical;height:auto;min-height:80px;padding:12px 14px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.form-grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.span-all{grid-column:1/-1}.radio-card{text-align:left;cursor:pointer;color:var(--ink);background:var(--surface);border:1.5px solid var(--line);width:100%;font:inherit;border-radius:14px;align-items:flex-start;gap:12px;padding:12px 14px;display:flex}.radio-card.selected{background:color-mix(in oklab, var(--rc,var(--accent)) 14%, var(--surface));border-color:var(--rc-ring,var(--accent-text))}.radio-ring{border:2px solid var(--line-2);border-radius:50%;flex:none;place-items:center;width:18px;height:18px;margin-top:1px;display:grid}.radio-card.selected .radio-ring{border-color:var(--rc-ring,var(--accent-text))}.radio-ring:after{content:"";border-radius:50%;width:8px;height:8px}.radio-card.selected .radio-ring:after{background:var(--rc-ring,var(--accent-text))}.radio-title{font-size:14.5px;font-weight:600;display:block}.radio-desc{color:var(--ink-2);margin-top:2px;font-size:12.5px;line-height:1.4;display:block}.switch-row{text-align:left;border:1px solid var(--line);background:var(--surface-2);cursor:pointer;color:var(--ink);width:100%;font:inherit;border-radius:14px;align-items:flex-start;gap:14px;padding:14px;display:flex}.switch-row:disabled{cursor:default;opacity:.6}.switch{background:var(--line-2);border-radius:12px;flex:none;justify-content:flex-start;width:42px;height:24px;padding:3px;transition:background .15s;display:flex}.switch.on{background:var(--ok);justify-content:flex-end}.switch:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;box-shadow:0 1px 3px #0003}.check-box{border:1.5px solid var(--line-2);width:20px;height:20px;color:var(--inverse-ink);background:0 0;border-radius:6px;flex:none;place-items:center;font-size:12px;font-weight:700;display:grid}.check-box.on{background:var(--inverse);border-color:var(--inverse)}.status-line{background:var(--surface-2);border-radius:12px;align-items:center;gap:8px;padding:8px 12px;font-size:13px;display:flex}.notice{border-radius:16px;flex-wrap:wrap;align-items:center;gap:12px;padding:12px 14px 12px 16px;font-size:13.5px;display:flex}.notice-warn{background:color-mix(in oklab, var(--warn) 14%, var(--surface));border:1px solid color-mix(in oklab, var(--warn) 40%, transparent);color:var(--warn-text);font-weight:500}.notice-bad{background:color-mix(in oklab, var(--bad) 12%, var(--surface));border:1px solid color-mix(in oklab, var(--bad) 35%, transparent);color:var(--bad-text);font-weight:500}.notice-info{background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2)}.notice-ok{background:color-mix(in oklab, var(--ok) 12%, var(--surface));border:1px solid color-mix(in oklab, var(--ok) 35%, transparent);color:var(--ok-text);font-weight:500}.progress{background:var(--surface-2);border-radius:4px;height:8px;overflow:hidden}.progress>div{border-radius:inherit;background:var(--ok);height:100%}.empty{text-align:center;color:var(--ink-3);padding:32px;font-size:14px}.app-header{z-index:20;padding:14px 24px 0;position:sticky;top:0}.app-header-bar{border-radius:20px;align-items:center;gap:16px;max-width:1240px;margin:0 auto;padding:7px 8px 7px 12px;display:flex}.logo{color:var(--ink);text-align:left;cursor:pointer;background:0 0;border:0;flex:none;align-items:center;gap:10px;padding:0;display:flex}.logo:hover{text-decoration:none}.logo-mark{background:var(--accent);border-radius:10px;flex:none;place-items:center;width:32px;height:32px;display:grid}.logo-mark:after{content:"";background:var(--accent-ink);border-radius:50%;width:12px;height:12px}.logo-title{letter-spacing:-.01em;font-size:14.5px;font-weight:650}.logo-sub{font-family:var(--mono);color:var(--ink-3);letter-spacing:.08em;text-transform:uppercase;font-size:10px}.ws-switch{border:1px solid color-mix(in oklab, var(--accent) 50%, transparent);background:color-mix(in oklab, var(--accent) 10%, transparent);max-width:190px;color:var(--accent-text);cursor:pointer;border-radius:7px;align-items:center;gap:4px;margin-top:3px;padding:2px 7px;font-weight:600;display:inline-flex}.ws-switch:hover{border-color:var(--accent);background:color-mix(in oklab, var(--accent) 18%, transparent)}.app-nav{margin:0 auto}.me-btn{cursor:pointer;text-align:left;color:var(--ink);background:0 0;border:0;border-radius:12px;align-items:center;gap:9px;padding:4px 10px 4px 4px;display:flex}.me-btn:hover,.me-btn.active{background:var(--surface)}.tabbar{z-index:30;background:var(--glass);-webkit-backdrop-filter:blur(26px)saturate(190%);border:1px solid var(--glass-border);box-shadow:var(--glass-hi), 0 18px 40px -16px #00000059;border-radius:26px;gap:2px;padding:6px;display:grid;position:fixed;bottom:14px;left:12px;right:12px}.tab{cursor:pointer;min-height:52px;color:var(--ink-2);background:0 0;border:0;border-radius:20px;flex-direction:column;justify-content:center;align-items:center;gap:4px;font-size:10.5px;font-weight:600;display:flex;position:relative}.tab.active{background:var(--accent);color:var(--accent-ink)}.tab-badge{background:var(--warn);color:#16161a;border-radius:8px;place-items:center;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:700;display:grid;position:absolute;top:4px;right:calc(50% - 20px)}.popover{background:var(--glass-strong);-webkit-backdrop-filter:blur(30px)saturate(180%);border:1px solid var(--glass-border);min-width:240px;box-shadow:var(--glass-hi), 0 20px 50px -20px #00000059;z-index:40;border-radius:16px;padding:6px;position:absolute;top:calc(100% + 8px)}.popover-item{width:100%;color:var(--ink);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:11px;align-items:center;gap:10px;padding:10px 12px;font-size:14px;display:flex}.popover-item:hover,.popover-item.active{background:var(--surface)}.sheet-wrap{z-index:50;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.sheet-scrim{background:var(--scrim);-webkit-backdrop-filter:blur(3px);position:absolute;inset:0}.sheet{background:var(--glass-strong);-webkit-backdrop-filter:blur(30px)saturate(180%);border:1px solid var(--glass-border);width:100%;max-width:480px;max-height:92vh;box-shadow:var(--glass-hi), 0 30px 80px -20px #0006;border-radius:28px;padding:22px;position:relative;overflow:auto}.sheet-wide{max-width:640px}.sheet-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.sheet-title{letter-spacing:-.02em;margin-top:4px;font-size:21px;font-weight:650;line-height:1.2}.toast{z-index:60;background:var(--inverse);min-height:44px;color:var(--inverse-ink);border-radius:14px;align-items:center;gap:14px;width:max-content;max-width:calc(100% - 24px);padding:10px 10px 10px 16px;font-size:13.5px;display:flex;position:fixed;bottom:28px;left:50%;transform:translate(-50%);box-shadow:0 14px 34px -10px #0006}.toast-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.toast-error{background:var(--bad);color:#fff}.toast-action{cursor:pointer;color:var(--accent);white-space:nowrap;background:0 0;border:0;padding:4px 6px;font-size:13.5px;font-weight:650}.spinner{border:3px solid var(--line-2);border-top-color:var(--accent-text);border-radius:50%;width:26px;height:26px;animation:.8s linear infinite spin}.spinner-sm{border-width:2px;width:14px;height:14px}@keyframes spin{to{transform:rotate(360deg)}}.timeline-item{cursor:pointer;text-align:left;color:var(--ink);font:inherit;background:0 0;border:0;border-radius:12px;align-items:center;gap:12px;margin:0 -8px;padding:10px 8px;display:flex}.timeline-item:hover{background:var(--surface-2)}.lesson-card{text-align:left;border:1px solid var(--line);background:var(--surface);cursor:pointer;width:100%;color:var(--ink);font:inherit;border-radius:12px;flex-direction:column;gap:3px;padding:9px 10px;display:flex}.lesson-card:hover{border-color:var(--line-2);box-shadow:var(--shadow)}.lesson-card.pending{background:color-mix(in oklab, var(--warn) 10%, var(--surface));border-color:color-mix(in oklab, var(--warn) 50%, transparent)}.lesson-check{border:1.5px solid var(--line-2);background:var(--surface);width:28px;height:28px;color:var(--ink-3);cursor:pointer;border-radius:50%;place-items:center;padding:0;transition:background .15s,border-color .15s,color .15s,transform .1s;display:grid}.lesson-check:hover{border-color:var(--ok);color:var(--ok-text);background:color-mix(in oklab, var(--ok) 14%, var(--surface))}.lesson-check:active{transform:scale(.92)}.lesson-check.on{background:var(--ok);border-color:var(--ok);color:#fff}.lesson-check:disabled{opacity:.5;cursor:progress}.grid-head{color:var(--ink-3);border-bottom:1px solid var(--line);gap:16px;padding:12px 20px;font-size:12px;font-weight:500;display:grid}.grid-row{border-bottom:1px solid var(--line);align-items:center;gap:16px;padding:12px 20px;display:grid}.grid-row:last-child{border-bottom:0}button.grid-row{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border-top:0;border-left:0;border-right:0}button.grid-row:hover,.grid-row-click:hover{background:var(--surface-2)}.grid-row-click{cursor:pointer}.tg-chip{border:1px solid var(--line);background:var(--surface);color:var(--ink-2);font:inherit;white-space:nowrap;cursor:pointer;border-radius:9px;padding:5px 10px;font-size:12.5px;font-weight:600}.tg-chip:hover{border-color:var(--accent);color:var(--accent-text)}.tg-chip-on{background:color-mix(in oklab, var(--ok) 14%, transparent);color:var(--ok-text);border-color:#0000}.t-right{text-align:right}.log-row{border-bottom:1px solid var(--line)}.log-row:last-child{border-bottom:0}.log-row[data-level=ERROR]{box-shadow:inset 3px 0 0 var(--bad)}.log-row[data-level=WARN]{box-shadow:inset 3px 0 0 var(--warn)}.log-row-head{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:flex-start;gap:12px;padding:10px 16px;display:flex}.log-row-head:hover{background:var(--surface-2)}.log-time{color:var(--ink-3);flex:none;padding-top:2px;font-size:12.5px}.log-meta{color:var(--ink-3);min-width:0;font-size:12px}.log-message{overflow-wrap:anywhere;white-space:pre-wrap;margin-top:4px;font-size:13.5px;line-height:1.45;display:block}.log-message.clamp{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.log-more{color:var(--ink-3);flex:none;padding-top:3px;font-size:12px}.log-details{padding:0 16px 12px}.log-stack{background:var(--surface-2);white-space:pre;border-radius:10px;max-height:340px;margin:8px 0 0;padding:10px 12px;font-size:11.5px;line-height:1.5;overflow:auto}@media (width<=759px){.app-header{padding:10px 12px 0}.app-header-bar{border-radius:18px;gap:10px;padding:7px 7px 7px 10px}.logo-mark{border-radius:9px;width:28px;height:28px}.logo-mark:after{width:10px;height:10px}.logo-title{font-size:14px}.logo-sub{font-size:9.5px}.page{padding:20px 14px 120px}.h1{font-size:27px}.form-grid,.form-grid-3{grid-template-columns:minmax(0,1fr)}.sheet-wrap{align-items:flex-end;padding:0}.sheet{border-radius:28px 28px 0 0;max-width:none;max-height:90vh}.toast{bottom:100px}.hide-mobile{display:none!important}.btn,.icon-btn{min-height:44px}}@media (width>=760px){.show-mobile{display:none!important}}.legal p,.legal li{color:var(--ink-2);margin:0;font-size:14.5px;line-height:1.6}.legal ul{flex-direction:column;gap:6px;margin:0;padding-left:20px;display:flex}.legal section+section,.legal>p+section{margin-top:8px}
