.btn,.btn-start{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.65rem 1.5rem;border:2px solid transparent;border-radius:var(--radius-full);font-family:inherit;font-size:.9375rem;font-weight:600;cursor:pointer;transition:transform .1s,box-shadow .15s,background-color .15s,opacity .15s,color .15s,border-color .15s;white-space:nowrap}.btn:active,.btn-start:active{transform:scale(.97)}.btn:disabled,.btn-start:disabled{opacity:.4;cursor:not-allowed}.select-screen{width:100%;max-width:420px;display:flex;flex-direction:column;align-items:center;gap:1.5rem;padding-bottom:5rem}.select-screen h1{margin:0;font-size:1.75rem;font-weight:800;letter-spacing:-.03em;color:var(--color-text)}.select-screen .subtitle{margin:-.75rem 0 0;font-size:.9375rem;color:var(--color-text-muted)}.module-list{list-style:none;padding:0;margin:0;width:100%;display:flex;flex-direction:column;gap:.625rem}.module-item{display:flex;flex-direction:column}.module-item .module-card{border-radius:var(--radius)}.module-item.open .module-card{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:transparent}.btn-chevron{flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:.2rem;background:none;border:none;color:var(--color-text-muted);cursor:pointer;border-radius:4px;transition:color .15s,background-color .15s}.btn-chevron svg{transition:transform .2s}.module-item.open .btn-chevron svg{transform:rotate(180deg)}.btn-chevron:hover{color:var(--color-primary);background-color:#673ab814}.card-preview-list{list-style:none;padding:0;margin:0;border:2px solid var(--color-border);border-top:none;border-bottom-left-radius:var(--radius);border-bottom-right-radius:var(--radius);overflow:hidden}.card-preview-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.5rem 1rem;font-size:.875rem;border-top:1px solid var(--color-border)}.card-preview-row:first-child{border-top:none}.card-preview-term{font-weight:600;color:var(--color-text);width:50%}.card-preview-translation{color:var(--color-text-muted);text-align:right;width:50%}.module-card{display:flex;flex-direction:column;padding:.875rem 1rem;background-color:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius);cursor:pointer;transition:border-color .15s,box-shadow .15s,background-color .15s;box-shadow:var(--shadow-sm);gap:.625rem}.module-card-row{display:flex;align-items:center;gap:.875rem}.module-mastery{font-size:.75rem;font-weight:600;color:var(--color-text-muted);white-space:nowrap}.module-mastery-bar-wrap{height:4px;border-radius:2px;background-color:var(--color-border);overflow:hidden}.module-mastery-bar-fill{height:100%;border-radius:2px;background-color:var(--color-primary);transition:width .3s ease}.module-mastery-bar-fill.complete{background-color:#16a34a}.module-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md)}.module-card.selected{border-color:var(--color-primary);background-color:#673ab80a;box-shadow:0 0 0 3px #673ab820,var(--shadow-sm)}.module-card input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:20px;height:20px;min-width:20px;border:2px solid var(--color-border);border-radius:6px;background-color:var(--color-bg);cursor:pointer;transition:background-color .15s,border-color .15s;position:relative}.module-card input[type=checkbox]:checked{background-color:var(--color-primary);border-color:var(--color-primary)}.module-card input[type=checkbox]:checked:after{content:"";position:absolute;left:4px;top:1px;width:8px;height:12px;border:2px solid #fff;border-top:none;border-left:none;transform:rotate(45deg)}.module-name{flex:1;font-weight:600;font-size:.9375rem;color:var(--color-text)}.module-count{font-size:.8125rem;font-weight:500;color:var(--color-text-muted);background-color:var(--color-bg);padding:.2rem .6rem;border-radius:var(--radius-full);border:1px solid var(--color-border)}.btn-start{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);width:min(420px,calc(100% - 2rem));padding:.8rem 1.5rem;font-size:1rem;background-color:var(--color-primary);color:#fff;box-shadow:0 4px 20px #673ab873;z-index:10}.btn-start:hover:not(:disabled){background-color:var(--color-primary-dark);box-shadow:0 6px 24px #673ab88c}.btn-start:disabled{transform:translate(-50%);opacity:0;pointer-events:none}@media(prefers-color-scheme:dark){.module-count{background-color:var(--color-bg)}}.btn,.btn-reveal,.btn-wrong,.btn-hard,.btn-right{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.65rem 1.5rem;border:2px solid transparent;border-radius:var(--radius-full);font-family:inherit;font-size:.9375rem;font-weight:600;cursor:pointer;transition:transform .1s,box-shadow .15s,background-color .15s,opacity .15s,color .15s,border-color .15s;white-space:nowrap}.btn:active,.btn-reveal:active,.btn-wrong:active,.btn-hard:active,.btn-right:active{transform:scale(.97)}.btn-primary{background-color:var(--color-primary);color:#fff;box-shadow:0 2px 8px #673ab859}.btn-primary:hover:not(:disabled){background-color:var(--color-primary-dark);box-shadow:0 4px 16px #673ab873}.setup-screen{width:100%;max-width:420px;display:flex;flex-direction:column;align-items:center;gap:1.5rem}.setup-title{margin:0;font-size:1.25rem;font-weight:700;color:var(--color-text)}.setup-option{display:flex;align-items:center;gap:.75rem;width:100%;padding:.875rem 1rem;background-color:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius);font-size:.9375rem;font-weight:500;color:var(--color-text);cursor:pointer;-webkit-user-select:none;user-select:none;transition:border-color .15s}.setup-option:has(input:checked){border-color:var(--color-primary);background-color:#673ab80a}.setup-option input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:20px;height:20px;min-width:20px;border:2px solid var(--color-border);border-radius:6px;background-color:var(--color-bg);cursor:pointer;transition:background-color .15s,border-color .15s;position:relative}.setup-option input[type=checkbox]:checked{background-color:var(--color-primary);border-color:var(--color-primary)}.setup-option input[type=checkbox]:checked:after{content:"";position:absolute;left:4px;top:1px;width:8px;height:12px;border:2px solid #fff;border-top:none;border-left:none;transform:rotate(45deg)}.btn-setup-start{width:100%;padding:.8rem 1.5rem;font-size:1rem}.study-screen{width:100%;max-width:480px;align-self:stretch;display:flex;flex-direction:column;align-items:center;gap:1.5rem;padding-bottom:6rem;position:relative}.study-screen .card-area{flex:1;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem}.progress{width:100%;display:flex;flex-direction:column;gap:.4rem}.progress-label{font-size:.8125rem;font-weight:600;color:var(--color-text-muted);letter-spacing:.01em;text-align:center}.progress-bar-wrap{width:100%;height:6px;background-color:var(--color-border);border-radius:var(--radius-full);overflow:hidden}.progress-bar-fill{height:100%;background-color:var(--color-primary);border-radius:var(--radius-full);transition:width .3s ease}.card{width:100%;background-color:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:3rem 2rem;display:flex;flex-direction:column;align-items:center;gap:1.5rem;min-height:220px;justify-content:center;border:1px solid var(--color-border)}.card-front{font-size:2.5rem;font-weight:800;letter-spacing:-.02em;color:var(--color-text);line-height:1.2;text-align:center}.card-back{font-size:2.5rem;font-weight:800;letter-spacing:-.02em;text-align:center;padding-top:.75rem;border-top:1px solid var(--color-border);width:100%}.btn-reveal{background-color:#f3effe;color:var(--color-primary);border-color:#c4b5fd}.btn-reveal:hover{background-color:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-container{position:absolute;bottom:2rem;left:0;right:0;display:grid}.btn-reveal,.answer-buttons{grid-area:1 / 1;width:100%}.answer-buttons{display:flex;gap:.75rem}.btn-wrong,.btn-hard,.btn-right{flex:1;white-space:normal;text-align:center}.btn-wrong{background-color:#fef2f2;color:var(--color-wrong);border-color:#fecaca}.btn-wrong:hover{background-color:var(--color-wrong);color:#fff;border-color:var(--color-wrong)}.btn-hard{background-color:#fffbeb;color:#b45309;border-color:#fde68a}.btn-hard:hover{background-color:var(--color-hard);color:#fff;border-color:var(--color-hard)}.btn-right{background-color:#f0fdf4;color:#15803d;border-color:#bbf7d0}.btn-right:hover{background-color:var(--color-right);color:#fff;border-color:var(--color-right)}.complete-screen{width:100%;max-width:380px;display:flex;flex-direction:column;align-items:center;gap:1rem;text-align:center}.complete-icon{font-size:4rem;line-height:1;margin-bottom:.5rem}.complete-screen h1{margin:0;font-size:2rem;font-weight:800;letter-spacing:-.03em}.complete-screen p{margin:0;color:var(--color-text-muted);font-size:1rem}.complete-duration{font-size:.875rem!important;font-weight:700;color:var(--color-text-muted)!important;background:var(--color-border);border-radius:var(--radius-full);padding:.25rem .75rem}.stats{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;width:100%;margin:.5rem 0}.stat{display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.9rem .5rem;border-radius:var(--radius);border:1px solid var(--color-border);background-color:var(--color-surface)}.stat-value{font-size:1.75rem;font-weight:800;letter-spacing:-.03em;line-height:1}.stat-label{font-size:.75rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.stat-right .stat-value{color:#15803d}.stat-hard .stat-value{color:#b45309}.stat-wrong .stat-value{color:var(--color-wrong)}.stat-pct .stat-value{color:var(--color-primary)}.btn-back{margin-top:.5rem;background-color:var(--color-primary);color:#fff;box-shadow:0 2px 8px #673ab859}.btn-back:hover{background-color:var(--color-primary-dark);box-shadow:0 4px 16px #673ab873}@media(prefers-color-scheme:dark){.btn-reveal{background-color:#1e1533;border-color:#4c3680}.btn-wrong{background-color:#2d1515;border-color:#5a2020}.btn-hard{background-color:#2d2415;border-color:#5a4520}.btn-right{background-color:#152d1b;border-color:#205a2b}}@media(max-width:480px){.card{padding:2rem 1.25rem}.card-front,.card-back{font-size:2rem}}.module-cards-screen{width:100%;max-width:420px;display:flex;flex-direction:column;gap:1rem}.module-cards-header{display:flex;align-items:center;gap:.75rem}.module-cards-header h2{flex:1;margin:0;font-size:1.25rem;font-weight:700;color:var(--color-text)}.back-btn{padding:.4rem .75rem;font-size:1rem}.btn-ghost{background:none;border-color:var(--color-border);color:var(--color-text-muted)}.btn-ghost:hover{border-color:var(--color-primary);color:var(--color-primary)}.cards-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.card-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-term{font-weight:600;font-size:.9375rem;color:var(--color-text)}.card-translation{font-size:.875rem;color:var(--color-text-muted);text-align:right}.history-page{width:100%;max-width:600px;display:flex;flex-direction:column;gap:1.25rem;align-self:flex-start}.history-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.history-header h1{margin:0;font-size:1.75rem;font-weight:800;letter-spacing:-.03em}.btn-clear{padding:.4rem .9rem;border:1px solid var(--color-border);border-radius:var(--radius-full);background:transparent;color:var(--color-text-muted);font-family:inherit;font-size:.8125rem;font-weight:600;cursor:pointer;transition:color .15s,border-color .15s,background-color .15s}.btn-clear:hover{color:var(--color-wrong);border-color:var(--color-wrong);background-color:#fef2f2}.clear-confirm{display:flex;align-items:center;gap:.5rem}.clear-confirm-label{font-size:.8125rem;font-weight:600;color:var(--color-text-muted)}.btn-confirm-yes,.btn-confirm-no{padding:.4rem .75rem;border-radius:var(--radius-full);font-family:inherit;font-size:.8125rem;font-weight:600;cursor:pointer;transition:color .15s,border-color .15s,background-color .15s}.btn-confirm-yes{border:1px solid var(--color-wrong);background:transparent;color:var(--color-wrong)}.btn-confirm-yes:hover{background-color:var(--color-wrong);color:#fff}.btn-confirm-no{border:1px solid var(--color-border);background:transparent;color:var(--color-text-muted)}.btn-confirm-no:hover{background-color:var(--color-border);color:var(--color-text)}@media(prefers-color-scheme:dark){.btn-confirm-yes:hover{background-color:var(--color-wrong)}}.session-count{margin:0;font-size:.875rem;font-weight:600;color:var(--color-text-muted)}.history-empty{color:var(--color-text-muted);font-size:.9375rem;margin:0}.session-list{display:flex;flex-direction:column;gap:.75rem}.session-row{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem 1.25rem;display:flex;flex-direction:column;gap:.75rem;box-shadow:var(--shadow-sm)}.session-meta{display:flex;flex-direction:column;gap:.2rem}.session-meta-top{display:flex;align-items:center;gap:.5rem}.session-date{font-size:.8125rem;color:var(--color-text-muted);font-weight:500}.session-duration{font-size:.75rem;font-weight:600;color:var(--color-text-muted);background:var(--color-border);border-radius:var(--radius-full);padding:.1rem .5rem}.session-modules{font-size:.9375rem;font-weight:700;color:var(--color-text)}.session-stats{display:flex;gap:.5rem}.ssstat{display:flex;flex-direction:column;align-items:center;gap:.15rem;flex:1;padding:.5rem .25rem;border-radius:var(--radius-sm);border:1px solid var(--color-border)}.ssstat-value{font-size:1.25rem;font-weight:800;letter-spacing:-.02em;line-height:1}.ssstat-label{font-size:.6875rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.ssstat-right .ssstat-value{color:#15803d}.ssstat-hard .ssstat-value{color:#b45309}.ssstat-wrong .ssstat-value{color:var(--color-wrong)}.ssstat-pct .ssstat-value{color:var(--color-primary)}@media(prefers-color-scheme:dark){.btn-clear:hover{background-color:#2d1515}}@media(max-width:480px){.ssstat-label{font-size:.625rem}}.struggle-page{width:100%;max-width:600px;display:flex;flex-direction:column;gap:1.25rem;align-self:flex-start}.struggle-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.struggle-header h1{margin:0;font-size:1.75rem;font-weight:800;letter-spacing:-.03em}.struggle-empty{color:var(--color-text-muted);font-size:.9375rem;margin:0}.struggle-count{margin:0;font-size:.875rem;font-weight:600;color:var(--color-text-muted)}.struggle-list{display:flex;flex-direction:column;gap:.75rem}.struggle-row{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem 1.25rem;display:flex;flex-direction:column;gap:.75rem;box-shadow:var(--shadow-sm)}.struggle-terms{display:flex;flex-direction:column;gap:.2rem}.struggle-thai{font-size:1rem;font-weight:700;color:var(--color-text)}.struggle-pt{font-size:.9375rem;color:var(--color-text-muted)}.direction-badge{display:inline-block;margin-top:.25rem;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:.15rem .5rem;border-radius:var(--radius-full);width:fit-content}.direction-badge-fwd{background-color:#673ab814;color:var(--color-primary)}.direction-badge-rev{background-color:#f59e0b14;color:#b45309}.struggle-stats{display:flex;gap:.5rem}.sstat{display:flex;flex-direction:column;align-items:center;gap:.15rem;flex:1;padding:.5rem .25rem;border-radius:var(--radius-sm);border:1px solid var(--color-border)}.sstat-value{font-size:1.25rem;font-weight:800;letter-spacing:-.02em;line-height:1}.sstat-label{font-size:.6875rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.sstat-wrong .sstat-value{color:var(--color-wrong)}.sstat-hard .sstat-value{color:#b45309}.sstat-right .sstat-value{color:#15803d}.sstat-pct .sstat-value{color:var(--color-wrong)}@media(max-width:480px){.sstat-label{font-size:.625rem}}:root{--color-primary: #673ab8;--color-primary-dark: #4e2a8e;--color-bg: #f5f4f8;--color-surface: #ffffff;--color-text: #1a1a2e;--color-text-muted: #6b7280;--color-border: #e5e7eb;--color-wrong: #ef4444;--color-hard: #f59e0b;--color-right: #22c55e;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08), 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 16px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 40px rgba(0, 0, 0, .12), 0 4px 16px rgba(0, 0, 0, .08);--radius: 12px;--radius-sm: 8px;--radius-full: 9999px;font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;color:var(--color-text);background-color:var(--color-bg)}*,*:before,*:after{box-sizing:border-box}body{margin:0}#app{display:flex;flex-direction:column;min-height:100vh}header{display:flex;align-items:center;justify-content:space-between;background-color:var(--color-surface);border-bottom:1px solid var(--color-border);padding:0 1.5rem;height:56px;box-shadow:var(--shadow-sm)}.header-brand{font-weight:700;font-size:1rem;color:var(--color-primary);text-decoration:none;letter-spacing:-.01em}header nav{display:flex;gap:.25rem}header a{color:var(--color-text-muted);padding:.4rem .75rem;text-decoration:none;font-size:.875rem;font-weight:500;border-radius:var(--radius-sm);transition:color .15s,background-color .15s}header a.active{color:var(--color-primary);background-color:#673ab814}header a:hover{color:var(--color-text);background-color:var(--color-border)}main{flex:auto;display:flex;align-items:center;justify-content:center;padding:2rem 1rem;align-self:stretch}@media(prefers-color-scheme:dark){:root{--color-bg: #0f0e17;--color-surface: #1c1b2e;--color-text: #e8e6f0;--color-text-muted: #8b8fa8;--color-border: #2e2d42;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 16px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 40px rgba(0, 0, 0, .5)}header{background-color:var(--color-surface)}}
