.fc-wrap{gap:20px}.flashcard{all:unset;display:block;width:100%;cursor:pointer;perspective:1200px;min-height:300px}.flashcard:focus-visible{outline:2px solid var(--tint-blue);outline-offset:4px;border-radius:16px}.flashcard-inner{position:relative;width:100%;min-height:300px;transform-style:preserve-3d;transition:transform .38s cubic-bezier(.2,.8,.2,1)}.flashcard-flipped .flashcard-inner{transform:rotateY(180deg)}.flashcard-face{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:28px 24px 20px;backface-visibility:hidden;-webkit-backface-visibility:hidden;text-align:center}.flashcard-back{transform:rotateY(180deg)}.fc-label{font-size:var(--fs-caption1);text-transform:uppercase;letter-spacing:.07em;font-weight:600}.fc-text{margin:0;font-size:clamp(var(--fs-title2),5vw,var(--fs-large-title));font-weight:700;text-align:center;line-height:1.25;letter-spacing:-.01em;word-break:break-word;overflow-wrap:anywhere;flex:1;display:flex;align-items:center;justify-content:center}.fc-foot{display:flex;align-items:center;gap:8px;min-height:22px}.fc-new{padding:2px 8px;border-radius:999px;background:var(--tint-blue);color:#fff;font-size:var(--fs-caption1);font-weight:700;letter-spacing:.05em;text-transform:uppercase}.fc-hint{font-size:var(--fs-caption1);color:var(--label-secondary);letter-spacing:.03em;opacity:.7;transition:opacity var(--ms-fast) var(--ease-out)}.fc-hint--hidden{opacity:0;pointer-events:none}.fc-grades{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;transition:opacity var(--ms-base) var(--ease-out),transform var(--ms-base) var(--ease-out);opacity:.3;transform:translateY(6px);pointer-events:none}.fc-grades--active{opacity:1;transform:translateY(0);pointer-events:auto}.fc-grade-btn{font-size:var(--fs-subhead)!important;font-weight:700;padding:10px 4px;min-height:44px;border-radius:999px!important}.fc-grade-btn:disabled{opacity:.6;cursor:not-allowed}.fc-grade-btn:not(:disabled):active{transform:scale(.88)!important}@media (prefers-reduced-motion: reduce){.flashcard-inner,.fc-hint,.fc-grades{transition:none}.fc-grade-btn:not(:disabled):active{transform:none!important}}:root{--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Inter", system-ui, sans-serif;--fs-large-title: 34px;--fs-title1: 28px;--fs-title2: 22px;--fs-body: 17px;--fs-subhead: 15px;--fs-footnote: 13px;--fs-caption1: 12px;--radius-xs: 6px;--radius-sm: 10px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-pill: 999px;--ms-fast: .12s;--ms-base: .24s;--ms-slow: .36s;--ease-out: cubic-bezier(.2, .7, .2, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--safe-top: env(safe-area-inset-top);--safe-bottom: env(safe-area-inset-bottom);color-scheme:light dark}:root,:root[data-resolved-theme=light]{--bg-primary: #ffffff;--bg-secondary: #f2f2f7;--bg-elevated: #ffffff;--label-primary: rgba(0, 0, 0, .9);--label-secondary: rgba(60, 60, 67, .6);--separator: rgba(60, 60, 67, .29);--tint-blue: #007aff;--tint-green: #34c759;--tint-red: #ff3b30;--tint-amber: #ff9500;--glass-bg: rgba(255, 255, 255, .6);--glass-stroke: rgba(255, 255, 255, .5);--shadow-sheet: 0 -8px 24px rgba(0, 0, 0, .15);--shadow-dropdown: 0 8px 24px rgba(0, 0, 0, .12);--scrim: rgba(0, 0, 0, .35);color-scheme:light}:root[data-resolved-theme=dark]{--bg-primary: #000000;--bg-secondary: #1c1c1e;--bg-elevated: #1c1c1e;--label-primary: rgba(255, 255, 255, .92);--label-secondary: rgba(235, 235, 245, .6);--separator: rgba(84, 84, 88, .6);--tint-blue: #0a84ff;--tint-green: #30d158;--tint-red: #ff453a;--tint-amber: #ff9f0a;--glass-bg: rgba(28, 28, 30, .55);--glass-stroke: rgba(255, 255, 255, .08);--shadow-sheet: 0 -8px 24px rgba(0, 0, 0, .6);--shadow-dropdown: 0 8px 24px rgba(0, 0, 0, .5);--scrim: rgba(0, 0, 0, .55);color-scheme:dark}:root[data-resolved-theme=pink]{--bg-primary: #fff5f8;--bg-secondary: #ffe6ef;--bg-elevated: #ffffff;--label-primary: rgba(80, 15, 40, .92);--label-secondary: rgba(150, 60, 90, .7);--separator: rgba(210, 120, 150, .3);--tint-blue: #ff2d87;--tint-green: #34c759;--tint-red: #ff3b30;--tint-amber: #ff9500;--glass-bg: rgba(255, 220, 232, .6);--glass-stroke: rgba(255, 255, 255, .6);--shadow-sheet: 0 -8px 24px rgba(180, 60, 100, .2);--shadow-dropdown: 0 8px 24px rgba(180, 60, 100, .18);--scrim: rgba(120, 20, 60, .35);color-scheme:light}:root[data-resolved-theme=lemon]{--bg-primary: #fffef2;--bg-secondary: #fff9c4;--bg-elevated: #ffffff;--label-primary: rgba(60, 45, 0, .92);--label-secondary: rgba(120, 100, 20, .7);--separator: rgba(180, 160, 20, .35);--tint-blue: #f9a825;--tint-green: #689f38;--tint-red: #e65100;--tint-amber: #ffb300;--glass-bg: rgba(255, 249, 196, .6);--glass-stroke: rgba(255, 255, 255, .6);--shadow-sheet: 0 -8px 24px rgba(180, 150, 0, .2);--shadow-dropdown: 0 8px 24px rgba(180, 150, 0, .18);--scrim: rgba(80, 60, 0, .35);color-scheme:light}*{box-sizing:border-box}html,body,#root{min-height:100vh}body{margin:0;font-family:var(--font-sans);font-size:var(--fs-body);color:var(--label-primary);background:var(--bg-secondary);-webkit-font-smoothing:antialiased;transition:background-color var(--ms-base) var(--ease-out),color var(--ms-base) var(--ease-out)}*:focus{outline:none}*:focus-visible{outline:2px solid var(--tint-blue);outline-offset:2px;border-radius:2px}.skip-link{position:fixed;top:8px;left:8px;z-index:100;padding:8px 12px;background:var(--tint-blue);color:#fff;border-radius:var(--radius-sm);text-decoration:none;font-weight:600;transform:translateY(-200%)}.skip-link:focus-visible{transform:translateY(0)}main{max-width:560px;margin:0 auto;padding:20px}main.wrap>*+*{margin-top:16px}.center{display:flex;align-items:center;justify-content:center;min-height:100dvh}.center-text{text-align:center}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;align-items:center;gap:12px}.row.between{justify-content:space-between}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.safe-pad-top{padding-top:max(20px,var(--safe-top))}.safe-pad-bot{padding-bottom:max(20px,var(--safe-bottom))}.glass-panel{background:var(--glass-bg);-webkit-backdrop-filter:blur(12px) saturate(180%);backdrop-filter:blur(12px) saturate(180%);border:.5px solid var(--glass-stroke);border-radius:16px}.card{padding:20px}.large-title{font-size:var(--fs-large-title);font-weight:700;margin:0;letter-spacing:-.02em}.title2{font-size:var(--fs-title2);font-weight:600;margin:0}.label-secondary{color:var(--label-secondary)}.err{color:var(--tint-red);font-size:var(--fs-footnote)}.field{display:flex;flex-direction:column;gap:4px;font-size:var(--fs-footnote);color:var(--label-secondary)}.field input{font:inherit;font-size:var(--fs-body);color:var(--label-primary);padding:12px 14px;border:1px solid var(--separator);border-radius:12px;background:var(--bg-primary);min-height:44px}.field input:focus{outline:2px solid var(--tint-blue);outline-offset:1px}button{font:inherit;cursor:pointer}.link{background:none;border:0;color:var(--tint-blue);padding:8px;font-size:var(--fs-body)}.primary,.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:12px 16px;border-radius:12px;border:0;background:var(--tint-blue);color:#fff;text-decoration:none;font-weight:600;transition:transform .12s ease}.primary:active,.btn:active{transform:scale(.96)}.primary:disabled{opacity:.5}.tone-red{background:var(--tint-red)}.tone-green{background:var(--tint-green)}.tone-amber{background:var(--tint-amber)}.tone-blue{background:var(--tint-blue)}.list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.list li{padding:10px 0;border-bottom:1px solid var(--separator)}.list li:last-child{border-bottom:0}.field-input{width:100%;font:inherit;font-size:var(--fs-body);color:var(--label-primary);padding:12px 14px;border:1px solid var(--separator);border-radius:12px;background:var(--bg-primary);min-height:44px}.field-input:focus{outline:2px solid var(--tint-blue);outline-offset:1px}.dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;padding:6px 0;z-index:10;max-height:320px;overflow-y:auto;box-shadow:var(--shadow-dropdown)}.dropdown .list{gap:0;padding:0 6px}.dropdown .list li{border-bottom:0;padding:0}.dropdown-row{width:100%;display:flex;align-items:center;gap:10px;padding:10px 12px;text-align:left;min-height:44px;background:transparent;border:0;border-radius:10px;color:var(--label-primary);font-size:var(--fs-body)}.dropdown-row:hover{background:var(--bg-secondary)}.dropdown-row .base-form{font-weight:600}.dropdown-row .translation{margin-left:auto;font-size:var(--fs-subhead)}.dropdown-row .pos{font-size:var(--fs-caption1);opacity:.8}.dropdown-row.add-new{color:var(--tint-blue);border-top:1px solid var(--separator);margin-top:4px}.block-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:8px}.block-chip{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px;min-height:56px;border-radius:12px;border:1px solid var(--separator);background:var(--bg-primary);color:var(--label-primary);text-align:left;transition:transform .12s ease}.block-chip:active{transform:scale(.96)}.block-chip.known{border-color:var(--tint-blue)}.block-chip .block-text{font-weight:600;font-size:var(--fs-body)}.block-chip .block-sub{font-size:var(--fs-caption1)}.token-row{display:flex;flex-wrap:wrap;gap:6px;padding:8px 0}.token{padding:6px 10px;border-radius:8px;font-size:var(--fs-body);border:1px solid var(--separator);background:var(--bg-primary)}.token-ok{border-color:var(--tint-green)}.token-mismatch,.token-unknown{border-color:var(--tint-red);color:var(--tint-red)}.token-missing{border-color:var(--tint-red);border-style:dashed;opacity:.7}.token-extra{border-color:var(--tint-red);text-decoration:line-through;opacity:.7}.ok-text{color:var(--tint-green);font-weight:600}.shadow-stack{display:flex;flex-direction:column;gap:12px;align-items:stretch}.mic-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:56px;padding:12px 16px;border-radius:var(--radius-xl);border:1px solid var(--separator);background:var(--bg-primary);color:var(--label-primary);font-weight:600;font-size:var(--fs-body);transition:background-color var(--ms-fast) var(--ease-out),border-color var(--ms-fast) var(--ease-out),transform .12s ease}.mic-btn:active{transform:scale(.98)}.mic-btn .mic-dot{width:10px;height:10px;border-radius:999px;background:var(--tint-red);box-shadow:0 0 0 0 var(--tint-red)}.mic-btn.listening{border-color:var(--tint-red);color:var(--tint-red)}.mic-btn.listening .mic-dot{animation:micPulse 1.2s var(--ease-out) infinite}.mic-btn.passed{border-color:var(--tint-green);color:var(--tint-green)}.mic-btn.passed .mic-dot{background:var(--tint-green);animation:none}@keyframes micPulse{0%{box-shadow:0 0 #ff3b3099}70%{box-shadow:0 0 0 12px #ff3b3000}to{box-shadow:0 0 #ff3b3000}}.transcript{padding:10px 14px;border-radius:var(--radius-md);background:var(--bg-secondary);border:1px solid var(--separator);color:var(--label-primary);font-size:var(--fs-body);margin:0;min-height:44px;word-break:break-word}.transcript-interim{color:var(--label-secondary);font-style:italic}.challenge-card .badge-ok{align-self:flex-start;padding:4px 10px;border-radius:999px;background:var(--tint-green);color:#fff;font-size:var(--fs-footnote);font-weight:600}.progress-wrap{height:6px;border-radius:3px;overflow:hidden;background:var(--separator)}.progress-bar{height:100%;background:var(--tint-blue);transition:width .36s cubic-bezier(.2,.7,.2,1)}.sheet-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;pointer-events:none}.sheet-root.open{pointer-events:auto}.sheet-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--scrim);opacity:0;transition:opacity var(--ms-base) var(--ease-out)}.sheet-root.open .sheet-scrim{opacity:1}.sheet{position:absolute;left:0;right:0;bottom:0;max-width:560px;margin:0 auto;padding:12px 20px max(24px,var(--safe-bottom));display:flex;flex-direction:column;gap:14px;background:var(--bg-elevated);border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl);box-shadow:var(--shadow-sheet);transform:translateY(100%);transition:transform var(--ms-slow) var(--ease-out)}.sheet-root.open .sheet{transform:translateY(0)}.sheet-handle{width:36px;height:5px;border-radius:999px;background:var(--separator);margin:4px auto}.sheet-actions{margin-top:4px}.seg{display:inline-flex;flex-wrap:wrap;padding:2px;gap:2px;background:var(--bg-secondary);border:1px solid var(--separator);border-radius:var(--radius-sm);max-width:100%}.seg button{min-height:32px;padding:4px 8px;background:transparent;border:0;border-radius:8px;color:var(--label-secondary);font-size:var(--fs-footnote);font-weight:600;transition:background-color var(--ms-fast) var(--ease-out),color var(--ms-fast) var(--ease-out)}.seg button[aria-pressed=true]{background:var(--bg-elevated);color:var(--label-primary);box-shadow:0 1px 2px #00000014}.page-enter{animation:pageEnter var(--ms-base) var(--ease-out)}@keyframes pageEnter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){body,.progress-bar,.sheet,.sheet-scrim,.primary,.btn,.block-chip,.seg button,.mic-btn{transition:none}.primary:active,.btn:active,.block-chip:active,.mic-btn:active{transform:none}.page-enter,.mic-btn.listening .mic-dot{animation:none}}.lang-row{display:flex;align-items:center;gap:14px;width:100%;padding:14px 16px;background:var(--bg-elevated);color:var(--label-primary);border:1px solid var(--separator);border-radius:var(--radius-lg, 14px);text-align:left;cursor:pointer;transition:transform var(--ms-fast, .12s) var(--ease-out),border-color var(--ms-fast, .12s) var(--ease-out)}.lang-row:hover{border-color:var(--tint-blue)}.lang-row:active{transform:scale(.99)}.lang-row:disabled{opacity:.6;cursor:progress}.lang-row.active{border-color:var(--tint-blue)}.lang-row.compact{padding:8px 10px;border:none;background:transparent;border-radius:10px}.lang-row.compact:hover{background:var(--bg-elevated)}.lang-flag{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;background:var(--bg-elevated);border:1px solid var(--separator);font-size:24px;line-height:1;flex-shrink:0}.lang-flag.sm{width:26px;height:26px;font-size:16px}.link.danger{color:var(--tint-red, #ff3b30)}.lang-switcher{position:relative}.lang-switcher-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--separator);background:var(--bg-elevated);font-size:18px;cursor:pointer}.lang-switcher-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:20;min-width:200px;padding:6px;box-shadow:var(--shadow-dropdown, 0 8px 24px rgba(0,0,0,.14))}:root,:root[data-resolved-theme=light],:root[data-resolved-theme=pink],:root[data-resolved-theme=lemon]{--heat-1: #9be9a8;--heat-2: #40c463;--heat-3: #30a14e;--heat-4: #216e39}:root[data-resolved-theme=dark]{--heat-1: #0e4429;--heat-2: #006d32;--heat-3: #26a641;--heat-4: #39d353}.heatmap-wrap{overflow-x:auto}.heatmap-summary{display:flex;gap:20px;margin-bottom:10px;font-size:var(--fs-subhead)}.heatmap-container{display:flex;flex-direction:column;gap:4px;min-width:max-content}.heatmap-months{display:grid;grid-auto-flow:column;grid-auto-columns:11px;gap:2px;font-size:var(--fs-caption1);color:var(--label-secondary);padding-left:18px}.heatmap-month-label{white-space:nowrap}.heatmap-body{display:flex;gap:4px}.heatmap-days{display:flex;flex-direction:column;gap:2px;padding-top:2px;font-size:9px;color:var(--label-secondary);width:14px;flex-shrink:0}.heatmap-day-label{height:11px;line-height:11px;text-align:right}.heatmap-grid{display:flex;gap:2px}.heatmap-week{display:flex;flex-direction:column;gap:2px}.heatmap-cell{width:11px;height:11px;border-radius:2px;transition:opacity var(--ms-fast) var(--ease-out)}.heatmap-cell:hover{opacity:.75}.card-stat-list{display:flex;flex-direction:column;gap:8px}.card-stat-row{display:grid;grid-template-columns:24px 20px 1fr auto;grid-template-rows:auto 4px;column-gap:8px;row-gap:3px;align-items:center}.card-stat-rank{font-size:var(--fs-caption1);color:var(--label-secondary);text-align:right}.card-stat-badge{font-size:10px;font-weight:700;border-radius:3px;padding:1px 4px;text-align:center;background:var(--bg-secondary);color:var(--label-secondary)}.card-stat-badge.vocab{background:#007aff1f;color:var(--tint-blue)}.card-stat-badge.sentence{background:#34c7591f;color:var(--tint-green)}.card-stat-text{display:flex;flex-direction:column;gap:1px;min-width:0}.card-stat-main{font-size:var(--fs-subhead);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-stat-translation{font-size:var(--fs-caption1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-stat-meta{display:flex;flex-direction:column;align-items:flex-end;gap:1px}.card-stat-accuracy{font-size:var(--fs-subhead);font-weight:700}.card-stat-count{font-size:var(--fs-caption1)}.card-stat-bar-wrap{grid-column:1 / -1;height:3px;border-radius:999px;background:var(--separator)}.card-stat-bar{height:100%;border-radius:999px;transition:width var(--ms-base) var(--ease-out)}
