:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#121214;--surface:#1c1c1f;--surface-2:#2a2a2e;--surface-3:#3a3a3f;--separator:#ffffff17;--bar-bg:#161618d1;--label:#fff;--label-2:#ebebf59e;--label-3:#ebebf552;--accent:#3fd68c;--accent-tint:#3fd68c29;--on-accent:#06210f;--red:#ff453a;--red-tint:#ff453a29;--orange:#ff9f0a;--orange-tint:#ff9f0a29;--blue:#0a84ff;--blue-tint:#0a84ff29;--green-tint:#3fd68c29;--tile-blue:#2f74ee;--chart-1:#3987e5;--chart-2:#d95926;--chart-3:#199e70;--chart-track:#2c2c30;--chart-grid:#2c2c2a;--chart-muted:#898781;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--tabbar-h:50px;--radius:12px;--gutter:16px;--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Inter", system-ui, "Segoe UI", Roboto, sans-serif;--ease-ios:cubic-bezier(.32, .72, 0, 1);font:17px/1.3 var(--font);letter-spacing:-.2px;color:var(--label);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}*,:before,:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}html{overscroll-behavior-x:none}body{background:var(--bg);overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;margin:0}h1,h2,h3,p{margin:0}button{font:inherit;color:inherit;letter-spacing:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:0;margin:0;padding:0}button:disabled{cursor:default}input,select,textarea{font:inherit;color:var(--label);-webkit-user-select:text;user-select:text;font-size:17px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.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}.app{background:var(--bg);max-width:520px;height:100dvh;margin:0 auto;position:relative;overflow:hidden}@media (width>=560px){.app{border-inline:1px solid var(--separator)}}.screen{overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;background:var(--bg);padding-bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 32px);position:absolute;inset:0;overflow:hidden auto}.screen.no-tabbar{padding-bottom:calc(var(--safe-bottom) + 24px)}.layer{z-index:10;position:absolute;inset:0}.layer.modal{z-index:30}.layer.push{animation:push-in .42s var(--ease-ios) both;box-shadow:-8px 0 24px #00000059}.layer.push.leaving{animation:push-out .3s var(--ease-ios) both}.layer.modal{animation:rise-in .45s var(--ease-ios) both}.layer.modal.leaving{animation:rise-out .3s var(--ease-ios) both}.layer.swiping{transition:none;animation:none}.layer.settling{transition:transform .25s var(--ease-ios)}@keyframes push-in{0%{transform:translate(100%)}to{transform:none}}@keyframes push-out{0%{transform:none}to{transform:translate(100%)}}@keyframes rise-in{0%{transform:translateY(100%)}to{transform:none}}@keyframes rise-out{0%{transform:none}to{transform:translateY(100%)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:scale(.6)}60%{transform:scale(1.06)}to{opacity:1;transform:none}}.navbar{z-index:5;min-height:calc(44px + var(--safe-top));padding:var(--safe-top) 8px 0;border-bottom:.5px solid #0000;grid-template-columns:1fr auto 1fr;align-items:center;transition:background-color .2s,border-color .2s;display:grid;position:sticky;top:0}.navbar.scrolled{background:var(--bar-bg);-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);border-bottom-color:var(--separator)}.navbar-title{text-align:center;white-space:nowrap;text-overflow:ellipsis;opacity:0;max-width:60vw;font-size:17px;font-weight:600;transition:opacity .2s;overflow:hidden}.navbar.scrolled .navbar-title,.navbar.always-title .navbar-title{opacity:1}.navbar-side{align-items:center;gap:4px;min-width:0;display:flex}.navbar-side.end{justify-content:flex-end}.nav-btn{height:44px;color:var(--accent);white-space:nowrap;align-items:center;gap:2px;padding:0 8px;font-size:17px;display:inline-flex}.nav-btn:active{opacity:.4}.nav-btn:disabled{opacity:.3}.nav-btn.strong{font-weight:600}.nav-btn svg{flex:none}.large-title{letter-spacing:.35px;padding:2px var(--gutter) 6px;font-size:34px;font-weight:700;line-height:41px}.subtitle{padding:0 var(--gutter);color:var(--label-2);font-size:15px}.tabbar{z-index:20;height:calc(var(--tabbar-h) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:var(--bar-bg);-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);border-top:.5px solid var(--separator);grid-template-columns:repeat(5,1fr);display:grid;position:absolute;bottom:0;left:0;right:0}.tab{letter-spacing:.1px;color:var(--label-3);flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:10px;font-weight:500;transition:color .15s;display:flex}.tab.active{color:var(--accent)}.tab:active{opacity:.6}.tab-add-circle{background:var(--accent);width:30px;height:30px;color:var(--on-accent);border-radius:50%;place-items:center;display:grid}.tab.add{color:var(--label-2)}.tab>svg,.tab>.tab-add-circle{width:28px;height:28px}.tab>svg{padding:1.5px}.section{margin-top:28px}.section:first-child{margin-top:8px}.section-header{padding:0 calc(var(--gutter) + 16px) 7px;text-transform:uppercase;letter-spacing:.3px;color:var(--label-2);justify-content:space-between;align-items:baseline;font-size:13px;display:flex}.section-footer{padding:7px calc(var(--gutter) + 16px) 0;color:var(--label-2);font-size:13px;line-height:1.35}.section-footer.error{color:var(--red);white-space:pre-line}.group{margin:0 var(--gutter);background:var(--surface);border-radius:var(--radius);overflow:hidden}.row{text-align:left;align-items:center;gap:12px;width:100%;min-height:48px;padding:10px 16px;display:flex;position:relative}.row+.row:before{content:"";top:0;right:0;left:var(--sep-inset,16px);border-top:.5px solid var(--separator);position:absolute}.row.with-icon{--sep-inset:58px}.row.with-avatar{--sep-inset:64px}button.row:active,label.row:active{background:var(--surface-2)}@media (hover:hover){button.row:not(:disabled):hover,label.row:hover{background:#ffffff08}}button.row:disabled{opacity:.4}.row-link{text-align:left;flex:1;align-self:stretch;align-items:center;gap:12px;min-width:0;display:flex}.row:has(>.row-link:active){background:var(--surface-2)}.row-main{flex:1;min-width:0}.row-title{white-space:nowrap;text-overflow:ellipsis;font-size:17px;overflow:hidden}.row-sub{color:var(--label-2);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:14px;overflow:hidden}.row-value{color:var(--label-2);flex:none;font-size:17px}.row-chevron{color:var(--label-3);flex:none;margin-right:-4px}.row.centered{justify-content:center}.row.accent{color:var(--accent)}.row.destructive{color:var(--red)}.row-icon{color:#fff;border-radius:8px;flex:none;place-items:center;width:30px;height:30px;font-size:15px;font-weight:700;display:grid}.check-circle{background:var(--accent);width:24px;height:24px;color:var(--on-accent);border-radius:50%;flex:none;place-items:center;display:grid}.avatar{color:#fff;border-radius:50%;flex:none;place-items:center;width:36px;height:36px;font-size:15px;font-weight:600;display:grid}.avatar.large{width:80px;height:80px;font-size:32px}.row-input{background:0 0;border:0;outline:0;flex:1;min-width:0;height:28px;padding:0}.row-input::placeholder{color:var(--label-3)}.input-prefix{color:var(--label-3);margin-right:-10px}.row .tick{color:var(--accent);flex:none}.btn{border-radius:14px;justify-content:center;align-items:center;gap:8px;width:100%;height:52px;padding:0 20px;font-size:17px;font-weight:600;transition:transform .12s,opacity .12s;display:flex}.btn:active:not(:disabled){opacity:.85;transform:scale(.97)}.btn:disabled{opacity:.35}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:disabled,.btn-tinted:disabled{background:var(--surface-2);color:var(--label-3);opacity:1}.btn-secondary{background:var(--surface-2);color:var(--label)}.btn-tinted{background:var(--accent-tint);color:var(--accent)}.btn-plain{color:var(--accent);background:0 0;height:44px}.btn-sub{opacity:.75;font-size:13px;font-weight:500;display:block}.pill{background:var(--accent-tint);height:30px;color:var(--accent);white-space:nowrap;border-radius:15px;flex:none;justify-content:center;align-items:center;gap:4px;padding:0 14px;font-size:15px;font-weight:600;display:inline-flex}.pill:active{opacity:.6}.pill.gray{background:var(--surface-2);color:var(--label)}.pill.red{background:var(--red-tint);color:var(--red)}.select-pill{background:var(--surface-2);height:32px;color:var(--accent);border-radius:16px;align-items:center;gap:4px;max-width:100%;padding:0 12px;font-size:15px;font-weight:600;display:inline-flex;position:relative}.select-pill span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-pill select{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.segmented{background:var(--surface-2);border-radius:9px;grid-auto-columns:1fr;grid-auto-flow:column;height:34px;padding:2px;display:grid;position:relative}.segmented-thumb{background:var(--surface-3);transition:transform .3s var(--ease-ios);border-radius:7px;position:absolute;top:2px;bottom:2px;left:2px;box-shadow:0 3px 8px #00000040}.segmented button{z-index:1;color:var(--label-2);font-size:13px;font-weight:500;transition:color .2s;position:relative}.segmented button[aria-pressed=true]{color:var(--label);font-weight:600}.segmented.padded{margin:0 var(--gutter)}.switch{appearance:none;background:var(--surface-3);cursor:pointer;border-radius:16px;flex:none;width:51px;height:31px;margin:0;transition:background-color .25s;position:relative}.switch:before{content:"";width:27px;height:27px;transition:transform .3s var(--ease-ios);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 3px 8px #00000026,0 1px 1px #00000029}.switch:checked{background:var(--accent)}.switch:checked:before{transform:translate(20px)}.switch:disabled{opacity:.4;cursor:default}.sheet-backdrop{z-index:40;background:#00000080;animation:.3s both fade-in;position:absolute;inset:0}.sheet-backdrop.leaving{animation:.25s both fade-out}.sheet{z-index:41;max-height:calc(100% - var(--safe-top) - 24px);padding-bottom:calc(var(--safe-bottom) + 20px);background:var(--bg);animation:rise-in .42s var(--ease-ios) both;border-radius:14px 14px 0 0;position:absolute;bottom:0;left:0;right:0;overflow-y:auto}.sheet.leaving{animation:rise-out .28s var(--ease-ios) both}.sheet-grabber{background:var(--surface-3);border-radius:3px;width:36px;height:5px;margin:6px auto 0}.sheet-header{grid-template-columns:1fr auto 1fr;align-items:center;min-height:50px;padding:0 8px;display:grid}.sheet-title{font-size:17px;font-weight:600}.sheet .section{margin-top:8px}.month-label{padding:0 var(--gutter);align-items:center;gap:4px;font-size:20px;font-weight:600;display:flex}.week{padding:12px calc(var(--gutter) - 4px) 0;grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.day{border-radius:16px;flex-direction:column;align-items:center;gap:6px;padding:8px 0 7px;display:flex}.day-name{letter-spacing:.4px;color:var(--label-3);text-transform:uppercase;font-size:11px;font-weight:600}.day-num{color:var(--label);font-size:18px;font-weight:600}.day-dot{background:0 0;border-radius:50%;width:5px;height:5px}.day.studied .day-dot{background:var(--accent)}.day.future .day-num{color:var(--label-3)}.day.today{background:var(--accent)}.day.today .day-name,.day.today .day-num{color:var(--on-accent)}.day.today.studied .day-dot{background:var(--on-accent)}.tiles{margin:20px var(--gutter) 0;grid-template-columns:1fr 1fr;gap:12px;display:grid}.tile{text-align:left;border-radius:18px;flex-direction:column;justify-content:space-between;gap:10px;min-height:112px;padding:14px;display:flex}.tile:active{transform:scale(.98)}.tile.blue{background:var(--tile-blue);color:#fff}.tile-badge{background:#fff3;border-radius:12px;align-self:flex-start;align-items:center;gap:5px;padding:4px 9px 4px 6px;font-size:13px;font-weight:600;display:inline-flex}.tile-value{font-size:22px;font-weight:700;line-height:1.1}.tile-sub{opacity:.8;margin-top:2px;font-size:13px}.tile.dashed{color:var(--label-2);text-align:center;border:1.5px dashed #fff3;justify-content:center;align-items:center;font-size:15px;font-weight:500}.tile.dashed .tab-add-circle{width:36px;height:36px}.card{margin:0 var(--gutter);background:var(--surface);border-radius:16px;padding:16px}.card-title{font-size:17px;font-weight:600}.card-sub{color:var(--label-2);margin-top:2px;font-size:13px}.stat-grid{margin:0 var(--gutter);grid-template-columns:1fr 1fr;gap:12px;display:grid}.stat{background:var(--surface);border-radius:16px;padding:14px 16px}.stat-label{color:var(--label-2);font-size:13px}.stat-value{letter-spacing:.2px;margin-top:4px;font-size:28px;font-weight:700}.stat-value small{color:var(--label-2);margin-left:3px;font-size:15px;font-weight:600}.counts{text-align:center;grid-template-columns:repeat(3,1fr);display:grid}.counts>div+div{border-left:.5px solid var(--separator)}.count-value{font-size:28px;font-weight:700}.count-label{color:var(--label-2);margin-top:2px;font-size:13px}.empty{text-align:center;flex-direction:column;align-items:center;gap:8px;padding:40px 32px;display:flex}.empty-icon{background:var(--surface);width:72px;height:72px;color:var(--accent);border-radius:22px;place-items:center;margin-bottom:8px;display:grid}.empty-title{font-size:22px;font-weight:700}.empty-text{color:var(--label-2);max-width:300px;font-size:15px;line-height:1.4}.empty .btn{max-width:280px;margin-top:16px}.fullscreen{background:var(--bg);padding:var(--safe-top) 0 calc(var(--safe-bottom) + 12px);flex-direction:column;display:flex;position:absolute;inset:0}.session-bar{min-height:52px;padding:0 var(--gutter) 0 6px;align-items:center;gap:12px;display:flex}.icon-btn{width:40px;height:40px;color:var(--label-2);border-radius:50%;place-items:center;display:grid}.icon-btn:active{background:var(--surface)}.progress{background:var(--surface-2);border-radius:3px;flex:1;height:6px;overflow:hidden}.progress-fill{background:var(--accent);height:100%;transition:width .35s var(--ease-ios);border-radius:3px}.session-count{text-align:right;min-width:28px;color:var(--label-2);font-variant-numeric:tabular-nums;font-size:15px;font-weight:600}.flashcard-area{min-height:0;padding:8px var(--gutter) 22px;flex:1;display:flex;position:relative}.swipe{--swipe:0;z-index:1;perspective:1400px;touch-action:pan-y;will-change:transform;animation:card-rise .38s var(--ease-ios) backwards;flex:1;display:flex;position:relative}@keyframes card-rise{0%{transform:translateY(12px)scale(.93)}}.swipe .card-html{-webkit-user-select:none;user-select:none}.card-behind{top:8px;bottom:22px;left:var(--gutter);right:var(--gutter);border:.5px solid var(--separator);transform-origin:50% 100%;background:#18181b;border-radius:24px;position:absolute;transform:translateY(12px)scale(.93)}.stamp{z-index:2;letter-spacing:1px;text-transform:uppercase;background:var(--surface);pointer-events:none;border:3px solid;border-radius:10px;padding:4px 12px;font-size:22px;font-weight:800;position:absolute;top:30px}.stamp.know{color:var(--accent);opacity:clamp(0, var(--swipe), 1);left:22px;transform:rotate(-12deg)}.stamp.dont{color:var(--red);opacity:clamp(0, calc(var(--swipe) * -1), 1);right:22px;transform:rotate(12deg)}.flashcard{transform-style:preserve-3d;transition:transform .55s var(--ease-ios);cursor:pointer;flex:1;position:relative}.flashcard.flipped{transform:rotateY(180deg)}.face{background:var(--surface);border:.5px solid var(--separator);backface-visibility:hidden;text-align:center;border-radius:24px;flex-direction:column;justify-content:safe center;padding:28px 22px;display:flex;position:absolute;inset:0;overflow-y:auto;box-shadow:0 10px 30px #00000059}.face.back{transform:rotateY(180deg)}.face-label{letter-spacing:.6px;text-transform:uppercase;color:var(--label-3);font-size:12px;font-weight:600;position:absolute;top:14px;left:0;right:0}.tap-hint{color:var(--label-3);margin-top:18px;font-size:13px}.face-question .card-html{color:var(--label-2);font-size:18px}.face-divider{border:0;border-top:.5px solid var(--separator);width:40%;margin:18px auto}.answer-bar{padding:0 var(--gutter)}.ratings{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.rating{border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:2px;height:60px;font-size:16px;font-weight:600;transition:transform .12s;display:flex}.rating:active{transform:scale(.95)}.ratings.two{grid-template-columns:1fr 1fr;gap:10px}.ratings.two .rating{height:64px;font-size:17px}.rating>span{align-items:center;gap:6px;display:inline-flex}.rating small{opacity:.8;font-size:12px;font-weight:500}.rating.again{background:var(--red-tint);color:var(--red)}.rating.good{background:var(--green-tint);color:var(--accent)}.done{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:10px;padding:0 32px;display:flex}.done-badge{background:var(--accent);width:96px;height:96px;color:var(--on-accent);animation:pop-in .5s var(--ease-ios) both;border-radius:50%;place-items:center;margin-bottom:12px;display:grid}.choices{padding:0 var(--gutter);flex-direction:column;gap:10px;display:flex}.choice{background:var(--surface);text-align:left;border-radius:14px;align-items:center;gap:12px;min-height:54px;padding:12px 16px;font-size:17px;transition:background-color .2s,transform .12s;display:flex}.choice:active:not(:disabled){transform:scale(.98)}.choice span{flex:1}.choice.correct{background:var(--green-tint);color:var(--accent)}.choice.wrong{background:var(--red-tint);color:var(--red)}.choice:disabled:not(.correct):not(.wrong){opacity:.45}.exam-card{margin:4px var(--gutter) 18px;background:var(--surface);text-align:center;border-radius:24px;padding:28px 20px}.exam-card.answer{background:var(--surface-2);margin-top:14px}.card-html{color:var(--label);overflow-wrap:anywhere;-webkit-user-select:text;user-select:text;font-size:24px;line-height:1.4}.card-html img,.card-html video{border-radius:10px;max-width:100%;height:auto}.card-html audio{max-width:100%;margin-top:8px}.card-html .cloze{color:#64a8ff;font-weight:700}.card-html hr{border:0;border-top:.5px solid var(--separator);margin:16px 0}.card-html a{color:var(--blue)}.chart-readout{align-items:baseline;gap:8px;min-height:22px;margin-top:14px;display:flex}.chart-readout strong{font-size:22px;font-weight:700}.chart-readout span{color:var(--label-2);font-size:13px}.chart svg{width:100%;display:block;overflow:visible}.chart .col{cursor:pointer}.chart .axis-label{fill:var(--chart-muted);font-size:10px}.chart .axis-label.selected{fill:var(--label);font-weight:600}.legend{color:var(--label-2);flex-wrap:wrap;gap:6px 14px;margin-top:12px;font-size:13px;display:flex}.legend-item{align-items:center;gap:6px;display:inline-flex}.swatch{border-radius:3px;flex:none;width:10px;height:10px}.rings{align-items:center;gap:18px;margin-top:14px;display:flex}.ring-legend{flex-direction:column;flex:1;gap:10px;min-width:0;display:flex}.ring-legend-item{align-items:center;gap:8px;font-size:15px;display:flex}.ring-legend-item .label{color:var(--label-2);flex:1}.ring-legend-item .value{font-weight:600}.stacked-bar{background:var(--chart-track);border-radius:4px;gap:2px;height:12px;margin-top:14px;display:flex;overflow:hidden}.stacked-bar>div{height:100%;transition:width .4s var(--ease-ios)}.score-ring{place-items:center;display:grid;position:relative}.score-ring-label{text-align:center;position:absolute}.score-ring-label strong{font-size:34px;font-weight:700;display:block}.score-ring-label span{color:var(--label-2);font-size:13px}.auth{padding:calc(var(--safe-top) + 24px) 0 calc(var(--safe-bottom) + 24px);flex-direction:column;justify-content:center;display:flex;position:absolute;inset:0;overflow-y:auto}.auth-logo{border-radius:22px;width:88px;height:88px;margin:0 auto 18px;display:block}.auth-title{text-align:center;font-size:34px;font-weight:700}.auth-tagline{max-width:280px;color:var(--label-2);text-align:center;margin:6px auto 28px;font-size:15px;line-height:1.4}.loading-screen{place-items:center;height:100%;display:grid}.loading-screen img{opacity:.9;border-radius:18px;width:72px;height:72px}.stack-gap>*+*{margin-top:12px}.pad{padding:0 var(--gutter)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
