*,*:before,*:after{box-sizing:border-box}*{margin:0}html{interpolate-size:allow-keywords}body{line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p{overflow-wrap:break-word;text-wrap:pretty}h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;text-wrap:balance}#root,#app{isolation:isolate}:root{--ink: #122544;--ink-2: #1d3a63;--ink-soft: #5d6d8c;--warm-white: #fff8f0;--paper: #ffffff;--paper-edge: #f2e6d9;--coral: #fb6a54;--coral-deep: #e8523c;--coral-tint: #ffe4dd;--mint: #3ee0a8;--mint-deep: #16b884;--mint-tint: #d9f9ed;--surface: var(--paper);--bg: var(--warm-white);--text: var(--ink);--text-soft: var(--ink-soft);--line: #efe2d5;--shadow-lift: 0 1px 2px rgba(18, 37, 68, .06), 0 10px 24px -12px rgba(18, 37, 68, .18);--shadow-float: 0 2px 4px rgba(18, 37, 68, .06), 0 18px 40px -16px rgba(18, 37, 68, .28), 0 42px 64px -40px rgba(18, 37, 68, .32);--font-display: ui-rounded, "SF Pro Rounded", "Segoe UI Variable Display", "Nunito", system-ui, sans-serif;--font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--radius-card: 28px;--radius-pill: 999px;--radius-field: 14px;--spring: cubic-bezier(.34, 1.56, .64, 1);--ease-out: cubic-bezier(.22, .8, .36, 1);font-family:var(--font-sans);color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--surface: #182f52;--bg: #0b1b31;--text: #fff8f0;--text-soft: #a9bcd8;--line: #24405f;--paper-edge: #24405f;--shadow-lift: 0 1px 2px rgba(0, 0, 0, .3), 0 12px 26px -14px rgba(0, 0, 0, .6);--shadow-float: 0 2px 6px rgba(0, 0, 0, .35), 0 20px 44px -18px rgba(0, 0, 0, .65), 0 44px 70px -44px rgba(0, 0, 0, .7)}}body{min-height:100dvh;background-color:var(--bg);color:var(--text);background-image:radial-gradient(70ch 50ch at 12% -10%,rgba(251,106,84,.09),transparent 70%),radial-gradient(60ch 44ch at 92% 4%,rgba(62,224,168,.11),transparent 70%);background-repeat:no-repeat}h1,h2,h3{font-family:var(--font-display);font-weight:800;letter-spacing:-.02em;line-height:1.1}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.page{max-width:60ch;margin-inline:auto;padding:clamp(2rem,8vw,5rem) 1.5rem;display:flex;flex-direction:column;align-items:flex-start;gap:1rem}.page h1{font-size:clamp(3rem,14vw,5rem);color:var(--coral)}.empty{color:var(--text-soft);text-align:center;padding:2rem 1rem}.button{font-family:var(--font-display);font-weight:800;letter-spacing:-.01em;border:none;border-radius:var(--radius-pill);padding:1rem 2rem;cursor:pointer;color:var(--warm-white);background:var(--ink);transition:transform .22s var(--spring),box-shadow .22s var(--ease-out),background-color .16s linear;box-shadow:var(--shadow-lift)}.button:hover:not(:disabled){transform:translateY(-2px)}.button:active:not(:disabled){transform:translateY(1px) scale(.985)}.button:disabled{opacity:.45;cursor:not-allowed}.button--primary{background:var(--coral)}.button--ghost{background:transparent;color:var(--text);box-shadow:inset 0 0 0 2px var(--line)}.button--ghost:hover{box-shadow:inset 0 0 0 2px var(--coral)}.button--start{display:flex;flex-direction:column;align-items:center;gap:.15rem;width:min(100%,30rem);padding:1.4rem 2rem;font-size:1.75rem;background:var(--coral);box-shadow:0 2px 3px #e8523c40,0 16px 30px -12px #fb6a54a6}.button--start:hover:not(:disabled){background:var(--coral-deep)}.button__sub{font-family:var(--font-sans);font-size:.8125rem;font-weight:500;letter-spacing:0;opacity:.85}.button--got{background:var(--mint);color:var(--ink);flex:1}.button--miss{background:transparent;color:var(--text);box-shadow:inset 0 0 0 2px var(--coral-tint);flex:1}@media(prefers-color-scheme:dark){.button--miss{box-shadow:inset 0 0 0 2px var(--coral)}}.chip{font:inherit;font-size:.875rem;font-weight:600;color:var(--text-soft);background:transparent;border:none;border-radius:var(--radius-pill);padding:.5rem 1rem;cursor:pointer;box-shadow:inset 0 0 0 1.5px var(--line);transition:color .16s linear,box-shadow .16s linear,background-color .16s linear,transform .2s var(--spring)}.chip:hover{color:var(--text);transform:translateY(-1px)}.chip[aria-pressed=true]{color:var(--ink);background:var(--mint-tint);box-shadow:inset 0 0 0 1.5px var(--mint)}.chip--warn{color:var(--coral-deep);box-shadow:inset 0 0 0 1.5px var(--coral)}.chip--quiet{box-shadow:none}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;width:100%}.stat{display:flex;flex-direction:column;gap:.1rem}.stat__label{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-soft)}.stat__value{font-family:var(--font-display);font-size:1.5rem;font-weight:800;letter-spacing:-.02em}.ring{position:relative;display:grid;place-items:center;flex:none}.ring__track{stroke:var(--line)}.ring__arc{stroke:var(--mint);transition:stroke-dashoffset .42s var(--ease-out),stroke .2s linear}.ring[data-tone=coral] .ring__arc{stroke:var(--coral)}.ring__value{position:absolute;font-family:var(--font-display);font-weight:800;font-size:.8125rem;letter-spacing:-.02em}.home{max-width:40rem;margin-inline:auto;padding:clamp(1.75rem,6vw,3.5rem) clamp(1.25rem,5vw,2rem) 4rem;display:flex;flex-direction:column;gap:clamp(2rem,6vw,3rem)}.home__header{display:flex;flex-direction:column;gap:1.25rem}.wordmark{font-family:var(--font-display);font-weight:800;font-size:.9375rem;letter-spacing:.02em;color:var(--text-soft)}.wordmark__spark{color:var(--mint-deep);padding-inline:.15em}.home__greeting{font-size:clamp(2rem,8vw,2.75rem);max-width:22ch}.stack{display:flex;flex-direction:column;gap:1.25rem}.stack__stage{position:relative;padding-bottom:2.75rem}.deckcard{border-radius:var(--radius-card);background:var(--surface);text-align:left;border:none}.deckcard--front{position:relative;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:1.25rem;padding:1.75rem;box-shadow:var(--shadow-float);animation:rise-in .52s var(--spring) both}.deckcard--behind{position:absolute;inset:auto 0 0;z-index:calc(3 - var(--depth));display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.1rem 1.75rem;font:inherit;color:var(--text-soft);cursor:pointer;box-shadow:var(--shadow-lift);transform:translateY(calc(var(--depth) * .9rem - 2.75rem)) scale(calc(1 - var(--depth) * .02));transition:transform .32s var(--spring),color .16s linear}.deckcard--behind:hover,.deckcard--behind:focus-visible{color:var(--text);transform:translateY(calc(var(--depth) * .9rem - 2.35rem)) scale(calc(1 - var(--depth) * .02))}.deckcard__name{font-family:var(--font-display);font-weight:700;font-size:.9375rem}.deckcard__count{font-size:.8125rem;font-variant-numeric:tabular-nums}.deckcard__body{display:flex;flex-direction:column;gap:.35rem;min-width:0}.deckcard__eyebrow{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--coral)}.deckcard__title{font-size:clamp(1.5rem,6vw,1.875rem)}.deckcard__meta{font-size:.875rem;color:var(--text-soft)}.stack__tools{display:flex;flex-wrap:wrap;gap:.5rem}.cardlist{list-style:none;padding:0;display:flex;flex-direction:column;gap:.25rem}.cardlist__item{display:grid;grid-template-columns:1fr 1fr auto;align-items:center;gap:.75rem;padding:.6rem .9rem;border-radius:var(--radius-field);background:var(--surface);box-shadow:var(--shadow-lift);font-size:.875rem}.cardlist__front{font-weight:600}.cardlist__back{color:var(--text-soft)}.cardlist__remove{font:inherit;font-size:.75rem;font-weight:600;color:var(--text-soft);background:none;border:none;padding:.25rem .35rem;cursor:pointer;border-radius:var(--radius-pill)}.cardlist__remove:hover{color:var(--coral-deep)}.cardlist__empty{color:var(--text-soft);font-size:.875rem;padding:.5rem .25rem}.launch{display:flex;flex-direction:column;align-items:center;gap:1rem}.toggles{display:flex;gap:.5rem}.quickadd{display:flex;flex-direction:column;gap:.85rem;padding:1.5rem;border-radius:var(--radius-card);background:var(--surface);box-shadow:var(--shadow-lift)}.quickadd__title{font-size:1.125rem}.quickadd__row{display:flex;flex-wrap:wrap;gap:.85rem}.quickadd__row--tail{align-items:flex-end}.quickadd__submit{padding:.7rem 1.4rem;font-size:.9375rem}.quickadd__status{font-size:.8125rem;color:var(--mint-deep);min-height:1.25rem}.field{display:flex;flex-direction:column;gap:.3rem;flex:1 1 12rem;min-width:0}.field__label{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-soft)}.field__input{width:100%;padding:.7rem .9rem;border-radius:var(--radius-field);border:1.5px solid var(--line);background:var(--bg);color:var(--text);transition:border-color .16s linear,box-shadow .16s linear}.field__input:focus-visible{outline:none;border-color:var(--coral);box-shadow:0 0 0 4px var(--coral-tint)}.study{min-height:100dvh;display:flex;flex-direction:column;gap:1rem;padding:clamp(1rem,4vw,1.75rem) clamp(1rem,5vw,2rem) clamp(1.5rem,5vw,2.5rem);max-width:42rem;margin-inline:auto;width:100%}.study__bar{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.study__deck{display:flex;flex-direction:column;align-items:center;line-height:1.2;min-width:0}.study__deckName{font-family:var(--font-display);font-weight:700;font-size:.9375rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:12ch}.study__position{font-size:.75rem;color:var(--text-soft);font-variant-numeric:tabular-nums}.study__meters{display:flex;align-items:center;gap:.5rem}.study__clock{font-family:var(--font-display);font-weight:800;font-size:.875rem;font-variant-numeric:tabular-nums;color:var(--text-soft)}.streakpill{display:inline-flex;align-items:center;gap:.2rem;padding:.2rem .55rem;border-radius:var(--radius-pill);background:var(--mint-tint);color:var(--ink);font-family:var(--font-display);font-weight:800;font-size:.8125rem;animation:pop .32s var(--spring)}.study__stage{position:relative;flex:1;display:grid;place-items:center;perspective:1400px;min-height:0}.study__ghost{position:absolute;width:min(86vw,26rem);height:min(62vh,24rem);border-radius:var(--radius-card);background:var(--surface);box-shadow:var(--shadow-lift)}.study__ghost--one{transform:translateY(1.1rem) scale(.965);opacity:.85}.study__ghost--two{transform:translateY(2.1rem) scale(.93);opacity:.6}.flashcard{position:relative;width:min(86vw,26rem);height:min(62vh,24rem);padding:0;border:none;background:none;cursor:pointer;transform-style:preserve-3d;animation:deal-in .4s var(--spring) both}.flashcard__inner{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .56s var(--spring)}.flashcard[data-flipped=true] .flashcard__inner{transform:rotateY(180deg)}.flashcard__face{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem;border-radius:var(--radius-card);background:var(--surface);box-shadow:var(--shadow-float);backface-visibility:hidden;-webkit-backface-visibility:hidden}.flashcard__face--back{transform:rotateY(180deg);background:linear-gradient(165deg,var(--surface),var(--mint-tint))}@media(prefers-color-scheme:dark){.flashcard__face--back{background:linear-gradient(165deg,var(--surface),#1c4a48)}}.flashcard__eyebrow{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-soft)}.flashcard__face--back .flashcard__eyebrow{color:var(--mint-deep)}.flashcard__text{font-family:var(--font-display);font-weight:800;font-size:clamp(1.5rem,6.5vw,2.25rem);line-height:1.15;letter-spacing:-.02em;text-align:center;text-wrap:balance;color:var(--text);overflow-wrap:break-word}.flashcard__hint{position:absolute;left:50%;bottom:-1.75rem;transform:translate(-50%);font-size:.75rem;color:var(--text-soft);white-space:nowrap}.flashcard[data-exit]{pointer-events:none}.flashcard[data-exit=right]{animation:fly-out .42s var(--ease-out) forwards}.flashcard[data-exit=wrong]{animation:shake-away .42s ease-in forwards}.burst{position:absolute;inset:50% auto auto 50%;width:0;height:0;pointer-events:none}.burst__piece{position:absolute;width:.55rem;height:.55rem;border-radius:2px;background:var(--mint);transform:rotate(calc(var(--piece) * 45deg));animation:burst-out .52s var(--ease-out) forwards}.burst__piece:nth-child(2n){background:var(--coral);width:.4rem;height:.4rem;border-radius:50%}.study__grade{display:flex;gap:.75rem;align-items:center;min-height:3.5rem}.study__hint{flex:1;text-align:center;font-size:.875rem;color:var(--text-soft)}.study--recap{justify-content:center}.recap{display:flex;flex-direction:column;align-items:center;gap:1.25rem;text-align:center;animation:rise-in .52s var(--spring) both}.recap__eyebrow{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--mint-deep)}.recap__title{font-size:clamp(1.75rem,7vw,2.5rem)}.recap__percent{font-size:2.5rem}.recap__note{color:var(--text-soft);max-width:32ch}.recap__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;width:100%;padding:1.25rem;border-radius:var(--radius-card);background:var(--surface);box-shadow:var(--shadow-lift);text-align:left}.recap__missed{width:100%;text-align:left}.recap__missedTitle{font-size:.8125rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-soft);margin-bottom:.5rem}.recap__missed ul{list-style:none;padding:0;display:flex;flex-direction:column;gap:.25rem}.recap__missed li{display:flex;justify-content:space-between;gap:1rem;padding:.5rem .9rem;border-radius:var(--radius-field);background:var(--surface);font-size:.875rem}.recap__missedFront{font-weight:600}.recap__missedBack{color:var(--text-soft)}.recap__actions{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;margin-top:.5rem}@keyframes rise-in{0%{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}@keyframes pop{0%{transform:scale(.7)}to{transform:scale(1)}}@keyframes deal-in{0%{opacity:0;transform:translateY(1.6rem) scale(.95)}to{opacity:1;transform:none}}@keyframes fly-out{40%{transform:translate(6%,-4%) rotate(3deg) scale(1.02);opacity:1}to{transform:translate(120%,-18%) rotate(14deg) scale(.9);opacity:0}}@keyframes shake-away{0%,to{opacity:1}12%{transform:translate(-9px) rotate(-1.4deg)}28%{transform:translate(8px) rotate(1.2deg)}44%{transform:translate(-5px) rotate(-.8deg)}60%{transform:translate(3px) rotate(.4deg)}to{transform:translate(-8%,16%) rotate(-4deg) scale(.94);opacity:0}}@keyframes burst-out{0%{opacity:1;transform:rotate(calc(var(--piece) * 45deg)) translateY(0) scale(1)}to{opacity:0;transform:rotate(calc(var(--piece) * 45deg)) translateY(-7.5rem) scale(.4)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.flashcard[data-flipped=true] .flashcard__inner{transform:rotateY(180deg)}}@media(max-width:26rem){.stats,.recap__stats{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:1rem}}
