.note-toast[data-v-3c55254f]{top:calc(14px + env(safe-area-inset-top));background:var(--ios-label);color:var(--ios-bg);z-index:999;cursor:pointer;border-radius:999px;max-width:86vw;padding:10px 18px;font-size:14px;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #0000004d}.note-toast.busy[data-v-3c55254f]{opacity:.85}:root{--ios-bg:#f2f2f7;--ios-card:#fff;--ios-label:#1c1c1e;--ios-secondary-label:#3c3c43;--ios-tertiary-label:#8e8e93;--ios-separator:#3c3c434a;--ios-blue:#007aff;--ios-green:#34c759;--ios-orange:#ff9500;--ios-red:#ff3b30;--ios-gray:#8e8e93;--ios-fill:#7878801f;--ios-fill-2:#7878802e;--ios-green-tint:#34c75924;--ios-orange-tint:#ff950024;--ios-red-tint:#ff3b301f;--ios-blue-tint:#007aff1f;--ios-tabbar:#fafafaf5;--ios-shadow:0 1px 3px #00000014, 0 8px 24px #0000000d;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}@media (prefers-color-scheme:dark){:root{--ios-bg:#000;--ios-card:#1c1c1e;--ios-label:#fff;--ios-secondary-label:#d1d1d6;--ios-tertiary-label:#8e8e93;--ios-separator:#54545899;--ios-fill:#7878803d;--ios-fill-2:#78788052;--ios-tabbar:#1c1c1ef7;--ios-shadow:0 1px 3px #0006, 0 8px 24px #0000004d}}html[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ios-bg:#000;--ios-card:#1c1c1e;--ios-label:#fff;--ios-secondary-label:#d1d1d6;--ios-tertiary-label:#8e8e93;--ios-separator:#54545899;--ios-fill:#7878803d;--ios-fill-2:#78788052;--ios-tabbar:#1c1c1ef7;--ios-shadow:0 1px 3px #0006, 0 8px 24px #0000004d}html[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ios-bg:#f2f2f7;--ios-card:#fff;--ios-label:#1c1c1e;--ios-secondary-label:#3c3c43;--ios-tertiary-label:#8e8e93;--ios-separator:#3c3c434a;--ios-fill:#7878801f;--ios-fill-2:#7878802e;--ios-tabbar:#fafafaf5;--ios-shadow:0 1px 3px #00000014, 0 8px 24px #0000000d}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--ios-bg);color:var(--ios-label);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;touch-action:manipulation;margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,PingFang SC,Helvetica Neue,Microsoft YaHei,sans-serif}body{min-height:100dvh}button{cursor:pointer;color:inherit;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:12px;min-height:44px;padding:0 16px;font-family:inherit;font-size:17px;transition:transform .16s cubic-bezier(.32,.72,0,1),opacity .15s,background-color .2s,color .2s,box-shadow .2s}button:disabled{opacity:.4;cursor:not-allowed}input,textarea,select{color:var(--ios-label);font-family:inherit;font-size:16px}textarea{background:var(--ios-fill);width:100%;min-height:120px;color:var(--ios-label);resize:vertical;border:none;border-radius:10px;outline:none;padding:14px;line-height:1.55}.ios-input{box-sizing:border-box;border:1px solid var(--ios-separator);background:var(--ios-fill);width:100%;min-height:44px;color:var(--ios-label);-webkit-user-select:text;user-select:text;border-radius:10px;outline:none;padding:10px 14px;font-size:16px;line-height:1.4;display:block}.ios-input:focus{border-color:var(--ios-blue);background:var(--ios-card)}.ios-input::placeholder,textarea::placeholder{color:var(--ios-tertiary-label)}a{color:var(--ios-blue);text-decoration:none}.app{min-height:100dvh}.content{max-width:640px;padding:calc(30px + var(--safe-top)) 16px 158px;margin:0 auto}.page{position:relative}.fade-enter-active,.fade-leave-active{transition:opacity .18s}.fade-enter-from,.fade-leave-to{opacity:0}.slide-enter-active{animation:.34s cubic-bezier(.32,.72,0,1) both ios-push-in}.slide-leave-active{animation:.16s both ios-push-out}@keyframes ios-push-in{0%{opacity:.5;transform:translate(100%)}to{opacity:1;transform:none}}@keyframes ios-push-out{0%{opacity:1;transform:none}to{opacity:0;transform:translate(-6%)}}.large-title{letter-spacing:-.4px;margin:8px 0 4px;font-size:32px;font-weight:800}.section-caption{color:var(--ios-tertiary-label);text-transform:uppercase;letter-spacing:.2px;margin:12px 4px 6px;font-size:13px}.error-text{color:var(--ios-red);margin:10px 4px;font-size:15px}.ios-card{background:var(--ios-card);box-shadow:var(--ios-shadow);border-radius:14px;margin:10px 0;overflow:hidden}.ios-card>.card-body{padding:16px;position:relative}.ios-group{background:var(--ios-card);box-shadow:var(--ios-shadow);border-radius:14px;margin:10px 0;overflow:hidden}.ios-row{background:var(--ios-card);align-items:center;gap:12px;min-height:56px;padding:14px 16px;transition:background-color .2s,transform .16s cubic-bezier(.32,.72,0,1);display:flex;position:relative}.ios-row:active{background:var(--ios-fill);transform:scale(.985)}.ios-row+.ios-row:before{content:"";background:var(--ios-separator);height:1px;position:absolute;top:0;left:56px;right:0}.ios-row-main{flex:1;min-width:0}.ios-row-title{color:var(--ios-label);text-overflow:ellipsis;white-space:nowrap;font-size:17px;overflow:hidden}.ios-row-sub{color:var(--ios-tertiary-label);margin-top:2px;font-size:13px}.ios-chevron{color:var(--ios-tertiary-label);flex-shrink:0;font-size:20px;font-weight:300}.chip{background:var(--ios-fill);min-height:30px;color:var(--ios-label);cursor:pointer;border:1px solid #0000;border-radius:999px;flex-shrink:0;align-items:center;gap:4px;padding:4px 12px;font-size:12px;font-weight:600;transition:background-color .2s,color .2s,border-color .2s,transform .16s cubic-bezier(.32,.72,0,1);display:inline-flex}.chip:active{transform:scale(.94)}.chip.active{background:var(--ios-blue-tint);border-color:var(--ios-blue);color:var(--ios-blue);font-weight:700}.chip.due{background:var(--ios-orange-tint);color:var(--ios-orange)}.chip.weak{background:var(--ios-red-tint);color:var(--ios-red)}.chip.new{background:var(--ios-blue-tint);color:var(--ios-blue)}.chip.domain{background:var(--ios-fill);color:var(--ios-secondary-label)}.chip.tag{background:var(--ios-fill);color:var(--ios-secondary-label);font-size:11px}.chip.parsing{background:var(--ios-blue-tint);color:var(--ios-blue)}.chip.ready{background:var(--ios-green-tint);color:var(--ios-green)}.chip.partial{background:var(--ios-orange-tint);color:var(--ios-orange)}.chip.failed{background:var(--ios-red-tint);color:var(--ios-red)}.btn-primary{background:var(--ios-blue);color:#fff;border-radius:12px;font-weight:600;transition:transform .16s cubic-bezier(.32,.72,0,1),opacity .15s,background-color .2s,filter .2s,box-shadow .2s}.btn-primary:active{opacity:.9;filter:brightness(.92);transform:scale(.96)}.btn-tint{color:var(--ios-blue);padding:0 12px;font-weight:500;transition:transform .16s cubic-bezier(.32,.72,0,1),opacity .15s}.btn-tint:active{opacity:.55;transform:scale(.96)}.btn-block{width:100%;margin-top:10px;display:block}.btn-row{align-items:center;gap:10px;margin-top:10px;display:flex}.btn-row .btn-primary,.btn-row .btn-tint{flex:1}.segmented{background:var(--ios-fill-2);border-radius:10px;gap:2px;padding:2px;display:flex;position:relative}.segmented button{z-index:1;min-height:34px;color:var(--ios-secondary-label);background:0 0;border-radius:8px;flex:1;padding:0 8px;font-size:13px;font-weight:500;transition:color .25s,transform .16s cubic-bezier(.32,.72,0,1);position:relative}.segmented button:active{transform:scale(.97)}.segmented button.active{color:var(--ios-label);font-weight:600}.segmented-thumb{background:var(--ios-card);will-change:transform, width;pointer-events:none;border-radius:8px;transition:transform .32s cubic-bezier(.32,.72,0,1),width .32s cubic-bezier(.32,.72,0,1);position:absolute;top:2px;bottom:2px;left:2px;box-shadow:0 1px 3px #0000001f}.ios-detail{background:var(--ios-card);box-shadow:var(--ios-shadow);border-radius:14px;margin:10px 0;overflow:hidden}.ios-detail summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;min-height:56px;padding:16px;font-size:17px;font-weight:500;list-style:none;transition:background-color .2s;display:flex}.ios-detail summary:active{background:var(--ios-fill)}.ios-detail summary::-webkit-details-marker{display:none}.ios-detail summary:after{content:"›";color:var(--ios-tertiary-label);font-size:22px;font-weight:300;transition:transform .2s}.ios-detail[open] summary:after{transform:rotate(90deg)}.detail-body{color:var(--ios-secondary-label);padding:0 16px 16px;font-size:15px;line-height:1.65}.ios-detail[open] .detail-body{animation:.28s cubic-bezier(.32,.72,0,1) detail-in}@keyframes detail-in{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}.feedback-row{color:var(--ios-secondary-label);gap:10px;padding:12px 16px;font-size:15px;line-height:1.5;display:flex}.feedback-row+.feedback-row:before{content:"";position:absolute}.feedback-icon{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;display:flex}.feedback-icon.hit{background:var(--ios-green-tint)}.feedback-icon.miss{background:var(--ios-orange-tint)}.feedback-icon.wrong{background:var(--ios-red-tint)}.feedback-icon.structure{background:var(--ios-fill)}.nav-bar{align-items:center;gap:4px;padding:4px 0 8px;display:flex}.back-link{color:var(--ios-blue);align-items:center;min-height:44px;margin-left:-10px;padding:0 10px;font-size:17px;display:inline-flex}.back-link:active{opacity:.5}.nav-title{text-align:center;text-overflow:ellipsis;white-space:nowrap;flex:1;padding-right:60px;font-size:17px;font-weight:600;overflow:hidden}.tabbar{left:12px;right:12px;bottom:calc(16px + var(--safe-bottom));z-index:50;background:var(--ios-tabbar);-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);border:1px solid var(--ios-separator);box-shadow:var(--ios-shadow);border-radius:26px;justify-content:space-around;align-items:stretch;padding:6px;transition:transform .28s cubic-bezier(.32,.72,0,1),opacity .2s;display:flex;position:fixed}.app.keyboard-open .tabbar{opacity:0;pointer-events:none;transform:translateY(calc(100% + 12px))}.tabbar a{min-height:54px;color:var(--ios-tertiary-label);-webkit-user-select:none;user-select:none;border-radius:20px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:11px;font-weight:500;transition:color .2s,transform .16s cubic-bezier(.32,.72,0,1),background-color .2s;display:flex}.tabbar a:active{transform:scale(.94)}.tabbar a.active{color:var(--ios-blue);background:var(--ios-blue-tint);font-weight:600}.tabbar a.active svg{will-change:transform;animation:.45s cubic-bezier(.34,1.56,.64,1) tab-pop}@keyframes tab-pop{0%{transform:scale(1)}35%{transform:scale(1.12)}70%{transform:scale(.97)}to{transform:scale(1)}}.tabbar svg{width:24px;height:24px}.empty-state{text-align:center;color:var(--ios-tertiary-label);padding:48px 24px}.empty-state .empty-icon{margin-bottom:12px;font-size:44px}.empty-state p{margin:4px 0;font-size:15px;line-height:1.6}.sidebar{display:none}@media (width>=900px){.app{grid-template-columns:240px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--ios-card);border-right:1px solid var(--ios-separator);flex-direction:column;gap:4px;padding:24px 16px;display:flex}.sidebar .brand{padding:8px 12px 20px;font-size:18px;font-weight:800}.sidebar a{color:var(--ios-label);border-radius:10px;align-items:center;gap:10px;min-height:44px;padding:12px;font-size:16px;display:flex}.sidebar a.active{background:var(--ios-fill);font-weight:600}.content{max-width:760px;margin:0;padding:32px 40px}.tabbar{display:none}}audio{width:100%;margin:8px 0}.speed-row{align-items:center;gap:8px;margin:6px 0;display:flex}.speed-row button{background:var(--ios-fill);min-height:30px;color:var(--ios-secondary-label);border-radius:8px;padding:0 12px;font-size:13px}.speed-row button.active{background:var(--ios-blue-tint);color:var(--ios-blue);font-weight:600}.audio-pending{color:var(--ios-tertiary-label);margin:8px 2px;font-size:13px}.audio-failed{color:var(--ios-red);align-items:center;margin:8px 2px;font-size:13px;display:flex}.voice-picker{margin:4px 0 12px}.voice-picker-label{color:var(--ios-tertiary-label);margin:0 2px 6px;font-size:13px;display:block}.voice-chips{-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:8px;padding:2px 0 6px;display:flex;overflow-x:auto}.voice-chips::-webkit-scrollbar{display:none}.voice-chips button{background:var(--ios-fill);min-height:32px;color:var(--ios-secondary-label);white-space:nowrap;border-radius:16px;flex:none;padding:0 14px;font-size:13px}.voice-chips button.active{background:var(--ios-blue-tint);color:var(--ios-blue);font-weight:600}.voice-chips button:active,.speed-row button:active{background:var(--ios-fill-2);transform:scale(.93)}.skeleton-group{padding:6px 0}.skeleton-card{background:var(--ios-card);box-shadow:var(--ios-shadow);border-radius:14px;margin:10px 0;padding:16px}.skeleton-line{background:linear-gradient(90deg, var(--ios-fill) 25%, var(--ios-fill-2) 50%, var(--ios-fill) 75%);background-size:200% 100%;border-radius:7px;height:14px;margin-bottom:12px;animation:1.2s linear infinite shimmer}.skeleton-line.short{width:35%}.skeleton-line.mid{width:65%}.skeleton-line:last-child{margin-bottom:0}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.ptr-wrap{position:relative}.ptr-indicator{top:calc(var(--ptr-distance,0px) - 58px);height:58px;color:var(--ios-tertiary-label);pointer-events:none;justify-content:center;align-items:flex-end;padding-bottom:16px;display:flex;position:absolute;left:0;right:0}.ptr-spinner{border:2.5px solid var(--ios-fill-2);border-top-color:var(--ios-tertiary-label);border-radius:50%;width:22px;height:22px;animation:.8s linear infinite ptr-spin}.ptr-arrow{width:22px;height:22px;color:var(--ios-tertiary-label);transition:transform .15s}@keyframes ptr-spin{to{transform:rotate(360deg)}}.recorder{flex-direction:column;align-items:center;gap:12px;padding:18px 0 6px;display:flex}.mic-btn{background:linear-gradient(145deg, #3d9bff, var(--ios-blue) 45%, #0055d4);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:68px;height:68px;transition:transform .18s cubic-bezier(.32,.72,0,1),box-shadow .2s;display:flex;position:relative;box-shadow:0 6px 18px #007aff59}.mic-btn:active{transform:scale(.9);box-shadow:0 3px 10px #007aff4d}.mic-btn svg{width:28px;height:28px}.rec-wave{align-items:center;gap:3px;height:34px;display:flex}.rec-wave span{background:var(--ios-red);border-radius:2px;width:4px;animation:.9s ease-in-out infinite wave-bounce}.rec-wave span:first-child{animation-delay:0s}.rec-wave span:nth-child(2){animation-delay:.13s}.rec-wave span:nth-child(3){animation-delay:.26s}.rec-wave span:nth-child(4){animation-delay:70ms}.rec-wave span:nth-child(5){animation-delay:.2s}.rec-wave span:nth-child(6){animation-delay:.33s}.rec-wave span:nth-child(7){animation-delay:.11s}@keyframes wave-bounce{0%,to{height:6px}50%{height:32px}}.rec-timer{font-variant-numeric:tabular-nums;color:var(--ios-red);align-items:center;gap:7px;font-size:17px;font-weight:600;display:flex}.rec-timer:before{content:"";background:var(--ios-red);border-radius:50%;width:10px;height:10px;animation:1s ease-in-out infinite rec-pulse}@keyframes rec-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.75)}}.rec-stop{background:var(--ios-red);color:#fff;border-radius:999px;min-height:44px;padding:0 26px;font-weight:600;box-shadow:0 4px 14px #ff3b3052}.rec-stop:active{filter:brightness(.92);transform:scale(.95)}.rec-hint{color:var(--ios-tertiary-label);text-align:center;font-size:13px;line-height:1.5}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}input[type=text],input[type=url]{background:var(--ios-fill);width:100%;color:var(--ios-label);border:none;border-radius:10px;outline:none;margin-bottom:10px;padding:12px 14px}input[type=text]::placeholder,input[type=url]::placeholder{color:var(--ios-tertiary-label)}.resource-form{margin-top:12px}.file-picker{background:var(--ios-fill);width:100%;min-height:48px;color:var(--ios-secondary-label);border-radius:10px;justify-content:center;align-items:center;gap:8px;margin-bottom:12px;font-size:15px;font-weight:500;display:flex}.file-picker:active{background:var(--ios-fill-2);transform:scale(.98)}.file-picker svg{flex-shrink:0;width:20px;height:20px}.resource-list{padding-bottom:8px}.resource-card{overflow:hidden}.resource-head{cursor:pointer;align-items:center;gap:10px;min-height:60px;padding:14px 16px;transition:background-color .2s;display:flex}.resource-head:active{background:var(--ios-fill)}.resource-error{color:var(--ios-red);word-break:break-all;margin:0;padding:0 16px 12px;font-size:13px;line-height:1.5}.resource-body{border-top:1px solid var(--ios-separator)}.resource-pending{color:var(--ios-tertiary-label);text-align:center;padding:14px 16px;font-size:13px}.question-row{padding:12px 16px;position:relative}.question-row+.question-row:before{content:"";background:var(--ios-separator);height:1px;position:absolute;top:0;left:16px;right:0}.question-main{align-items:flex-start;gap:10px;display:flex}.question-title{color:var(--ios-label);font-size:15px;font-weight:600;line-height:1.4;display:block}.question-body{color:var(--ios-tertiary-label);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:3px;font-size:13px;line-height:1.5;display:-webkit-box;overflow:hidden}.question-actions{justify-content:flex-end;gap:4px;margin-top:4px;display:flex}.resource-actions{justify-content:flex-end;gap:4px;padding:0 8px 8px;display:flex}.today-hero{align-items:center;gap:12px;padding:6px 2px 2px;display:flex}.hero-copy{flex:1;min-width:0}.hero-greet{color:var(--ios-tertiary-label);margin:0;font-size:14px}.hero-badges{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.badge{background:var(--ios-fill);color:var(--ios-secondary-label);border-radius:999px;align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:700;display:inline-flex}.badge.flame.lit{background:var(--ios-orange-tint);color:var(--ios-orange);animation:1.6s ease-in-out infinite flame-breathe}.badge.level{background:var(--ios-green-tint);color:var(--ios-green)}@keyframes flame-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.xp-card{padding:14px 16px}.xp-row{justify-content:space-between;align-items:baseline;margin-bottom:8px;display:flex}.xp-label{color:var(--ios-tertiary-label);font-size:13px}.xp-value{color:var(--ios-label);font-size:15px;font-weight:800}.xp-track{background:var(--ios-fill-2);border-radius:5px;height:10px;overflow:hidden}.xp-fill{background:linear-gradient(90deg,#58cc02,#8ce64e);border-radius:5px;height:100%;transition:width .6s cubic-bezier(.32,.72,0,1)}.xp-hint{color:var(--ios-tertiary-label);margin:8px 0 0;font-size:12px}.start-card{text-align:center;margin-top:14px}.start-btn{color:#fff;background:linear-gradient(135deg,#58cc02,#3f9e01);border-radius:18px;justify-content:center;align-items:center;gap:10px;width:100%;min-height:58px;font-size:19px;font-weight:800;transition:transform .14s cubic-bezier(.32,.72,0,1),box-shadow .2s;animation:2.2s ease-in-out infinite start-pulse;display:inline-flex;box-shadow:0 6px #2f7a00,0 10px 24px #58cc0259}.start-btn:active{animation:none;transform:translateY(3px)scale(.99);box-shadow:0 3px #2f7a00,0 6px 16px #58cc0240}.start-arrow{font-size:22px;animation:1.2s ease-in-out infinite arrow-nudge}@keyframes start-pulse{0%,to{box-shadow:0 6px #2f7a00,0 10px 24px #58cc0259}50%{box-shadow:0 6px #2f7a00,0 14px 32px #58cc028c}}@keyframes arrow-nudge{0%,to{transform:translate(0)}50%{transform:translate(4px)}}.start-sub{color:var(--ios-tertiary-label);margin:10px 0 4px;font-size:13px}.level-nodes{scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:10px;padding:12px 2px 8px;display:flex;overflow-x:auto}.level-nodes::-webkit-scrollbar{display:none}.node{background:0 0;border-radius:0;flex-direction:column;flex:none;align-items:center;gap:6px;width:76px;min-height:0;padding:0;display:flex}.node-icon{border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;font-size:22px;transition:transform .16s cubic-bezier(.32,.72,0,1);display:flex;box-shadow:0 3px 8px #0000001f}.node:active .node-icon{transform:scale(.9)}.node.due .node-icon{background:var(--ios-orange-tint)}.node.weak .node-icon{background:var(--ios-red-tint)}.node.new .node-icon{background:var(--ios-blue-tint)}.node-title{color:var(--ios-secondary-label);text-align:center;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:11px;line-height:1.25;display:-webkit-box;overflow:hidden}.rank-card{align-items:center;gap:14px;padding:18px 16px;display:flex}.rank-ring text{font-family:inherit}.rank-ring .ring-level{fill:var(--ios-label);font-size:16px;font-weight:800}.rank-ring .ring-name{fill:var(--ios-tertiary-label);font-size:10px}.rank-stats{flex:1;grid-template-columns:1fr 1fr;gap:12px 16px;display:grid}.stat{align-items:center;gap:8px;display:flex}.stat-icon{font-size:20px}.stat strong{color:var(--ios-label);font-size:17px;line-height:1.1;display:block}.stat small{color:var(--ios-tertiary-label);font-size:11px}.challenge-list{padding-bottom:8px}.challenge-card{align-items:center;gap:12px;padding:14px 16px;display:flex}.challenge-icon{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font-size:20px;display:flex}.challenge-icon.due{background:var(--ios-orange-tint)}.challenge-icon.weak{background:var(--ios-red-tint)}.challenge-go{color:var(--ios-blue);flex-shrink:0;padding:8px 10px;font-size:14px;font-weight:700}.xp-toast{top:calc(70px + var(--safe-top));z-index:80;color:#fff;pointer-events:none;background:#58cc02;border-radius:999px;padding:8px 18px;font-size:16px;font-weight:800;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 6px 18px #58cc0266}.xp-float-enter-active{animation:2.6s cubic-bezier(.22,.68,.35,1) forwards xp-float-up}.xp-float-leave-active{transition:opacity .2s}.xp-float-leave-to{opacity:0}@keyframes xp-float-up{0%{opacity:0;transform:translate(-50%,10px)scale(.8)}15%{opacity:1;transform:translate(-50%)scale(1.05)}75%{opacity:1}to{opacity:0;transform:translate(-50%,-46px)scale(1)}}.score-pop{color:var(--ios-label);font-size:30px;font-weight:800;animation:.5s cubic-bezier(.34,1.56,.64,1) score-pop;display:inline-block}@keyframes score-pop{0%{opacity:0;transform:scale(.5)}60%{transform:scale(1.12)}to{opacity:1;transform:scale(1)}}.confetti{pointer-events:none;border-radius:14px;height:140px;position:absolute;top:0;left:0;right:0;overflow:hidden}.confetti span{background:var(--c);width:8px;height:14px;animation:confetti-fall 1.6s ease-in var(--d) forwards;opacity:0;border-radius:2px;position:absolute;top:-12px;left:50%}@keyframes confetti-fall{0%{opacity:1;transform:translate(0)rotate(0)}to{opacity:0;transform:translate(var(--x), 130px) rotate(540deg)}}.explain-stage{padding:14px 16px 16px}.stage-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.stage-count{color:var(--ios-tertiary-label);font-size:13px;font-weight:700}.stage-dots{gap:6px;display:flex}.stage-dot{background:var(--ios-fill-2);border-radius:50%;width:8px;height:8px;transition:background-color .25s,transform .25s}.stage-dot.active{background:var(--ios-blue);transform:scale(1.3)}.stage-dot.done{background:var(--ios-green)}.stage-body{min-height:120px}.stage-tag{background:var(--ios-blue-tint);color:var(--ios-blue);margin-bottom:10px}.stage-text{color:var(--ios-secondary-label);white-space:pre-wrap;margin:8px 0 12px;font-size:16px;line-height:1.7}.stage-actions{gap:10px;margin-top:12px;display:flex}.stage-actions .btn-primary{flex:2}.stage-actions .btn-tint{flex:1}.stage-next,.stage-finish{background:linear-gradient(135deg,#58cc02,#3f9e01)}.stage-done{text-align:center;color:var(--ios-green);margin:12px 0 0;font-weight:700}.stage-slide-enter-active{animation:.28s cubic-bezier(.32,.72,0,1) stage-in}.stage-slide-leave-active{animation:.16s stage-out}@keyframes stage-in{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:none}}@keyframes stage-out{0%{opacity:1}to{opacity:0;transform:translate(-10px)}}.level-up-banner{top:calc(70px + var(--safe-top));z-index:80;color:#5b3a00;pointer-events:none;white-space:nowrap;background:linear-gradient(135deg,#ffdc5a,#ff9600);border-radius:16px;padding:12px 22px;font-size:16px;font-weight:800;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #ff960066}.level-up-enter-active{animation:.55s cubic-bezier(.34,1.56,.64,1) levelup-pop}.level-up-leave-active{transition:opacity .25s,transform .25s}.level-up-leave-to{opacity:0;transform:translate(-50%,-20px)scale(.9)}@keyframes levelup-pop{0%{opacity:0;transform:translate(-50%,16px)scale(.7)}55%{opacity:1;transform:translate(-50%,-4px)scale(1.06)}to{opacity:1;transform:translate(-50%)scale(1)}}.level-progress{color:var(--ios-tertiary-label);align-items:center;gap:8px;margin-top:10px;font-size:12px;display:flex}.level-progress .level-track{background:var(--ios-fill-2);border-radius:4px;flex:1;height:8px;overflow:hidden}.level-progress .level-fill{background:linear-gradient(90deg,#ffdc5a,#ff9600);border-radius:4px;height:100%;transition:width .6s cubic-bezier(.32,.72,0,1)}.markdown .cs-code-block{background:#0d1117;border-radius:12px;margin:10px 0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;position:relative;overflow:hidden}.markdown .cs-code-head{background:#161b22;border-bottom:1px solid #30363d;justify-content:space-between;align-items:center;padding:7px 12px;display:flex}.markdown .cs-code-lang{color:#8b949e;letter-spacing:.5px;text-transform:uppercase;font-size:11px}.markdown .cs-copy{color:#c9d1d9;cursor:pointer;background:#21262d;border:0;border-radius:999px;min-height:0;padding:3px 10px;font-size:11px}.markdown .cs-code-block pre{-webkit-overflow-scrolling:touch;margin:0;padding:12px 14px;overflow-x:auto}.markdown .cs-code-block code{color:#e6edf3;white-space:pre;font-family:inherit;font-size:13px;line-height:1.65;display:block}.markdown .tok-k{color:#ff7b72}.markdown .tok-s{color:#a5d6ff}.markdown .tok-c{color:#8b949e;font-style:italic}.markdown .tok-n{color:#79c0ff}.markdown .tok-a{color:#d2a8ff}.markdown .cs-inline-code{color:#0a58ca;word-break:break-all;background:#007aff17;border-radius:6px;padding:1px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em}html[data-theme=dark] .markdown .cs-inline-code{color:#79c0ff;background:#388bfd2e}.markdown .cs-callout{color:#1f3a5f;background:#eef5ff;border-left:3px solid #4a90d9;border-radius:0 10px 10px 0;margin:8px 0;padding:9px 12px;font-size:14px;line-height:1.6}.markdown .cs-warn{color:#6b4d10;background:#fff7e6;border-left:3px solid #f5a623;border-radius:0 10px 10px 0;margin:6px 0;padding:8px 12px;font-size:14px;line-height:1.6}html[data-theme=dark] .markdown .cs-callout{color:#b8d4f5;background:#12233a;border-left-color:#4a90d9}html[data-theme=dark] .markdown .cs-warn{color:#e8c477;background:#2b2313;border-left-color:#f5a623}.markdown .cs-list{margin:6px 0;padding-left:0;list-style:none}.markdown .cs-list li{margin:5px 0;line-height:1.6}.markdown .cs-para{margin:8px 0;line-height:1.7}.sheet-backdrop{z-index:900;background:#0000006b;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--ios-bg);width:100%;max-height:86dvh;padding:16px 16px calc(24px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;overflow-y:auto}.sheet-title{margin:4px 0 14px;font-size:17px}.kind-seg{gap:10px;margin-bottom:6px;display:flex}.kind-seg button{border:1.5px solid var(--ios-separator);color:var(--ios-label);background:0 0;border-radius:12px;flex:1;padding:9px;font-size:14px}.kind-seg button.on{border-color:var(--ios-blue);color:var(--ios-blue);background:var(--ios-blue-tint);font-weight:600}.form-label{color:var(--ios-secondary-label);margin:12px 2px 6px;font-size:13px;display:block}.sheet select,.sheet textarea{background:var(--ios-fill);width:100%;color:var(--ios-label);border:1px solid var(--ios-separator);border-radius:12px;padding:10px 12px;font-family:inherit;font-size:15px}.sheet textarea{resize:vertical;min-height:110px}.form-error{color:var(--ios-red);margin:8px 2px 0;font-size:13px}.note-fab{right:14px;bottom:calc(104px + env(safe-area-inset-bottom));background:var(--ios-blue);color:#fff;width:46px;height:46px;box-shadow:var(--ios-shadow);z-index:90;border-radius:50%;justify-content:center;align-items:center;font-size:19px;display:flex;position:fixed}.stage-markdown{font-size:15px;line-height:1.7}.stage-markdown .cs-code-block code{font-size:12.5px}.interaction-prompt{margin:0 0 8px;font-size:15px;line-height:1.55}.interaction-prompt .cs-inline-code{font-size:.9em}
