@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/fef07dbb0973bf53-s.518e079e.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.ea323500.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/53b9e256198e5412-s.853d50a3.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.55554cd0.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.3b6cae6d.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_a71e255a-module__KQvK_W__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_a71e255a-module__KQvK_W__variable{--font-geist:"Geist","Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5ce348bf30bf5439-s.56c1f21e.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.3b336396.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/6306c77e7c8268e4-s.e3369375.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7d817b4c03b0c5f1-s.a40b9a8b.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.fe42ddf4.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.29207c2f.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_2dc78719-module__M7bhfq__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_2dc78719-module__M7bhfq__variable{--font-geist-mono:"Geist Mono","Geist Mono Fallback"}
:root{--font-sans:var(--font-geist,ui-sans-serif),ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--font-mono:var(--font-geist-mono,ui-monospace),ui-monospace,"SF Mono","Cascadia Code",Menlo,monospace;--fs-2xs:11px;--fs-xs:12px;--fs-sm:13px;--fs-md:15px;--fs-base:16px;--fs-lg:17px;--fs-xl:20px;--fs-2xl:22px;--fs-3xl:28px;--fs-title:32px;--fs-display:44px;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;--s7:28px;--s8:32px;--s10:40px;--gutter:16px;--r-xs:6px;--r-sm:10px;--r-md:13px;--r-lg:18px;--r-xl:24px;--r-pill:999px;--ease:cubic-bezier(.2,.8,.2,1);--ease-in:cubic-bezier(.4,0,1,1);--spring:cubic-bezier(.34,1.36,.64,1);--d1:.12s;--d2:.2s;--d3:.3s;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--safe-r:env(safe-area-inset-right,0px);--tabbar-h:60px;--navbar-h:48px;--col:600px;--rail-w:232px;--bg:#f2f3f7;--bg-elev:#fff;--bg-elev-2:#f6f7f9;--bg-sunken:#e9ebf0;--fill:#767a8c1f;--fill-2:#767a8c33;--line:#282c3c1a;--line-strong:#282c3c2e;--text:#0e1016;--text-2:#565c69;--text-3:#8a909c;--text-4:#b6bac3;--accent:#2b65f5;--accent-press:#1f52d8;--accent-soft:#2b65f51c;--accent-text:#2259e0;--on-accent:#fff;--green:#16a34a;--green-soft:#16a34a1f;--amber:#d97706;--amber-soft:#d9770621;--red:#e5383b;--red-soft:#e5383b1c;--purple:#8b4fd6;--purple-soft:#8b4fd61f;--orange:#f2620f;--orange-soft:#f2620f1f;--teal:#0d9488;--teal-soft:#0d94881f;--pink:#db2777;--pink-soft:#db27771c;--shadow-1:0 1px 2px #1014200d,0 0 0 .5px #1014200a;--shadow-2:0 6px 20px #10142014,0 1px 3px #1014200f;--shadow-float:0 12px 40px #10142029,0 2px 8px #10142014;--scrim:#0c0e145c;--toast-bg:#1b1d23;--toast-text:#f4f5f7;--heat-0:#e6e8ee;--heat-1:#b9e5c7;--heat-2:#74cf93;--heat-3:#2fb062;--heat-4:#138a43;--rating-newbie:#8a8f99;--rating-pupil:#1a9a3c;--rating-specialist:#0f9b98;--rating-expert:#2d5be3;--rating-cm:#9b3fd1;--rating-master:#e08a0b;--rating-gm:#e0262d;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#000;--bg-elev:#15161a;--bg-elev-2:#1d1e23;--bg-sunken:#0b0b0d;--fill:#8286962e;--fill-2:#82869647;--line:#ffffff13;--line-strong:#ffffff24;--text:#f3f4f6;--text-2:#a6abb6;--text-3:#70757f;--text-4:#474b53;--accent:#4c8dff;--accent-press:#3a7cf2;--accent-soft:#4c8dff29;--accent-text:#6ea2ff;--on-accent:#fff;--green:#34d273;--green-soft:#34d27326;--amber:#fbb33a;--amber-soft:#fbb33a26;--red:#ff5f5f;--red-soft:#ff5f5f26;--purple:#c08bff;--purple-soft:#c08bff29;--orange:#ff8a3d;--orange-soft:#ff8a3d29;--teal:#2dd4bf;--teal-soft:#2dd4bf26;--pink:#f472b6;--pink-soft:#f472b626;--shadow-1:0 0 0 .5px #ffffff0d;--shadow-2:0 0 0 .5px #ffffff0f;--shadow-float:0 16px 48px #0009,0 0 0 .5px #ffffff14;--scrim:#0009;--toast-bg:#2a2c33;--toast-text:#f4f5f7;--heat-0:#1c1e23;--heat-1:#12442a;--heat-2:#1a7040;--heat-3:#26a35c;--heat-4:#3ed67c;--rating-newbie:#a3a8b1;--rating-pupil:#46c662;--rating-specialist:#3fd0cb;--rating-expert:#6f95ff;--rating-cm:#c27df0;--rating-master:#ffae3d;--rating-gm:#ff5a5f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{--easy:var(--green);--easy-soft:var(--green-soft);--medium:var(--amber);--medium-soft:var(--amber-soft);--hard:var(--red);--hard-soft:var(--red-soft);--st-todo:var(--text-4);--st-progress:var(--accent);--st-solved:var(--green);--st-mastered:var(--purple);--st-due:var(--orange);--ring-solve:var(--green);--ring-review:var(--accent);--flame:var(--orange)}@media (min-width:400px){:root{--gutter:18px}}
*,:before,:after{box-sizing:border-box}html{-moz-text-size-adjust:100%;text-size-adjust:100%;-webkit-tap-highlight-color:transparent;background:var(--bg)}body{background:var(--bg);min-height:100dvh;color:var(--text);font-family:var(--font-sans);font-size:var(--fs-base);font-feature-settings:"cv11","ss01";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overscroll-behavior-y:none;margin:0;line-height:1.45;overflow-x:hidden}button,a,[role=button],label,summary{touch-action:manipulation;-webkit-user-select:none;user-select:none}input,textarea,select,[contenteditable],pre,code,.selectable{-webkit-user-select:text;user-select:text}h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd,ol,ul{margin:0}ol,ul{padding:0;list-style:none}img,svg,video,canvas{max-width:100%;display:block}svg{flex-shrink:0}button{font:inherit;color:inherit;cursor:pointer;text-align:inherit;background:0 0;border:0;margin:0;padding:0}button:disabled{cursor:default}a{color:inherit;text-decoration:none}input,textarea,select{font:inherit;color:inherit;margin:0;font-size:max(16px,1em)}::selection{background:var(--accent-soft);color:var(--text)}:focus{outline:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}*{scrollbar-width:thin;scrollbar-color:var(--fill-2)transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--fill-2);border-radius:8px}::-webkit-scrollbar-track{background:0 0}.num,.tnum{font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono)}.dim{color:var(--text-2)}.faint{color:var(--text-3)}.truncate{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.grow{flex:auto;min-width:0}.row{align-items:center;gap:var(--s2);min-width:0;display:flex}.stack{gap:var(--s3);flex-direction:column;min-width:0;display:flex}.spread{justify-content:space-between;align-items:center;gap:var(--s3);min-width:0;display:flex}.wrap{flex-wrap:wrap}.center{text-align:center}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}
.app{min-height:100dvh;position:relative}.screen{width:100%;max-width:var(--col);padding:0 calc(var(--gutter) + var(--safe-r))calc(var(--tabbar-h) + var(--safe-b) + 28px)calc(var(--gutter) + var(--safe-l));min-width:0;animation:screen-in var(--d3)var(--ease)both;margin:0 auto}.screen.no-tabbar{padding-bottom:calc(var(--safe-b) + 28px)}@keyframes screen-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.navbar{z-index:20;margin:0 calc(-1*var(--gutter));padding:var(--safe-t)var(--gutter)0;transition:background var(--d2)var(--ease),box-shadow var(--d2)var(--ease);background:0 0;position:sticky;top:0}.navbar.solid{background:color-mix(in srgb,var(--bg)94%,transparent);box-shadow:0 .5px 0 var(--line)}.navbar-inner{height:var(--navbar-h);align-items:center;gap:var(--s2);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);display:grid}.navbar-left,.navbar-right{align-items:center;gap:4px;min-width:0;display:flex}.navbar-right{justify-content:flex-end}.navbar-title{font-size:var(--fs-lg);letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;opacity:0;max-width:60vw;transition:opacity var(--d2)var(--ease),transform var(--d2)var(--ease);font-weight:650;overflow:hidden;transform:translateY(4px)}.navbar.solid .navbar-title,.navbar.always .navbar-title{opacity:1;transform:none}.nav-btn{border-radius:var(--r-pill);min-width:38px;height:38px;color:var(--accent-text);font-size:var(--fs-lg);transition:background var(--d1)var(--ease),transform var(--d1)var(--ease);flex:none;justify-content:center;align-items:center;gap:4px;padding:0 8px;font-weight:500;display:inline-flex}.nav-btn:active{background:var(--fill);transform:scale(.94)}.nav-btn.plain{color:var(--text)}.nav-btn.circle{background:var(--fill);width:36px;min-width:36px;height:36px;color:var(--text);padding:0}.nav-btn .badge-dot{position:absolute;top:6px;right:6px}.largetitle{padding:2px 0 var(--s4);min-width:0}.largetitle-eyebrow{font-size:var(--fs-sm);color:var(--text-3);text-transform:none;letter-spacing:0;margin-bottom:2px;font-weight:600}.largetitle h1{font-size:var(--fs-title);letter-spacing:-.025em;overflow-wrap:anywhere;font-weight:750;line-height:1.1}.largetitle-sub{font-size:var(--fs-md);color:var(--text-2);margin-top:4px}.tabbar{z-index:40;padding:0 var(--safe-r)var(--safe-b)var(--safe-l);background:var(--bg-elev);box-shadow:0 -.5px 0 var(--line);position:fixed;bottom:0;left:0;right:0}.tabbar-inner{max-width:var(--col);height:var(--tabbar-h);align-items:stretch;margin:0 auto;display:flex}.tab{min-width:0;color:var(--text-3);font-size:var(--fs-2xs);letter-spacing:.01em;transition:color var(--d1)var(--ease);flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:3px;font-weight:600;display:flex;position:relative}.tab-icon{border-radius:var(--r-pill);width:52px;height:30px;transition:background var(--d2)var(--ease),transform var(--d1)var(--ease);place-items:center;display:grid;position:relative}.tab:active .tab-icon{transform:scale(.9)}.tab.on{color:var(--accent-text)}.tab.on .tab-icon{background:var(--accent-soft)}.tab-badge{border-radius:var(--r-pill);background:var(--orange);color:#fff;text-align:center;font-variant-numeric:tabular-nums;min-width:17px;height:17px;box-shadow:0 0 0 2px var(--bg-elev);padding:0 5px;font-size:10.5px;font-weight:750;line-height:17px;position:absolute;top:-3px;right:6px}@media (min-width:960px){.tabbar{width:var(--rail-w);padding:calc(var(--safe-t) + 20px)14px 20px;background:var(--bg-elev);box-shadow:.5px 0 0 var(--line);flex-direction:column;display:flex;top:0;right:auto}.tabbar-brand{font-weight:750;font-size:var(--fs-lg);letter-spacing:-.01em;align-items:center;gap:10px;padding:4px 10px 22px;display:flex!important}.tabbar-inner{flex-direction:column;gap:2px;max-width:none;height:auto;margin:0}.tab{border-radius:var(--r-md);font-size:var(--fs-md);color:var(--text-2);flex-direction:row;flex:none;justify-content:flex-start;gap:10px;padding:4px 6px;font-weight:550}.tab:hover{background:var(--fill)}.tab-icon{width:34px;height:34px}.tab.on{background:var(--accent-soft)}.tab.on .tab-icon{background:0 0}.tab .tab-icon{position:static}.tab-badge{box-shadow:none;top:50%;right:10px;transform:translateY(-50%)}.tabbar-foot{font-size:var(--fs-xs);color:var(--text-3);margin-top:auto;padding:0 10px;display:block!important}.app.has-tabbar .screen,.app.has-tabbar .layer-scroll>.screen{padding-bottom:48px}.app.has-tabbar{padding-left:var(--rail-w)}.layer{left:var(--rail-w)!important}}.tabbar-brand,.tabbar-foot{display:none}.layer{z-index:50;background:var(--bg);animation:layer-in var(--d3)var(--ease)both;will-change:transform;flex-direction:column;display:flex;position:fixed;inset:0}.layer.closing{animation:layer-out .22s var(--ease-in)both}.layer-scroll{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:auto;overflow-y:auto}@keyframes layer-in{0%{transform:translate(100%);box-shadow:-20px 0 40px #0000}to{transform:none;box-shadow:-20px 0 40px #00000014}}@keyframes layer-out{to{transform:translate(100%)}}@media (min-width:960px){@keyframes layer-in{0%{opacity:0;transform:translate(28px)}to{opacity:1;transform:none}}@keyframes layer-out{to{opacity:0;transform:translate(28px)}}}.focus-screen{flex-direction:column;min-height:100dvh;display:flex}.sheet-root{z-index:80;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet-scrim{background:var(--scrim);animation:fade-in var(--d2)var(--ease)both;position:absolute;inset:0}.sheet{background:var(--bg-elev);border-radius:var(--r-xl)var(--r-xl)0 0;width:100%;max-width:640px;max-height:min(90dvh,900px);box-shadow:var(--shadow-float);padding-bottom:var(--safe-b);animation:sheet-up .34s var(--ease)both;touch-action:pan-y;flex-direction:column;display:flex;position:relative}.sheet.grouped{background:var(--bg)}.sheet-root.closing .sheet{animation:sheet-down .22s var(--ease-in)both}.sheet-root.closing .sheet-scrim{animation:fade-out .22s var(--ease-in)both}.sheet-grab{cursor:grab;touch-action:none;flex:none;place-items:center;padding:8px 0 2px;display:grid}.sheet-grab:before{content:"";background:var(--line-strong);border-radius:5px;width:38px;height:5px}.sheet-head{touch-action:none;flex:none;grid-template-columns:minmax(64px,1fr) auto minmax(64px,1fr);align-items:center;padding:2px 10px 8px;display:grid}.sheet-head .nav-btn{font-size:var(--fs-md)}.sheet-title{font-size:var(--fs-lg);text-align:center;white-space:nowrap;text-overflow:ellipsis;letter-spacing:-.01em;font-weight:650;overflow:hidden}.sheet-body{overscroll-behavior:contain;padding:4px var(--gutter)var(--s5);flex:auto;min-height:0;overflow-y:auto}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:none}}@keyframes sheet-down{to{transform:translateY(100%)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{to{opacity:0}}@media (min-width:720px){.sheet-root{align-items:center;padding:24px}.sheet{border-radius:var(--r-xl);max-width:520px;max-height:min(84dvh,820px);animation:dialog-in .26s var(--ease)both;padding-bottom:0}.sheet-root.closing .sheet{animation:dialog-out .18s var(--ease-in)both}.sheet-grab{display:none}.sheet-head{padding-top:12px}}@keyframes dialog-in{0%{opacity:0;transform:scale(.96)translateY(8px)}to{opacity:1;transform:none}}@keyframes dialog-out{to{opacity:0;transform:scale(.97)}}.toast-wrap{left:0;right:0;bottom:calc(var(--tabbar-h) + var(--safe-b) + 12px);z-index:90;padding:0 var(--gutter);pointer-events:none;justify-content:center;display:flex;position:fixed}.app:not(.has-tabbar) .toast-wrap{bottom:calc(var(--safe-b) + 20px)}@media (min-width:960px){.toast-wrap{padding-left:calc(var(--rail-w) + var(--gutter));bottom:28px}}.toast{pointer-events:auto;border-radius:var(--r-lg);background:var(--toast-bg);width:max-content;min-width:0;max-width:560px;color:var(--toast-text);font-size:var(--fs-md);box-shadow:var(--shadow-float);animation:toast-in .28s var(--spring)both;align-items:center;gap:10px;padding:11px 8px 11px 16px;font-weight:500;display:flex}.toast.leaving{animation:toast-out .18s var(--ease-in)both}.toast-icon{flex:none;place-items:center;display:grid}.toast-icon.success{color:#4ade80}.toast-icon.warning{color:#fbbf24}.toast-icon.danger{color:#f87171}.toast-icon.info{color:#93c5fd}.toast-msg{min-width:0;line-height:1.35}.toast-action{border-radius:var(--r-pill);color:#8ab4ff;font-weight:650;font-size:var(--fs-md);flex:none;padding:6px 12px}.toast-action:active{background:#ffffff1a}.toast-x{color:#ffffff80;border-radius:var(--r-pill);flex:none;padding:6px}@keyframes toast-in{0%{opacity:0;transform:translateY(16px)scale(.96)}to{opacity:1;transform:none}}@keyframes toast-out{to{opacity:0;transform:translateY(10px)scale(.98)}}.splash{background:var(--bg);place-items:center;min-height:100dvh;padding:24px;display:grid}.splash-inner{text-align:center;flex-direction:column;align-items:center;gap:18px;display:flex}.splash-mark{width:76px;height:76px;box-shadow:var(--shadow-2);animation:splash-breathe 1.6s var(--ease)infinite alternate;border-radius:22px}.splash-name{font-weight:750;font-size:var(--fs-xl);letter-spacing:-.02em}.splash-sub{color:var(--text-3);font-size:var(--fs-sm)}@keyframes splash-breathe{0%{transform:scale(1)}to{transform:scale(1.04)}}.banner{border-radius:var(--r-lg);background:var(--bg-elev);box-shadow:var(--shadow-1);margin-bottom:var(--s4);font-size:var(--fs-md);align-items:center;gap:12px;padding:12px 14px;display:flex}.banner-icon{background:var(--accent-soft);width:34px;height:34px;color:var(--accent-text);border-radius:10px;flex:none;place-items:center;display:grid}.banner-text{flex:auto;min-width:0;line-height:1.35}.banner-text b{font-weight:650;display:block}.banner-text span{color:var(--text-2);font-size:var(--fs-sm)}.sync-pill{border-radius:var(--r-pill);background:var(--fill);height:28px;color:var(--text-2);font-size:var(--fs-xs);white-space:nowrap;flex:none;align-items:center;gap:6px;padding:0 10px;font-weight:600;display:inline-flex}.sync-dot{background:var(--green);border-radius:50%;flex:none;width:7px;height:7px}.sync-pill.offline .sync-dot{background:var(--text-3)}.sync-pill.pending .sync-dot{background:var(--amber)}.sync-pill.error .sync-dot{background:var(--red)}.sync-pill.syncing .sync-dot{background:var(--accent);animation:pulse 1s var(--ease)infinite alternate}@keyframes pulse{0%{opacity:.35}to{opacity:1}}.ptr{z-index:1;place-items:center;height:0;display:grid;position:relative;overflow:visible}.ptr-spinner{background:var(--bg-elev);width:30px;height:30px;box-shadow:var(--shadow-2);color:var(--accent-text);opacity:0;border-radius:50%;place-items:center;display:grid;position:absolute;top:6px;transform:translateY(-36px)scale(.6)}.ptr-spinner.spin svg{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}
.section{margin-top:var(--s6);min-width:0}.section:first-child{margin-top:0}.section-head{justify-content:space-between;align-items:baseline;gap:var(--s3);min-width:0;padding:0 4px 8px;display:flex}.section-title{font-size:var(--fs-xl);letter-spacing:-.015em;min-width:0;font-weight:700}.section-label{font-size:var(--fs-sm);color:var(--text-3);text-transform:uppercase;letter-spacing:.04em;padding:0 16px 6px;font-weight:600}.section-link{font-size:var(--fs-md);color:var(--accent-text);flex:none;align-items:center;gap:2px;padding:4px 2px;font-weight:550;display:inline-flex}.section-foot{font-size:var(--fs-sm);color:var(--text-3);padding:8px 16px 0;line-height:1.45}.card{background:var(--bg-elev);border-radius:var(--r-lg);box-shadow:var(--shadow-1);padding:var(--s4);min-width:0;position:relative}.card.tight{padding:var(--s3)}.card.flush{padding:0;overflow:hidden}.card+.card{margin-top:var(--s3)}button.card,a.card{text-align:left;width:100%;transition:transform var(--d1)var(--ease),background var(--d1)var(--ease);display:block}button.card:active,a.card:active{transform:scale(.985)}@media (hover:hover){button.card:hover,a.card:hover{background:var(--bg-elev-2)}}.group{background:var(--bg-elev);border-radius:var(--r-lg);box-shadow:var(--shadow-1);min-width:0;overflow:hidden}.group+.group{margin-top:var(--s4)}.cell{text-align:left;width:100%;min-width:0;min-height:52px;color:var(--text);transition:background var(--d1)var(--ease);background:0 0;align-items:center;gap:12px;padding:10px 16px;display:flex;position:relative}.cell+.cell:before{content:"";top:0;right:0;left:var(--cell-inset,16px);background:var(--line-strong);height:.5px;position:absolute}.cell.has-lead{--cell-inset:60px}.cell.has-check{--cell-inset:52px}button.cell:active,a.cell:active,.cell.tap:active{background:var(--fill)}@media (hover:hover){button.cell:hover,a.cell:hover,.cell.tap:hover{background:var(--bg-elev-2)}}.cell.tap{cursor:pointer}.cell-lead{background:var(--fill);width:32px;height:32px;color:var(--text-2);border-radius:9px;flex:none;place-items:center;font-size:17px;display:grid}.cell-lead.tint{color:#fff}.cell-main{flex:auto;min-width:0}.cell-title{font-size:var(--fs-base);text-overflow:ellipsis;white-space:nowrap;font-weight:500;line-height:1.3;overflow:hidden}.cell-title.wrap-title{white-space:normal;overflow-wrap:anywhere}.cell-sub{font-size:var(--fs-sm);color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;line-height:1.35;overflow:hidden}.cell-sub.wrap-sub{white-space:normal}.cell-value{font-size:var(--fs-md);color:var(--text-2);font-variant-numeric:tabular-nums;text-align:right;flex:none}.cell-chev{color:var(--text-4);flex:none;margin-right:-4px}.cell.danger .cell-title{color:var(--red)}.cell.accent .cell-title{color:var(--accent-text)}.cell-progress{margin-top:7px}.btn{border-radius:var(--r-md);height:48px;font-size:var(--fs-base);letter-spacing:-.005em;white-space:nowrap;transition:transform var(--d1)var(--ease),background var(--d1)var(--ease),opacity var(--d1)var(--ease);flex:none;justify-content:center;align-items:center;gap:8px;max-width:100%;padding:0 20px;font-weight:650;display:inline-flex}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.45}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:active:not(:disabled){background:var(--accent-press)}.btn-tinted{background:var(--accent-soft);color:var(--accent-text)}.btn-gray{background:var(--fill);color:var(--text)}.btn-gray:active:not(:disabled){background:var(--fill-2)}.btn-plain{color:var(--accent-text);background:0 0;padding:0 10px}.btn-plain:active:not(:disabled){background:var(--fill)}.btn-danger{background:var(--red-soft);color:var(--red)}.btn-success{background:var(--green);color:#fff}.btn-block{width:100%;display:flex}.btn-sm{height:36px;font-size:var(--fs-md);border-radius:var(--r-sm);gap:6px;padding:0 14px}.btn-xs{height:30px;font-size:var(--fs-sm);border-radius:var(--r-pill);gap:5px;padding:0 11px}.btn-lg{height:54px;font-size:var(--fs-lg);border-radius:var(--r-lg)}.btn-pill{border-radius:var(--r-pill)}.btn>span{text-overflow:ellipsis;min-width:0;overflow:hidden}.icon-btn{border-radius:var(--r-pill);width:40px;height:40px;color:var(--text-2);transition:background var(--d1)var(--ease),transform var(--d1)var(--ease),color var(--d1)var(--ease);flex:none;place-items:center;display:inline-grid}.icon-btn:active{background:var(--fill);transform:scale(.92)}.icon-btn.filled{background:var(--fill);color:var(--text)}.icon-btn.sm{width:32px;height:32px}.btn-row{gap:var(--s2);min-width:0;display:flex}.btn-row>.btn{flex:1 1 0;min-width:0}.chips{scrollbar-width:none;padding:2px var(--gutter);margin:0 calc(-1*var(--gutter));scroll-padding:0 var(--gutter);-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 var(--gutter),#000 calc(100% - 28px),transparent);-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 var(--gutter),#000 calc(100% - 28px),transparent);mask-image:linear-gradient(90deg,transparent 0,#000 var(--gutter),#000 calc(100% - 28px),transparent);gap:8px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chips.wrapped{flex-wrap:wrap;margin:0;padding:0;overflow:visible;-webkit-mask-image:none;mask-image:none}.chip{border-radius:var(--r-pill);background:var(--bg-elev);height:34px;box-shadow:inset 0 0 0 1px var(--line-strong);color:var(--text);font-size:var(--fs-md);white-space:nowrap;transition:background var(--d1)var(--ease),color var(--d1)var(--ease),transform var(--d1)var(--ease);flex:none;align-items:center;gap:6px;padding:0 13px;font-weight:550;display:inline-flex}.chip:active{transform:scale(.96)}.chip.on{background:var(--text);color:var(--bg-elev);box-shadow:none}.chip.soft{background:var(--fill);box-shadow:none}.chip.soft.on{background:var(--accent-soft);color:var(--accent-text)}.chip .chip-count{color:inherit;opacity:.6;font-variant-numeric:tabular-nums}.chip.sm{height:28px;font-size:var(--fs-sm);padding:0 10px}.chip.static{pointer-events:none}.segmented{background:var(--fill);scrollbar-width:none;border-radius:11px;min-width:0;padding:2px;display:flex;position:relative;overflow-x:auto}.segmented::-webkit-scrollbar{display:none}.seg{min-width:0;height:32px;font-size:var(--fs-sm);color:var(--text-2);white-space:nowrap;transition:background var(--d2)var(--ease),color var(--d2)var(--ease),box-shadow var(--d2)var(--ease);border-radius:9px;flex:1 0 auto;justify-content:center;align-items:center;gap:5px;padding:0 12px;font-weight:600;display:inline-flex}.seg.on{background:var(--bg-elev);color:var(--text);box-shadow:0 1px 3px #00000014,0 0 0 .5px #0000000a}:root[data-theme=dark] .seg.on{background:#3a3c44}.segmented.lg .seg{height:38px;font-size:var(--fs-md)}@media (max-width:380px){.seg{padding:0 7px}.segmented.lg .seg{font-size:var(--fs-sm)}}.field{border-radius:var(--r-md);background:var(--fill);width:100%;min-height:46px;color:var(--text);transition:box-shadow var(--d1)var(--ease),background var(--d1)var(--ease);border:0;min-width:0;padding:11px 14px;line-height:1.4}.field::placeholder{color:var(--text-3)}.field:focus{box-shadow:0 0 0 2px var(--accent);background:var(--bg-elev)}textarea.field{resize:vertical;min-height:96px}textarea.field.code{font-family:var(--font-mono);tab-size:4;white-space:pre;font-size:14px;line-height:1.5;overflow-x:auto}select.field{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%238a909c' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat;padding-right:38px}.field-label{font-size:var(--fs-sm);color:var(--text-2);margin:0 4px 6px;font-weight:600;display:block}.field-hint{font-size:var(--fs-xs);color:var(--text-3);margin:6px 4px 0}.field-group+.field-group{margin-top:var(--s4)}.search{border-radius:var(--r-md);background:var(--fill);height:42px;color:var(--text-3);min-width:0;transition:box-shadow var(--d1)var(--ease),background var(--d1)var(--ease);align-items:center;gap:8px;padding:0 6px 0 12px;display:flex}.search:focus-within{box-shadow:0 0 0 2px var(--accent);background:var(--bg-elev)}.search input{min-width:0;height:100%;color:var(--text);background:0 0;border:0;flex:auto;font-size:max(16px,1em)}.search input::placeholder{color:var(--text-3)}.search input:focus-visible{outline:none}.search input::-webkit-search-cancel-button{display:none}.search-clear{border-radius:var(--r-pill);width:30px;height:30px;color:var(--text-3);flex:none;place-items:center;display:grid}.switch{border-radius:var(--r-pill);background:var(--fill-2);width:51px;height:31px;transition:background var(--d2)var(--ease);flex:none;position:relative}.switch:after{content:"";width:27px;height:27px;transition:transform var(--d2)var(--spring);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 2px 6px #0000002e,0 0 0 .5px #0000000a}.switch.on{background:var(--green)}.switch.on:after{transform:translate(20px)}.stepper{background:var(--fill);border-radius:10px;flex:none;align-items:center;display:inline-flex;overflow:hidden}.stepper button{width:40px;height:34px;color:var(--text);place-items:center;display:grid}.stepper button:active:not(:disabled){background:var(--fill-2)}.stepper button:disabled{color:var(--text-4)}.stepper-val{text-align:center;font-variant-numeric:tabular-nums;min-width:34px;font-weight:700;font-size:var(--fs-md);border-left:.5px solid var(--line-strong);border-right:.5px solid var(--line-strong);padding:0 4px;line-height:34px}.bar{border-radius:var(--r-pill);background:var(--fill);min-width:0;height:6px;overflow:hidden}.bar>i{border-radius:inherit;background:var(--accent);height:100%;transition:width .5s var(--ease);display:block}.bar.thin{height:4px}.bar.thick{height:8px}.ring{flex:none;place-items:center;display:grid;position:relative}.ring svg{overflow:visible;transform:rotate(-90deg)}.ring-track{fill:none;stroke:var(--fill)}.ring-arc{fill:none;stroke-linecap:round;transition:stroke-dashoffset .7s var(--ease)}.ring-label{text-align:center;place-items:center;display:grid;position:absolute;inset:0}.tag{border-radius:var(--r-pill);height:22px;font-size:var(--fs-xs);white-space:nowrap;background:var(--fill);color:var(--text-2);text-overflow:ellipsis;flex:none;align-items:center;gap:4px;max-width:100%;padding:0 8px;font-weight:650;display:inline-flex;overflow:hidden}.tag.easy{background:var(--easy-soft);color:var(--easy)}.tag.medium{background:var(--medium-soft);color:var(--medium)}.tag.hard{background:var(--hard-soft);color:var(--hard)}.tag.accent{background:var(--accent-soft);color:var(--accent-text)}.tag.green{background:var(--green-soft);color:var(--green)}.tag.purple{background:var(--purple-soft);color:var(--purple)}.tag.orange{background:var(--orange-soft);color:var(--orange)}.tag.lg{height:26px;font-size:var(--fs-sm);padding:0 10px}.diff-dot{background:var(--text-4);border-radius:50%;flex:none;width:8px;height:8px}.diff-dot.easy{background:var(--easy)}.diff-dot.medium{background:var(--medium)}.diff-dot.hard{background:var(--hard)}.badge-dot{background:var(--orange);border-radius:50%;width:8px;height:8px}.rating-pill{border-radius:var(--r-pill);height:22px;font-size:var(--fs-xs);font-variant-numeric:tabular-nums;color:var(--rc,var(--accent));background:color-mix(in srgb,var(--rc,var(--accent))14%,transparent);flex:none;align-items:center;padding:0 8px;font-weight:750;display:inline-flex}.check{width:28px;height:28px;box-shadow:inset 0 0 0 2px var(--text-4);color:#0000;transition:background var(--d2)var(--ease),box-shadow var(--d2)var(--ease),transform var(--d2)var(--spring);border-radius:50%;flex:none;place-items:center;display:grid;position:relative}.check:after{content:"";position:absolute;inset:-10px}.check:active{transform:scale(.86)}.check.progress{box-shadow:inset 0 0 0 2px var(--accent)}.check.progress:before{content:"";background:var(--accent);border-radius:50%;width:10px;height:10px}.check.solved{background:var(--green);box-shadow:none;color:#fff}.check.mastered{background:var(--purple);box-shadow:none;color:#fff}.check.pop{animation:check-pop .36s var(--spring)}@keyframes check-pop{0%{transform:scale(.7)}60%{transform:scale(1.12)}to{transform:scale(1)}}.empty{text-align:center;color:var(--text-2);padding:40px 24px}.empty-glyph{background:var(--fill);width:64px;height:64px;color:var(--text-3);border-radius:20px;place-items:center;margin:0 auto 14px;font-size:28px;display:grid}.empty-title{font-size:var(--fs-lg);color:var(--text);margin-bottom:4px;font-weight:650}.empty-sub{font-size:var(--fs-md);max-width:340px;margin:0 auto;line-height:1.5}.empty .btn{margin-top:18px}.skel{border-radius:var(--r-md);background:linear-gradient(90deg,var(--fill)0%,var(--fill-2)50%,var(--fill)100%);background-size:200% 100%;animation:1.3s linear infinite skel}@keyframes skel{0%{background-position:200% 0}to{background-position:-200% 0}}.tiles{gap:var(--s3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.tiles.three{grid-template-columns:repeat(3,minmax(0,1fr))}.tile{background:var(--bg-elev);border-radius:var(--r-lg);box-shadow:var(--shadow-1);text-align:left;min-width:0;transition:transform var(--d1)var(--ease);flex-direction:column;gap:2px;padding:14px;display:flex}button.tile:active{transform:scale(.97)}.tile-label{font-size:var(--fs-sm);color:var(--text-2);align-items:center;gap:6px;min-width:0;font-weight:600;display:flex}.tile-value{font-size:var(--fs-3xl);letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin-top:4px;font-weight:750;line-height:1.15}.tile-value small{font-size:var(--fs-md);color:var(--text-3);letter-spacing:0;margin-left:2px;font-weight:600}.tile-sub{font-size:var(--fs-xs);color:var(--text-3)}.heat{min-width:0}.heat-scroll{scrollbar-width:none;padding-bottom:2px;overflow-x:auto}.heat-scroll::-webkit-scrollbar{display:none}.heat-grid{grid-template-rows:repeat(7,13px);grid-auto-columns:13px;grid-auto-flow:column;gap:3px;width:max-content;display:grid}.heat-months{width:max-content;height:16px;color:var(--text-3);grid-auto-columns:13px;grid-auto-flow:column;gap:3px;font-size:10px;font-weight:600;display:grid}.heat-months span{white-space:nowrap}.heat-cell{background:var(--heat-0);border-radius:3px;width:13px;height:13px;padding:0}.heat-cell.l1{background:var(--heat-1)}.heat-cell.l2{background:var(--heat-2)}.heat-cell.l3{background:var(--heat-3)}.heat-cell.l4{background:var(--heat-4)}.heat-cell.today{box-shadow:0 0 0 1.5px var(--text)}.heat-cell.future{box-shadow:inset 0 0 0 1px var(--line);background:0 0}.heat-cell.sel{box-shadow:0 0 0 2px var(--accent)}.heat-legend{color:var(--text-3);justify-content:flex-end;align-items:center;gap:3px;margin-top:8px;font-size:10px;display:flex}.heat-legend .heat-cell{border-radius:2px;width:10px;height:10px}.cal-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.cal-dow{text-align:center;font-size:var(--fs-2xs);color:var(--text-3);padding-bottom:4px;font-weight:650}.cal-day{aspect-ratio:1;font-size:var(--fs-md);font-variant-numeric:tabular-nums;min-width:0;transition:background var(--d1)var(--ease);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-weight:550;display:flex;position:relative}.cal-day:active{background:var(--fill)}.cal-day.muted{color:var(--text-4);pointer-events:none}.cal-day.today{color:var(--accent-text);font-weight:750}.cal-day.sel{background:var(--text);color:var(--bg-elev)}.cal-day .cal-dots{gap:2px;height:5px;display:flex}.cal-day .cal-dots i{background:var(--green);border-radius:50%;width:5px;height:5px}.cal-day .cal-dots i.rev{background:var(--accent)}.cal-day.sel .cal-dots i{background:var(--bg-elev)}.cal-day.future{color:var(--text-3)}.ai{border-radius:var(--r-lg);background:var(--bg-elev);box-shadow:var(--shadow-1);min-width:0;overflow:hidden}.ai+.ai{margin-top:var(--s2)}.ai-head{text-align:left;align-items:center;gap:12px;width:100%;min-width:0;padding:12px 14px;display:flex}.ai-head:active{background:var(--fill)}.ai-icon{background:color-mix(in srgb,var(--ai,var(--accent))14%,transparent);width:34px;height:34px;color:var(--ai,var(--accent));border-radius:10px;flex:none;place-items:center;display:grid}.ai-title{font-weight:600;font-size:var(--fs-base)}.ai-desc{font-size:var(--fs-sm);color:var(--text-2)}.ai-body{font-size:var(--fs-md);color:var(--text);overflow-wrap:anywhere;padding:2px 16px 16px;line-height:1.6}.ai-body h4{font-size:var(--fs-md);margin:12px 0 2px;font-weight:700}.ai-body p{margin:4px 0}.ai-body li{gap:8px;margin:3px 0;display:flex}.ai-body li:before{content:"•";color:var(--ai,var(--accent));flex:none}.ai-body li.num:before{content:attr(data-n);font-variant-numeric:tabular-nums;font-weight:700}.ai-body code{font-family:var(--font-mono);background:var(--fill);border-radius:5px;padding:1px 5px;font-size:.9em}.ai-loading{color:var(--text-2);align-items:center;gap:10px;padding:6px 0;display:flex}.ai-meta{font-size:var(--fs-xs);color:var(--text-3);justify-content:space-between;align-items:center;gap:8px;margin-top:12px;display:flex}.dots{gap:4px;display:inline-flex}.dots i{width:6px;height:6px;animation:dot 1s var(--ease)infinite;opacity:.3;background:currentColor;border-radius:50%}.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}@keyframes dot{0%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}.code-block{border-radius:var(--r-md);background:var(--bg-sunken);color:var(--text);font-family:var(--font-mono);white-space:pre;tab-size:4;margin:0;padding:14px;font-size:13px;line-height:1.55;overflow-x:auto}:root[data-theme=light] .code-block{background:#f1f2f6}.divider{background:var(--line-strong);height:.5px;margin:var(--s4)0}.kbd{background:var(--fill);min-width:20px;height:20px;font-size:11px;font-weight:650;font-family:var(--font-mono);color:var(--text-2);border-radius:5px;place-items:center;padding:0 5px;display:inline-grid}.note{border-radius:var(--r-md);background:var(--fill);font-size:var(--fs-sm);color:var(--text-2);align-items:flex-start;gap:10px;padding:12px 14px;line-height:1.5;display:flex}.note.warn{background:var(--amber-soft);color:var(--text)}.note.danger{background:var(--red-soft);color:var(--text)}.note.ok{background:var(--green-soft);color:var(--text)}.note svg{flex:none;margin-top:1px}
.mini-label{font-size:var(--fs-xs);color:var(--text-3);text-transform:uppercase;letter-spacing:.05em;margin:0 2px 8px;font-weight:650}.spin-i{vertical-align:-2px;animation:.9s linear infinite spin;display:inline-block}.more-sentinel{color:var(--text-3);place-items:center;padding:22px 0;display:grid}.sheet-search{z-index:2;background:inherit;padding-top:2px;position:sticky;top:0}.avatar-sm{background:linear-gradient(140deg,var(--accent),var(--purple));color:#fff;border-radius:50%;place-items:center;width:30px;height:30px;font-size:14px;font-weight:700;display:grid}.today-rings{align-items:center;gap:20px;padding:18px;display:flex!important}.today-rings-legend{flex-direction:column;flex:auto;gap:6px;min-width:0;display:flex}.streak{color:var(--text-3);align-items:baseline;gap:6px;margin-bottom:4px;display:flex}.streak svg{align-self:center}.streak svg.lit{color:var(--flame);fill:color-mix(in srgb,var(--flame)30%,transparent)}.streak .num{font-size:var(--fs-3xl);color:var(--text);letter-spacing:-.03em;font-weight:800;line-height:1}.streak small{font-size:var(--fs-sm);white-space:nowrap;font-weight:600}.legend-row{font-size:var(--fs-md);color:var(--text-2);align-items:center;gap:8px;display:flex}.legend-row i{border-radius:50%;flex:none;width:9px;height:9px}.legend-row span{flex:auto}.legend-row b{color:var(--text);font-weight:700}.legend-row b small{color:var(--text-3);font-weight:600}.legend-best{font-size:var(--fs-xs);color:var(--text-3)}.session,.card.session+.card{margin-top:var(--s3)}.session-top{align-items:center;gap:14px;min-width:0;display:flex}.session-icon{background:var(--accent-soft);width:46px;height:46px;color:var(--accent-text);border-radius:14px;flex:none;place-items:center;display:grid}.session-icon.ok{background:var(--green-soft);color:var(--green)}.session-title{font-size:var(--fs-lg);letter-spacing:-.01em;font-weight:700}.session-sub{font-size:var(--fs-sm);color:var(--text-2);margin-top:2px;line-height:1.4}.quick{gap:var(--s2);margin-top:var(--s3);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.quick-btn{border-radius:var(--r-lg);background:var(--bg-elev);box-shadow:var(--shadow-1);font-size:var(--fs-xs);color:var(--text-2);min-width:0;transition:transform var(--d1)var(--ease);flex-direction:column;align-items:center;gap:7px;padding:12px 4px 11px;font-weight:600;display:flex}.quick-btn:active{transform:scale(.94)}.q-ico{border-radius:13px;place-items:center;width:40px;height:40px;display:grid}.q-ico.green{background:var(--green-soft);color:var(--green)}.q-ico.purple{background:var(--purple-soft);color:var(--purple)}.q-ico.orange{background:var(--orange-soft);color:var(--orange)}.q-ico.accent{background:var(--accent-soft);color:var(--accent-text)}.week-bars{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;height:92px;display:grid}.week-col{flex-direction:column;align-items:center;gap:6px;min-width:0;display:flex}.week-col span{font-size:var(--fs-2xs);color:var(--text-3);font-weight:650}.week-col.today span{color:var(--accent-text)}.week-track{background:var(--fill);border-radius:8px;flex:auto;align-items:flex-end;width:100%;max-width:26px;display:flex;overflow:hidden}.week-track i{background:var(--fill-2);width:100%;transition:height .5s var(--ease);border-radius:8px;display:block}.week-track i.on{background:var(--green)}.week-col.today .week-track i.on{background:var(--accent)}.week-foot{font-size:var(--fs-sm);margin-top:12px}.week-foot b{color:var(--text)}.calm{text-align:center;padding:30px 20px}.calm-leaf{color:var(--teal);margin:0 auto 10px}.calm-count{letter-spacing:-.04em;font-size:56px;font-weight:800;line-height:1}.calm-count small{color:var(--text-3);font-size:22px;font-weight:650}.calm-title{font-size:var(--fs-xl);margin:10px 0 4px;font-weight:700}.lib-top{flex-direction:column;gap:10px;margin-bottom:12px;display:flex}.lib-filters{margin-bottom:8px}.lib-scopes .seg{flex:auto;padding:0 9px;font-size:13px}@media (max-width:380px){.lib-scopes{-webkit-mask-image:linear-gradient(90deg,#000 85%,#0000);mask-image:linear-gradient(90deg,#000 85%,#0000)}.lib-scopes .seg{padding:0 8px}}.lib-count{font-size:var(--fs-sm);padding:4px 4px 10px}.prow{gap:12px}.prow-index{text-align:right;min-width:18px;font-size:var(--fs-xs);color:var(--text-3);flex:none;margin-right:-4px;font-weight:650}.prow-meta{align-items:center;gap:6px}.prow-diff{flex:none}.prow-star{color:var(--amber);flex:none}.list-head{padding-top:4px}.list-icon{border-radius:16px;place-items:center;width:54px;height:54px;margin-bottom:12px;font-size:28px;display:grid}.list-head h1{font-size:var(--fs-3xl);letter-spacing:-.025em;font-weight:750;line-height:1.12}.list-desc{font-size:var(--fs-md);color:var(--text-2);margin-top:6px;line-height:1.45}.list-progress{font-size:var(--fs-md);flex-direction:column;gap:8px;margin-top:14px;display:flex}.lsec+.lsec{margin-top:10px}.lsec-head{text-align:left;align-items:center;gap:8px;width:100%;min-width:0;padding:10px 4px;display:flex}.lsec-chev{color:var(--text-3);transition:transform var(--d2)var(--ease);flex:none}.lsec-name{font-weight:650;font-size:var(--fs-md)}.lsec-count{font-size:var(--fs-sm);flex:none}.lsec-empty{font-size:var(--fs-sm);padding:4px 30px 12px}.pd-head{padding-top:4px}.pd-title{font-size:var(--fs-3xl);letter-spacing:-.025em;overflow-wrap:anywhere;font-weight:750;line-height:1.15}.pd-tags{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.pd-tags .tag{cursor:pointer}.pd-actions{margin-top:2px}.pd-facts{border-top:.5px solid var(--line-strong);margin-top:12px;padding-top:4px}.pd-fact{width:100%;font-size:var(--fs-md);color:var(--text-2);text-align:left;align-items:center;gap:10px;padding:9px 2px;display:flex}.pd-fact svg{color:var(--text-3);flex:none}.pd-fact-action{color:var(--accent-text);font-weight:600}.pd-memory{margin-top:var(--s3)}.pd-memory-label{font-size:var(--fs-xs);color:var(--text-3);text-transform:uppercase;letter-spacing:.05em;font-weight:650}.pd-memory-count{font-size:var(--fs-xl);color:var(--text-2);font-weight:700}.pd-memory-count .num{font-size:var(--fs-3xl);color:var(--text);letter-spacing:-.03em;font-weight:800}.pd-mstats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:14px;display:grid}.pd-mstats>div{background:var(--fill);border-radius:var(--r-md);flex-direction:column;min-width:0;padding:10px 12px;display:flex}.pd-mstats b{font-size:var(--fs-xl);font-weight:750}.pd-mstats span{font-size:var(--fs-xs);color:var(--text-3);font-weight:600}.pd-gaps{margin-top:14px}.pd-gaps-label{font-size:var(--fs-xs);color:var(--text-3);margin-bottom:6px;font-weight:600}.pd-gap-row{scrollbar-width:none;gap:6px;padding-bottom:2px;display:flex;overflow-x:auto}.pd-gap-row::-webkit-scrollbar{display:none}.pd-gap{border-radius:var(--r-pill);background:var(--green-soft);color:var(--green);font-size:var(--fs-sm);font-variant-numeric:tabular-nums;flex:none;padding:4px 10px;font-weight:650}.pd-gap.miss{background:var(--red-soft);color:var(--red)}.pd-gap i{margin-left:2px;font-style:normal}.pd-last{border-top:.5px solid var(--line-strong);font-size:var(--fs-sm);color:var(--text-2);align-items:center;gap:6px;margin-top:14px;padding-top:10px;display:flex}.pd-last b{color:var(--text)}.pd-tabs{margin:var(--s5)0 var(--s3)}.pd-panel .field-group+.field-group{margin-top:var(--s4)}.pd-ai{flex-direction:column;display:flex}.pd-meta-foot{margin-top:var(--s6);font-size:var(--fs-xs);color:var(--text-3);flex-wrap:wrap;justify-content:center;gap:6px 14px;display:flex}.pd-meta-foot span{align-items:center;gap:4px;display:inline-flex}.save-state{font-size:var(--fs-xs);color:var(--text-3);align-items:center;gap:3px;display:inline-flex}.save-state.ok{color:var(--green)}.approach{margin-top:10px}.approach p{font-size:var(--fs-md);color:var(--text-2);margin:6px 0 10px;line-height:1.55}.approach.best{box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--green)45%,transparent)}.hint{font-size:var(--fs-md);gap:10px;margin-top:10px;line-height:1.5;display:flex}.hint-n{background:var(--amber-soft);width:22px;height:22px;color:var(--amber);border-radius:50%;flex:none;place-items:center;font-size:12px;font-weight:750;display:grid}.grades{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.grades.compact{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.grade{border-radius:var(--r-lg);background:var(--g-bg);color:var(--g);text-align:left;min-width:0;transition:transform var(--d1)var(--ease),filter var(--d1)var(--ease);flex-direction:column;align-items:flex-start;gap:1px;padding:12px 14px;display:flex}.grade:active{filter:brightness(.95);transform:scale(.95)}.grade-name{font-size:var(--fs-lg);font-weight:750}.grade-sub{font-size:var(--fs-xs);color:var(--text-2);font-weight:550}.grade-next{font-size:var(--fs-xs);font-variant-numeric:tabular-nums;margin-top:4px;font-weight:650}.grades.compact .grade{text-align:center;align-items:center;padding:10px 4px}.grades.compact .grade-sub{display:none}.grades.compact .grade-name{font-size:var(--fs-md)}.grades.compact .grade-next{margin-top:1px}.datepick-other{position:relative;overflow:hidden}.datepick-other input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.datepick-other input::-webkit-calendar-picker-indicator{cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.timer{text-align:center;padding:8px 0}.timer-clock{letter-spacing:-.03em;font-size:64px;font-weight:750;line-height:1.05}.timer-total{color:var(--text-3);font-size:var(--fs-sm);margin-top:6px}.logpanel-title{font-size:var(--fs-2xl);letter-spacing:-.02em;font-weight:750;line-height:1.2}.rv{min-height:100dvh;max-width:var(--col);padding:0 calc(var(--gutter) + var(--safe-r))0 calc(var(--gutter) + var(--safe-l));flex-direction:column;margin:0 auto;display:flex}.rv-top{z-index:10;padding:calc(var(--safe-t) + 8px)0 10px;background:var(--bg);align-items:center;gap:12px;display:flex;position:sticky;top:0}.rv-progress{flex:auto;gap:4px;min-width:0;display:flex}.rv-progress i{background:var(--fill-2);height:5px;transition:background var(--d3)var(--ease);border-radius:5px;flex:1 1 0}.rv-progress i.done{background:var(--green)}.rv-progress i.now{background:var(--accent)}.rv-body{padding:8px 0 calc(var(--safe-b) + 200px);flex:auto}.rv-planning{color:var(--text-3);animation:pulse 1s var(--ease)infinite alternate;flex-direction:column;align-items:center;gap:12px;padding-top:30vh;display:flex}.rv-card{background:var(--bg-elev);border-radius:var(--r-xl);box-shadow:var(--shadow-2);animation:screen-in var(--d3)var(--ease)both;padding:20px}.rv-title{font-size:var(--fs-3xl);letter-spacing:-.025em;overflow-wrap:anywhere;margin:12px 0 0;font-weight:750;line-height:1.15}.rv-prompt{border-radius:var(--r-lg);background:var(--accent-soft);font-size:var(--fs-md);align-items:flex-start;gap:12px;margin-top:18px;padding:14px;line-height:1.5;display:flex}.rv-prompt-icon{color:var(--accent-text);flex:none;margin-top:1px}.rv-links{flex-wrap:wrap;gap:6px;margin-top:16px;display:flex}.rv-answer{animation:screen-in var(--d3)var(--ease)both;flex-direction:column;gap:10px;margin-top:12px;display:flex}.rv-answer .card+.card{margin-top:0}.rv-own p{font-size:var(--fs-md);white-space:pre-wrap;line-height:1.55}.rv-loading{color:var(--text-2);align-items:center;gap:10px;display:flex}.rv-dock{z-index:20;padding:12px calc(var(--gutter) + var(--safe-r))calc(var(--safe-b) + 14px)calc(var(--gutter) + var(--safe-l));background:color-mix(in srgb,var(--bg)92%,transparent);box-shadow:0 -.5px 0 var(--line);position:fixed;bottom:0;left:0;right:0}.rv-dock>*{max-width:calc(var(--col) - 2*var(--gutter));margin-left:auto;margin-right:auto}.rv-dock-label{text-align:center;font-size:var(--fs-sm);color:var(--text-2);margin-bottom:8px;font-weight:600}.rv-kbd{color:inherit;background:#fff3;margin-left:4px}@media (hover:none){.rv-kbd{display:none}}.rv-done{text-align:center;padding-top:6vh}.rv-done h1{font-size:var(--fs-title);letter-spacing:-.025em;margin-top:16px;font-weight:750}.rv-done>p{font-size:var(--fs-md);margin-top:8px;line-height:1.5}.rv-trophy{background:var(--amber-soft);width:76px;height:76px;color:var(--amber);animation:check-pop .5s var(--spring)both;border-radius:24px;place-items:center;margin:0 auto;display:grid}.rv-tally{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:22px;display:grid}.rv-tally-cell{border-radius:var(--r-lg);background:var(--bg-elev);box-shadow:var(--shadow-1);flex-direction:column;padding:12px 4px;display:flex}.rv-tally-cell b{font-size:var(--fs-2xl);font-weight:750}.rv-tally-cell span{font-size:var(--fs-xs);color:var(--text-3);font-weight:600}.rv-tally-cell.forgot b{color:var(--red)}.rv-tally-cell.hard b{color:var(--amber)}.rv-tally-cell.good b{color:var(--green)}.rv-tally-cell.easy b{color:var(--accent-text)}.train-review{align-items:center;gap:14px;display:flex!important}.play-btn{background:var(--accent);color:#fff;border-radius:50%;flex:none;place-items:center;width:44px;height:44px;padding-left:2px;display:grid}.modes{gap:var(--s3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media (min-width:560px){.modes{grid-template-columns:repeat(3,minmax(0,1fr))}}.mode-tile{border-radius:var(--r-lg);background:var(--bg-elev);min-height:116px;box-shadow:var(--shadow-1);text-align:left;transition:transform var(--d1)var(--ease);flex-direction:column;align-items:flex-start;gap:2px;padding:16px;display:flex;position:relative;overflow:hidden}.mode-tile:after{content:"";background:color-mix(in srgb,var(--tint)12%,transparent);border-radius:50%;width:100px;height:100px;position:absolute;bottom:-30px;right:-30px}.mode-tile:active{transform:scale(.96)}.mode-emoji{z-index:1;margin-bottom:auto;font-size:28px;line-height:1;position:relative}.mode-title{font-weight:700;font-size:var(--fs-md);z-index:1;margin-top:14px;position:relative}.mode-desc{font-size:var(--fs-xs);color:var(--text-2);z-index:1;position:relative}.mode-body{padding-top:6px}.cp-entry{align-items:center;gap:14px;display:flex!important}.cp-entry-icon{background:var(--red-soft);width:46px;height:46px;color:var(--red);border-radius:14px;flex:none;place-items:center;display:grid}.cp-entry-links{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.contest-dot{border-radius:50%;flex:none;width:10px;height:10px;margin-top:6px}.vc-clock{font-size:var(--fs-3xl);letter-spacing:-.03em;font-weight:800}.game-stats{font-size:var(--fs-md);color:var(--text-2);flex-wrap:wrap;gap:6px 16px;margin-bottom:12px;display:flex}.game-stats span{align-items:center;gap:5px;display:inline-flex}.game-stats b{color:var(--text)}.game-foot{text-align:center;font-size:var(--fs-xs);color:var(--text-3);margin-top:14px;line-height:1.5}.game-card{padding:18px}.game-q{font-size:var(--fs-lg);white-space:pre-wrap;margin:12px 0;font-weight:600;line-height:1.45}.game-title{font-size:var(--fs-2xl);letter-spacing:-.02em;margin:12px 0 8px;font-weight:750}.game-statement{font-size:var(--fs-md);white-space:pre-wrap;color:var(--text);line-height:1.6}.game-block{margin-top:14px}.game-io{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.game-io .game-block{min-width:0;margin-top:14px}.opts{flex-direction:column;gap:8px;margin-top:12px;display:flex}.opt{border-radius:var(--r-md);background:var(--fill);text-align:left;font-size:var(--fs-md);transition:background var(--d2)var(--ease),transform var(--d1)var(--ease),opacity var(--d2)var(--ease);align-items:center;gap:12px;padding:12px 14px;display:flex}.opt:active:not(:disabled){transform:scale(.98)}.opt-letter{background:var(--bg-elev);width:28px;height:28px;font-weight:750;font-size:var(--fs-sm);border-radius:9px;flex:none;place-items:center;display:grid}.opt-text{overflow-wrap:anywhere;flex:auto;min-width:0;line-height:1.4}.opt.right{background:var(--green-soft);color:var(--green);font-weight:600}.opt.wrong{background:var(--red-soft);color:var(--red)}.opt.dim{opacity:.5}.verdict{text-align:center;font-weight:750;font-size:var(--fs-lg);margin:14px 0 10px}.verdict.right{color:var(--green)}.verdict.wrong{color:var(--red)}.deck{flex-direction:column;display:flex}.deck-stage{perspective:1200px;height:min(56vh,420px);position:relative}.deck-card{cursor:pointer;transition:transform .38s var(--spring),opacity .22s var(--ease);touch-action:none;position:absolute;inset:0}.deck-card.behind{background:var(--bg-elev);border-radius:var(--r-xl);box-shadow:var(--shadow-1);opacity:.7;pointer-events:none;transform:scale(.94)translateY(14px)}.deck-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .46s var(--ease);position:relative}.deck-card.flipped .deck-inner{transform:rotateY(180deg)}.deck-face{backface-visibility:hidden;border-radius:var(--r-xl);background:var(--bg-elev);box-shadow:var(--shadow-2);flex-direction:column;padding:22px;display:flex;position:absolute;inset:0}.deck-back{background:linear-gradient(160deg,var(--bg-elev),color-mix(in srgb,var(--accent)7%,var(--bg-elev)));transform:rotateY(180deg)}.deck-text{text-align:center;font-size:var(--fs-xl);letter-spacing:-.01em;flex:auto;place-items:center;padding:10px 4px;font-weight:650;line-height:1.4;display:grid;overflow-y:auto}.deck-back .deck-text{font-size:var(--fs-lg);font-weight:550}.deck-tap{font-size:var(--fs-xs);color:var(--text-3);justify-content:center;align-items:center;gap:5px;display:inline-flex}.deck-loading{height:100%;color:var(--text-2);background:var(--bg-elev);border-radius:var(--r-xl);justify-content:center;align-items:center;gap:10px;display:flex}.deck-card.leaving-left{opacity:0;transform:translate(-130%)rotate(-18deg)!important}.deck-card.leaving-right{opacity:0;transform:translate(130%)rotate(18deg)!important}.deck-card.leaving-up{opacity:0;transform:translateY(-130%)!important}.deck-stamp{font-weight:800;font-size:var(--fs-xl);letter-spacing:.04em;text-transform:uppercase;background:var(--bg-elev);pointer-events:none;border:3px solid;border-radius:10px;padding:6px 16px;position:absolute;top:22px;left:50%;transform:translate(-50%)rotate(-6deg)}.deck-stamp.good{color:var(--green)}.deck-stamp.hard{color:var(--red)}.deck-stamp.easy{color:var(--accent-text)}.deck-rate{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:18px;display:grid}.deck-rate-btn{border-radius:var(--r-lg);font-size:var(--fs-md);transition:transform var(--d1)var(--ease);flex-direction:column;align-items:center;padding:10px 4px;display:flex}.deck-rate-btn:active:not(:disabled){transform:scale(.95)}.deck-rate-btn span{font-size:var(--fs-xs);opacity:.75;font-variant-numeric:tabular-nums}.deck-rate-btn.hard{background:var(--red-soft);color:var(--red)}.deck-rate-btn.good{background:var(--green-soft);color:var(--green)}.deck-rate-btn.easy{background:var(--accent-soft);color:var(--accent-text)}.hanoi{background:var(--bg-elev);border-radius:var(--r-xl);box-shadow:var(--shadow-1);grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:14px 10px 10px;display:grid}.hanoi-peg{border-radius:var(--r-lg);height:230px;transition:background var(--d2)var(--ease);flex-direction:column;justify-content:flex-end;align-items:center;display:flex;position:relative}.hanoi-peg.selected{background:var(--accent-soft)}.hanoi-peg.invalid{animation:shake .32s var(--ease);background:var(--red-soft)}@keyframes shake{25%{transform:translate(-5px)}75%{transform:translate(5px)}}.hanoi-rod{background:var(--fill-2);border-radius:6px;width:6px;position:absolute;top:14px;bottom:12px}.hanoi-disks{z-index:1;flex-direction:column-reverse;align-items:center;gap:3px;width:100%;padding-bottom:12px;display:flex;position:relative}.hanoi-disk{color:#fff;height:22px;transition:transform var(--d2)var(--spring);border-radius:8px;place-items:center;font-size:11px;font-weight:750;display:grid;box-shadow:inset 0 -2px #00000026}.hanoi-disk.lifted{transform:translateY(-16px)}.hanoi-disk.dropped{animation:check-pop .3s var(--spring)}.hanoi-base{background:var(--fill-2);border-radius:6px;height:6px;position:absolute;bottom:6px;left:8%;right:8%}.bs-range{background:var(--fill);border-radius:10px;height:10px;position:relative;overflow:hidden}.bs-range i{background:var(--accent);transition:left .4s var(--ease),width .4s var(--ease);border-radius:10px;position:absolute;top:0;bottom:0}.badges{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;display:grid}.badge{text-align:center;border-radius:var(--r-lg);background:var(--bg-elev);box-shadow:var(--shadow-1);flex-direction:column;align-items:center;gap:2px;min-width:0;padding:14px 6px 12px;display:flex}.badge-ico{margin-bottom:6px;font-size:28px;line-height:1}.badge-title{font-size:var(--fs-xs);font-weight:700;line-height:1.25}.badge-desc{color:var(--text-3);font-size:10.5px;line-height:1.3}.badge.locked{opacity:.5}.badge.locked .badge-ico{filter:grayscale()}.cal-legend{font-size:var(--fs-xs);justify-content:center;align-items:center;gap:6px;margin-top:10px;display:flex}.cal-legend i{background:var(--green);border-radius:50%;width:7px;height:7px}.cal-legend i.rev{background:var(--accent);margin-left:8px}.curve{flex-direction:column;gap:9px;display:flex}.curve-row{grid-template-columns:74px minmax(0,1fr) 40px;align-items:center;gap:10px;display:grid}.curve-label{font-size:var(--fs-sm);color:var(--text-2);white-space:nowrap}.curve-track{background:var(--fill);border-radius:12px;height:12px;position:relative}.curve-target{border-left:2px dashed var(--text-3);z-index:1;width:0;position:absolute;top:-4px;bottom:-4px}.curve-bar{background:var(--green);border-radius:12px;position:absolute;top:0;bottom:0;left:0}.curve-bar.below{background:var(--amber)}.curve-bar.thin{opacity:.45}.curve-val{font-size:var(--fs-sm);text-align:right;font-weight:700}.curve-val.below{color:var(--amber)}.ladder{font-size:var(--fs-md);white-space:nowrap;scrollbar-width:none;align-items:center;gap:10px;padding:4px 0;font-weight:600;display:flex;overflow-x:auto}.ladder.muted{color:var(--text-3);font-weight:500}.tile.flat{box-shadow:none;background:var(--fill);padding:10px 12px}.tile-value.sm{font-size:var(--fs-xl);margin-top:2px}.me-hero{margin-bottom:var(--s2);align-items:center;gap:14px;display:flex}.me-avatar{background:linear-gradient(140deg,var(--accent),var(--purple));color:#fff;border-radius:50%;flex:none;place-items:center;width:60px;height:60px;font-size:26px;font-weight:750;display:grid}.me-name{font-size:var(--fs-xl);letter-spacing:-.015em;font-weight:750}.me-email{font-size:var(--fs-sm);color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.me-foot{text-align:center;color:var(--text-3);font-size:var(--fs-xs);margin-top:var(--s8);line-height:1.7}.auth{min-height:100dvh;padding:calc(var(--safe-t) + 24px)var(--gutter)calc(var(--safe-b) + 24px);background:linear-gradient(180deg,color-mix(in srgb,var(--accent)10%,var(--bg))0,var(--bg)340px);place-items:center;display:grid}.auth-card{width:100%;max-width:380px}.auth-brand{text-align:center;flex-direction:column;align-items:center;gap:10px;margin-bottom:26px;display:flex}.auth-brand svg{box-shadow:var(--shadow-2)}.auth-brand h1{font-size:var(--fs-3xl);letter-spacing:-.03em;margin-top:6px;font-weight:800}.auth-brand p{color:var(--text-2);font-size:var(--fs-md)}.auth-form{flex-direction:column;gap:10px;display:flex}.auth-form .btn{margin-top:6px}.auth-pw{position:relative}.auth-pw .field{padding-right:50px}.auth-pw .icon-btn{position:absolute;top:50%;right:6px;transform:translateY(-50%)}.auth-or{color:var(--text-3);font-size:var(--fs-sm);align-items:center;gap:12px;margin:22px 0 14px;display:flex}.auth-or:before,.auth-or:after{content:"";background:var(--line-strong);flex:auto;height:.5px}
