@import "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,600;9..144,700&family=Manrope:wght@300;400;500;600;700&display=swap";:root{color:#1f1b16;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--bg:#f8f3eb;--surface:#fff;--ink:#1f1b16;--muted:#6c6256;--accent:#f1a24d;--accent-deep:#e57c2f;--stroke:#e8dfd2;--shadow:0 24px 60px #2319101f;--radius-lg:28px;--radius-md:18px;background-color:#f8f3eb;font-family:Manrope,sans-serif;font-weight:400;line-height:1.6}*,:before,:after{box-sizing:border-box}body{background:var(--bg);min-height:100vh;color:var(--ink);margin:0}a{color:inherit;text-decoration:none}button,input,textarea{font-family:inherit}#root{min-height:100vh}.page-shell{max-width:1040px;margin:0 auto;padding:72px 24px}.page-card{background:var(--surface);border:1px solid var(--stroke);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:40px}.page-kicker{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:0 0 12px;font-size:.72rem}.page-muted{color:var(--muted);margin:12px 0 0}.loading-spinner{min-height:60vh;color:var(--muted);place-items:center;font-size:.95rem;display:grid}.app-toolbar{z-index:30;pointer-events:none;justify-content:space-between;align-items:center;display:flex;position:fixed;top:24px;left:24px;right:24px}.app-toolbar>*{pointer-events:auto}.home-button{border:1px solid var(--stroke);background:var(--surface);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;width:44px;height:44px;transition:transform .2s,box-shadow .2s,border-color .2s;display:inline-flex;box-shadow:0 12px 24px #1f1b161f}.home-button:hover{border-color:var(--accent-deep);transform:translateY(-1px);box-shadow:0 16px 32px #1f1b1629}.home-button:focus,.home-button:focus-visible{border-color:var(--accent-deep);outline:none;box-shadow:0 0 0 3px #e57c2f33}.home-icon{color:var(--muted);transition:color .2s}.home-button:hover .home-icon{color:var(--accent-deep)}.modal-exit-confirm{max-width:480px}.modal-exit-icon{text-align:center;margin-bottom:8px;font-size:2.5rem}.modal-exit-title{text-align:center;margin:0 0 12px;font-size:1.5rem;font-weight:700}.modal-exit-message{color:var(--muted);text-align:center;margin:0 0 16px;line-height:1.6}.modal-exit-progress{text-align:center;color:var(--accent-deep);background:#f1a24d1f;border-radius:12px;margin-bottom:8px;padding:12px;font-weight:600}.button-danger{color:#fff;background:#c84535;box-shadow:0 14px 30px #c8453540}.button-danger:hover{background:#b33d2e;transform:translateY(-1px)}.button-danger:disabled{opacity:.6;cursor:not-allowed;box-shadow:none;transform:none}.language-toggle{border:1px solid var(--stroke);background:var(--surface);border-radius:999px;align-items:center;gap:8px;padding:6px 8px;display:inline-flex;box-shadow:0 12px 24px #1f1b161f}.language-label{color:var(--muted);font-size:.8rem}.language-button{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:6px 10px;font-weight:600}.language-button.is-active{background:var(--accent);color:#2a1b10;box-shadow:0 8px 20px #e57c2f40}.toast-stack{z-index:40;gap:12px;width:min(360px,100% - 48px);display:grid;position:fixed;top:80px;right:24px}.toast{border:1px solid var(--stroke);background:var(--surface);color:var(--ink);box-shadow:var(--shadow);border-radius:16px;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 14px;display:flex}.toast-error{color:#9c3b23;background:#fff2ea;border-color:#f3c1a0}.toast-dismiss{color:inherit;cursor:pointer;background:0 0;border:none;font-size:.8rem;font-weight:600}.auth-page{justify-content:center;align-items:center;min-height:100vh;padding:72px 24px;display:flex}.auth-card{background:var(--surface);border:1px solid var(--stroke);border-radius:var(--radius-lg);width:min(1040px,100%);box-shadow:var(--shadow);grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;padding:32px;display:grid}.auth-brand{border-radius:var(--radius-md);background:linear-gradient(150deg,#f7ead7 0%,#f6f1ea 55%,#fffaf4 100%);flex-direction:column;gap:12px;padding:32px;display:flex}.auth-kicker{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0;font-size:.72rem}.auth-title{margin:0;font-family:Fraunces,serif;font-size:clamp(2rem,3vw,2.6rem);line-height:1.1}.auth-subtitle{color:var(--muted);margin:0;font-size:1rem}.auth-highlight{background:#f1a24d1f;border:1px solid #e57c2f40;border-radius:14px;justify-content:space-between;align-items:center;margin-top:auto;padding:16px;font-size:.95rem;display:flex}.auth-highlight strong{font-weight:600}.auth-form{flex-direction:column;gap:16px;padding:8px;display:flex}.auth-tabs{border:1px solid var(--stroke);background:#f4efe7;border-radius:999px;gap:6px;padding:4px;display:inline-flex}.auth-tab{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:8px 16px;font-weight:600}.auth-tab.is-active{background:var(--surface);color:var(--ink);box-shadow:0 8px 20px #1f1b161a}.auth-field{flex-direction:column;gap:6px;font-size:.95rem;display:flex}.auth-input{border:1px solid var(--stroke);background:#fff;border-radius:12px;padding:12px 14px;font-size:1rem;transition:border-color .2s,box-shadow .2s}.auth-input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #f1a24d33}.field-error{color:#a3472d;font-size:.85rem}.primary-button,.ghost-button{cursor:pointer;border:none;border-radius:999px;padding:12px 18px;font-size:.95rem;font-weight:600;transition:transform .2s,box-shadow .2s}.primary-button{background:var(--accent);color:#2a1b10;box-shadow:0 14px 30px #e57c2f40}.primary-button:hover{transform:translateY(-1px)}.primary-button:disabled{opacity:.6;cursor:not-allowed;box-shadow:none;transform:none}.ghost-button{border:1px dashed var(--stroke);color:var(--muted);background:0 0}.auth-divider{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);align-items:center;gap:12px;font-size:.72rem;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--stroke);flex:1;height:1px}.form-error{color:#9c3b23;background:#fff2ea;border:1px solid #f3c1a0;border-radius:12px;padding:10px 12px;font-size:.9rem}.dashboard-page{padding-top:64px}.dashboard-header{margin-bottom:32px}.dashboard-title{margin:8px 0 12px;font-family:Fraunces,serif;font-size:clamp(2.2rem,3.4vw,3rem)}.dashboard-subtitle{color:var(--muted);margin:0}.dashboard-actions{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;display:grid}.action-card{border-radius:var(--radius-md);border:1px solid var(--stroke);background:var(--surface);color:inherit;flex-direction:column;gap:8px;padding:24px;transition:transform .2s,box-shadow .2s;display:flex;box-shadow:0 12px 30px #1f1b1614}.action-card:hover{transform:translateY(-2px);box-shadow:0 18px 40px #1f1b161f}.action-card.action-primary{background:var(--accent);color:#2a1b10;border-color:#0000}.action-title{font-size:1.1rem;font-weight:700}.action-subtitle{color:inherit;opacity:.8;font-size:.95rem}.upload-dropzone{border-radius:var(--radius-md);border:2px dashed var(--stroke);background:var(--surface);text-align:center;padding:48px;transition:border-color .2s,background .2s}.upload-dropzone.is-dragging{border-color:var(--accent-deep);background:#fff7ee}.upload-dropzone.is-loading{opacity:.55}.upload-dropzone-content{justify-items:center;gap:12px;display:grid}.upload-title{margin:0;font-size:1.2rem;font-weight:600}.upload-input{position:absolute;left:-9999px}.upload-loading{background:linear-gradient(135deg,#fff3e6 0%,#fff 60%);border:1px solid #e57c2f4d;border-radius:16px;grid-template-columns:auto 1fr;align-items:center;gap:16px;margin-top:28px;padding:18px 20px;display:grid;box-shadow:0 12px 30px #1f1b1614}.upload-loading-spinner{border:3px solid #e57c2f33;border-top-color:var(--accent-deep);border-radius:50%;width:32px;height:32px;animation:.9s linear infinite uploadSpin}.upload-loading-text{gap:4px;display:grid}.upload-loading-title{margin:0;font-weight:600}.upload-loading-hint{color:var(--muted);margin:0;font-size:.92rem}@keyframes uploadSpin{to{transform:rotate(360deg)}}.wordlist-card{gap:16px;display:grid}.wordlist-tags{flex-wrap:wrap;align-items:center;gap:10px;min-height:52px;display:flex}.word-tag{border:1px solid var(--stroke);background:#f8f2ea;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-size:.9rem;display:inline-flex}.word-remove{color:var(--muted);cursor:pointer;background:0 0;border:none;font-weight:600}.wordlist-add{grid-template-columns:minmax(0,1fr) auto;gap:12px;display:grid}.confirm-actions{margin-top:24px}.modal-backdrop{z-index:20;background:#14110e59;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal-card{background:var(--surface);border-radius:var(--radius-md);border:1px solid var(--stroke);width:min(560px,100%);box-shadow:var(--shadow);gap:16px;padding:28px;display:grid}.difficulty-options{gap:12px;display:grid}.difficulty-option{border:1px solid var(--stroke);background:#fff;border-radius:12px;align-items:flex-start;gap:12px;padding:12px;display:flex}.difficulty-option strong{display:block}.difficulty-option input{margin-top:4px}.modal-actions{justify-content:flex-end;gap:12px;display:flex}.practice-runner{gap:24px;display:grid}.practice-progress{border-radius:var(--radius-md);border:1px solid var(--stroke);background:var(--surface);padding:20px 24px}.practice-progress-header{justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.practice-section-title{margin:4px 0 0;font-size:1.4rem}.practice-section-detail{color:var(--muted);margin-left:6px;font-size:.9rem}.practice-progress-count{text-align:right;color:var(--muted);gap:4px;font-size:.9rem;display:grid}.practice-progress-count strong{color:var(--ink);font-size:1.1rem}.practice-progress-bar{background:#f0e6d8;border-radius:999px;height:8px;margin-top:12px;overflow:hidden}.practice-progress-fill{background:var(--accent-deep);border-radius:999px;height:100%}.practice-card{border-radius:var(--radius-md);border:1px solid var(--stroke);background:var(--surface);gap:20px;padding:28px;display:grid}.question-kicker{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:0 0 8px;font-size:.72rem}.question-title{margin:0;font-size:1.6rem}.question-hint{color:var(--muted);margin:8px 0 0}.question-options{gap:12px;display:grid}.question-input-group{gap:10px;display:grid}.question-input-label{color:var(--muted);font-size:.9rem}.question-input{border:1px solid var(--stroke);background:#fff;border-radius:14px;width:100%;padding:12px 16px;font-size:1rem;transition:border-color .2s,box-shadow .2s}.question-input:focus{border-color:var(--accent-deep);outline:none;box-shadow:0 0 0 3px #e57c2f33}.option-button{border:1px solid var(--stroke);text-align:left;cursor:pointer;background:#fff;border-radius:14px;padding:12px 16px;font-size:1rem;transition:border-color .2s,box-shadow .2s}.option-button.is-selected{border-color:var(--accent-deep);background:#fff7ee;box-shadow:0 0 0 3px #e57c2f33}.practice-actions{justify-content:flex-end;display:flex}.report-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;display:grid}.report-summary h2,.report-analysis h2{margin-top:0}.report-metrics{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:16px;margin-bottom:16px;display:grid}.report-score{margin:4px 0 0;font-size:1.6rem;font-weight:700}.report-tags{flex-wrap:wrap;gap:10px;margin-top:8px;display:flex}.report-text{margin-top:12px;font-size:1rem;line-height:1.6}.report-actions{flex-wrap:wrap;gap:12px;margin:24px 0;display:flex}.report-cta{justify-content:space-between;align-items:center;gap:16px;display:flex}.history-actions{justify-content:flex-end;margin-bottom:16px;display:flex}.history-list{gap:16px;display:grid}.history-card{border-radius:var(--radius-md);border:1px solid var(--stroke);background:var(--surface);justify-content:space-between;gap:16px;padding:20px;display:flex}.history-title{text-transform:capitalize;margin:6px 0}.history-card-actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.history-detail-grid{gap:20px;margin-bottom:24px;display:grid}.history-answers{gap:8px;margin:0;padding-left:20px;display:grid}.history-snapshot summary{cursor:pointer;font-weight:600}.history-snapshot pre{white-space:pre-wrap;word-break:break-word;border:1px solid var(--stroke);background:#fffaf4;border-radius:12px;margin-top:12px;padding:16px}@media (width<=720px){.app-toolbar{top:16px;left:16px;right:16px}.home-button{width:40px;height:40px}.home-button svg{width:18px;height:18px}.toast-stack{width:calc(100% - 32px);top:72px;right:16px}.report-cta,.history-card{flex-direction:column;align-items:flex-start}}@media (width<=900px){.auth-card{grid-template-columns:1fr}.practice-progress-header{flex-direction:column;align-items:flex-start}.practice-progress-count{text-align:left}}
