:root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;color:#1c2430;background:#eef2ef;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}button{font:inherit}.app-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(130deg,#ffffffdb,#eef2efad),radial-gradient(circle at 12% 12%,rgba(60,128,104,.16),transparent 34%),radial-gradient(circle at 82% 18%,rgba(221,158,70,.18),transparent 30%),#eef2ef}.study-surface{width:min(920px,100%);display:grid;gap:20px}.top-bar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.eyebrow{margin:0 0 4px;font-size:.75rem;font-weight:800;letter-spacing:0;color:#2f6d59;text-transform:uppercase}h1{max-width:720px;margin:0;color:#13251f;font-size:clamp(1.75rem,3vw,3rem);line-height:1.05;letter-spacing:0}.icon-button,.primary-action,.secondary-action,.rating-button{min-height:44px;border:0;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:10px;font-weight:800;transition:transform .15s ease,box-shadow .15s ease,background-color .15s ease}.icon-button{width:44px;flex:0 0 auto;color:#31433d;background:#ffffffc7;box-shadow:0 10px 28px #23362f1f}.icon-button:hover,.primary-action:hover,.rating-button:hover{transform:translateY(-1px)}.stats-wrap{display:grid;gap:10px}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.stat{min-width:0;border:1px solid rgba(39,69,59,.12);border-radius:8px;padding:12px;background:#ffffffb8}.stat span{display:block;color:#61736d;font-size:.78rem;font-weight:700}.stat strong{display:block;color:#182720;font-size:1.25rem;line-height:1.1}.progress-track{height:8px;overflow:hidden;border-radius:999px;background:#21352d21}.progress-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2f7a61,#d99a3e)}.flashcard{min-height:500px;display:grid;grid-template-rows:auto minmax(128px,auto) minmax(128px,auto) auto;gap:16px;border:1px solid rgba(28,54,45,.12);border-radius:8px;padding:clamp(18px,4vw,34px);background:#ffffffeb;box-shadow:0 22px 60px #2b3b3626}.card-meta{min-height:28px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.card-meta span{max-width:100%;overflow-wrap:anywhere;border-radius:999px;padding:4px 10px;color:#43534d;background:#edf2ee;font-size:.75rem;font-weight:800}.card-content{min-width:0;display:grid;align-items:center;border-radius:8px;padding:clamp(18px,4vw,32px);overflow-wrap:anywhere}.front{color:#10271e;background:#f8faf7;border:1px solid rgba(38,87,67,.14)}.answer{color:#27332e;background:#f4efe5;border:1px dashed rgba(154,103,34,.34)}.answer.visible{border-style:solid}.answer-placeholder{color:#9a7242;font-weight:800;text-align:center}.anki-html{width:100%;min-width:0;text-align:center;font-size:clamp(1.45rem,2.4vw,2.5rem);line-height:1.22}.anki-html *{max-width:100%}.anki-html img{display:block;width:auto;max-width:min(100%,520px);max-height:260px;margin:12px auto;object-fit:contain}.anki-html audio{width:min(100%,360px);margin:12px auto 0}.anki-html .detail-line{margin-top:8px;color:#69756f;font-size:.58em;line-height:1.35}.primary-action{width:100%;color:#fff;background:#276b56;box-shadow:0 12px 26px #276b5642}.secondary-action{width:100%;color:#173328;background:#c8e3d5}.secondary-action:disabled{cursor:wait;opacity:.72;transform:none}.reveal-actions{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1fr);gap:10px}.read-action{background:#e7d4ad}.practice-panel{display:grid;gap:10px;border:1px solid rgba(38,87,67,.14);border-radius:8px;padding:14px;background:#f8faf7}.practice-panel-header{min-width:0;display:flex;align-items:center;gap:8px;color:#2e5f4c;font-size:.9rem;font-weight:800}.practice-panel-header span{overflow-wrap:anywhere}.record-action.recording{color:#fff;background:#9d3a2e}.sentence-input{width:100%;min-height:90px;resize:vertical;border:1px solid rgba(39,69,59,.2);border-radius:8px;padding:12px;color:#1c2430;background:#fff;font:inherit;line-height:1.45}.sentence-input:focus{outline:3px solid rgba(47,122,97,.18);border-color:#2f7a61}.practice-error{margin:0;color:#8f2e22;font-size:.9rem;font-weight:800}.practice-feedback{display:grid;gap:6px;border-radius:8px;padding:12px;background:#fff;border:1px solid rgba(39,69,59,.12)}.feedback-topline{display:flex;align-items:center;justify-content:space-between;gap:10px}.feedback-topline strong{color:#14291f;font-size:1rem}.sentence-feedback.correct{border-color:#2f7a6157}.sentence-feedback.almost{border-color:#b8802357}.sentence-feedback.incorrect{border-color:#8f2e2247}.pronunciation-feedback.good{border-color:#2f7a6157}.pronunciation-feedback.close{border-color:#b8802357}.pronunciation-feedback.try_again{border-color:#8f2e2247}.feedback-status{width:fit-content;border-radius:999px;padding:3px 9px;color:#fff;background:#2f7a61;font-size:.72rem;font-weight:900;text-transform:uppercase}.sentence-feedback.almost .feedback-status{background:#b88023}.sentence-feedback.incorrect .feedback-status{background:#9d3a2e}.pronunciation-feedback.close .feedback-status{background:#b88023}.pronunciation-feedback.try_again .feedback-status{background:#9d3a2e}.practice-feedback p,.practice-feedback span,.practice-feedback em{margin:0}.practice-feedback p{color:#14291f;font-weight:800}.practice-feedback span{color:#4d5b55}.practice-feedback .feedback-status{color:#fff}.practice-feedback em{color:#60716a;font-style:normal}.attempt-history{display:grid;gap:8px}.attempt-item{display:grid;gap:2px;border-radius:8px;padding:10px;color:#3e4c47;background:#eef3ef;font-size:.88rem}.attempt-item strong,.attempt-item span{overflow-wrap:anywhere}.spin-icon{animation:spin .9s linear infinite}.rating-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.rating-button{width:100%;color:#17211d;padding:0 12px}.rating-button.hard{background:#f1c0b5}.rating-button.medium{background:#f2d492}.rating-button.easy{background:#addcc3}.status{min-height:260px;display:grid;place-items:center;gap:12px;border-radius:8px;padding:24px;color:#31433d;background:#ffffffd1;text-align:center;font-weight:800}.spinner{width:28px;height:28px;border:3px solid rgba(47,122,97,.18);border-top-color:#2f7a61;border-radius:50%;animation:spin .9s linear infinite}.app-mode-nav{width:fit-content;display:flex;gap:4px;border:1px solid rgba(39,69,59,.12);border-radius:10px;padding:4px;background:#ffffffb8}.app-mode-nav button{min-height:38px;display:inline-flex;align-items:center;gap:7px;border:0;border-radius:7px;padding:0 14px;color:#53645e;background:transparent;cursor:pointer;font-weight:800}.app-mode-nav button.active{color:#fff;background:#2f7a61;box-shadow:0 6px 18px #2f7a6133}.speaking-page{display:grid;gap:18px;border:1px solid rgba(28,54,45,.12);border-radius:12px;padding:clamp(18px,4vw,34px);background:#ffffffeb;box-shadow:0 22px 60px #2b3b3626}.speaking-title{display:flex;align-items:center;justify-content:space-between;gap:20px}.speaking-title>div:first-child>p:last-child{max-width:630px;margin:10px 0 0;color:#5a6c65}.speaking-goal-ring{width:84px;height:84px;flex:0 0 auto;display:grid;place-content:center;border:8px solid #d9e9e1;border-radius:50%;color:#2f6d59;text-align:center}.speaking-goal-ring strong,.speaking-goal-ring span{line-height:1.05}.speaking-goal-ring strong{font-size:1.3rem}.speaking-goal-ring span{color:#6b7b75;font-size:.72rem;font-weight:800}.speaking-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.overview-stat{min-width:0;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:2px 8px;border:1px solid rgba(39,69,59,.12);border-radius:9px;padding:12px;color:#2f7a61;background:#f7faf8}.overview-stat span{overflow:hidden;color:#65756f;font-size:.73rem;font-weight:750;text-overflow:ellipsis;white-space:nowrap}.overview-stat strong{grid-column:1 / -1;color:#172b24;font-size:1.25rem}.daily-progress,.session-progress{height:9px;overflow:hidden;border-radius:999px;background:#dfe8e3}.daily-progress span,.session-progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2f7a61,#d99a3e);transition:width .3s ease}.speaking-settings{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;border-radius:10px;padding:16px;background:#f2f6f3}.speaking-settings label{min-width:0;display:grid;gap:6px;color:#42544d;font-size:.78rem;font-weight:800}.speaking-settings select{width:100%;min-height:42px;border:1px solid rgba(42,75,63,.18);border-radius:7px;padding:0 10px;color:#1f302a;background:#fff;font:inherit}.speaking-settings .toggle-setting{grid-template-columns:auto 1fr;align-content:center;align-items:center;border-radius:7px;padding:10px;background:#fff}.toggle-setting input{width:18px;height:18px;accent-color:#2f7a61}.speaking-start{min-height:56px;display:inline-flex;align-items:center;justify-content:center;gap:10px;border:0;border-radius:9px;padding:0 22px;color:#fff;background:#2f7a61;box-shadow:0 12px 30px #2f7a6140;cursor:pointer;font-size:1.05rem;font-weight:900}.speaking-start span{border-radius:999px;padding:3px 8px;color:#285f4e;background:#d9ede4;font-size:.72rem}.speaking-message{display:flex;align-items:center;gap:8px;margin:0;border-radius:8px;padding:10px 12px;color:#275c4b;background:#e5f2ec;font-size:.88rem;font-weight:750}.speaking-message.error{color:#8a3328;background:#f8e5e1}.speaking-tools,.session-controls,.reveal-practice-actions,.summary-actions,.session-recovery{display:flex;flex-wrap:wrap;gap:9px}.speaking-tools button,.session-controls button,.reveal-practice-actions button{min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid rgba(38,69,58,.14);border-radius:7px;padding:0 12px;color:#40524b;background:#fff;cursor:pointer;font-weight:800}.speaking-insights{border:1px solid rgba(39,69,59,.12);border-radius:9px;padding:12px 14px;background:#fafcfb}.speaking-insights summary{color:#344b43;cursor:pointer;font-weight:850}.insight-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding-top:12px}.insight-grid span{display:grid;color:#697972;font-size:.75rem}.insight-grid strong{overflow-wrap:anywhere;color:#263c34;font-size:.95rem}.confusion-list{display:grid;gap:7px;padding-top:12px}.confusion-list>div{display:flex;justify-content:space-between;gap:12px;border-radius:7px;padding:9px 10px;background:#eef3ef;font-size:.85rem}.confusion-list span{color:#67766f;text-align:right}.speaking-session{min-height:610px;grid-template-rows:auto auto minmax(180px,1fr) auto auto auto;align-content:start}.session-topline{display:flex;justify-content:space-between;color:#61726b;font-size:.78rem;font-weight:850;text-transform:uppercase}.speaking-prompt{display:grid;align-content:center;justify-items:center;gap:8px;padding:28px 12px;text-align:center}.speaking-prompt p{margin:0;color:#61726b;font-size:.82rem;font-weight:800;text-transform:uppercase}.speaking-prompt h1{max-width:760px;font-size:clamp(2rem,6vw,4.4rem);overflow-wrap:anywhere}.revealed-answer{margin-top:12px;border-radius:9px;padding:10px 16px;color:#245b48;background:#e3f0ea;font-size:clamp(1.3rem,3vw,2rem);font-weight:900}.session-indicator{min-height:100px;display:grid;grid-template-columns:auto 1fr;align-content:center;align-items:center;gap:2px 12px;border-radius:10px;padding:17px 20px;color:#2f7a61;background:#edf6f1}.session-indicator>svg{grid-row:1 / 3}.session-indicator strong{color:#183b2f;font-size:1.1rem}.session-indicator span{color:#63736d;font-size:.86rem}.session-indicator.listening{background:#e2f2ea;box-shadow:inset 0 0 0 2px #2f7a6126;animation:listening-pulse 1.4s ease-in-out infinite}.session-indicator.retry{color:#a56c16;background:#fbf1dc}.session-indicator.revealed,.session-indicator.error{color:#9b3d31;background:#fae9e5}.session-indicator.paused{color:#596660;background:#ecefed}.spoken-feedback{display:grid;gap:3px;border-radius:8px;padding:12px 14px;color:#31574a;background:#e5f2ec}.spoken-feedback span{color:#63736d;font-size:.82rem}.spoken-feedback.close,.spoken-feedback.incorrect{color:#885b18;background:#faf0dc}.session-recovery>button,.summary-actions>button{flex:1 1 220px}.reveal-practice-actions button:last-child{margin-left:auto}.session-controls{justify-content:flex-end;padding-top:4px}.speaking-summary{justify-items:center;text-align:center}.summary-check{color:#2f7a61}.summary-stats{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.summary-stats span{display:grid;border-radius:8px;padding:12px;color:#61716b;background:#f0f4f1;font-size:.78rem}.summary-stats strong{color:#183027;font-size:1.4rem}.summary-words{width:100%;display:grid;gap:6px}.summary-word{display:grid;grid-template-columns:1fr 1fr auto;align-items:center;gap:10px;border-left:4px solid #2f7a61;border-radius:7px;padding:10px 12px;background:#f1f6f3;text-align:left}.summary-word.second{border-left-color:#c68c30}.summary-word.failed,.summary-word.skipped{border-left-color:#a74a3e}.summary-word>span{color:#63736d}.summary-word em{color:#537067;font-size:.76rem;font-style:normal;font-weight:850;text-transform:uppercase}.summary-actions{width:100%}@keyframes listening-pulse{50%{box-shadow:inset 0 0 0 2px #2f7a6145,0 0 0 8px #2f7a610d}}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:680px){.app-shell{padding:16px;place-items:stretch}.study-surface{align-content:start}.top-bar{align-items:center}h1{font-size:1.6rem}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.flashcard{min-height:calc(100vh - 250px);grid-template-rows:auto minmax(120px,auto) minmax(110px,auto) auto}.anki-html{font-size:1.45rem}.rating-actions,.reveal-actions{grid-template-columns:1fr}.app-mode-nav{width:100%}.app-mode-nav button{flex:1;justify-content:center;padding:0 8px}.speaking-title{align-items:flex-start}.speaking-goal-ring{width:70px;height:70px;border-width:6px}.speaking-overview,.summary-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.speaking-settings{grid-template-columns:1fr}.insight-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.speaking-session{min-height:calc(100vh - 130px)}.speaking-prompt{padding:16px 4px}.reveal-practice-actions>button,.session-controls>button{flex:1 1 130px}.reveal-practice-actions button:last-child{margin-left:0}.summary-word{grid-template-columns:1fr auto}.summary-word>span{grid-column:1 / -1}}
