:root{--bg: var(--tg-theme-bg-color, #ffffff);--secondary-bg: var(--tg-theme-secondary-bg-color, #f2f2f7);--text: var(--tg-theme-text-color, #1c1c1e);--hint: var(--tg-theme-hint-color, #8e8e93);--link: var(--tg-theme-link-color, #007aff);--button: var(--tg-theme-button-color, #007aff);--button-text: var(--tg-theme-button-text-color, #ffffff);--border: color-mix(in srgb, var(--hint) 26%, transparent);--again: #e5484d;--hard: #f0a020;--good: #30a46c;--radius: 16px;--gap: 12px;--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{height:100%;margin:0}body,#root{min-height:100%;margin:0}#root{display:flex;flex-direction:column}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.4;overscroll-behavior-y:contain}button{font:inherit;color:inherit;border:none;background:none;cursor:pointer}.app{display:flex;flex-direction:column;flex:1;width:100%;max-width:560px;margin:0 auto;padding:16px 16px calc(16px + var(--safe-bottom))}.screen-title{margin:4px 0 16px;font-size:22px;font-weight:700}.hint{color:var(--hint);font-size:14px}.btn{display:block;width:100%;padding:15px 16px;border-radius:var(--radius);font-size:17px;font-weight:600;text-align:center;transition:opacity .15s ease,transform .1s ease}.btn:active{transform:scale(.985)}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--button);color:var(--button-text)}.btn-secondary{background:var(--secondary-bg);color:var(--text)}.stack{display:flex;flex-direction:column;gap:var(--gap)}.spacer{flex:1}.stats{display:flex;flex-direction:column;gap:2px;margin-bottom:24px;padding:16px;background:var(--secondary-bg);border-radius:var(--radius)}.stat-row{display:flex;justify-content:space-between;align-items:baseline;padding:7px 0}.stat-row+.stat-row{border-top:1px solid var(--border)}.stat-label{color:var(--hint)}.stat-value{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums}.stat-value.accent{color:var(--good)}.review{display:flex;flex-direction:column;flex:1;gap:var(--gap)}.review-progress{display:flex;justify-content:space-between;color:var(--hint);font-size:13px}.card-panel{display:flex;flex-direction:column;gap:14px;padding:16px;background:var(--secondary-bg);border-radius:20px}.card-panel.tappable{cursor:pointer}.card-face{display:flex;flex-direction:column;gap:14px;animation:reveal-in .26s cubic-bezier(.22,.61,.36,1) both}@keyframes reveal-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.card-image,.card-image-placeholder{width:min(100%,44vh);width:min(100%,44dvh);aspect-ratio:1 / 1;margin:0 auto;border-radius:14px;background:var(--bg)}.card-image{object-fit:cover}.card-image-placeholder{display:flex;align-items:center;justify-content:center;color:var(--hint);font-size:44px}.front-instruction{color:var(--hint);font-size:14px;text-align:center}.hint-phrase{font-size:20px;font-weight:600;text-align:center;text-wrap:balance}.answer-target{font-size:30px;font-weight:700;text-align:center;text-wrap:balance}.answer-phrase{color:var(--hint);font-size:15px;text-align:center;text-wrap:balance}.actions-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.back-sentence{font-size:22px;font-weight:600;text-align:center;text-wrap:balance}.target{padding:0 2px;border-radius:5px;background:color-mix(in srgb,var(--good) 22%,transparent);box-shadow:inset 0 -2px color-mix(in srgb,var(--good) 55%,transparent)}.back-meaning{color:var(--hint);text-align:center}.back-note{padding:10px 12px;border-radius:12px;background:var(--bg);color:var(--hint);font-size:14px;text-align:center}.speak-btn{align-self:center;padding:9px 18px;border-radius:999px;background:var(--bg);font-size:15px}.review-actions{position:sticky;bottom:0;margin-top:auto;padding-top:10px;padding-bottom:calc(4px + var(--safe-bottom));background:var(--bg)}.ratings{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.rating-btn{padding:14px 4px;border-radius:14px;color:#fff;font-size:14px;font-weight:600;transition:transform .1s ease,opacity .15s ease}.rating-btn:active{transform:scale(.96)}.rating-btn:disabled{opacity:.55}.rating-again{background:var(--again)}.rating-hard{background:var(--hard)}.rating-good{background:var(--good)}.search{width:100%;padding:11px 14px;margin-bottom:var(--gap);border:1px solid var(--border);border-radius:12px;background:var(--secondary-bg);color:var(--text);font:inherit}.search:focus{outline:2px solid var(--link);outline-offset:-1px}.card-row{display:flex;gap:12px;padding:12px;background:var(--secondary-bg);border-radius:14px}.thumb,.thumb-placeholder{flex:0 0 62px;width:62px;height:62px;border-radius:10px;object-fit:cover;background:var(--bg)}.thumb-placeholder{display:flex;align-items:center;justify-content:center;color:var(--hint);font-size:24px}.card-row-body{flex:1;min-width:0}.card-row-ru{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-row-en{color:var(--hint);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-row-meta{margin-top:4px;color:var(--hint);font-size:12px}.row-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.chip{padding:6px 11px;border-radius:999px;background:var(--bg);font-size:13px}.chip.danger{color:var(--again)}.chip:disabled{opacity:.5}.edit-field{width:100%;padding:10px 12px;margin-top:8px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);font:inherit;resize:vertical}.centered{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;padding:32px 8px}.big-emoji{font-size:52px}.error-box{padding:12px 14px;border-radius:12px;background:color-mix(in srgb,var(--again) 14%,transparent);color:var(--again);font-size:14px}.spinner{width:26px;height:26px;border:3px solid var(--border);border-top-color:var(--link);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.btn,.rating-btn{transition:none}.card-face{animation:none}.spinner{animation-duration:2s}}
