.pp{--pp-accent: var(--brand-500);--pp-accent-ring: rgb(19 165 228 / .35);--pp-glass: rgb(12 20 26 / .62);--pp-glass-strong: var(--float-surface);--pp-line: var(--float-line);--pp-ink-2: var(--float-ink-2);--pp-ease: var(--ease-out);position:relative;isolation:isolate;width:100%;aspect-ratio:var(--pp-aspect, 16 / 9);max-height:var(--pp-max-h, none);min-height:200px;margin:0 auto;overflow:hidden;border-radius:var(--radius-lg);background:#000;color:#fff;font-family:var(--font-sans);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.pp:fullscreen{width:100%;height:100%;max-height:none;aspect-ratio:auto;border-radius:0}.pp:-webkit-full-screen{width:100%;height:100%;max-height:none;border-radius:0}.pp-video{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;width:100%;height:100%;object-fit:contain;background:#000}.pp-surface{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;cursor:pointer}.pp[data-status=loading] .pp-surface,.pp[data-status=error] .pp-surface{cursor:default}.pp[data-idle],.pp[data-idle] *{cursor:none!important}.pp-chrome{z-index:3;transition:opacity .32s var(--pp-ease),transform .4s var(--pp-ease)}.pp[data-idle] .pp-chrome{opacity:0;pointer-events:none;transition-duration:.6s,.7s}.pp[data-idle] .pp-controls{transform:translateY(8px)}.pp[data-idle] .pp-topbar{transform:translateY(-8px)}.pp-controls{position:absolute;left:0;right:0;bottom:0;padding:56px 16px 10px;background:linear-gradient(to top,rgb(0 0 0 / .72),rgb(0 0 0 / .36) 50%,transparent)}.pp-topbar{position:absolute;left:0;right:0;top:0;padding:22px 32px 56px;background:linear-gradient(to bottom,rgb(0 0 0 / .6),transparent);pointer-events:none}.pp-title{font-size:var(--text-lg);font-weight:var(--weight-semibold);letter-spacing:-.01em;text-shadow:0 1px 8px rgb(0 0 0 / .4)}.pp-row{display:flex;align-items:center;gap:2px;height:44px}.pp-spacer{flex:1}.pp-btn{position:relative;display:grid;place-items:center;flex:none;width:40px;height:40px;padding:0;border:0;border-radius:var(--radius-pill);background:transparent;color:#ffffffe6;cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),transform var(--duration-fast) var(--pp-ease)}.pp-btn:hover{background:#ffffff24;color:#fff}.pp-btn:active{transform:scale(.9)}.pp-btn:focus-visible{outline:2px solid var(--pp-accent);outline-offset:1px}.pp-btn:disabled{opacity:.38;pointer-events:none}.pp-btn[aria-pressed=true]{color:var(--brand-200)}.pp-btn-text{width:auto;min-width:44px;height:30px;padding:0 10px;margin:0 4px;border:1px solid rgb(255 255 255 / .22);font-size:var(--text-sm);font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums}.pp-btn-text:hover{border-color:#fff6}.pp-btn-play{width:44px;height:44px;margin-right:4px;background:#fff;color:var(--ink)}.pp-btn-play:hover{background:#fff;color:var(--ink);transform:scale(1.05)}.pp-btn-play:active{transform:scale(.92)}.pp-btn-play .pp-swap svg{width:22px;height:22px}.pp-btn[data-tip]:after{content:attr(data-tip);position:absolute;bottom:calc(100% + 10px);left:50%;padding:5px 10px;border-radius:var(--radius-xs);background:var(--pp-glass-strong);color:var(--float-ink);font-size:var(--text-xs);font-weight:var(--weight-medium);white-space:nowrap;letter-spacing:.01em;box-shadow:var(--shadow-float);opacity:0;transform:translate(-50%,4px);pointer-events:none;transition:opacity .12s,transform .16s var(--pp-ease)}.pp-btn[data-tip-align=start]:after{left:0;transform:translateY(4px)}.pp-btn[data-tip-align=end]:after{left:auto;right:0;transform:translateY(4px)}.pp-btn:hover:after{opacity:1;transform:translate(-50%);transition-delay:.5s}.pp-btn[data-tip-align=start]:hover:after,.pp-btn[data-tip-align=end]:hover:after{transform:translate(0)}.pp-btn:focus-visible:after{opacity:1;transition-delay:.15s}.pp-btn[data-tip-align=center]:focus-visible:after{transform:translate(-50%)}.pp-btn[data-tip-hidden]:after,.pp-btn:active:after{display:none}@media (hover: none){.pp-btn[data-tip]:after{display:none}}.pp-swap{position:relative;display:block;width:24px;height:24px}.pp-btn-play .pp-swap{width:22px;height:22px}.pp-swap svg{position:absolute;top:0;right:0;bottom:0;left:0;width:24px;height:24px;transition:opacity .16s,transform .26s var(--pp-ease)}.pp-swap.is-a svg:last-child,.pp-swap.is-b svg:first-child{opacity:0;transform:scale(.55) rotate(-25deg)}.pp-clock{margin-left:10px;font-size:var(--text-sm);font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums;color:#fff;white-space:nowrap}.pp-clock-sep{margin:0 5px;color:var(--pp-ink-2)}.pp-clock-total{color:var(--pp-ink-2)}.pp-progress{--played: 0;position:relative;display:flex;align-items:center;height:20px;margin:0 6px 4px;cursor:pointer;touch-action:none;outline:none}.pp-track{position:relative;width:100%;height:4px;overflow:hidden;border-radius:var(--radius-pill);background:#ffffff38;transition:height .2s var(--pp-ease)}.pp-progress:hover .pp-track,.pp-progress.is-dragging .pp-track,.pp-progress:focus-visible .pp-track{height:7px}.pp-buffered{position:absolute;top:0;bottom:0;background:#ffffff47;transition:width .3s linear}.pp-hover{position:absolute;top:0;bottom:0;left:0;background:#ffffff3d}.pp-played{position:absolute;top:0;right:0;bottom:0;left:0;transform-origin:left center;transform:scaleX(var(--played));background:var(--pp-accent)}.pp-thumb{position:absolute;top:50%;left:calc(var(--played) * 100%);width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:#fff;box-shadow:0 0 0 5px var(--pp-accent-ring),0 2px 6px #0006;transform:scale(0);transition:transform .2s var(--pp-ease);pointer-events:none}.pp-progress:hover .pp-thumb,.pp-progress:focus-visible .pp-thumb{transform:scale(1)}.pp-progress.is-dragging .pp-thumb{transform:scale(1.2)}.pp-progress:focus-visible .pp-track{box-shadow:0 0 0 2px var(--pp-accent-ring)}.pp-time-tip{position:absolute;bottom:26px;left:clamp(28px,calc(var(--x) * 100%),calc(100% - 28px));transform:translate(-50%);padding:4px 9px;border-radius:var(--radius-xs);background:#fff;color:var(--ink);font-size:var(--text-xs);font-weight:var(--weight-bold);font-variant-numeric:tabular-nums;box-shadow:0 6px 18px #00000059;pointer-events:none;animation:pp-fade .12s ease both}.pp-volume{display:flex;align-items:center}.pp-volume-slider{--level: 1;position:relative;display:flex;align-items:center;width:0;height:32px;margin-left:-4px;padding:0 7px;opacity:0;overflow:hidden;cursor:pointer;touch-action:none;outline:none;transition:width .28s var(--pp-ease),opacity .2s,margin .28s var(--pp-ease)}.pp-volume:hover .pp-volume-slider,.pp-volume:focus-within .pp-volume-slider,.pp-volume.is-dragging .pp-volume-slider{width:88px;opacity:1;margin-right:2px}.pp-volume-track{position:relative;width:100%;height:4px;border-radius:var(--radius-pill);background:#ffffff38;overflow:hidden}.pp-volume-fill{position:absolute;inset:0 auto 0 0;width:calc(var(--level) * 100%);background:#fff;border-radius:inherit}.pp-volume-thumb{position:absolute;top:50%;left:calc(7px + var(--level) * (100% - 14px));width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #0006;pointer-events:none}.pp-volume-slider:focus-visible .pp-volume-track{box-shadow:0 0 0 2px var(--pp-accent-ring)}.pp-menu-root{position:relative}.pp-menu{position:absolute;right:0;bottom:calc(100% + 12px);z-index:4;min-width:180px;padding:6px;border:1px solid var(--pp-line);border-radius:var(--radius-md);background:var(--pp-glass-strong);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:var(--shadow-float);transform-origin:bottom right;animation:pp-menu-in .18s var(--pp-ease) both}.pp-menu[hidden]{display:none}.pp-menu-title{margin:4px 10px 6px;font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--pp-ink-2)}.pp-menu-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:8px 10px;border:0;border-radius:var(--radius-xs);background:none;color:var(--float-ink);font:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer}.pp-menu-item:hover,.pp-menu-item:focus-visible{background:var(--float-hover);outline:none}.pp-menu-item[aria-checked=true]{color:var(--brand-200);font-weight:var(--weight-semibold)}@keyframes pp-menu-in{0%{opacity:0;transform:translateY(6px) scale(.97)}}.pp-loader{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:grid;place-content:center;justify-items:center;pointer-events:none}.pp-loader-buffering{animation:pp-fade .25s .35s both}.pp-loader-initial{animation:pp-fade .3s both}.pp-loader-disc{width:68px;height:68px;border-radius:50%;background:var(--pp-glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 10px 30px #00000059,inset 0 0 0 1px #ffffff14}.pp-loader svg{width:68px;height:68px;overflow:visible}.pp-loader-orbit{fill:none;stroke:var(--pp-accent);stroke-width:2.4;stroke-linecap:round;stroke-dasharray:20 112;transform-origin:24px 24px;animation:pp-orbit 1.25s linear infinite,pp-orbit-len 2.5s var(--pp-ease) infinite}.pp-loader-mark{fill:#fff;transform-origin:26px 24px;animation:pp-breathe 1.25s ease-in-out infinite}.pp-loader-label{margin-top:14px;font-size:var(--text-sm);font-weight:var(--weight-medium);color:#ffffffd9;text-shadow:0 1px 6px rgb(0 0 0 / .5)}.pp[data-status=loading]:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:#00000059}@keyframes pp-orbit{to{transform:rotate(360deg)}}@keyframes pp-orbit-len{0%,to{stroke-dasharray:14 118}50%{stroke-dasharray:52 80}}@keyframes pp-breathe{0%,to{opacity:.55;transform:scale(.92)}50%{opacity:1;transform:scale(1)}}.pp-pulse{position:absolute;top:50%;left:50%;z-index:2;display:grid;place-items:center;width:80px;height:80px;margin:-40px 0 0 -40px;border-radius:50%;background:var(--pp-glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none;animation:pp-pulse .62s var(--pp-ease) forwards}@keyframes pp-pulse{0%{opacity:0;transform:scale(.72)}22%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.22)}}.pp-seek{position:absolute;top:50%;z-index:2;display:flex;flex-direction:column;align-items:center;gap:6px;min-width:92px;padding:14px 18px;border-radius:var(--radius-lg);background:var(--pp-glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none;animation:pp-seek .95s var(--pp-ease) forwards}.pp-seek.is-back{left:9%}.pp-seek.is-forward{right:9%}.pp-seek strong{font-size:var(--text-base);font-weight:var(--weight-bold);font-variant-numeric:tabular-nums}.pp-seek-arrows{display:flex;gap:2px}.pp-seek-arrows i{width:0;height:0;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:9px solid #fff;opacity:.25;animation:pp-arrow .6s ease forwards}.pp-seek.is-back .pp-seek-arrows{flex-direction:row-reverse}.pp-seek.is-back .pp-seek-arrows i{border-left:0;border-right:9px solid #fff}.pp-seek-arrows i:nth-child(2){animation-delay:.08s}.pp-seek-arrows i:nth-child(3){animation-delay:.16s}@keyframes pp-seek{0%{opacity:0;transform:translateY(-50%) scale(.9)}15%{opacity:1;transform:translateY(-50%) scale(1)}70%{opacity:1}to{opacity:0;transform:translateY(-50%) scale(1)}}@keyframes pp-arrow{40%{opacity:1}to{opacity:.35}}.pp-chip{position:absolute;top:14%;left:50%;z-index:2;display:flex;align-items:center;gap:10px;padding:9px 14px;border-radius:var(--radius-pill);background:var(--pp-glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:var(--text-sm);font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums;pointer-events:none;animation:pp-chip 1s var(--pp-ease) forwards}.pp-chip-bar{width:72px;height:4px;border-radius:var(--radius-pill);background:#ffffff38;overflow:hidden}.pp-chip-bar span{display:block;height:100%;background:var(--pp-accent);transition:width .15s}@keyframes pp-chip{0%{opacity:0;transform:translate(-50%,-6px)}15%{opacity:1;transform:translate(-50%)}75%{opacity:1}to{opacity:0;transform:translate(-50%)}}.pp-start{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:grid;place-content:center;justify-items:center;gap:14px;background:#040a0e61;pointer-events:none;animation:pp-fade .3s both}.pp-start-button{display:grid;place-items:center;width:76px;height:76px;padding:0 0 0 4px;border:0;border-radius:50%;background:var(--pp-accent);color:#fff;cursor:pointer;box-shadow:0 0 0 0 var(--pp-accent-ring),0 14px 34px #0006;pointer-events:auto;transition:transform .22s var(--ease-spring),box-shadow .3s var(--pp-ease)}.pp-start-button:hover{transform:scale(1.07);box-shadow:0 0 0 10px var(--pp-accent-ring),0 14px 34px #0006}.pp-start-button:active{transform:scale(.95)}.pp-start-button:focus-visible{outline:2px solid #fff;outline-offset:4px}.pp-start-label{padding:6px 14px;border-radius:var(--radius-pill);background:var(--pp-glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:var(--text-sm);font-weight:var(--weight-medium)}.pp-start-label strong{font-weight:var(--weight-bold);font-variant-numeric:tabular-nums}.pp-start-of{color:var(--pp-ink-2);font-variant-numeric:tabular-nums}.pp-panel{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px 24px 84px;text-align:center;background:#060c10c7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:pp-fade .35s var(--pp-ease) both}.pp-panel-title{margin:0;font-size:var(--text-lg);font-weight:var(--weight-semibold)}.pp-panel-text{margin:0 0 4px;max-width:440px;font-size:var(--text-base);line-height:1.45;color:var(--pp-ink-2)}.pp-end-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.pp-end-check{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:var(--pp-accent);color:#fff;animation:pp-check-in .5s var(--ease-spring) both}.pp-end-check path{stroke-width:2.4;stroke-dasharray:24;stroke-dashoffset:24;animation:pp-draw .4s .18s var(--pp-ease) forwards}@keyframes pp-check-in{0%{opacity:0;transform:scale(.5)}}@keyframes pp-draw{to{stroke-dashoffset:0}}.pp-next{display:grid;justify-items:center;gap:4px;max-width:min(520px,100%);margin-top:6px}.pp-next-label{display:inline-flex;align-items:center;gap:10px;font-size:var(--text-sm);color:var(--pp-ink-2);font-variant-numeric:tabular-nums}.pp-next-cancel{padding:0;border:0;background:none;color:#fff;font:inherit;font-weight:var(--weight-semibold);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.pp-next-title{max-width:100%;margin-bottom:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-h2);font-weight:var(--weight-bold);letter-spacing:-.01em}.pp-action{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:8px 18px;border:1px solid rgb(255 255 255 / .22);border-radius:var(--radius-pill);background:#ffffff14;color:#fff;font:inherit;font-size:var(--text-sm);font-weight:var(--weight-semibold);text-decoration:none;cursor:pointer;transition:background var(--duration-fast),transform var(--duration-fast) var(--pp-ease),border-color var(--duration-fast)}.pp-action:hover{background:#ffffff29}.pp-action:active{transform:scale(.97)}.pp-action:focus-visible{outline:2px solid var(--pp-accent);outline-offset:2px}.pp-action-primary{border-color:transparent;background:#fff;color:var(--ink)}.pp-action-primary:hover{background:var(--brand-50)}.pp-countdown{width:18px;height:18px;transform:rotate(-90deg)}.pp-countdown circle{fill:none;stroke:var(--brand-600);stroke-width:2.6;stroke-dasharray:1;stroke-linecap:round;transition:stroke-dashoffset .1s linear}.pp-error-icon{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:#f9706629;color:#fda29b}.pp-toast{position:absolute;left:16px;top:16px;z-index:3;display:flex;align-items:center;gap:12px;padding:6px 6px 6px 14px;border-radius:var(--radius-pill);background:var(--pp-glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:var(--text-sm);animation:pp-fade .25s var(--pp-ease) both}.pp-toast button{border:0;border-radius:var(--radius-pill);padding:5px 12px;background:#ffffff29;color:#fff;font:inherit;font-size:var(--text-xs);font-weight:var(--weight-semibold);cursor:pointer}.pp-toast button:hover{background:#ffffff42}.pp[data-fullscreen] .pp-toast{top:64px;left:32px}@keyframes pp-fade{0%{opacity:0}}.pp[data-fullscreen] .pp-controls{padding:80px 32px 18px}.pp[data-fullscreen] .pp-row{height:52px;gap:6px}.pp[data-fullscreen] .pp-btn{width:46px;height:46px}.pp[data-fullscreen] .pp-btn-text{width:auto;height:34px}.pp[data-fullscreen] .pp-btn svg{transform:scale(1.1)}.pp[data-fullscreen] .pp-clock{font-size:var(--text-base)}@media (max-width: 560px){.pp-controls{padding:40px 6px 4px}.pp-btn{width:36px;height:36px}.pp-btn-play{width:38px;height:38px}.pp-volume-slider{display:none}.pp-clock{margin-left:4px;font-size:var(--text-xs)}.pp-seek{min-width:76px;padding:10px 12px}.pp-start-button{width:60px;height:60px}.pp-start-label{display:none}.pp-panel{gap:6px;padding:12px 16px 52px}.pp-panel-title{font-size:var(--text-base)}.pp-panel-text{font-size:var(--text-xs);line-height:1.35}.pp-end-check{width:34px;height:34px}.pp-end-check svg{width:16px;height:16px}.pp-next-title{font-size:var(--text-base);margin-bottom:4px}.pp-error-icon{width:36px;height:36px}.pp-error-icon svg{width:18px;height:18px}.pp-action{min-height:34px;padding:6px 12px;font-size:var(--text-xs)}}@media (prefers-reduced-motion: reduce){.pp-pulse,.pp-seek,.pp-chip{animation:pp-static .9s steps(1,end) forwards!important;animation-duration:.9s!important}.pp-loader-orbit{animation:none!important;stroke-dasharray:132 0;opacity:.5}.pp-loader-mark,.pp-end-check{animation:none!important}.pp-end-check path{animation:none!important;stroke-dashoffset:0}.pp[data-idle] .pp-controls,.pp[data-idle] .pp-topbar{transform:none}@keyframes pp-static{0%{opacity:1}to{opacity:0}}}.lv{container:lesson / inline-size}.lv-grid{--lv-panel-w: clamp(320px, 30cqi, 400px);display:grid;grid-template-columns:minmax(0,1fr);grid-template-areas:"top" "stage" "info" "panel";gap:var(--space-4) var(--space-6)}.lv-top{grid-area:top;min-width:0}.lv-stage{grid-area:stage;min-width:0}.lv-info{grid-area:info;min-width:0}.lv-panel{grid-area:panel;min-width:0}.lv-stage .pp{--pp-max-h: calc(100dvh - var(--topbar-h) - 150px)}.lv.is-theater .lv-stage .pp{--pp-max-h: calc(100dvh - var(--topbar-h) - 110px)}.lv-alert{margin-bottom:var(--space-3)}.lv.is-switching :is(.lv-stage,.lv-info){opacity:.6;transition:opacity var(--duration-base)}.lv-top{display:flex;align-items:center;min-height:32px}.lv-back{display:inline-flex;align-items:center;gap:6px;min-width:0;max-width:100%;margin-left:-8px;padding:6px 12px 6px 8px;border-radius:var(--radius-pill);color:var(--ink-3);font-size:var(--text-sm);font-weight:var(--weight-semibold);text-decoration:none;transition:background var(--duration-fast),color var(--duration-fast)}.lv-back span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lv-back svg{flex:none;transition:transform var(--duration-base) var(--ease-out)}.lv-back:hover{background:var(--brand-a08);color:var(--ink-2)}.lv-back:hover svg{transform:translate(-2px)}.lv-back:focus-visible{outline:none;box-shadow:var(--focus-ring)}.lv-info{container:lessoninfo / inline-size;align-self:start;padding:var(--space-5) var(--space-6);border-radius:var(--radius-lg);background:var(--surface)}.lv-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-4) var(--space-6)}.lv-heading{flex:1 1 260px;min-width:0}.lv-meta{display:flex;flex-wrap:wrap;gap:2px 0;margin:0;font-size:var(--text-sm);color:var(--ink-3);font-variant-numeric:tabular-nums}.lv-meta span+span:before{content:"·";margin:0 8px;color:var(--ink-4)}.lv-heading h1{margin:4px 0 0;font-size:var(--text-h1);font-weight:var(--weight-bold);line-height:1.2;letter-spacing:-.02em;color:var(--ink);text-wrap:balance;overflow-wrap:anywhere}.lv-actions{display:flex;align-items:center;gap:var(--space-2);flex:none}.lv-actions .quick-chip{min-height:38px}.lv-step{border:1px solid var(--line-strong);color:var(--ink-2);text-decoration:none}.lv-step:hover{border-color:var(--brand-a30)}.lv-step:disabled{border-color:var(--line)}.lv-next svg{transition:transform var(--duration-base) var(--ease-out)}.lv-next:hover svg{transform:translate(2px)}.lv-complete{gap:10px;padding-left:12px}.lv-complete-check{position:relative;display:grid;place-items:center;width:20px;height:20px;border:2px solid var(--line-strong);border-radius:50%;color:transparent;transition:background var(--duration-base),border-color var(--duration-base),color var(--duration-base)}.lv-complete:hover .lv-complete-check{border-color:var(--success);color:var(--success)}.lv-complete.is-done{border-color:transparent;background:var(--success-soft);color:var(--success)}.lv-complete.is-done:hover{background:var(--success-soft);filter:brightness(.98)}.lv-complete.is-done .lv-complete-check{border-color:var(--success);background:var(--success);color:#fff}.lv-complete:disabled{opacity:1}.lv-complete.is-celebrating .lv-complete-check{animation:lv-pop .45s var(--ease-spring)}.lv-complete.is-celebrating .lv-complete-check:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;border-radius:50%;border:2px solid var(--success);animation:lv-ring .6s var(--ease-out) forwards}@keyframes lv-pop{0%{transform:scale(.6)}60%{transform:scale(1.18)}to{transform:scale(1)}}@keyframes lv-ring{0%{opacity:.7;transform:scale(1)}to{opacity:0;transform:scale(2.2)}}.lv-body{display:grid;gap:var(--space-6);margin-top:var(--space-5);padding-top:var(--space-5);border-top:1px solid var(--line)}@container lessoninfo (min-width: 700px){.lv-body.has-both{grid-template-columns:minmax(0,1fr) minmax(240px,320px);gap:var(--space-8)}}.lv-body h2{margin:0 0 var(--space-2);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--ink)}.lv-about .rich-text{max-width:72ch;margin:0;padding:0;border:0;background:none;font-size:var(--text-base);line-height:1.65;color:var(--ink-2)}.lv-file-list{display:grid;gap:var(--space-2);margin:0;padding:0;list-style:none}.lv-file{display:flex;align-items:center;gap:var(--space-3);padding:8px 12px 8px 8px;border-radius:var(--radius-md);background:var(--surface-sunken);color:var(--ink-2);text-decoration:none;text-align:left;transition:background var(--duration-fast)}.lv-file:hover{background:var(--surface-hover)}.lv-file:focus-visible{outline:none;box-shadow:var(--focus-ring)}.lv-file-icon{display:grid;place-items:center;flex:none;width:36px;height:36px;border-radius:var(--radius-sm);background:var(--surface);color:var(--brand-700)}.lv-file-text{display:grid;flex:1;min-width:0}.lv-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm);font-weight:var(--weight-semibold)}.lv-file-meta{font-size:var(--text-xs);color:var(--ink-3)}.lv-file-action{display:grid;place-items:center;flex:none;color:var(--ink-4);transition:color var(--duration-fast),transform var(--duration-base) var(--ease-out)}.lv-file:hover .lv-file-action{color:var(--brand-700);transform:translateY(1px)}.lv-doc{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);aspect-ratio:16 / 9;min-height:280px;padding:var(--space-8) var(--space-6);border-radius:var(--radius-lg);background:var(--surface);text-align:center}.lv-doc-icon{display:grid;place-items:center;width:56px;height:56px;margin-bottom:var(--space-2);border-radius:var(--radius-md);background:var(--brand-a14);color:var(--brand-700)}.lv-doc.is-unavailable .lv-doc-icon{background:var(--warning-soft);color:var(--warning)}.lv-doc h2{margin:0;font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--ink)}.lv-doc p{max-width:440px;margin:0;font-size:var(--text-base);line-height:1.5;color:var(--ink-3)}.lv-doc .lv-file-list{width:min(520px,100%);margin-top:var(--space-4)}.lv-panel{display:flex;flex-direction:column;height:560px;overflow:hidden;border-radius:var(--radius-lg);background:var(--surface)}.lv-tabs{position:relative;flex:none;display:grid;grid-template-columns:1fr 1fr;margin:var(--space-3) var(--space-3) 0;padding:4px;border-radius:var(--radius-pill);background:var(--surface-sunken)}.lv-tabs-thumb{position:absolute;top:4px;bottom:4px;left:4px;width:calc(50% - 4px);border-radius:var(--radius-pill);background:var(--surface);box-shadow:var(--shadow-xs),0 0 0 1px var(--line);transition:transform var(--duration-slow) var(--ease-out)}.lv-tabs[data-active=notes] .lv-tabs-thumb{transform:translate(100%)}.lv-tabs button{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 12px;border:0;border-radius:var(--radius-pill);background:none;color:var(--ink-3);font:inherit;font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;transition:color var(--duration-fast)}.lv-tabs button:hover{color:var(--ink-2)}.lv-tabs button[aria-selected=true]{color:var(--ink)}.lv-tabs button:focus-visible{outline:none;box-shadow:var(--focus-ring)}.lv-tab-count{color:var(--ink-4);font-weight:var(--weight-medium);font-variant-numeric:tabular-nums}.lv-tabpanel{flex:1;min-height:0;display:flex;flex-direction:column}.lv-tabpanel[hidden]{display:none}.lv-notes-loading{margin:var(--space-3);height:96px;border-radius:var(--radius-md)}.lv-outline{display:flex;flex-direction:column;flex:1;min-height:0}.lv-outline-loading{display:grid;gap:var(--space-2);padding:var(--space-4)}.lv-outline-loading .skeleton{height:44px;border-radius:var(--radius-sm)}.lv-course{flex:none;padding:var(--space-4) var(--space-4) var(--space-3);border-bottom:1px solid var(--line)}.lv-course-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-2);font-size:var(--text-sm);color:var(--ink-3)}.lv-course-count strong{color:var(--ink);font-weight:var(--weight-bold);font-variant-numeric:tabular-nums}.lv-course-percent{font-weight:var(--weight-semibold);color:var(--brand-700);font-variant-numeric:tabular-nums}.lv-modules{flex:1;min-height:0;overflow-y:auto;padding:var(--space-2) var(--space-2) var(--space-4);scrollbar-width:thin;overscroll-behavior:contain}.lv-module+.lv-module{margin-top:2px}.lv-module-head{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:10px;border:0;border-radius:var(--radius-sm);background:none;font:inherit;text-align:left;cursor:pointer;transition:background var(--duration-fast)}.lv-module-head:hover{background:var(--surface-hover)}.lv-module-head:focus-visible{outline:none;box-shadow:var(--focus-ring)}.lv-module-text{display:grid;gap:2px;flex:1;min-width:0}.lv-module-title{font-size:var(--text-sm);font-weight:var(--weight-semibold);line-height:1.35;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.lv-module.is-here .lv-module-title{color:var(--ink)}.lv-module-meta{font-size:var(--text-xs);color:var(--ink-3);font-variant-numeric:tabular-nums}.lv-module-done{display:inline-flex;align-items:center;gap:4px;color:var(--success);font-weight:var(--weight-semibold)}.lv-module-chevron{flex:none;color:var(--ink-4);transform:rotate(-90deg);transition:transform var(--duration-base) var(--ease-out)}.lv-module.is-open .lv-module-chevron{transform:none}.lv-module-body{display:grid;grid-template-rows:0fr;visibility:hidden;transition:grid-template-rows var(--duration-base) var(--ease-out),visibility 0s var(--duration-base)}.lv-module.is-open .lv-module-body{grid-template-rows:1fr;visibility:visible;transition-delay:0s}.lv-module-inner{min-height:0;overflow:hidden}.lv-rows{display:grid;gap:1px;margin:0;padding:2px 0 6px;list-style:none}.lv-row{display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:var(--space-3);padding:8px 10px;border-radius:var(--radius-sm);color:var(--ink-2);font-size:var(--text-sm);text-decoration:none;transition:background var(--duration-fast),color var(--duration-fast)}.lv-row:hover{background:var(--surface-hover)}.lv-row:focus-visible{outline:none;box-shadow:var(--focus-ring)}.lv-row-status{display:grid;place-items:center}.lv-row-title{line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.lv-row-meta{font-size:var(--text-xs);color:var(--ink-4);font-variant-numeric:tabular-nums}.lv-row.is-completed .lv-row-title{color:var(--ink-3)}.lv-row.is-unavailable{opacity:.6}.lv-row.is-current{background:var(--brand-a08)}.lv-row.is-current .lv-row-title{color:var(--brand-800);font-weight:var(--weight-semibold)}.lv-row.is-current .lv-row-meta{color:var(--brand-700)}.lv-row .status{width:20px;height:20px}.lv-sub{margin-top:2px}.lv-sub-title{margin:0;padding:8px 10px 4px 44px;font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--ink-3)}.lv-eq{display:flex;align-items:flex-end;justify-content:center;gap:2px;width:20px;height:20px;padding:4px 3px;border-radius:50%;background:var(--brand-500)}.lv-eq i{display:block;width:3px;border-radius:2px;background:#fff}.lv-eq i:nth-child(1){height:50%}.lv-eq i:nth-child(2){height:90%}.lv-eq i:nth-child(3){height:65%}.lv-eq.is-playing i{animation:lv-eq .9s ease-in-out infinite alternate}.lv-eq.is-playing i:nth-child(2){animation-delay:-.3s;animation-duration:.7s}.lv-eq.is-playing i:nth-child(3){animation-delay:-.6s;animation-duration:1.1s}@keyframes lv-eq{0%{height:25%}to{height:95%}}.lv-skel-line{display:block;width:220px;height:14px;border-radius:var(--radius-pill)}.lv-skel-title{display:block;width:min(420px,70%);height:26px;margin-top:10px;border-radius:var(--radius-sm)}.lv-skel-stage{aspect-ratio:16 / 9;border-radius:var(--radius-lg)}.lv-skel-info{min-height:96px}@container lesson (min-width: 960px){.lv-grid{grid-template-columns:minmax(0,1fr) var(--lv-panel-w);grid-template-rows:auto auto 1fr;grid-template-areas:"top top" "stage panel" "info panel"}.lv-panel{position:sticky;top:calc(var(--topbar-h) + var(--space-4));align-self:start;height:calc(100dvh - var(--topbar-h) - 84px);min-height:420px;max-height:920px}.lv.is-theater .lv-grid{grid-template-rows:auto auto auto;grid-template-areas:"top top" "stage stage" "info panel"}.lv.is-theater .lv-panel{position:static;height:clamp(420px,62dvh,680px)}}@container lesson (max-width: 959px){.pp-btn-theater{display:none}}@container lesson (max-width: 600px){.lv-stage .pp:not(:fullscreen),.lv-doc{width:calc(100% + 2 * var(--page-pad-x));margin:0 calc(-1 * var(--page-pad-x));border-radius:0}.lv-stage .pp{--pp-max-h: none}.lv-info{padding:var(--space-4)}.lv-actions{flex-wrap:wrap;width:100%}.lv-complete{order:-1;flex:1 1 100%}.lv-next{flex:1}.lv-panel{height:520px}}@media (prefers-reduced-motion: reduce){.lv-eq.is-playing i{animation:none}.lv-complete.is-celebrating .lv-complete-check,.lv-complete.is-celebrating .lv-complete-check:after{animation:none}.lv-complete.is-celebrating .lv-complete-check:after{display:none}}.ccard{container:ccard / inline-size;position:relative;display:flex;flex-direction:column;min-height:256px;border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-card);color:inherit;text-decoration:none;overflow:hidden;isolation:isolate;transition:transform var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out)}.ccard:hover{transform:translateY(-3px);box-shadow:var(--shadow-card-hover)}.ccard:active{transform:translateY(-1px)}.ccard:focus-visible{outline:none;box-shadow:var(--shadow-card),var(--focus-ring)}.ccard-skeleton{background-color:#fff9}.ccard-cover{position:relative;flex:none;height:116px;overflow:hidden;background:var(--brand-100);filter:hue-rotate(var(--cover-shift, 0deg))}.ccard-initials{position:absolute;left:var(--space-4);bottom:2px;font-size:3.25rem;font-weight:var(--weight-extrabold);line-height:1;letter-spacing:-.05em;color:#ffffffbf;transition:transform var(--duration-slow) var(--ease-out)}.ccard:hover .ccard-initials{transform:translateY(-2px)}.ccard-action{position:absolute;right:var(--space-3);bottom:var(--space-3);display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--surface);color:var(--brand-500);box-shadow:var(--shadow-xs);transition:transform var(--duration-base) var(--ease-spring),background var(--duration-fast),color var(--duration-fast)}.ccard:hover .ccard-action{transform:scale(1.08);background:var(--brand-500);color:#fff}.ccard-body{flex:1;display:flex;flex-direction:column;padding:var(--space-4) var(--space-3) var(--space-3)}.ccard-title{margin:0 var(--space-1);font-size:var(--text-md);font-weight:var(--weight-bold);line-height:1.25;color:var(--ink);letter-spacing:-.005em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ccard-meta{margin:4px var(--space-1) var(--space-3);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1.3;color:var(--ink-3)}.ccard-progress{display:grid;gap:var(--space-2);margin-top:auto;padding:var(--space-3);border-radius:var(--radius-md);background:var(--brand-a08)}.ccard-progress-foot{display:flex;justify-content:space-between;gap:8px;font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1;color:var(--ink-3);white-space:nowrap}.ccard-progress-foot strong{font-weight:var(--weight-bold);color:var(--ink-2)}@container ccard (max-width: 200px){.ccard-initials{font-size:2.75rem}.ccard-progress-foot span:first-child{display:none}.ccard-progress-foot{justify-content:flex-end}}.ccard-slot{position:relative}.ccard-slot:hover .ccard{transform:translateY(-3px);box-shadow:var(--shadow-card-hover)}.ccard-slot:has(.ccard-remove:hover) .ccard-action{transform:none;background:var(--surface);color:var(--brand-500)}.ccard-slot .ccard-remove{position:absolute;top:var(--space-3);right:var(--space-3);z-index:2;display:grid;place-items:center;width:28px;height:28px;padding:0;border:0;border-radius:50%;cursor:pointer;background:#ffffffeb;color:var(--ink-2);box-shadow:var(--shadow-xs);opacity:0;transform:scale(.8);transition:opacity var(--duration-fast) var(--ease-out),transform var(--duration-base) var(--ease-spring),background var(--duration-fast),color var(--duration-fast)}.ccard-slot:hover .ccard-remove,.ccard-slot:focus-within .ccard-remove,.ccard-slot.is-pending .ccard-remove{opacity:1;transform:translateY(-3px) scale(1)}.ccard-slot:focus-within:not(:hover) .ccard-remove{transform:scale(1)}.ccard-remove:hover,.ccard-slot.is-pending .ccard-remove{background:var(--danger);color:#fff}.ccard-remove:active{transform:translateY(-3px) scale(.92)}.ccard-remove:focus-visible{outline:none;box-shadow:var(--shadow-xs),var(--focus-ring)}@media (hover: none){.ccard-slot .ccard-remove{opacity:1;transform:none}}.ccard-slot.is-leaving{pointer-events:none;animation:ccard-leave .26s var(--ease-out) forwards}@keyframes ccard-leave{to{opacity:0;transform:scale(.94);filter:saturate(.4)}}@media (prefers-reduced-motion: reduce){.ccard-slot .ccard-remove{transition:none}}.dashboard-wrap{container:dashboard / inline-size;padding-top:var(--space-12)}.dashboard{display:grid;grid-template-columns:minmax(0,1fr) clamp(280px,27%,340px);gap:var(--space-8);align-items:start}.dashboard-main,.dashboard-aside{display:grid;gap:var(--stack-gap);min-width:0}.dashboard-error{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0}.dashboard-main>*,.dashboard-aside>*{animation:rise-in var(--duration-slow) var(--ease-out) both}.dashboard-main>:nth-child(2){animation-delay:40ms}.dashboard-main>:nth-child(3){animation-delay:80ms}.dashboard-main>:nth-child(4){animation-delay:.12s}.dashboard-aside>:nth-child(1){animation-delay:60ms}.dashboard-aside>:nth-child(2){animation-delay:.12s}.recent,.agenda,.stats{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4);align-content:start}.dashboard .section-title{font-size:var(--text-h2)}.streak{container:streak / inline-size;position:relative;display:flex;align-items:center;min-height:208px;border-radius:var(--radius-lg);background:var(--gradient-streak);color:#fff}.streak-skeleton{background-color:#fff9}.streak-text{position:relative;z-index:1;max-width:520px;padding:var(--space-8) 0 var(--space-8) var(--space-10)}.streak-date{margin:0;font-size:var(--text-base);font-weight:var(--weight-medium);line-height:1.2;opacity:.92}.streak-title{margin:var(--space-6) 0 0;color:#fff;font-size:var(--text-h1);font-weight:var(--weight-bold);line-height:1.1;letter-spacing:-.015em}.streak-message{max-width:300px;margin:var(--space-2) 0 0;font-size:var(--text-base);line-height:1.35;text-wrap:pretty}.streak-message strong{font-weight:var(--weight-bold)}.streak-flame{position:absolute;z-index:0;top:-92px;right:-106px;width:320px;height:auto;pointer-events:none;-webkit-user-select:none;user-select:none;transform-origin:55% 80%;animation:flame-in .7s var(--ease-spring) both,flame-sway 5s ease-in-out .7s infinite;transition:filter var(--duration-slow),opacity var(--duration-slow)}.streak.is-waiting .streak-flame{filter:saturate(.55) brightness(1.05)}.streak.is-out .streak-flame{filter:grayscale(1) contrast(.75) brightness(1.4);animation:flame-in .7s var(--ease-spring) both}@keyframes flame-in{0%{opacity:0;transform:translateY(16px) scale(.92)}}@keyframes flame-sway{0%,to{transform:rotate(0) scale(1)}50%{transform:rotate(-1.5deg) scale(1.015)}}@container streak (max-width: 560px){.streak{min-height:0}.streak-text{max-width:66%;padding:var(--space-6) 0 var(--space-6) var(--space-6)}.streak-date{font-size:var(--text-sm)}.streak-title{margin-top:var(--space-4)}.streak-flame{width:156px;top:-28px;right:-14px}}.tz-notice{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;margin-top:calc(var(--space-3) - var(--stack-gap));padding:10px 12px 10px 16px;border-radius:var(--radius-md);background:var(--surface);font-size:var(--text-sm);color:var(--ink-3)}.tz-notice strong{color:var(--ink-2)}.tz-notice-actions{display:flex;gap:8px}.metrics{container:metrics / inline-size;padding:var(--space-6) var(--space-8)}.metrics-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0}.metric{position:relative;display:grid;align-content:start;gap:6px;min-width:0;margin:0;padding:0 var(--space-4) 0 var(--space-6)}.metric:first-child{padding-left:0}.metric+.metric:before{content:"";position:absolute;left:0;top:2px;bottom:2px;width:1px;background:var(--line)}.metric dd{margin:0}.metric-label{font-size:var(--text-sm);font-weight:var(--weight-medium);line-height:1.2;color:var(--ink-3);white-space:nowrap}.metric-value{font-size:var(--text-h2);font-weight:var(--weight-bold);line-height:1.1;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.015em}.metric-note{font-size:var(--text-sm);line-height:1.2;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.metric-progress{max-width:200px;margin-top:4px!important}.metric-caption{font-size:var(--text-xs);line-height:1.3;color:var(--ink-3)}@container metrics (max-width: 460px){.metrics-grid{grid-template-columns:1fr;gap:var(--space-4)}.metric{padding:var(--space-4) 0 0}.metric:first-child{padding-top:0}.metric+.metric:before{top:0;bottom:auto;left:0;right:0;width:auto;height:1px}.metric-label,.metric-note{white-space:normal}}.recent-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-5)}.calendar{padding:var(--space-4) var(--space-5) var(--space-4)}.calendar-head{display:grid;grid-template-columns:32px 1fr 32px;align-items:center;margin:0 0 var(--space-2)}.calendar-head .icon-button{color:var(--ink-3)}.calendar-month{margin:0;text-align:center;font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--ink-2)}.calendar-grid{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;transition:opacity var(--duration-base)}.calendar-grid.is-loading{opacity:.45}.calendar-grid th{height:28px;padding:0;text-align:center;font-size:var(--text-xs);font-weight:var(--weight-semibold);line-height:1;color:var(--brand-700)}.calendar-grid td{height:34px;padding:0;text-align:center;vertical-align:middle}.calendar-day{position:relative;display:inline-grid;place-items:center;width:min(32px,calc(100% - 2px));aspect-ratio:1;border-radius:50%;font-size:var(--text-sm);font-weight:var(--weight-medium);line-height:1;color:var(--ink-2);font-variant-numeric:tabular-nums;transition:background var(--duration-fast),color var(--duration-fast),transform var(--duration-base) var(--ease-spring)}.calendar-day[tabindex]:hover{background:var(--brand-a08)}.calendar-day:focus-visible{outline:none;box-shadow:var(--focus-ring)}.calendar-day.is-future{color:var(--ink-4);opacity:.7}.calendar-day.is-active{background:var(--brand-a26);color:var(--brand-800);font-weight:var(--weight-semibold)}.calendar-day.is-active:hover{background:var(--brand-a30)}.calendar-day.is-studied:before{content:"";position:absolute;bottom:3px;left:50%;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--brand-300)}.calendar-day.is-today{background:var(--brand-500);color:#fff;font-weight:var(--weight-bold)}.calendar-day.is-today:hover{background:var(--brand-600)}.calendar-day.is-today:not(.has-goal){background:var(--surface);color:var(--brand-700);box-shadow:inset 0 0 0 1.5px var(--brand-500)}.calendar-note{display:flex;align-items:center;gap:8px;margin:var(--space-2) 2px 0;font-size:var(--text-xs);color:var(--ink-3)}.calendar-note.is-error{color:var(--danger)}.calendar-key{width:10px;height:10px;border-radius:50%;background:var(--brand-a26)}.stats-card{display:flex;flex-direction:column;padding:var(--space-4) var(--space-5) var(--space-4)}.week-chart{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--space-2);height:116px;padding:var(--space-2) var(--space-3) 0;border-radius:var(--radius-md);background:var(--brand-a08)}.week-day{display:grid;grid-template-rows:22px 1fr;justify-items:center;min-width:0}.week-letter{font-size:var(--text-xs);font-weight:var(--weight-semibold);line-height:1;color:var(--ink-3)}.week-day.is-future .week-letter{color:var(--ink-4);opacity:.6}.week-day.is-today .week-letter{color:var(--steel-600)}.week-bar{align-self:end;width:min(22px,100%);height:max(var(--h, 0%),4px);border-radius:6px 6px 0 0;background:var(--brand-500);transform-origin:bottom;animation:bar-grow .7s var(--ease-out) both;animation-delay:calc(var(--i, 0) * 50ms + .15s);transition:filter var(--duration-fast)}.week-day:hover .week-bar{filter:brightness(1.08)}.week-day.is-low .week-bar{background:var(--brand-300)}.week-day.is-today .week-bar{background:var(--steel-600)}.week-day.is-empty .week-bar{background:var(--brand-300);opacity:.45}.week-day.is-future .week-bar{visibility:hidden}@keyframes bar-grow{0%{transform:scaleY(0)}}.stats-summary{display:flex;margin:var(--space-4) 0 0}.stats-cell{position:relative;flex:1 1 auto;display:grid;align-content:start;gap:4px;padding:0 var(--space-2) 0 var(--space-3)}.stats-cell:first-child{padding-left:2px}.stats-cell+.stats-cell:before{content:"";position:absolute;left:0;top:2px;bottom:2px;width:1px;background:var(--line)}.stats-cell dt{font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1.2;color:var(--ink-3)}.stats-cell dd{margin:0}.stats-value{font-size:var(--text-md);font-weight:var(--weight-bold);line-height:1.2;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}.stats-delta{font-size:var(--text-xs);font-weight:var(--weight-semibold);white-space:nowrap}.stats-delta.is-up{color:var(--success)}.stats-delta.is-down{color:var(--warning)}.stats-progress{margin-top:4px!important}.stats-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:auto;padding:var(--space-4) 2px 0;font-size:var(--text-xs);color:var(--ink-3)}.stats-legend li{display:inline-flex;align-items:center;gap:6px}.legend-dot{width:8px;height:8px;border-radius:2px;background:var(--brand-500)}.legend-dot.is-low{background:var(--brand-300)}.legend-dot.is-today{background:var(--steel-600)}.metrics.skeleton{min-height:112px}.aside-skeleton{display:grid;gap:var(--space-4)}.skeleton-title{width:50%;height:28px;border-radius:var(--radius-sm)}.calendar.skeleton{min-height:324px}.stats-card.skeleton{min-height:260px}@container dashboard (max-width: 959px){.dashboard{grid-template-columns:minmax(0,1fr);gap:var(--space-8)}.dashboard-aside{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-8) var(--space-6);align-items:stretch}.agenda,.stats{grid-template-rows:auto 1fr}.streak-flame{width:272px;top:-78px;right:-76px}}@container dashboard (max-width: 719px){.recent-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.recent-grid>:nth-child(3){display:none}}@container dashboard (max-width: 559px){.dashboard,.dashboard-main,.dashboard-aside{gap:var(--space-6)}.metrics{padding:var(--space-5)}.recent-grid{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:min(78%,280px);overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--page-pad-x);scrollbar-width:none;margin:-16px calc(-1 * var(--page-pad-x)) -24px;padding:16px var(--page-pad-x) 24px;gap:var(--space-4)}.recent-grid>:nth-child(3){display:flex}.recent-grid::-webkit-scrollbar{display:none}.recent-grid>*{scroll-snap-align:start}.calendar{padding:var(--space-3) var(--space-3) var(--space-4)}.calendar-grid td{height:40px}.calendar-day{width:min(36px,calc(100% - 2px));font-size:var(--text-base)}}.fx{container:fx / inline-size}.fx h1,.fx h2,.fx h3{margin:0}@keyframes fx-enter{0%{opacity:0;transform:translateY(6px)}}@keyframes fx-grow{0%{transform:scaleY(0)}}.fx-head{margin-bottom:var(--space-5)}.fx-head>div:first-child p{margin-top:var(--space-1);font-size:var(--text-sm)}.fx-today{display:flex;margin:0}.fx-today>div{padding:0 var(--space-5);border-left:1px solid var(--line-strong)}.fx-today>div:first-child{padding-left:0;border-left:0}.fx-today dt{font-size:var(--text-xs);color:var(--ink-3)}.fx-today dd{margin:2px 0 0;font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--ink);line-height:1.2}.fx-nav{margin-bottom:var(--stack-gap)}.fx-nav-list{position:relative;display:inline-flex;gap:2px;max-width:100%;padding:4px;border-radius:var(--radius-pill);background:var(--surface);overflow-x:auto;scrollbar-width:none}.fx-nav-list::-webkit-scrollbar{display:none}.fx-nav-thumb{position:absolute;top:4px;bottom:4px;left:0;border-radius:var(--radius-pill);background:var(--brand-a14);transition:transform var(--duration-slow) var(--ease-out),width var(--duration-slow) var(--ease-out)}.fx-nav-item{position:relative;z-index:1;flex:none;display:inline-flex;align-items:center;gap:var(--space-2);height:40px;padding:0 var(--space-4);border-radius:var(--radius-pill);color:var(--ink-3);font-size:var(--text-base);font-weight:var(--weight-semibold);text-decoration:none;white-space:nowrap;transition:color var(--duration-base)}.fx-nav-item:hover{color:var(--ink-2)}.fx-nav-item[aria-current=page]{color:var(--brand-700)}.fx-nav-item:focus-visible{outline:none;box-shadow:var(--focus-ring)}.fx-panel{animation:fx-enter var(--duration-slow) var(--ease-out)}.fx-card{padding:var(--space-6)}.fx-card-title{font-size:var(--text-lg);font-weight:var(--weight-bold);letter-spacing:-.01em;line-height:1.25;color:var(--ink)}.fx-section-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-5)}.fx-label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--ink-2)}.fx-optional{margin-left:4px;font-weight:var(--weight-regular);color:var(--ink-4)}.fx-hint{margin:0;font-size:var(--text-xs);line-height:1.45;color:var(--ink-3)}.fx-sep{margin:0;border:0;border-top:1px solid var(--line)}.fx-empty-inline{display:flex;align-items:center;justify-content:center;gap:var(--space-2);margin:0;padding:var(--space-6);border-radius:var(--radius-md);background:var(--surface-sunken);color:var(--ink-3);font-size:var(--text-sm);text-align:center}.fx .empty{animation:fx-enter var(--duration-slow) var(--ease-out)}.fx-field{display:grid;gap:var(--space-2);align-content:start}.fx-field-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.fx-field-wide{grid-column:1 / -1}.fx-field-error{font-size:var(--text-xs);color:var(--danger)}.fx-input.input{height:42px;padding:0 14px;border-radius:var(--radius-md);font-size:var(--text-base)}.fx-input.input:focus{border-color:var(--brand-500);box-shadow:0 0 0 3px var(--brand-a26)}.fx-select{position:relative;min-width:0}.fx-select select.fx-input{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:38px;cursor:pointer;text-overflow:ellipsis}.fx-select select.fx-input:disabled{cursor:default}.fx-select>svg{position:absolute;right:14px;bottom:14px;color:var(--ink-3);pointer-events:none}.fx-select.is-small select.fx-input{height:38px;font-size:var(--text-sm)}.fx-select.is-small>svg{bottom:12px}.fx-target{display:grid;gap:var(--space-2)}.fx-target.has-lesson{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.fx-target .fx-select{animation:fx-enter var(--duration-base) var(--ease-out)}.fx-unit{display:flex;align-items:center;height:42px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.fx-unit:focus-within{border-color:var(--brand-500);box-shadow:0 0 0 3px var(--brand-a26)}.fx-unit.is-invalid{border-color:var(--danger)}.fx-unit input{flex:1;width:0;min-width:0;height:100%;padding:0 4px 0 14px;border:0;background:none;outline:none;font-size:var(--text-base);font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums;color:var(--ink);-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}.fx-unit input::-webkit-inner-spin-button,.fx-unit input::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}.fx-unit span{padding-right:14px;font-size:var(--text-sm);color:var(--ink-3)}.fx-stepper{display:inline-flex;align-items:center;height:42px;width:max-content;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--surface)}.fx-stepper.is-invalid{border-color:var(--danger)}.fx-stepper:focus-within{border-color:var(--brand-500)}.fx-stepper button{display:grid;place-items:center;width:40px;height:40px;padding:0;border:0;border-radius:50%;background:none;color:var(--ink-3);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),transform var(--duration-fast) var(--ease-out)}.fx-stepper button:hover:not(:disabled){background:var(--brand-a08);color:var(--brand-700)}.fx-stepper button:active:not(:disabled){transform:scale(.9)}.fx-stepper button:disabled{opacity:.35;cursor:default}.fx-stepper button:focus-visible{outline:none;box-shadow:var(--focus-ring)}.fx-stepper input{width:40px;height:100%;padding:0;border:0;background:none;outline:none;text-align:center;font-size:var(--text-base);font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums;color:var(--ink);-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}.fx-stepper input::-webkit-inner-spin-button,.fx-stepper input::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}.fx-seg{display:inline-flex;flex-wrap:wrap;gap:2px;padding:4px;border-radius:var(--radius-pill);background:var(--surface-sunken)}.fx-seg button{height:32px;padding:0 var(--space-4);border:0;border-radius:var(--radius-pill);background:none;color:var(--ink-3);font-size:var(--text-sm);font-weight:var(--weight-semibold);white-space:nowrap;cursor:pointer;transition:background var(--duration-base),color var(--duration-base),box-shadow var(--duration-base)}.fx-seg button:hover{color:var(--ink-2)}.fx-seg button[aria-checked=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-xs)}.fx-seg button:focus-visible{outline:none;box-shadow:var(--focus-ring)}.fx-seg.is-small button{height:28px;padding:0 var(--space-3);font-size:var(--text-xs)}.fx-chips{display:flex;flex-wrap:wrap;gap:6px}.fx-chip{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px;border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:var(--surface);color:var(--ink-2);font-size:var(--text-sm);font-weight:var(--weight-semibold);white-space:nowrap;cursor:pointer;transition:background var(--duration-fast),border-color var(--duration-fast),color var(--duration-fast)}.fx-chip:hover{background:var(--surface-hover)}.fx-chip[aria-checked=true],.fx-chip[aria-pressed=true]{background:var(--brand-a14);border-color:transparent;color:var(--brand-700)}.fx-chip:focus-visible{outline:none;box-shadow:var(--focus-ring)}.fx-switch-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:12px 14px;border-radius:var(--radius-md);background:var(--surface-sunken);cursor:pointer}.fx-switch-row>span:first-child{display:grid;gap:2px}.fx-switch{position:relative;flex:none;width:40px;height:24px}.fx-switch input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;margin:0;opacity:0;cursor:pointer}.fx-switch span{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--radius-pill);background:var(--line-strong);transition:background var(--duration-base)}.fx-switch span:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:var(--shadow-xs);transition:transform var(--duration-base) var(--ease-out)}.fx-switch input:checked+span{background:var(--brand-700)}.fx-switch input:checked+span:after{transform:translate(16px)}.fx-switch input:focus-visible+span{box-shadow:var(--focus-ring)}.fx-details{display:grid;gap:var(--space-3);margin:0}.fx-details>div{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-3)}.fx-details dt{font-size:var(--text-sm);color:var(--ink-3)}.fx-details dd{margin:0;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--ink-2);text-align:right}.fx-details.is-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--space-4)}.fx-details.is-grid>div{display:grid;justify-content:start;gap:2px}.fx-details.is-grid dd{text-align:left}.fx-detail-block{display:grid;gap:6px}.fx-detail-block p{margin:0;font-size:var(--text-base);color:var(--ink-2)}.fx-link-row{display:flex;align-items:center;gap:var(--space-3);padding:10px 12px;border-radius:var(--radius-md);background:var(--surface-sunken);color:var(--ink-2);text-decoration:none;transition:background var(--duration-fast)}.fx-link-row:hover{background:var(--brand-a08)}.fx-link-row>svg{flex:none;color:var(--brand-700)}.fx-link-row>svg:last-child{color:var(--ink-4)}.fx-link-row>span{flex:1;min-width:0;display:grid}.fx-link-row strong,.fx-link-row .muted{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fx-link-row strong{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--ink)}.fx-link-row .muted{font-size:var(--text-xs)}.fx-timer-grid{display:grid;grid-template-columns:minmax(280px,340px) minmax(0,1fr);gap:var(--stack-gap);align-items:start}.fx-timer-grid:has(.fx-live){grid-template-columns:minmax(0,1fr) minmax(300px,360px)}.fx-method-list{display:grid;gap:2px;margin-top:var(--space-3)}.fx-method{position:relative;display:flex;align-items:center;border-radius:var(--radius-md);transition:background var(--duration-fast)}.fx-method:hover{background:var(--brand-a08)}.fx-method.is-selected{background:var(--brand-a14)}.fx-method-main{flex:1;min-width:0;display:flex;align-items:center;gap:var(--space-3);padding:11px 12px;border:0;border-radius:inherit;background:none;color:inherit;text-align:left;cursor:pointer}.fx-method-main:focus-visible{outline:none;box-shadow:var(--focus-ring)}.fx-radio{display:grid;place-items:center;flex:none;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--line-strong);background:var(--surface);transition:border-color var(--duration-fast)}.fx-radio:after{content:"";width:8px;height:8px;border-radius:50%;background:var(--brand-700);transform:scale(0);transition:transform var(--duration-base) var(--ease-out)}.fx-method.is-selected .fx-radio{border-color:var(--brand-700)}.fx-method.is-selected .fx-radio:after{transform:scale(1)}.fx-method-text{display:grid;min-width:0}.fx-method-text strong{font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--ink)}.fx-method-text span{font-size:var(--text-sm);color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fx-method-tools{display:flex;padding-right:6px;opacity:0;transition:opacity var(--duration-fast)}.fx-method:hover .fx-method-tools,.fx-method:focus-within .fx-method-tools{opacity:1}@media (hover: none){.fx-method-tools{opacity:1}}.fx-methods-sub{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--line)}.fx-methods-sub h3{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--ink-3)}.fx-methods-sub .button{margin-right:-8px}.fx-methods-empty{margin:var(--space-3) 0 0;padding:var(--space-3);border-radius:var(--radius-md);background:var(--surface-sunken);color:var(--ink-3);font-size:var(--text-sm);line-height:1.45}.fx-config{display:grid;gap:var(--space-6)}.fx-config-head{animation:fx-swap var(--duration-base) var(--ease-out)}.fx-config-head p{margin:var(--space-1) 0 0;font-size:var(--text-sm);line-height:1.5;max-width:560px}.fx-custom{display:grid;gap:var(--space-3)}.fx-save-method{justify-self:start;margin-left:-8px}.fx-plan-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-4)}.fx-preview{display:grid;gap:var(--space-4);padding:var(--space-5);border-radius:var(--radius-md);background:var(--surface-sunken)}.fx-preview-note{display:flex;align-items:center;gap:var(--space-2);margin:0;font-size:var(--text-sm);color:var(--ink-3)}.fx-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:var(--space-3) var(--space-4);margin:0}.fx-facts dt{font-size:var(--text-xs);color:var(--ink-3)}.fx-facts dd{margin:2px 0 0;font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--ink);font-variant-numeric:tabular-nums}.fx-facts dd span{font-size:var(--text-xs);font-weight:var(--weight-regular);color:var(--ink-3)}.fx-seq{display:grid;gap:10px;width:100%}.fx-timeline{display:flex;gap:3px;height:8px}.fx-seg-step{position:relative;min-width:6px;border-radius:4px;overflow:hidden;background:var(--brand-a26);transition:flex-grow var(--duration-slow) var(--ease-out)}.fx-seg-step.is-break{background:color-mix(in srgb,var(--rest-500) 30%,transparent)}.fx-seg-step.is-long{background:color-mix(in srgb,var(--rest-500) 55%,transparent)}.fx-seg-step:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--brand-500);transform-origin:left;transform:scaleX(var(--p, 0));transition:transform 1s linear}.fx-seg-step.is-break:after,.fx-seg-step.is-long:after{background:var(--rest-500)}.fx-legend{display:flex;flex-wrap:wrap;gap:var(--space-4);font-size:var(--text-xs);color:var(--ink-3)}.fx-legend li{display:inline-flex;align-items:center;gap:6px}.fx-legend li:before{content:"";width:8px;height:8px;border-radius:2px;background:var(--brand-a26)}.fx-legend .is-break:before{background:color-mix(in srgb,var(--rest-500) 30%,transparent)}.fx-legend .is-long:before{background:color-mix(in srgb,var(--rest-500) 55%,transparent)}.fx-config-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--space-4);padding-top:var(--space-5);border-top:1px solid var(--line)}.fx-error{display:flex;align-items:center;gap:6px;margin:0 auto 0 0;font-size:var(--text-sm);color:var(--danger);animation:fx-swap var(--duration-base) var(--ease-out)}.fx-start{min-width:200px}.fx-ended{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--stack-gap);padding:var(--space-4) var(--space-4) var(--space-4) var(--space-5);animation:fx-enter var(--duration-slow) var(--ease-out)}.fx-ended-icon{display:grid;place-items:center;flex:none;width:44px;height:44px;border-radius:50%;background:var(--surface-sunken);color:var(--ink-3)}.fx-ended.is-done .fx-ended-icon{background:var(--success-soft);color:var(--success)}.fx-ended-text{flex:1;min-width:0;display:grid;gap:2px}.fx-ended-text strong{font-size:var(--text-md);color:var(--ink)}.fx-ended-text span{font-size:var(--text-sm);color:var(--ink-3)}.fx-live{display:grid;justify-items:center;gap:var(--space-6);padding:var(--space-6) var(--space-6) var(--space-8)}.fx-live-head{justify-self:stretch;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-4)}.fx-status{display:inline-flex;align-items:center;gap:var(--space-2);margin:0;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--tone-ink);transition:color var(--duration-slow)}.fx-status .muted{font-weight:var(--weight-regular)}.fx-dot{width:8px;height:8px;border-radius:50%;background:var(--tone);transition:background var(--duration-slow)}.fx-live-ring{width:min(320px,64cqi);aspect-ratio:1;margin-top:var(--space-2)}.fx-live-time{font-size:clamp(3rem,2.2rem + 2.4vw,4.25rem);font-weight:300;line-height:1;letter-spacing:-.035em;color:var(--ink);transition:color var(--duration-slow)}.tone-paused .fx-live-time{color:var(--ink-3)}.fx-live-sub{font-size:var(--text-sm);color:var(--ink-3)}.fx-controls{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-3)}.fx-primary{min-width:180px}.fx-stop{color:var(--ink-2)}.fx-live .fx-seq{max-width:520px}.fx-live-side{display:grid;gap:var(--space-4)}.fx-note{display:flex;gap:var(--space-2);margin:0;padding:10px 12px;border-radius:var(--radius-md);background:var(--warning-soft);color:var(--warning);font-size:var(--text-sm);line-height:1.45}.fx-note svg{flex:none;margin-top:1px}.fx-amb-mini{display:flex;align-items:center;gap:var(--space-3)}.fx-amb-mini-icon{display:grid;place-items:center;flex:none;width:36px;height:36px;border-radius:var(--radius-sm);background:var(--brand-a08);color:var(--brand-700)}.fx-amb-mini-text{flex:1;min-width:0;display:grid}.fx-amb-mini-text>span:last-child{font-size:var(--text-sm);color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fx-dialog{max-width:600px;gap:var(--space-5);max-height:calc(100vh - 32px);overflow-y:auto;border-radius:var(--radius-lg)}.fx-dialog-head{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3)}.fx-dialog-head h2{font-size:var(--text-lg);font-weight:var(--weight-bold)}.fx-dialog .fx-preview{padding:var(--space-4)}.fx-dialog .fx-plan-fields{grid-template-columns:repeat(3,minmax(0,1fr))}.fx-stats{display:grid;gap:var(--stack-gap);transition:opacity var(--duration-base)}.fx-stats.is-stale{opacity:.6}.fx-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:0;padding:var(--space-5) 0}.fx-kpi{display:grid;align-content:start;gap:2px;padding:0 var(--space-6);border-left:1px solid var(--divider)}.fx-kpi:first-child{border-left:0}.fx-kpi dt{font-size:var(--text-sm);color:var(--ink-3)}.fx-kpi dd{margin:0}.fx-kpi-value{margin-top:2px!important;font-size:var(--text-h2);font-weight:var(--weight-bold);letter-spacing:-.02em;line-height:1.2;color:var(--ink)}.fx-kpi-note{font-size:var(--text-xs);color:var(--ink-3)}.fx-period{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--space-4);margin:0 0 var(--space-6)}.fx-period dt{font-size:var(--text-xs);color:var(--ink-3)}.fx-period dd{margin:2px 0 0;font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--ink)}.fx-period dd .muted{font-size:var(--text-sm);font-weight:var(--weight-regular)}.fx-period .fx-delta{margin:0;font-size:var(--text-xs);font-weight:var(--weight-regular);color:var(--ink-3)}.fx-delta.is-up{color:var(--success)}.fx-stats-grid{display:grid;gap:var(--stack-gap)}.fx-bars{display:grid;gap:var(--space-2);margin:0}.fx-bars-body{display:grid;grid-template-columns:40px minmax(0,1fr);gap:0 var(--space-2)}.fx-bars-body:not(:has(.fx-bars-axis)){grid-template-columns:minmax(0,1fr)}.fx-bars-axis{display:flex;flex-direction:column;justify-content:space-between;font-size:var(--text-xs);color:var(--ink-4);text-align:right;font-variant-numeric:tabular-nums}.fx-bars-axis span{transform:translateY(-50%)}.fx-bars-axis span:first-child{transform:none}.fx-bars-axis span:last-child{transform:translateY(0)}.fx-bars-plot{position:relative;display:flex;align-items:flex-end;gap:3px;border-bottom:1px solid var(--line-strong);border-radius:2px;outline:none}.fx-bars-plot:focus-visible{box-shadow:var(--focus-ring)}.fx-bars-grid{position:absolute;top:0;right:0;bottom:0;left:0;border-top:1px dashed var(--line);pointer-events:none}.fx-bars-grid:after{content:"";position:absolute;left:0;right:0;top:50%;border-top:1px dashed var(--line)}.fx-bars-goal{position:absolute;left:0;right:0;border-top:1.5px dashed var(--ink-4);opacity:.55;pointer-events:none}.fx-bar{position:relative;flex:1;height:100%;min-width:2px;display:flex;align-items:flex-end;border-radius:4px 4px 0 0;transition:background var(--duration-fast)}.fx-bar.is-active{background:var(--brand-a08)}.fx-bar-fill{width:100%;max-width:28px;margin:0 auto;border-radius:4px 4px 1px 1px;background:var(--brand-500);transform-origin:bottom;animation:fx-grow var(--duration-slow) var(--ease-out);transition:height var(--duration-slow) var(--ease-out),background var(--duration-fast)}.fx-bar.is-active .fx-bar-fill{background:var(--brand-700)}.fx-bars-labels{display:flex;gap:3px;font-size:var(--text-xs);color:var(--ink-4);font-variant-numeric:tabular-nums}.fx-bars-labels span{flex:1;min-width:2px;text-align:center;white-space:nowrap;overflow:visible}.fx-tip{position:absolute;z-index:3;top:-6px;display:grid;gap:1px;padding:6px 10px;border-radius:var(--radius-sm);background:var(--ink);color:#fff;font-size:var(--text-xs);line-height:1.35;white-space:nowrap;transform:translate(-50%,-100%);pointer-events:none;animation:fade var(--duration-fast)}.fx-tip strong{font-weight:var(--weight-semibold)}.fx-tip.is-heat{top:auto;transform:translate(-50%,calc(-100% - 6px))}.fx-heat{position:relative;display:grid;gap:var(--space-3)}.fx-heat-scroll{overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}.fx-heat-months{display:grid;grid-auto-flow:column;grid-auto-columns:12px;gap:3px;height:16px;margin-left:32px;font-size:var(--text-xs);color:var(--ink-4)}.fx-heat-months span{white-space:nowrap}.fx-heat-body{display:flex;gap:8px}.fx-heat-days{display:grid;grid-template-rows:repeat(7,12px);gap:3px;width:24px;font-size:.6875rem;line-height:12px;color:var(--ink-4)}.fx-heat-grid{display:grid;grid-auto-flow:column;grid-auto-columns:12px;gap:3px}.fx-heat-week{display:grid;grid-template-rows:repeat(7,12px);gap:3px}.fx-heat-cell{display:block;width:12px;height:12px;border-radius:3px;background:var(--surface-sunken);box-shadow:inset 0 0 0 1px var(--line);outline:none}.fx-heat-cell.l1{background:color-mix(in srgb,var(--brand-500) 28%,var(--surface));box-shadow:none}.fx-heat-cell.l2{background:color-mix(in srgb,var(--brand-500) 52%,var(--surface));box-shadow:none}.fx-heat-cell.l3{background:color-mix(in srgb,var(--brand-500) 78%,var(--surface));box-shadow:none}.fx-heat-cell.l4{background:var(--brand-700);box-shadow:none}.fx-heat-grid .fx-heat-cell:hover,.fx-heat-grid .fx-heat-cell:focus{box-shadow:0 0 0 1.5px var(--ink-2)}.fx-heat-legend{display:flex;flex-wrap:wrap;align-items:center;gap:4px;font-size:var(--text-xs);color:var(--ink-3)}.fx-heat-legend span:first-child{margin-right:4px}.fx-heat-legend span:last-child{margin-left:4px}.fx-hbars{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));gap:var(--space-4) var(--space-8)}.fx-hbars li{display:grid;gap:6px}.fx-hbar-top{display:flex;justify-content:space-between;gap:var(--space-3);font-size:var(--text-sm)}.fx-hbar-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:var(--weight-semibold);color:var(--ink-2)}.fx-hbar-value{flex:none;color:var(--ink-2)}.fx-hbar-track{display:block;height:6px;border-radius:var(--radius-pill);background:var(--surface-sunken);overflow:hidden}.fx-hbar-track span{display:block;height:100%;border-radius:inherit;background:var(--brand-500);transform-origin:left;transition:transform var(--duration-slow) var(--ease-out);animation:fx-grow-x var(--duration-slow) var(--ease-out)}@keyframes fx-grow-x{0%{transform:scaleX(0)}}.fx-hbars .is-muted .fx-hbar-track span{background:var(--line-strong)}.fx-hours{display:grid;gap:var(--space-5)}.fx-stats .fx-card>.fx-hint{margin-top:var(--space-4)}.fx-history{display:grid;gap:var(--stack-gap)}.fx-filters{display:grid;grid-template-columns:minmax(220px,1.5fr) repeat(4,minmax(0,1fr));gap:var(--space-2);padding:var(--space-3)}.fx-search{position:relative}.fx-search>svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--ink-3);pointer-events:none}.fx-search .fx-input.input{height:38px;padding-left:42px;font-size:var(--text-sm)}.fx-history-days{display:grid;gap:var(--space-5);transition:opacity var(--duration-base)}.fx-history-days.is-stale{opacity:.6}.fx-day{animation:fx-enter var(--duration-slow) var(--ease-out)}.fx-day h3{margin:0 0 var(--space-2) var(--space-1);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--ink-3)}.fx-history-list{display:grid;gap:2px;padding:6px}.fx-row{border-radius:var(--radius-md);transition:background var(--duration-fast)}.fx-row.is-open{background:var(--surface-sunken)}.fx-row-main{width:100%;display:grid;grid-template-columns:52px minmax(0,1fr) auto 132px 16px;gap:var(--space-4);align-items:center;padding:12px 14px;border:0;border-radius:var(--radius-md);background:none;color:inherit;text-align:left;cursor:pointer;transition:background var(--duration-fast)}.fx-row:not(.is-open) .fx-row-main:hover{background:var(--brand-a08)}.fx-row-main:focus-visible{outline:none;box-shadow:var(--focus-ring)}.fx-row-time{font-size:var(--text-sm);color:var(--ink-3)}.fx-row-what{display:grid;min-width:0}.fx-row-what strong,.fx-row-what span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fx-row-what strong{font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--ink)}.fx-row-what span{font-size:var(--text-sm);color:var(--ink-3)}.fx-row-focus{font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--ink-2);text-align:right}.fx-row-status{display:inline-flex;align-items:center;gap:6px;font-size:var(--text-sm);color:var(--ink-3)}.fx-row.is-completed .fx-row-status{color:var(--success)}.fx-row-dot{width:6px;height:6px;margin:0 5px;border-radius:50%;background:var(--ink-4)}.fx-row.is-expired .fx-row-dot{background:var(--warning)}.fx-row-caret{color:var(--ink-4);transition:transform var(--duration-base) var(--ease-out)}.fx-row.is-open .fx-row-caret{transform:rotate(180deg)}.fx-row-detail{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--duration-slow) var(--ease-out)}.fx-row.is-open .fx-row-detail{grid-template-rows:1fr}.fx-row-detail>div{min-height:0;overflow:hidden}.fx-row-inner{display:grid;gap:var(--space-4);padding:var(--space-2) var(--space-4) var(--space-5) calc(52px + 14px + var(--space-4))}.fx-row-inner .fx-link-row{background:var(--surface);max-width:520px}.fx-phases{display:grid;gap:4px;max-width:640px}.fx-phase{display:grid;grid-template-columns:140px minmax(0,1fr) auto;gap:var(--space-3);padding:8px 12px;border-radius:var(--radius-sm);background:var(--surface);font-size:var(--text-sm);border-left:3px solid var(--brand-500)}.fx-phase.is-break{border-left-color:var(--rest-500)}.fx-phase-name{font-weight:var(--weight-semibold);color:var(--ink-2)}.fx-phase-outcome{color:var(--ink-3)}.outcome-invalidated .fx-phase-outcome,.outcome-unlocked .fx-phase-outcome{color:var(--warning)}.fx-more{justify-self:center}.fx-amb{display:grid;gap:var(--stack-gap)}.fx-mixer-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-4)}.fx-mixer-head p{margin:var(--space-1) 0 0;font-size:var(--text-sm)}.fx-mixer-actions{display:flex;gap:var(--space-2)}.fx-mix{display:grid;gap:2px;margin-top:var(--space-5);padding-top:var(--space-3);border-top:1px solid var(--line)}.fx-mix-row{display:grid;grid-template-columns:20px 150px minmax(0,1fr) 32px;gap:var(--space-3);align-items:center;padding:6px 0;color:var(--ink-2);animation:fx-enter var(--duration-base) var(--ease-out)}.fx-mix-row>svg{color:var(--brand-700)}.fx-mix-name{font-size:var(--text-sm);font-weight:var(--weight-semibold)}.fx-mix-row.is-master{margin-top:var(--space-2);padding-top:var(--space-3);border-top:1px dashed var(--line);animation:none}.fx-mix-row.is-master>svg{color:var(--ink-3)}.fx-range{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:100%;height:4px;margin:0;border-radius:var(--radius-pill);cursor:pointer;background:linear-gradient(to right,var(--brand-500) var(--v),var(--line-strong) var(--v))}.fx-range::-webkit-slider-thumb{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:var(--surface);border:1.5px solid var(--brand-500);box-shadow:var(--shadow-xs);transition:transform var(--duration-fast) var(--ease-out)}.fx-range::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--surface);border:1.5px solid var(--brand-500)}.fx-range:active::-webkit-slider-thumb{transform:scale(1.15)}.fx-range:focus-visible{outline:none;box-shadow:var(--focus-ring)}.fx-amb-error{display:flex;align-items:center;gap:var(--space-2);padding:8px 8px 8px 14px;border-radius:var(--radius-md);background:var(--danger-soft);color:var(--danger);font-size:var(--text-sm);animation:fx-enter var(--duration-base) var(--ease-out)}.fx-amb-error span{flex:1}.fx-amb-error .icon-button{color:inherit}.fx-amb-library{display:grid;gap:var(--space-4)}.fx-amb-library .fx-section-head{margin-bottom:0}.fx-recent{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.fx-recent ul{display:flex;flex-wrap:wrap;gap:6px}.fx-sounds{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:var(--space-4)}.fx-sounds>li{animation:fx-enter var(--duration-slow) var(--ease-out)}.fx-sound{display:grid;grid-template-rows:auto auto 1fr;gap:var(--space-4);height:100%;padding:var(--space-5);border:1.5px solid transparent;transition:border-color var(--duration-base)}.fx-sound.is-on{border-color:var(--brand-500)}.fx-sound-top{display:flex;justify-content:space-between;align-items:flex-start}.fx-sound-tile{display:grid;place-items:center;width:48px;height:48px;border-radius:var(--radius-md);background:var(--brand-a08);color:var(--brand-700);transition:background var(--duration-base),color var(--duration-base)}.fx-sound.is-on .fx-sound-tile{background:var(--brand-500);color:#fff}.fx-fav{margin:-6px -6px 0 0}.fx-fav.is-on{color:var(--brand-700)}.fx-sound-text h3{font-size:var(--text-md);font-weight:var(--weight-bold);color:var(--ink)}.fx-sound-text p{margin:2px 0 0;font-size:var(--text-sm);color:var(--ink-3);line-height:1.4}.fx-sound-controls{align-self:end;display:flex;align-items:center;gap:var(--space-3)}.fx-play{display:grid;place-items:center;flex:none;width:40px;height:40px;padding:0;border:0;border-radius:50%;background:var(--brand-700);color:#fff;cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),transform var(--duration-fast) var(--ease-out)}.fx-play:hover{background:var(--brand-800)}.fx-play:active{transform:scale(.92)}.fx-play:focus-visible{outline:none;box-shadow:var(--focus-ring)}.fx-play.is-on{background:var(--surface-sunken);color:var(--ink-2)}.fx-play.is-on:hover{background:var(--surface-hover)}@container fx (max-width: 1099px){.fx-period{grid-template-columns:repeat(3,minmax(0,1fr))}.fx-filters{grid-template-columns:repeat(4,minmax(0,1fr))}.fx-search{grid-column:1 / -1}}@container fx (max-width: 859px){.fx-timer-grid,.fx-timer-grid:has(.fx-live){grid-template-columns:minmax(0,1fr)}.fx-methods .fx-method-list{grid-template-columns:repeat(2,minmax(0,1fr))}.fx-kpis{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:var(--space-5)}.fx-kpi:nth-child(3){border-left:0}.fx-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.fx-live-ring{width:min(300px,70cqi)}}@container fx (max-width: 599px){.fx-card{padding:var(--space-5)}.fx-methods .fx-method-list{grid-template-columns:minmax(0,1fr)}.fx-plan-fields,.fx-dialog .fx-plan-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.fx-target.has-lesson{grid-template-columns:minmax(0,1fr)}.fx-config-foot .fx-start{width:100%}.fx-period{grid-template-columns:repeat(2,minmax(0,1fr))}.fx-kpi{padding:0 var(--space-4)}.fx-filters{grid-template-columns:minmax(0,1fr)}.fx-row-main{grid-template-columns:minmax(0,1fr) auto;row-gap:2px}.fx-row-time{grid-column:1 / -1;font-size:var(--text-xs)}.fx-row-status{grid-column:1;font-size:var(--text-xs)}.fx-row-caret{display:none}.fx-row-inner{padding-left:var(--space-4)}.fx-phase{grid-template-columns:minmax(0,1fr) auto}.fx-phase .muted{grid-column:1 / -1;grid-row:2}.fx-mix-row{grid-template-columns:20px minmax(0,1fr) 32px}.fx-mix-row .fx-range{grid-column:1 / -1;grid-row:2}.fx-mix-row .fx-mix-pad{display:none}.fx-ended{flex-wrap:wrap}.fx-ended-text{flex-basis:calc(100% - 64px)}}@media (max-width: 599px){.fx-head .fx-today{width:100%}}.toasts{position:fixed;z-index:90;top:calc(var(--topbar-h) + 12px);right:16px;display:grid;gap:8px;width:min(360px,calc(100vw - 32px));pointer-events:none}.toast{pointer-events:auto;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:start;padding:12px 12px 12px 14px;border-radius:14px;background:color-mix(in srgb,var(--panel) 92%,transparent);-webkit-backdrop-filter:blur(12px) saturate(1.3);backdrop-filter:blur(12px) saturate(1.3);border:1px solid var(--border);box-shadow:var(--shadow-md);animation:toast-in .32s cubic-bezier(.2,.9,.3,1.2)}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px) scale(.98)}}.toast-icon{display:grid;place-items:center;width:30px;height:30px;border-radius:10px;background:var(--panel-2);color:var(--muted)}.toast-focus .toast-icon{background:var(--accent-soft);color:var(--accent)}.toast-rest .toast-icon{background:color-mix(in srgb,#2f9e8f 16%,var(--panel));color:#2f9e8f}.toast-success .toast-icon{background:var(--success-soft);color:var(--success)}.toast-reward .toast-icon{background:color-mix(in srgb,#d99a1e 18%,var(--panel));color:#c4860f}.toast-text{display:grid;gap:2px;min-width:0;font-size:.85rem;padding-top:1px}.toast-text strong{font-weight:650;font-size:.9rem}.toast-text span{color:var(--muted)}.toast-action{justify-self:start;margin-top:6px;padding:0;border:0;background:none;color:var(--accent);font-weight:600;cursor:pointer;font-size:.84rem}.toast-close{display:grid;place-items:center;width:24px;height:24px;border:0;border-radius:8px;background:none;color:var(--muted);cursor:pointer}.toast-close:hover{background:var(--panel-2);color:var(--text)}@media (max-width: 720px){.toasts{left:16px;right:16px;width:auto}}.tone-focus,.tone-ready{--tone: var(--brand-500);--tone-ink: var(--brand-700);--tone-soft: var(--brand-a14)}.tone-rest{--tone: var(--rest-500);--tone-ink: var(--rest-700);--tone-soft: var(--rest-a14)}.tone-paused{--tone: var(--paused);--tone-ink: var(--ink-3);--tone-soft: var(--surface-sunken)}.tone-done{--tone: var(--success);--tone-ink: var(--success);--tone-soft: var(--success-soft)}@keyframes fx-swap{0%{opacity:0;transform:translateY(3px)}}.fx-swap{display:inline-block;animation:fx-swap var(--duration-base) var(--ease-out)}.fx-swap.is-block{display:block}.fx-ring{position:relative;display:grid;place-items:center;flex:none}.fx-ring>svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible}.fx-ring-track{stroke:color-mix(in srgb,var(--tone, var(--brand-500)) 16%,transparent);transition:stroke var(--duration-slow)}.fx-ring-value{stroke:var(--tone, var(--brand-500));transition:stroke-dashoffset 1s linear,stroke var(--duration-slow) var(--ease-out)}.fx-ring.is-open .fx-ring-value{opacity:.55}.fx-ring-center{position:relative;display:grid;justify-items:center;text-align:center;gap:var(--space-1)}.fx-float{position:fixed;z-index:60;width:236px;touch-action:none;user-select:none;-webkit-user-select:none;transition:width var(--duration-slow) var(--ease-out),transform var(--duration-slow) var(--ease-out)}.fx-float.is-expanded{width:320px}.fx-float.is-mini{width:48px}.fx-float.is-dragging{transition:width var(--duration-slow) var(--ease-out);cursor:grabbing}.fx-float.is-dragging .fx-float-card{box-shadow:var(--shadow-float),0 24px 48px -16px #05101880}.pp .fx-float{z-index:5;font-family:var(--font-sans)}.pp[data-idle] .fx-float,.pp[data-idle] .fx-float *{cursor:auto!important}.fx-float-card{position:relative;overflow:hidden;color:var(--float-ink);background:var(--float-surface);border:1px solid var(--float-line);border-radius:24px;box-shadow:var(--shadow-float);backdrop-filter:blur(18px) saturate(1.2);-webkit-backdrop-filter:blur(18px) saturate(1.2);transform-origin:top right;animation:fx-float-in var(--duration-slow) var(--ease-out);transition:border-radius var(--duration-slow) var(--ease-out),opacity var(--duration-base),transform var(--duration-base) var(--ease-out),box-shadow var(--duration-base)}.from-left .fx-float-card{transform-origin:top left}.from-bottom.from-right .fx-float-card{transform-origin:bottom right}.from-bottom.from-left .fx-float-card{transform-origin:bottom left}.fx-float.is-expanded .fx-float-card{border-radius:20px}@keyframes fx-float-in{0%{opacity:0;transform:scale(.9)}}.fx-float.is-leaving{pointer-events:none}.fx-float.is-leaving .fx-float-card{transform-origin:center;animation:fx-float-out .46s var(--ease-in-out) forwards}@keyframes fx-float-out{0%{opacity:1;transform:scale(1);filter:blur(0)}28%{opacity:1;transform:scale(1.03);filter:blur(0)}to{opacity:0;transform:scale(.2);filter:blur(6px)}}@media (prefers-reduced-motion: reduce){.fx-float.is-leaving .fx-float-card{animation:none;opacity:0}}.fx-float-mini{display:grid;place-items:center;width:46px;height:46px;padding:0;border:0;border-radius:50%;background:none;color:var(--float-ink);cursor:grab}.fx-float-mini:focus-visible{outline:none;box-shadow:var(--focus-ring)}.fx-float-mini .fx-float-ring{width:36px;height:36px}.fx-float.is-mini .fx-float-card{animation:fx-float-in var(--duration-base) var(--ease-out)}.fx-float-bar{display:flex;align-items:center;gap:6px;padding:7px 6px 7px 8px;cursor:grab}.fx-float-ring{width:32px;height:32px;color:var(--float-ink)}.fx-float-ring .fx-ring-track{stroke:var(--float-line)}.tone-paused .fx-float-ring .fx-ring-value{stroke:var(--float-ink-2)}.fx-float-readout{flex:1;min-width:0;display:grid;gap:1px;padding:2px 4px;border:0;border-radius:var(--radius-sm);background:none;color:inherit;text-align:left;text-decoration:none;cursor:inherit}.fx-float-readout:focus-visible{outline:none;box-shadow:var(--focus-ring)}.fx-float-time{font-size:var(--text-md);font-weight:var(--weight-semibold);line-height:1.2;letter-spacing:-.01em;white-space:nowrap;transition:font-size var(--duration-slow) var(--ease-out)}.fx-float.is-expanded .fx-float-time{font-size:1.75rem;font-weight:var(--weight-medium);letter-spacing:-.02em}.tone-paused .fx-float-time{color:var(--float-ink-2)}.fx-float-stage{font-size:var(--text-xs);color:var(--float-ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tone-rest .fx-float-stage{color:color-mix(in srgb,var(--rest-500) 70%,var(--float-ink))}.fx-float-btn{display:grid;place-items:center;flex:none;width:30px;height:30px;padding:0;border:0;border-radius:50%;background:none;color:var(--float-ink-2);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),transform var(--duration-fast) var(--ease-out)}.fx-float-btn:hover{background:var(--float-hover);color:var(--float-ink)}.fx-float-btn:active{transform:scale(.92)}.fx-float-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.fx-float-btn.is-primary{background:var(--float-ink);color:var(--ink)}.fx-float-btn.is-primary:hover{background:#fff}.fx-float-grip{cursor:grab;opacity:.6}.fx-float-grip:hover,.fx-float-grip:focus-visible{opacity:1}.fx-float-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--duration-slow) var(--ease-out);cursor:default}.fx-float.is-expanded .fx-float-body{grid-template-rows:1fr}.fx-float-body>div{min-height:0;overflow:hidden}.fx-float-inner{display:grid;gap:var(--space-3);padding:2px var(--space-4) var(--space-4);opacity:0;transform:translateY(-4px);transition:opacity var(--duration-base),transform var(--duration-slow) var(--ease-out)}.fx-float.is-expanded .fx-float-inner{opacity:1;transform:none;transition-delay:60ms}.fx-float-method{margin:0;font-size:var(--text-sm);font-weight:var(--weight-semibold)}.fx-float-method span{font-weight:var(--weight-regular);color:var(--float-ink-2)}.fx-float-progress{height:3px;border-radius:var(--radius-pill);background:var(--float-line);overflow:hidden}.fx-float-progress span{display:block;height:100%;background:var(--tone);transform-origin:left;transition:transform 1s linear,background var(--duration-slow)}.fx-float-facts{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin:0}.fx-float-facts dt{font-size:var(--text-xs);color:var(--float-ink-2)}.fx-float-facts dd{margin:2px 0 0;font-size:var(--text-sm);font-weight:var(--weight-semibold)}.fx-float-goal{margin:0;font-size:var(--text-sm);color:var(--float-ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.fx-float-link{display:flex;align-items:center;gap:var(--space-2);padding:8px 10px;border-radius:var(--radius-sm);background:var(--float-hover);color:var(--float-ink);font-size:var(--text-sm);text-decoration:none}.fx-float-link span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fx-float-link:hover{background:#ffffff24}.fx-float-note{margin:0;font-size:var(--text-xs);color:color-mix(in srgb,var(--warning-soft) 85%,var(--float-ink))}.fx-float-actions{display:flex;gap:var(--space-2)}.fx-float-action{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;padding:0 12px;border:1px solid var(--float-line);border-radius:var(--radius-pill);background:none;color:var(--float-ink);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;transition:background var(--duration-fast),transform var(--duration-fast) var(--ease-out)}.fx-float-action:hover{background:var(--float-hover)}.fx-float-action:active{transform:scale(.97)}.fx-float-action:focus-visible{outline:none;box-shadow:var(--focus-ring)}.fx-float-action:disabled{opacity:.5;cursor:default;transform:none}.fx-float-action.is-primary{background:var(--float-ink);border-color:var(--float-ink);color:var(--ink)}.fx-float-action.is-primary:hover{background:#fff}.fx-float-action.is-danger{background:var(--danger);border-color:var(--danger);color:#fff}.fx-float-confirm{display:grid;gap:var(--space-3);animation:fx-swap var(--duration-base) var(--ease-out)}.fx-float-confirm p{margin:0;font-size:var(--text-sm);color:var(--float-ink-2);line-height:1.45}.fx-float-confirm strong{display:block;margin-bottom:2px;color:var(--float-ink)}.fx-float-open{justify-self:center;display:inline-flex;align-items:center;gap:4px;padding:2px 6px;border-radius:var(--radius-xs);color:var(--float-ink-2);font-size:var(--text-xs);font-weight:var(--weight-semibold);text-decoration:none}.fx-float-open:hover{color:var(--float-ink)}@media (max-width: 599px){.fx-float.is-expanded{width:min(320px,calc(100vw - 24px))}}.focus-dialog-backdrop{z-index:95}.focus-dialog-body p{margin:0 0 8px;font-size:var(--text-base);line-height:1.5;color:var(--ink-2)}.focus-dialog-body p:last-child{margin-bottom:4px}.focus-dialog-body .muted{color:var(--ink-3)}body.is-resting{overflow:hidden}.rest{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;overflow:auto;outline:none;display:grid;grid-template-rows:auto 1fr auto auto;justify-items:center;gap:var(--space-6);padding:max(32px,6vh) var(--space-6) var(--space-8);color:var(--ink);background:color-mix(in srgb,var(--rest-500) 7%,var(--surface));animation:fade .6s var(--ease-out)}.rest-head{text-align:center}.rest-eyebrow{display:inline-flex;align-items:center;gap:8px;margin:0 0 6px;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--rest-700)}.rest-sub{margin:0;font-size:var(--text-base);color:var(--ink-3)}.rest-main{display:grid;justify-items:center;align-content:center;gap:var(--space-2)}.breath{position:relative;display:grid;place-items:center;width:200px;height:200px;margin-bottom:var(--space-4)}.breath-orb{position:absolute;width:112px;height:112px;border-radius:50%;background:var(--rest-a14);border:1px solid color-mix(in srgb,var(--rest-500) 35%,transparent);animation:breathe 12s ease-in-out infinite}@keyframes breathe{0%{transform:scale(.8)}33.3%{transform:scale(1.5)}50%{transform:scale(1.5)}to{transform:scale(.8)}}.breath-cue{position:relative;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--rest-700)}.rest-time{margin:0;font-size:clamp(3.5rem,8vw,5.5rem);font-weight:300;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums;color:var(--ink)}.rest-next{margin:0;color:var(--ink-3)}.rest-progress{width:min(320px,70vw);height:4px;margin-top:var(--space-4);border-radius:var(--radius-pill);background:var(--rest-a14);overflow:hidden}.rest-progress span{display:block;height:100%;background:var(--rest-500);transform-origin:left;transition:transform 1s linear}.rest-tip{display:grid;grid-template-columns:auto 1fr auto;gap:var(--space-4);align-items:center;width:min(520px,100%);padding:var(--space-4) var(--space-4) var(--space-4) var(--space-5);border-radius:var(--radius-lg);background:var(--surface)}.rest-tip-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:var(--radius-md);background:var(--rest-a14);color:var(--rest-700)}.rest-tip strong{font-size:var(--text-base);color:var(--ink)}.rest-tip p{margin:2px 0 0;font-size:var(--text-sm);color:var(--ink-3)}.rest-foot{display:grid;justify-items:center;gap:var(--space-2);text-align:center}.rest-foot p{margin:0;font-size:var(--text-xs);color:var(--ink-3);max-width:420px}.focus-dialog-backdrop.is-rest .button-danger{background:var(--rest-700);border-color:var(--rest-700)}@media (max-width: 599px){.rest-tip{grid-template-columns:auto 1fr}.rest-tip-next{display:none}}@media (prefers-reduced-motion: reduce){.breath-orb{animation:none}}.quick{position:relative}.quick-panel{position:absolute;z-index:30;right:0;top:calc(100% + 8px);width:300px;display:grid;gap:2px;padding:var(--space-2);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-pop);transform-origin:top right;animation:pop-in var(--duration-base) var(--ease-out)}.quick-title{margin:6px 10px;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--ink-3)}.quick-option{display:grid;gap:1px;padding:9px 10px;border:0;border-radius:var(--radius-sm);background:none;color:var(--ink-2);text-align:left;cursor:pointer;transition:background var(--duration-fast)}.quick-option:hover,.quick-option:focus-visible{outline:none;background:var(--brand-a08)}.quick-option strong{font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--ink)}.quick-option span{font-size:var(--text-sm);color:var(--ink-3)}.quick-option:disabled{opacity:.5;cursor:default}.quick-more{display:inline-flex;align-items:center;gap:6px;margin:6px 10px 4px;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--brand-700);text-decoration:none}.quick-chip{display:inline-flex;align-items:center;gap:8px;min-height:32px;padding:5px 12px;border-radius:var(--radius-pill);background:var(--brand-a14);color:var(--brand-700);font-size:var(--text-sm);font-weight:var(--weight-semibold);text-decoration:none}.quick-chip:hover{background:var(--brand-a26)}.quick-dot{width:7px;height:7px;border-radius:50%;background:currentColor}.quick-skeleton{height:120px;border-radius:var(--radius-sm)}.progress-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--stack-gap);align-items:start}.progress-side{position:sticky;top:calc(var(--topbar-h) + var(--space-4));display:grid;gap:var(--stack-gap)}.progress-page .muted.small,.progress-page .small{font-size:var(--text-sm)}.progress-page .rail-block{display:grid;gap:var(--space-4);padding:var(--space-5);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-xs)}.progress-page .rail-head{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3)}.progress-page .rail-title{margin:0;font-size:var(--text-md);font-weight:var(--weight-bold);color:var(--ink)}.progress-page .goals{display:grid;gap:var(--space-4)}.progress-page .goal{display:grid;gap:var(--space-2)}.progress-page .goal-empty{padding:var(--space-3);border:1px dashed var(--line-strong);border-radius:var(--radius-md);background:none;text-align:left;color:inherit;cursor:pointer;transition:border-color var(--duration-fast),background var(--duration-fast)}.progress-page .goal-empty:hover{border-color:var(--brand-500);background:var(--brand-a08)}.progress-page .goal-empty .goal-title{display:block;margin-bottom:2px}.progress-page .goal-top{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-2)}.progress-page .goal-title{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--ink-2)}.progress-page .goal-pct{display:inline-flex;align-items:center;gap:4px;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--ink-3);font-variant-numeric:tabular-nums}.progress-page .goal.is-achieved .goal-pct{color:var(--success)}.progress-page .goal-bar{height:6px;border-radius:var(--radius-pill);background:var(--surface-sunken);overflow:hidden}.progress-page .goal-bar span{display:block;height:100%;border-radius:inherit;background:var(--brand-500);transition:width var(--duration-slow) var(--ease-out)}.progress-page .goal.is-achieved .goal-bar span{background:var(--success)}.progress-page .goal-numbers{margin:0;font-size:var(--text-xs);font-variant-numeric:tabular-nums}.progress-page .goals-form{display:grid;gap:var(--space-4)}.progress-page .goal-field{display:grid;gap:var(--space-2);margin:0;padding:0;border:0}.progress-page .goal-field legend{padding:0;margin-bottom:4px;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--ink-2)}.progress-page .goal-inputs{display:flex;gap:var(--space-2)}.progress-page .unit-input{display:flex;align-items:center;height:40px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}.progress-page .unit-input:focus-within{border-color:var(--brand-500);box-shadow:0 0 0 3px var(--brand-a26)}.progress-page .unit-input input{flex:1;width:48px;min-width:0;height:100%;padding:0 4px 0 12px;border:0;background:none;outline:none;color:var(--ink);font:inherit;font-variant-numeric:tabular-nums}.progress-page .unit-input span{padding-right:12px;font-size:var(--text-xs);color:var(--ink-3)}.progress-page .chips{display:flex;flex-wrap:wrap;gap:6px}.progress-page .chip{height:28px;padding:0 10px;border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:var(--surface);color:var(--ink-2);font-size:var(--text-xs);font-weight:var(--weight-semibold);cursor:pointer}.progress-page .chip:hover{background:var(--surface-hover)}.progress-page .chip.is-on{background:var(--brand-a14);border-color:transparent;color:var(--brand-700)}.progress-page .check{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer}.progress-page .check input{width:16px;height:16px;accent-color:var(--brand-700)}.progress-page .progress-tab{display:grid;gap:var(--space-8)}.progress-page .progress-hero{display:grid;gap:var(--space-6);padding:var(--space-6);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-xs)}.progress-page .level{display:flex;align-items:center;gap:var(--space-4)}.progress-page .level-badge{display:grid;place-items:center;flex:none;width:64px;height:64px;border-radius:var(--radius-lg);background:var(--brand-a14);color:var(--brand-700);font-size:var(--text-h2);font-weight:var(--weight-bold);font-variant-numeric:tabular-nums}.progress-page .level-text{flex:1;min-width:0;display:grid;gap:6px}.progress-page .level-title{margin:0;font-size:var(--text-md);font-weight:var(--weight-bold);color:var(--ink)}.progress-page .level-title .muted{font-size:var(--text-sm);font-weight:var(--weight-regular)}.progress-page .level-bar{height:6px;border-radius:var(--radius-pill);background:var(--surface-sunken);overflow:hidden}.progress-page .level-bar span{display:block;height:100%;border-radius:inherit;background:var(--brand-500);transition:width var(--duration-slow) var(--ease-out)}.progress-page .level-numbers{display:flex;flex-wrap:wrap;justify-content:space-between;gap:2px var(--space-3);margin:0;font-size:var(--text-xs);font-variant-numeric:tabular-nums}.progress-page .ladder{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:4px}.progress-page .ladder li{position:relative;display:grid;justify-items:center;gap:6px;text-align:center}.progress-page .ladder li:before{content:"";position:absolute;top:5px;left:-50%;right:50%;height:2px;background:var(--line)}.progress-page .ladder li:first-child:before{display:none}.progress-page .ladder li.is-reached:before{background:var(--brand-500)}.progress-page .ladder-dot{position:relative;width:12px;height:12px;border-radius:50%;border:2px solid var(--line-strong);background:var(--surface)}.progress-page .ladder .is-reached .ladder-dot{border-color:var(--brand-500);background:var(--brand-500)}.progress-page .ladder .is-current .ladder-dot{box-shadow:0 0 0 4px var(--brand-a26)}.progress-page .ladder-name{font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--ink-3)}.progress-page .ladder .is-reached .ladder-name{color:var(--ink-2)}.progress-page .ladder-level{font-size:.6875rem;color:var(--ink-4)}.progress-page .section-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:var(--space-3);margin-bottom:var(--space-4)}.progress-page .section-head h2{margin:0 0 2px;font-size:var(--text-lg);font-weight:var(--weight-bold)}.progress-page .section-head p{margin:0}.progress-page .fseg{display:inline-flex;gap:2px;padding:4px;border-radius:var(--radius-pill);background:var(--surface)}.progress-page .fseg button{height:30px;padding:0 var(--space-3);border:0;border-radius:var(--radius-pill);background:none;color:var(--ink-3);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer}.progress-page .fseg button.is-on{background:var(--brand-a14);color:var(--brand-700)}.progress-page .fseg button:focus-visible{outline:none;box-shadow:var(--focus-ring)}.progress-page .achievements{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-3)}.progress-page .achievement{--r: var(--ink-3);position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--space-4);padding:var(--space-4);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-xs)}.progress-page .achievement.rarity-uncommon{--r: var(--rest-700)}.progress-page .achievement.rarity-rare{--r: var(--brand-700)}.progress-page .achievement.rarity-epic{--r: #6b4fc2}.progress-page .achievement.rarity-legendary{--r: var(--warning)}.progress-page .achievement-medal{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--surface-sunken);color:var(--ink-4)}.progress-page .achievement.is-unlocked .achievement-medal{background:color-mix(in srgb,var(--r) 12%,var(--surface));color:var(--r)}.progress-page .achievement-text{min-width:0;display:grid;gap:4px;padding-right:64px}.progress-page .achievement-name{margin:0;font-size:var(--text-base);font-weight:var(--weight-bold);color:var(--ink)}.progress-page .achievement:not(.is-unlocked) .achievement-name{color:var(--ink-3)}.progress-page .achievement-desc{margin:0;font-size:var(--text-sm);color:var(--ink-3)}.progress-page .achievement-meta{margin:2px 0 0;font-size:var(--text-xs);color:var(--ink-3)}.progress-page .achievement-progress{display:flex;align-items:center;gap:var(--space-3);margin-top:4px;font-size:var(--text-xs);color:var(--ink-3);font-variant-numeric:tabular-nums}.progress-page .achievement-track{flex:1;height:4px;border-radius:var(--radius-pill);background:linear-gradient(90deg,var(--brand-500) var(--p),var(--surface-sunken) var(--p))}.progress-page .achievement-rarity{position:absolute;top:var(--space-4);right:var(--space-4);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--r)}.progress-page .empty-inline{margin:0;padding:var(--space-5);border-radius:var(--radius-md);background:var(--surface-sunken);color:var(--ink-3);font-size:var(--text-sm);text-align:center}.progress-page .rules{padding:var(--space-5) var(--space-6);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-xs)}.progress-page .rules h2{margin:0 0 var(--space-3);font-size:var(--text-md)}.progress-page .rules ul{display:grid;gap:var(--space-2);margin:0;padding-left:18px;list-style:disc;font-size:var(--text-sm);color:var(--ink-3)}.progress-page .rules strong{color:var(--ink-2)}@media (max-width: 1099px){.progress-layout{grid-template-columns:minmax(0,1fr)}.progress-side{position:static;order:-1}.progress-page .ladder{grid-template-columns:repeat(5,minmax(0,1fr));row-gap:var(--space-4)}.progress-page .ladder li:nth-child(6):before{display:none}}.settings{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:var(--stack-gap);align-items:start}.settings-block{display:grid;gap:var(--space-3);padding:var(--space-6)}.settings-block h2{margin:0;font-size:var(--text-lg);font-weight:var(--weight-bold)}.settings-block>p{margin:-6px 0 0}.settings-block .small{font-size:var(--text-sm)}.settings-sub{margin:var(--space-3) 0 0;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--ink-3)}.settings-rows{display:grid;border:1px solid var(--line);border-radius:var(--radius-md);overflow:hidden}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:12px 14px;cursor:pointer;transition:background var(--duration-fast)}label.settings-row:hover{background:var(--surface-hover)}.settings-row+.settings-row{border-top:1px solid var(--line)}.settings-label{margin:0;font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--ink-2)}.settings-hint{margin:2px 0 0;font-size:var(--text-xs);color:var(--ink-3)}.settings-block>.button{justify-self:start}.settings-link{justify-self:start}.settings .select{height:36px;padding:0 12px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);color:var(--ink);font:inherit;font-size:var(--text-sm);cursor:pointer}.settings .select:focus-visible{outline:none;border-color:var(--brand-500);box-shadow:0 0 0 3px var(--brand-a26)}.settings .switch{position:relative;flex:none;width:40px;height:24px}.settings .switch input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;margin:0;opacity:0;cursor:pointer}.settings .switch span{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--radius-pill);background:var(--line-strong);transition:background var(--duration-base);pointer-events:none}.settings .switch span:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:var(--shadow-xs);transition:transform var(--duration-base) var(--ease-out)}.settings .switch input:checked+span{background:var(--brand-700)}.settings .switch input:checked+span:after{transform:translate(16px)}.settings .switch input:focus-visible+span{box-shadow:var(--focus-ring)}@media (max-width: 1023px){.settings{grid-template-columns:minmax(0,1fr)}}@font-face{font-family:Host Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(/assets/host-grotesk-latin-ext-wght-normal-B8jkyusk.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Host Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(/assets/host-grotesk-latin-wght-normal-CBa0fl4q.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/poppins-latin-600-normal-zEkxB9Mr.woff2) format("woff2"),url(/assets/poppins-latin-600-normal-BJdTmd5m.woff) format("woff")}:root{color-scheme:light;--brand-50: #eef8fd;--brand-100: #aedff4;--brand-200: #9adbf8;--brand-300: #64b2d4;--brand-500: #13a5e4;--brand-600: #0e8fca;--brand-700: #0a7ab0;--brand-800: #086590;--steel-600: #467488;--logo: #1e99dc;--brand-a08: rgb(19 165 228 / .08);--brand-a14: rgb(19 165 228 / .14);--brand-a26: rgb(19 165 228 / .26);--brand-a30: rgb(19 165 228 / .3);--streak-from: #e44313;--streak-to: #ffcc00;--gradient-streak: linear-gradient(90deg, var(--streak-from) 0%, var(--streak-to) 71.37%);--canvas: #d7e5ed;--surface: #ffffff;--surface-sunken: #f2f7fa;--surface-hover: #eaf3f8;--line: #e2ebf0;--line-strong: #cfdde5;--divider: rgb(217 217 217 / .59);--ink: #0b0d0e;--ink-2: #3c3c3c;--ink-3: #6d6d6d;--ink-4: #858585;--ink-on-brand: #ffffff;--success: #15803d;--success-soft: #e3f5ea;--danger: #c0352b;--danger-soft: #fdecea;--warning: #b54708;--warning-soft: #fff4e0;--rest-500: #2a9d8f;--rest-700: #1d7268;--rest-a14: rgb(42 157 143 / .14);--paused: var(--ink-4);--float-surface: rgb(16 24 30 / .94);--float-line: rgb(255 255 255 / .1);--float-ink: #f3f7fa;--float-ink-2: rgb(243 247 250 / .64);--float-hover: rgb(255 255 255 / .08);--shadow-float: 0 16px 40px -14px rgb(5 16 24 / .55), 0 2px 6px rgb(5 16 24 / .18);--font-sans: "Host Grotesk Variable", "Host Grotesk", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-brand: "Poppins", var(--font-sans);--text-display: clamp(1.5rem, 1.05rem + .6vw, 1.875rem);--text-h1: clamp(1.375rem, 1rem + .5vw, 1.625rem);--text-h2: clamp(1.25rem, 1rem + .35vw, 1.5rem);--text-lg: 1.125rem;--text-md: 1rem;--text-base: .9375rem;--text-sm: .8125rem;--text-xs: .75rem;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--weight-extrabold: 800;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-xs: 6px;--radius-sm: 10px;--radius-md: 12px;--radius-lg: 20px;--radius-xl: 32px;--radius-pill: 999px;--shadow-xs: 0 1px 2px rgb(9 46 66 / .06);--shadow-card: 0 1px 2px rgb(9 46 66 / .05), 0 8px 24px -8px rgb(9 46 66 / .16);--shadow-card-hover: 0 2px 4px rgb(9 46 66 / .06), 0 16px 32px -10px rgb(9 46 66 / .24);--shadow-pop: 0 18px 40px -12px rgb(9 46 66 / .32), 0 2px 6px rgb(9 46 66 / .06);--focus-ring: 0 0 0 3px rgb(19 165 228 / .45);--ease-out: cubic-bezier(.2, .8, .2, 1);--ease-spring: cubic-bezier(.34, 1.4, .64, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--duration-fast: .12s;--duration-base: .2s;--duration-slow: .36s;--sidebar-w: clamp(232px, 14vw, 264px);--rail-w: 76px;--topbar-h: 72px;--page-pad-x: clamp(20px, 2.5vw, 48px);--content-max: 1360px;--stack-gap: var(--space-6)}@media (prefers-reduced-motion: reduce){:root{--duration-fast: 0ms;--duration-base: 0ms;--duration-slow: 0ms}}.surface{background:var(--surface);border-radius:var(--radius-lg)}.surface-pad{padding:var(--space-6)}.surface-sunken{background:var(--brand-a08);border-radius:var(--radius-md)}.section-title{margin:0;font-size:var(--text-display);font-weight:var(--weight-bold);line-height:1.15;letter-spacing:-.02em;color:var(--ink)}.title-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4)}.section-link{display:inline-flex;align-items:center;gap:6px;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--brand-700);text-decoration:none;border-radius:var(--radius-xs);transition:color var(--duration-fast)}.section-link:hover{color:var(--brand-800)}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:7px 16px;border-radius:var(--radius-pill);border:1px solid var(--line-strong);background:var(--surface);color:var(--ink-2);font-weight:var(--weight-semibold);font-size:.875rem;line-height:1.2;text-decoration:none;cursor:pointer;transition:background var(--duration-fast),border-color var(--duration-fast),color var(--duration-fast),transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast)}.button:hover{background:var(--surface-hover)}.button:active{transform:translateY(1px) scale(.99)}.button:focus-visible{outline:none;box-shadow:var(--focus-ring)}.button:disabled,.button[aria-disabled=true]{opacity:.55;cursor:default;transform:none}.button-primary{background:var(--brand-700);border-color:var(--brand-700);color:var(--ink-on-brand)}.button-primary:hover{background:var(--brand-800);border-color:var(--brand-800)}.button-soft{background:var(--brand-a14);border-color:transparent;color:var(--brand-700)}.button-soft:hover{background:var(--brand-a26)}.button-ghost{background:transparent;border-color:transparent;color:var(--ink-3)}.button-ghost:hover{color:var(--ink-2);background:var(--brand-a08)}.button-danger{background:var(--danger);border-color:var(--danger);color:#fff}.button-danger:hover{background:var(--danger);filter:brightness(1.08)}.button-sm{min-height:32px;padding:5px 12px;font-size:var(--text-sm)}.button-lg{min-height:44px;padding:10px 20px;font-size:var(--text-base)}.button-block{width:100%}.button-sub{font-weight:500;opacity:.85}.button-on-dark{background:#ffffff29;border-color:#ffffff47;color:#fff}.button-on-dark:hover{background:#ffffff42}.icon-button{display:inline-grid;place-items:center;flex:none;width:38px;height:38px;padding:0;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--ink-3);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),transform var(--duration-fast) var(--ease-out)}.icon-button:hover{background:var(--brand-a08);color:var(--ink-2)}.icon-button:active{transform:scale(.94)}.icon-button:focus-visible{outline:none;box-shadow:var(--focus-ring)}.icon-button:disabled{opacity:.4;cursor:default;transform:none;background:transparent}.icon-button-sm{width:32px;height:32px}.link-button{display:inline-flex;align-items:center;gap:6px;padding:0;border:0;background:none;color:var(--brand-700);font-size:inherit;font-weight:var(--weight-semibold);cursor:pointer}.link-button:hover{color:var(--brand-800)}.link-button:disabled{opacity:.5;cursor:default}.pill,.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:var(--weight-semibold);background:var(--surface-sunken);color:var(--ink-3)}.pill-accent,.badge-brand{background:var(--brand-a14);color:var(--brand-700)}.badge-success{background:var(--success-soft);color:var(--success)}.badge-warning{background:var(--warning-soft);color:var(--warning)}.progress{position:relative;width:100%;background:var(--brand-a26);border-radius:var(--radius-pill);overflow:hidden}.progress-xs{height:6px;background:var(--brand-200)}.progress-sm{height:6px}.progress-md{height:8px}.progress-lg{height:12px}.progress>span{position:absolute;inset:0 auto 0 0;background:var(--brand-500);border-radius:inherit;transition:width var(--duration-slow) var(--ease-out)}.alert{padding:12px 16px;border-radius:var(--radius-md);margin-bottom:16px;font-size:var(--text-sm)}.alert-error{background:var(--danger-soft);color:var(--danger)}.alert-warning{background:var(--warning-soft);color:var(--warning);font-size:var(--text-sm)}.alert code{font-size:.85em;padding:1px 5px;border-radius:4px;background:#0000000f}.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:var(--space-10) var(--space-6);border-radius:var(--radius-lg);background:var(--surface);color:var(--ink-3)}.empty-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:var(--brand-a14);color:var(--brand-500)}.empty h2{margin:8px 0 0;color:var(--ink);font-size:var(--text-md)}.empty p{margin:0 0 12px;max-width:420px}.empty-compact{padding:var(--space-8) var(--space-5)}.skeleton{background:linear-gradient(90deg,#ffffff8c 25%,#fffffff2,#ffffff8c 75%);background-size:200% 100%;animation:shimmer 1.4s infinite linear;border:0!important;box-shadow:none!important}.skeleton-line{height:.9em;border-radius:var(--radius-pill);background-color:var(--surface-sunken)}@keyframes shimmer{to{background-position:-200% 0}}.spinner{width:36px;height:36px;border-radius:50%;border:3px solid rgb(255 255 255 / .25);border-top-color:#fff;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}}@keyframes pop-in{0%{opacity:0;transform:translateY(-6px) scale(.98)}}.menu{position:absolute;z-index:40;min-width:240px;padding:8px;border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-pop);transform-origin:top right;animation:pop-in var(--duration-base) var(--ease-out)}.menu-head{display:grid;gap:2px;padding:8px 10px 10px}.menu-head strong{color:var(--ink)}.menu-sep{height:1px;margin:6px 4px;background:var(--line)}.menu-item{width:100%;display:flex;align-items:center;gap:10px;padding:9px 10px;border:0;border-radius:var(--radius-sm);background:none;color:var(--ink-2);font-size:var(--text-sm);font-weight:var(--weight-medium);text-align:left;text-decoration:none;cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast)}.menu-item:hover,.menu-item:focus-visible,.menu-item[aria-selected=true]{outline:none;background:var(--brand-a08);color:var(--ink)}.menu-item svg{flex:none;color:var(--ink-4)}.menu-item-danger,.menu-item-danger svg{color:var(--danger)}[data-tip]{position:relative}[data-tip]:after{content:attr(data-tip);position:absolute;z-index:60;left:50%;bottom:calc(100% + 8px);padding:5px 9px;border-radius:8px;background:var(--ink);color:#fff;font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1.3;white-space:nowrap;pointer-events:none;opacity:0;transform:translate(-50%,4px);transition:opacity var(--duration-fast),transform var(--duration-fast) var(--ease-out)}[data-tip]:hover:after,[data-tip]:focus-visible:after{opacity:1;transform:translate(-50%)}[data-tip-side=right]:after{left:calc(100% + 10px);bottom:50%;transform:translate(4px,50%)}[data-tip-side=right]:hover:after,[data-tip-side=right]:focus-visible:after{transform:translateY(50%)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:#081e2c6b;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fade var(--duration-base) ease}:is(.stage,.auth-aside,.course-hero,.pp,.ftimer,.fbar,.on-dark) :is(h1,h2,h3,h4){color:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.tabular{font-variant-numeric:tabular-nums}:root{--bg: var(--canvas);--panel: var(--surface);--panel-2: var(--surface-sunken);--text: var(--ink-2);--muted: var(--ink-3);--border: var(--line);--accent: var(--brand-700);--accent-hover: var(--brand-800);--accent-soft: var(--brand-a14);--on-accent: var(--ink-on-brand);--danger-bg: var(--danger-soft);--warning-bg: var(--warning-soft);--shadow-sm: var(--shadow-xs);--shadow-md: var(--shadow-pop);--radius: var(--radius-md);font-family:var(--font-sans);color:var(--ink-2);background:var(--canvas);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;background:var(--canvas);font-size:var(--text-base);line-height:1.45}h1,h2,h3{line-height:1.2;color:var(--ink)}ul,ol{list-style:none;margin:0;padding:0}a{color:var(--accent)}button,input,select,textarea{font:inherit;color:inherit}img,svg{display:block}.muted{color:var(--muted)}.small{font-size:var(--text-xs)}.center{text-align:center}:focus-visible{outline:2px solid var(--brand-500);outline-offset:2px}.page{margin:0 auto;padding:var(--space-2) 0 var(--space-6)}.page-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:var(--space-3) var(--space-6);margin-bottom:var(--space-6)}.page-head h1{margin:0 0 4px;font-size:var(--text-display);font-weight:var(--weight-bold);line-height:1.15;letter-spacing:-.02em}.page-head p{margin:0;font-size:var(--text-sm)}.eyebrow{margin:0 0 6px;font-size:var(--text-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.breadcrumb{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:var(--text-sm);color:var(--muted);margin-bottom:var(--space-3)}.breadcrumb a{color:var(--muted);text-decoration:none}.breadcrumb a:hover{color:var(--text);text-decoration:underline}.breadcrumb-part{display:inline-flex;gap:6px}.cover{position:relative;display:grid;place-items:center;overflow:hidden;background:var(--surface-sunken);color:var(--ink-4)}.cover img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity var(--duration-base) var(--ease-out)}.cover.is-loaded img{opacity:1}.cover-placeholder{width:46%;height:46%}.library-head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:var(--space-3) var(--space-6);margin-bottom:var(--space-6)}.library-head p{margin:var(--space-1) 0 0;font-size:var(--text-sm)}.library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:var(--space-5)}.course-hero{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--space-6);align-items:center;padding:var(--space-6) var(--space-6) var(--space-6) var(--space-8);border-radius:var(--radius-lg);overflow:hidden;color:#fff;background:radial-gradient(100% 140% at 0% 0%,color-mix(in srgb,var(--cover-a) 85%,transparent),transparent 70%),linear-gradient(135deg,color-mix(in srgb,var(--cover-b) 70%,#0b0b10),#0b0b10)}.course-hero-main{display:flex;gap:var(--space-5);align-items:center;min-width:0}.cover-hero{flex:none;width:88px;height:88px;border-radius:var(--radius-lg);box-shadow:0 12px 30px -10px #0009}.course-hero .eyebrow{color:#ffffffb3}.course-hero h1{margin:0 0 var(--space-2);font-size:var(--text-h1);line-height:1.15;letter-spacing:-.02em}.course-hero-meta{display:flex;flex-wrap:wrap;gap:6px 18px;margin:0;color:#ffffffd1;font-size:var(--text-sm)}.course-hero-meta span{display:inline-flex;align-items:center;gap:6px}.learning-card{display:grid;gap:var(--space-3);padding:var(--space-5);border-radius:var(--radius-md);background:var(--panel);color:var(--text);box-shadow:var(--shadow-md)}.learning-card-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:var(--text-sm)}.learning-percent{font-size:var(--text-h2);font-weight:var(--weight-bold);line-height:1.1;letter-spacing:-.02em;color:var(--ink)}.learning-last{display:grid;gap:2px;margin:0}.learning-last-title{color:var(--text);font-weight:600;text-decoration:none;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.learning-last-title:hover{color:var(--accent)}.learning-card .center{margin:-4px 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.curriculum{margin-top:var(--space-8)}.curriculum-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.curriculum-head h2{margin:0;font-size:var(--text-lg);letter-spacing:-.01em}.module{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:var(--space-2);overflow:hidden}.module-head{width:100%;display:grid;grid-template-columns:auto minmax(0,1fr) 120px auto;gap:16px;align-items:center;padding:var(--space-3) var(--space-4);border:0;background:none;text-align:left;cursor:pointer}.module-head:hover{background:var(--panel-2)}.module-index{display:grid;place-items:center;width:34px;height:34px;border-radius:var(--radius-sm);background:var(--panel-2);color:var(--muted);font-weight:700;font-size:.85rem;font-variant-numeric:tabular-nums}.module-index.is-complete{background:var(--success-soft);color:var(--success)}.module-title{display:grid;gap:2px;min-width:0}.module-title strong{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.module-chevron{color:var(--muted);transition:transform .2s}.module.is-open .module-chevron{transform:rotate(90deg)}.module-body{border-top:1px solid var(--border);padding:6px 8px 10px}.module-empty{padding:8px 12px;margin:0}.subtopic{margin-top:8px}.subtopic-title{display:flex;justify-content:space-between;gap:12px;margin:8px 10px 4px;padding-left:10px;border-left:3px solid var(--accent);font-size:.88rem;font-weight:650}.subtopic .subtopic{margin-left:14px}.lesson-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;padding:8px 10px;border-radius:10px;color:var(--text);text-decoration:none;transition:background .15s}.lesson-row:hover{background:var(--panel-2)}.lesson-row.is-resume{background:var(--accent-soft)}.lesson-row.is-completed .lesson-row-title{color:var(--muted)}.lesson-row.is-unavailable{opacity:.6}.lesson-row-text{display:grid;gap:3px;min-width:0}.lesson-row-title{font-size:.92rem;line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.lesson-number{color:var(--muted);font-variant-numeric:tabular-nums}.lesson-row-meta{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:.75rem;color:var(--muted)}.lesson-row-meta:empty{display:none}.thumb{position:relative;flex:none;width:112px;aspect-ratio:16 / 9;border-radius:8px;overflow:hidden;background:var(--panel-2);display:grid;place-items:center;color:var(--muted)}.thumb img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.thumb-icon{position:relative;display:grid;place-items:center}.thumb-video .thumb-icon{width:28px;height:28px;border-radius:50%;background:#00000080;color:#fff;opacity:0;transition:opacity .15s;padding-left:2px}.thumb-video:not(:has(img)) .thumb-icon{opacity:1;background:var(--border);color:var(--muted)}.lesson-row:hover .thumb-video .thumb-icon{opacity:1}.thumb-duration{position:absolute;right:4px;bottom:4px;padding:0 5px;border-radius:4px;background:#000000b8;color:#fff;font-size:.68rem;font-weight:600;font-variant-numeric:tabular-nums}.thumb-watched{position:absolute;left:0;right:0;bottom:0;height:3px;background:#ffffff59}.thumb-watched span{display:block;height:100%;background:#ef4444}.status{flex:none;display:grid;place-items:center;width:22px;height:22px;border-radius:50%}.status-completed{background:var(--success);color:#fff}.status-pending{border:2px solid var(--border)}.status-in-progress{background:conic-gradient(var(--accent) var(--angle),var(--border) 0);-webkit-mask:radial-gradient(circle 7px,transparent 98%,#000);mask:radial-gradient(circle 7px,transparent 98%,#000)}@keyframes fade-in{0%{opacity:0;transform:translateY(-4px)}}.rich-text{margin-top:var(--space-3);padding:var(--space-4);background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-md);font-size:var(--text-sm);line-height:1.6;overflow-wrap:anywhere}.save-status{display:inline-flex;align-items:center;gap:6px;font-size:.75rem;color:var(--muted);white-space:nowrap}.save-dot{width:7px;height:7px;border-radius:50%;background:var(--success)}.save-dirty .save-dot{background:var(--warning)}.save-saving .save-dot{background:var(--accent);animation:pulse 1s infinite}.save-error,.save-conflict{color:var(--danger)}.save-error .save-dot,.save-conflict .save-dot{background:var(--danger)}@keyframes pulse{50%{opacity:.3}}.module.is-target,.subtopic.is-target{animation:target-flash 2.2s ease;scroll-margin-top:calc(var(--topbar-h) + 16px)}@keyframes target-flash{0%,40%{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 45%,transparent);border-radius:12px}}@media (max-width: 1023px){.course-hero{grid-template-columns:1fr;padding:var(--space-6)}}@media (max-width: 720px){.page{padding-top:0}.course-hero{padding:var(--space-5)}.course-hero-main{flex-direction:column;align-items:flex-start;gap:16px}.cover-hero{width:64px;height:64px;border-radius:var(--radius-md)}.module-head{grid-template-columns:auto minmax(0,1fr) auto;padding:12px 14px}.module-progress{display:none}.module-title strong{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.thumb{width:88px}.lesson-row{gap:10px;padding:8px 6px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.shell{display:grid;grid-template-columns:auto minmax(0,1fr);min-height:100vh}.shell-body{min-width:0;padding:0 var(--page-pad-x) var(--space-8);overflow-x:clip}.shell-body>*{max-width:var(--content-max);margin-inline:auto}.shell-body:has(.app-main.is-notebook){padding-bottom:0}.logo{display:inline-flex;align-items:center;gap:10px;color:var(--brand-500)}.logo svg{width:44px;height:auto;flex:none}.logo-word{font-family:var(--font-brand);font-weight:600;font-size:1.375rem;line-height:1;letter-spacing:-.01em;color:var(--brand-500);transform:translateY(1px)}.sidebar{position:sticky;top:0;z-index:30;display:flex;flex-direction:column;width:var(--sidebar-w);height:100vh;height:100dvh;padding:var(--space-6) var(--space-4) var(--space-5);background:var(--surface);border-radius:0 var(--radius-xl) var(--radius-xl) 0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none}.sidebar::-webkit-scrollbar{display:none}.sidebar-brand{display:flex;align-items:center;align-self:stretch;height:calc(var(--topbar-h) - var(--space-6));margin:0 0 var(--space-6);padding:0 var(--space-3);border-radius:var(--radius-sm);text-decoration:none}.sidebar-nav{flex:1;display:flex;flex-direction:column}.sidebar-nav ul{display:grid;gap:var(--space-1)}.sidebar-foot{margin-top:auto;padding-top:var(--space-6)}.nav-item{display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:44px;padding:0 var(--space-3);border:0;border-radius:var(--radius-md);background:transparent;color:var(--ink-3);font-size:var(--text-base);font-weight:var(--weight-semibold);line-height:1.2;text-align:left;text-decoration:none;cursor:pointer;transition:background var(--duration-base) var(--ease-out),color var(--duration-fast)}.nav-item svg{flex:none;width:22px;height:22px;transition:transform var(--duration-base) var(--ease-spring)}.nav-item:hover{color:var(--ink-2);background:var(--brand-a08)}.nav-item:hover svg{transform:scale(1.06)}.nav-item:active svg{transform:scale(.94)}.nav-item:focus-visible{outline:none;box-shadow:var(--focus-ring)}.nav-item.is-active{background:var(--brand-a14);color:var(--brand-700)}.nav-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar [data-tip]:after{display:none}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);height:var(--topbar-h);margin-bottom:var(--space-2)}.topbar:before{content:"";position:absolute;z-index:-1;top:0;bottom:0;left:50%;width:calc(100vw - var(--sidebar-w));transform:translate(-50%);background:color-mix(in srgb,var(--canvas) 88%,transparent);-webkit-backdrop-filter:saturate(1.3) blur(12px);backdrop-filter:saturate(1.3) blur(12px);pointer-events:none}.mobile-header{display:none}.search{position:relative;flex:0 1 400px;min-width:0}.search-input{width:100%;height:40px;padding:0 44px 0 var(--space-5);border:1px solid transparent;border-radius:var(--radius-pill);background:var(--surface);color:var(--ink-2);font-size:var(--text-base);font-weight:var(--weight-medium);-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.search-input::placeholder{color:var(--ink-3);opacity:1}.search-input:hover{border-color:var(--line-strong)}.search-input:focus{outline:none;border-color:var(--brand-500);box-shadow:var(--focus-ring)}.search-input::-webkit-search-cancel-button{display:none}.search-icon{position:absolute;right:16px;top:50%;transform:translateY(-50%);color:var(--ink-3);pointer-events:none}.search-menu{left:0;right:0;top:calc(100% + 8px);transform-origin:top center}.search-result{cursor:pointer}.search-result svg{color:var(--brand-500)}.search-result-text{display:grid;min-width:0}.search-result-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}.search-result-meta{font-size:var(--text-xs);color:var(--ink-3)}.search-empty{margin:0;padding:12px;font-size:var(--text-sm);color:var(--ink-3)}.account{position:relative;flex:none}.account-trigger{display:flex;align-items:center;gap:var(--space-3);padding:4px 6px 4px 4px;border:0;background:none;border-radius:var(--radius-pill);text-align:left;cursor:pointer;transition:background var(--duration-fast)}.account-trigger:hover{background:#ffffff8c}.account-trigger:focus-visible{outline:none;box-shadow:var(--focus-ring)}.avatar{flex:none;display:grid;place-items:center;border-radius:50%;background:var(--surface);color:var(--brand-500);font-weight:var(--weight-bold);line-height:1;transition:transform var(--duration-base) var(--ease-spring)}.account-trigger:hover .avatar{transform:scale(1.03)}.account-id{display:grid;gap:3px;min-width:0}.account-name{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-base);font-weight:var(--weight-semibold);line-height:1.1;color:var(--ink)}.account-level{font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1;color:var(--ink-3)}.account-caret{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--brand-a14);color:var(--brand-700);transition:transform var(--duration-base) var(--ease-out),background var(--duration-fast)}.account-trigger:hover .account-caret{background:var(--brand-a26)}.account-trigger[aria-expanded=true] .account-caret{transform:rotate(180deg)}.account-menu{right:0;top:calc(100% + 8px);width:288px}.account-tg{display:flex;gap:10px;align-items:center;margin:0 2px;padding:10px;border-radius:var(--radius-sm);background:var(--brand-a08);font-size:var(--text-sm)}.account-tg>div{display:grid;min-width:0}.account.is-compact .account-trigger{gap:0;padding:0}.account.is-compact .account-caret{display:none}.boot{min-height:100vh;display:grid;place-items:center;padding:24px}.boot-mark{animation:boot-pulse 1.2s ease-in-out infinite}@keyframes boot-pulse{50%{opacity:.5;transform:scale(.94)}}@media (max-width: 1279px) and (min-width: 1024px){.sidebar{width:var(--rail-w);padding:var(--space-6) var(--space-3) var(--space-5);align-items:center;overflow:visible}.sidebar-brand{justify-content:center;padding:0}.sidebar-brand .logo-word{display:none}.sidebar-brand .logo svg{width:40px}.nav-item{width:48px;min-height:48px;justify-content:center;padding:0}.nav-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.sidebar [data-tip]:after{display:block}.topbar:before{width:calc(100vw - var(--rail-w))}}@media (max-width: 1023px){:root{--topbar-h: 60px}.shell{display:block}.shell-body{padding:0 var(--page-pad-x) var(--space-10)}.sidebar{position:fixed;inset:0 auto 0 0;z-index:80;width:min(288px,86vw);padding:var(--space-4) var(--space-4) var(--space-5);transform:translate(-104%);visibility:hidden;transition:transform var(--duration-slow) var(--ease-out),visibility 0s linear var(--duration-slow);box-shadow:var(--shadow-pop)}.sidebar.is-open{transform:none;visibility:visible;transition:transform var(--duration-slow) var(--ease-out)}.sidebar-brand{height:44px;margin-bottom:var(--space-4)}.nav-item{min-height:48px}.mobile-header{position:sticky;top:0;z-index:25;display:flex;align-items:center;gap:8px;height:var(--topbar-h);margin:0 calc(-1 * var(--page-pad-x));padding:0 var(--page-pad-x) 0 calc(var(--page-pad-x) - 8px);max-width:none;background:color-mix(in srgb,var(--canvas) 86%,transparent);-webkit-backdrop-filter:saturate(1.3) blur(12px);backdrop-filter:saturate(1.3) blur(12px)}.mobile-header .icon-button{color:var(--ink-2)}.mobile-brand{display:block;margin-right:auto;border-radius:var(--radius-sm)}.mobile-brand .logo{gap:8px}.mobile-brand .logo svg{width:36px}.mobile-brand .logo-word{font-size:1.25rem}.topbar{position:static;height:auto;margin:var(--space-1) 0 var(--space-5);background:none;-webkit-backdrop-filter:none;backdrop-filter:none}.topbar:before{display:none}.topbar .account{display:none}.search{flex:1 1 auto}.search-input{height:44px}}.auth-page{min-height:100vh;min-height:100dvh;display:grid;grid-template-columns:minmax(380px,.95fr) minmax(0,1.25fr);background:var(--bg)}.auth-aside{position:relative;overflow:hidden;color:#fff;background:radial-gradient(90% 60% at 0% 0%,rgb(99 102 241 / .55),transparent 60%),radial-gradient(70% 60% at 100% 100%,rgb(37 99 235 / .55),transparent 60%),linear-gradient(160deg,#0f172a,#0b1020 60%,#0a0d18)}.auth-aside:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:radial-gradient(rgb(255 255 255 / .09) 1px,transparent 1px);background-size:18px 18px;-webkit-mask-image:radial-gradient(80% 70% at 30% 40%,#000,transparent);mask-image:radial-gradient(80% 70% at 30% 40%,#000,transparent)}.auth-aside-inner{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;justify-content:space-between;gap:40px;padding:40px 48px}.auth-brand{color:#fff}.auth-brand .brand-mark{background:#fff;color:#1d4ed8}.auth-pitch h1{margin:0 0 28px;max-width:420px;font-size:clamp(1.7rem,2.6vw,2.25rem);line-height:1.15;letter-spacing:-.03em}.auth-features{display:grid;gap:18px;max-width:400px}.auth-features li{display:flex;gap:14px;align-items:flex-start}.auth-features strong{display:block;font-size:.95rem}.auth-features span{color:#ffffffad;font-size:.88rem}.auth-feature-icon{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:#ffffff1a;border:1px solid rgb(255 255 255 / .14)}.auth-preview{max-width:340px;padding:16px;border-radius:16px;background:#ffffff12;border:1px solid rgb(255 255 255 / .12);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 20px 50px -20px #0009;animation:float 6s ease-in-out infinite}@keyframes float{50%{transform:translateY(-6px)}}.auth-preview-row{display:flex;gap:12px;align-items:center;margin-bottom:14px}.auth-preview-row>div{flex:1;display:grid;gap:8px}.auth-preview-thumb{width:64px;height:40px;border-radius:8px;background:linear-gradient(135deg,#6366f1,#2563eb)}.auth-preview-line{display:block;height:8px;border-radius:99px;background:#ffffff38}.auth-preview-line.w70{width:70%}.auth-preview-line.w40{width:40%;background:#ffffff1f}.auth-preview-progress{height:6px;border-radius:99px;background:#ffffff1f;overflow:hidden}.auth-preview-progress span{display:block;height:100%;border-radius:inherit;background:#60a5fa}.auth-preview-caption{display:block;margin-top:8px;font-size:.75rem;color:#fff9}.auth-main{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:48px 24px}.auth-mobile-brand{display:none}.auth-card{width:100%;max-width:440px}.auth-footer{width:100%;max-width:440px;font-size:.85rem;color:var(--muted);text-align:center}.auth-head{margin-bottom:24px}.auth-head h1{margin:0 0 6px;font-size:1.65rem;letter-spacing:-.025em}.auth-head p{margin:0}.segmented{position:relative;display:grid;grid-template-columns:1fr 1fr;padding:4px;margin-bottom:24px;border-radius:12px;background:var(--panel-2);border:1px solid var(--border)}.segmented button{position:relative;z-index:1;padding:9px 12px;border:0;background:none;border-radius:9px;font-weight:600;font-size:.92rem;color:var(--muted);cursor:pointer;transition:color .2s}.segmented button[aria-selected=true]{color:var(--text)}.segmented-thumb{position:absolute;top:4px;bottom:4px;left:4px;width:calc(50% - 4px);border-radius:9px;background:var(--panel);box-shadow:var(--shadow-sm),0 0 0 1px var(--border);transition:transform .28s cubic-bezier(.3,.7,.2,1)}.segmented.is-signup .segmented-thumb{transform:translate(100%)}.stepper{display:flex;gap:6px;margin:0 0 24px}.stepper-item{flex:1;display:grid;gap:8px;min-width:0}.stepper-item:before{content:"";height:4px;border-radius:99px;background:var(--border);transition:background .35s}.stepper-item.is-done:before,.stepper-item.is-current:before{background:var(--accent)}.stepper-item.is-current:before{background:linear-gradient(90deg,var(--accent) 50%,color-mix(in srgb,var(--accent) 35%,var(--border)) 50%);background-size:200% 100%;animation:step-fill .5s ease forwards}@keyframes step-fill{0%{background-position:100% 0}to{background-position:50% 0}}.stepper-dot{display:none}.stepper-label{font-size:.74rem;font-weight:600;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stepper-item.is-current .stepper-label{color:var(--text)}.stepper-item.is-done .stepper-label{color:var(--accent)}.auth-step{animation:step-in .32s cubic-bezier(.2,.7,.2,1)}@keyframes step-in{0%{opacity:0;transform:translateY(8px)}}@media (prefers-reduced-motion: reduce){.auth-step,.auth-preview,.segmented-thumb,.stepper-item:before{animation:none!important;transition:none!important}}.auth-form{display:grid;gap:6px}.auth-form>.auth-submit{margin-top:10px}.step-intro{display:flex;gap:14px;align-items:flex-start;margin-bottom:18px}.step-intro h2{margin:0 0 4px;font-size:1.12rem;letter-spacing:-.01em}.step-intro p{margin:0;font-size:.9rem}.step-icon{flex:none;display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--accent-soft);color:var(--accent)}.field{display:grid;gap:7px}.field-label-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.field label{font-size:.86rem;font-weight:600}.field-control{position:relative}.field-status{position:absolute;top:50%;right:14px;transform:translateY(-50%);display:grid;place-items:center;pointer-events:none}.field:has(.input-action) .field-status,.field:has(.code-input) .field-status,.field:has(.phone-input) .field-status{display:none}.field.is-valid .field-status{color:var(--success)}.field.is-invalid .field-status{color:var(--danger)}.field-message{min-height:1.35em;margin:0 0 6px;font-size:.8rem;line-height:1.35;color:var(--muted);transition:color .15s}.field-message.is-error{color:var(--danger);animation:message-in .2s ease}.field-message.is-success{color:var(--success)}@keyframes message-in{0%{opacity:0;transform:translateY(-2px)}}.input{width:100%;height:46px;padding:0 14px;border:1px solid var(--border);border-radius:11px;background:var(--panel);color:var(--text);font:inherit;font-size:.97rem;transition:border-color .15s,box-shadow .15s,background .15s}.input::placeholder{color:color-mix(in srgb,var(--muted) 70%,transparent)}.input:hover:not(:disabled){border-color:color-mix(in srgb,var(--muted) 45%,var(--border))}.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 18%,transparent)}.input:disabled{opacity:.65}.field.is-invalid .input,.input[aria-invalid=true]{border-color:var(--danger)}.field.is-invalid .input:focus{box-shadow:0 0 0 4px color-mix(in srgb,var(--danger) 16%,transparent)}.field.is-valid .input{border-color:color-mix(in srgb,var(--success) 60%,var(--border))}.field:not(:has(.input-action)) .input{padding-right:40px}.input.has-icon{padding-left:40px}.input.has-action{padding-right:46px}.input-group{position:relative}.input-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--muted);display:grid;pointer-events:none}.input-group:focus-within .input-icon{color:var(--accent)}.input-action{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:34px;height:34px;border:0;border-radius:8px;background:none;color:var(--muted);cursor:pointer}.input-action:hover{color:var(--text);background:var(--panel-2)}.phone-input{display:flex;gap:8px}.phone-country{position:relative;flex:none}.phone-country select{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;cursor:pointer;font-size:16px}.phone-country-face{display:flex;align-items:center;gap:6px;height:46px;padding:0 12px;border:1px solid var(--border);border-radius:11px;background:var(--panel);font-weight:600;font-size:.95rem;font-variant-numeric:tabular-nums;transition:border-color .15s,box-shadow .15s}.phone-country-face svg{color:var(--muted)}.phone-country:focus-within .phone-country-face{border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 18%,transparent)}.phone-flag{font-size:1.15rem;line-height:1}.phone-number{flex:1;min-width:0;font-variant-numeric:tabular-nums;letter-spacing:.01em}.phone-input.is-invalid .phone-number{border-color:var(--danger)}.code-input{position:relative;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,56px);gap:10px;justify-content:start;cursor:text}.code-input-native{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;border:0;font-size:16px;caret-color:transparent;cursor:text}.code-box{display:grid;place-items:center;height:58px;border:1px solid var(--border);border-radius:12px;background:var(--panel);font-size:1.5rem;font-weight:700;font-variant-numeric:tabular-nums;transition:border-color .15s,box-shadow .15s,transform .15s}.code-box.is-filled{border-color:color-mix(in srgb,var(--accent) 50%,var(--border));animation:pop .16s ease}.code-input:focus-within .code-box.is-active{border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 18%,transparent)}.code-input:focus-within .code-box.is-active:not(.is-filled):after{content:"";width:2px;height:24px;background:var(--accent);animation:blink 1s steps(1) infinite}.code-input.is-invalid .code-box{border-color:var(--danger)}.code-input.is-invalid{animation:shake .35s ease}.code-input.is-disabled .code-box{opacity:.6}@keyframes pop{50%{transform:scale(1.06)}}@keyframes blink{50%{opacity:0}}@keyframes shake{20%,60%{transform:translate(-5px)}40%,80%{transform:translate(5px)}}.phone-chip{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;margin-bottom:14px;border-radius:11px;background:var(--panel-2);font-weight:600;font-variant-numeric:tabular-nums}.phone-chip .link-button{font-size:.85rem}.strength-slot{margin:-4px 0 6px}.strength{display:grid;grid-template-columns:1fr auto;gap:8px 12px;align-items:center}.strength-bars{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.strength-bars span{height:4px;border-radius:99px;background:var(--border);transition:background .25s}.strength-1 .is-on{background:var(--danger)}.strength-2 .is-on{background:var(--warning)}.strength-3 .is-on{background:color-mix(in srgb,var(--success) 70%,var(--accent))}.strength-4 .is-on{background:var(--success)}.strength-label{font-size:.76rem;font-weight:600;color:var(--muted);min-width:84px;text-align:right}.strength-checks{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:4px 14px}.strength-checks li{display:inline-flex;align-items:center;gap:5px;font-size:.76rem;color:var(--muted);transition:color .2s}.strength-checks li.is-ok{color:var(--success)}.form-alert,.form-notice{display:flex;gap:10px;align-items:flex-start;padding:11px 14px;border-radius:11px;font-size:.88rem;line-height:1.4;animation:message-in .2s ease}.form-alert{background:var(--danger-bg);color:var(--danger)}.form-alert svg,.form-notice svg{flex:none;margin-top:1px}.form-notice{background:var(--success-soft);color:var(--success)}.form-alert-slot:empty{display:none}.auth-footnote{display:flex;gap:8px;align-items:flex-start;margin:14px 0 0;font-size:.78rem;color:var(--muted)}.auth-footnote svg{flex:none;margin-top:2px}.auth-switch{margin:14px 0 0;text-align:center;font-size:.9rem;color:var(--muted)}.resend-row{display:flex;justify-content:center;min-height:28px;align-items:center;margin-top:8px;font-size:.87rem}.auth-submit{position:relative}.auth-submit.is-loading{cursor:progress;opacity:.9!important}.mini-spinner{display:inline-block;width:16px;height:16px;border-radius:50%;border:2px solid color-mix(in srgb,currentColor 25%,transparent);border-top-color:currentColor;animation:spin .7s linear infinite}.mini-spinner.on-accent{color:var(--on-accent)}.field-status .mini-spinner{color:var(--accent)}.linked{justify-items:center;text-align:center;gap:10px}.linked h2{margin:6px 0 0;font-size:1.35rem}.linked>p{margin:0 0 8px}.success-mark svg{width:64px;height:64px}.success-mark circle{fill:var(--success-soft);stroke:var(--success);stroke-width:2;stroke-dasharray:151;stroke-dashoffset:151;animation:draw .6s ease forwards}.success-mark path{fill:none;stroke:var(--success);stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:40;stroke-dashoffset:40;animation:draw .4s .45s ease forwards}@keyframes draw{to{stroke-dashoffset:0}}.account-card{width:100%;display:flex;align-items:center;gap:12px;padding:14px;margin-bottom:8px;border:1px solid var(--border);border-radius:14px;background:var(--panel);text-align:left}.account-card>div{flex:1;display:grid;min-width:0}.account-card .muted{font-size:.83rem;font-variant-numeric:tabular-nums}.account-ok{color:var(--success)}.account-avatar{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#38bdf8,#2563eb);color:#fff;font-weight:700}.account-avatar.sm{width:28px;height:28px;font-size:.8rem}.tg-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--success);box-shadow:0 0 0 3px var(--success-soft)}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:16px;background:#0a0c1480;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade .15s ease}@keyframes fade{0%{opacity:0}}.dialog{width:100%;max-width:420px;display:grid;gap:8px;padding:24px;border-radius:18px;background:var(--panel);box-shadow:var(--shadow-md);animation:step-in .22s ease}.dialog h2{margin:0;font-size:1.2rem}.dialog>p{margin:0 0 8px;font-size:.9rem}.dialog-actions{display:flex;justify-content:flex-end;gap:10px}.dialog-actions .auth-submit{width:auto}@media (max-width: 960px){.auth-page{grid-template-columns:1fr}.auth-aside{display:none}.auth-main{justify-content:flex-start;padding:28px 20px 40px}.auth-mobile-brand{display:flex;align-self:flex-start;max-width:440px;width:100%;margin:0 auto 8px}}@media (max-width: 420px){.code-input{gap:6px;grid-auto-columns:minmax(0,1fr);justify-content:stretch}.code-box{height:52px;font-size:1.3rem}.auth-head h1{font-size:1.4rem}.stepper-label{font-size:.68rem}}.auth-submit-label{display:inline-flex;align-items:center;gap:8px}.auth-or{display:flex;align-items:center;gap:12px;margin:14px 0 10px;color:var(--ink-3);font-size:.82rem}.auth-or:before,.auth-or:after{content:"";flex:1;height:1px;background:var(--line)}.qr-button{width:100%;justify-content:center;gap:8px}.qr-box{display:flex;gap:20px;align-items:center;margin-bottom:14px}.qr-image{flex:none;display:grid;place-items:center;width:184px;height:184px;padding:8px;border-radius:14px;background:#fff;border:1px solid var(--line)}.qr-image svg{width:100%;height:100%;display:block}.qr-steps{margin:0;padding-left:18px;display:grid;gap:8px;font-size:.9rem;color:var(--ink-2)}.qr-wait{display:flex;align-items:center;gap:8px;font-size:.86rem;margin:0 0 6px}@media (max-width: 520px){.qr-box{flex-direction:column;align-items:stretch}.qr-image{align-self:center;width:220px;height:220px}}.qr-mobile{font-size:.86rem;margin:0 0 10px}
