@import url("https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=Outfit:wght@600;700;800;900&display=swap");:root{--color-bg:#F5F1E8;--color-bg-warm:#EDE8DC;--color-surface:#FFFFFF;--color-surface-muted:#FAFAF7;--color-ink:#0D0D0D;--color-ink-soft:#2A2A2A;--color-yellow:#FFE066;--color-yellow-hover:#FFD633;--color-teal:#5ECFC0;--color-teal-hover:#4ABFB0;--color-coral:#FF8FAB;--color-coral-hover:#FF7599;--color-mint:#C8F27A;--color-lavender:#C4B5FD;--color-success:#5ECFC0;--color-warning:#FFB347;--color-error:#FF6B6B;--color-info:#6EC6FF;--text-primary:var(--color-ink);--text-secondary:#5C5C5C;--text-muted:#8A8A8A;--bg-primary:var(--color-bg);--bg-secondary:var(--color-surface);--bg-tertiary:var(--color-surface-muted);--bg-card:var(--color-surface);--accent-primary:var(--color-teal);--accent-secondary:var(--color-teal-hover);--accent-glow:transparent;--border-color:var(--color-ink);--border-width:2.5px;--border-ink:var(--color-ink);--radius-sm:10px;--radius-md:16px;--radius-lg:22px;--radius-xl:28px;--radius-full:9999px;--shadow-brutal:4px 4px 0 0 var(--color-ink);--shadow-brutal-sm:3px 3px 0 0 var(--color-ink);--shadow-brutal-lg:6px 6px 0 0 var(--color-ink);--shadow-brutal-hover:2px 2px 0 0 var(--color-ink);--shadow-none:0 0 0 0 transparent;--font-display:"Outfit","DM Sans",system-ui,sans-serif;--font-sans:"DM Sans",system-ui,sans-serif;--transition-fast:0.12s ease;--transition-normal:0.2s cubic-bezier(0.34,1.2,0.64,1);--header-height:68px;--mobile-nav-height:72px;--content-max:1140px;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body,html{width:100%;min-height:100%;background-color:var(--color-bg);color:var(--text-primary);font-family:var(--font-sans);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}body{min-height:100vh;background-image:radial-gradient(circle at 10% 20%,rgba(255,224,102,.35) 0,transparent 40%),radial-gradient(circle at 90% 10%,rgba(94,207,192,.25) 0,transparent 35%),radial-gradient(circle at 80% 90%,rgba(255,143,171,.2) 0,transparent 40%);background-attachment:fixed}html.has-open-modal,html.has-open-modal body{overscroll-behavior:none;touch-action:none}html.has-open-modal .app-modal-content,html.has-open-modal .modal-content,html.has-open-modal .neo-modal,html.has-open-modal [aria-modal=true]{touch-action:pan-y;overscroll-behavior:contain}a{color:inherit;text-decoration:none}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-warm)}::-webkit-scrollbar-thumb{background:var(--color-ink);border-radius:var(--radius-full);border:2px solid var(--color-bg-warm)}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{transform:translateX(12px);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}@keyframes modalIn{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes pop{0%{transform:scale(1)}50%{transform:scale(.97)}to{transform:scale(1)}}.animate-fade-in{animation:fadeIn var(--transition-normal) forwards}.animate-slide-in{animation:slideInRight var(--transition-normal) forwards}:focus-visible{outline:3px solid var(--color-ink);outline-offset:2px;border-radius:2px}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{border-radius:inherit}.glass-card,.neo-card{background:var(--color-surface);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-lg);box-shadow:var(--shadow-brutal)}.neo-card--flat{box-shadow:none}.neo-card--yellow{background:var(--color-yellow)}.neo-card--teal{background:var(--color-teal)}.neo-card--coral{background:var(--color-coral)}.extension-authorize-card{width:min(560px,calc(100vw - 32px));margin:48px auto;padding:28px}.extension-authorize-card h1{font-family:var(--font-display);font-size:clamp(26px,5vw,34px);line-height:1.1;margin:18px 0 12px}.extension-authorize-copy{color:var(--text-secondary);margin-bottom:18px}.extension-scope-list{display:grid;gap:10px;background:var(--color-surface-muted);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-md);padding:16px;font-weight:700}.extension-privacy-note{margin:16px 0;padding:12px;background:var(--color-yellow);border:2px solid var(--color-ink);border-radius:var(--radius-sm);font-size:13px}.extension-authorize-actions{display:flex;justify-content:flex-end;gap:12px;flex-wrap:wrap}.extension-authorize-message{margin-top:14px;font-weight:700}.extension-authorize-message.error{color:var(--color-error)}.btn,.neo-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 22px;font-family:var(--font-display);font-size:14px;font-weight:700;line-height:1.2;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-md);box-shadow:var(--shadow-brutal-sm);cursor:pointer;transition:transform var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast);text-decoration:none;white-space:nowrap;min-height:44px}.btn-action:active,.btn-add-book:active,.btn:active,.neo-btn:active{transform:translate(2px,2px) scale(.98);box-shadow:var(--shadow-none)}.btn-primary,.neo-btn--primary{background:var(--color-yellow);color:var(--color-ink)}.btn-primary:hover,.neo-btn--primary:hover{background:var(--color-yellow-hover)}.btn-secondary,.neo-btn--secondary{background:var(--color-teal);color:var(--color-ink)}.btn-secondary:hover,.neo-btn--secondary:hover{background:var(--color-teal-hover)}.btn-coral,.neo-btn--coral{background:var(--color-coral);color:var(--color-ink)}.btn-dotted,.btn-ghost,.neo-btn--dotted,.neo-btn--ghost{background:var(--color-surface);color:var(--color-ink)}.btn-dotted,.neo-btn--dotted{border-style:dashed;box-shadow:none}.btn-sm,.neo-btn--sm{padding:8px 14px;font-size:13px;border-radius:var(--radius-sm)}.neo-btn--icon{width:44px;height:44px;padding:0;border-radius:var(--radius-full)}.btn:disabled,.neo-btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.badge,.neo-badge{display:inline-flex;align-items:center;padding:4px 10px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;border:2px solid var(--color-ink);border-radius:var(--radius-full);background:var(--color-mint)}.badge-system,.neo-badge--system{background:var(--color-lavender)}.neo-tag{display:inline-flex;padding:8px 14px;font-size:13px;font-weight:600;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer;transition:all var(--transition-fast)}.neo-tag--selected,.neo-tag.selected{background:var(--color-bg-warm);box-shadow:var(--shadow-brutal-sm)}.form-group,.neo-form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.form-group label,.neo-form-group label{font-size:13px;font-weight:700;color:var(--text-primary)}.form-group input,.form-group select,.form-group textarea,.neo-input{padding:12px 14px;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-md);background:var(--color-surface);width:100%;font-size:15px;box-shadow:inset 0 0 0 0 transparent;transition:box-shadow var(--transition-fast);min-height:44px}.form-group input:focus,.form-group select:focus,.form-group textarea:focus,.neo-input:focus{outline:none;border-color:var(--color-teal);box-shadow:3px 3px 0 0 var(--color-teal)}.form-row{display:flex;gap:16px;flex-wrap:wrap}.flex-1{flex:1 1;min-width:100%}@media (min-width:500px){.flex-1{min-width:140px}}.app-modal-overlay,.modal-overlay,.neo-modal-overlay{position:fixed;inset:0;z-index:9999;display:flex;justify-content:center;align-items:center;padding:24px;background:rgba(13,13,13,.45)}.app-modal-content,.modal-content,.neo-modal{width:100%;max-width:480px;max-height:calc(100vh - 48px);overflow-y:auto;padding:28px;animation:modalIn .22s ease-out}.modal-large,.neo-modal--lg{max-width:620px}@media (max-width:480px){.app-modal-overlay,.modal-overlay,.neo-modal-overlay{padding:16px}.app-modal-content,.modal-content,.neo-modal{padding:20px;max-height:calc(100vh - 32px)}}.modal-content h2,.neo-modal h2{font-family:var(--font-display);font-size:1.5rem;font-weight:800;margin-bottom:8px}.modal-actions,.neo-modal-actions{display:flex;justify-content:flex-end;gap:12px;flex-wrap:wrap;margin-top:8px}.main-header{position:fixed;top:0;left:0;right:0;height:var(--header-height);z-index:100;background:var(--color-surface);border-bottom:var(--border-width) solid var(--color-ink);border-radius:0;box-shadow:0 4px 0 0 var(--color-ink);box-sizing:border-box}.header-container,.main-header{display:flex;align-items:center;overflow:visible}.header-container{width:100%;max-width:var(--content-max);margin:0 auto;padding:0 20px;justify-content:space-between;gap:16px;height:100%;min-height:0}.mobile-account{display:none}.mobile-leaderboard-link{display:none;place-items:center;width:40px;height:40px;color:var(--color-ink);background:var(--color-yellow);border:2px solid var(--color-ink);border-radius:50%;box-shadow:2px 2px 0 var(--color-ink);transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.mobile-leaderboard-link:active{transform:translate(2px,2px);box-shadow:none}@media (max-width:768px){.mobile-account{display:flex;align-items:center}.mobile-leaderboard-link{display:grid;place-items:center;margin-left:auto;margin-right:4px}.nav-desktop{display:none}}.logo{font-family:var(--font-display);color:var(--color-ink);text-decoration:none;height:100%;overflow:visible;flex-shrink:0}.logo,.nav-logo{display:inline-flex;align-items:center}.nav-logo{gap:8px}.nav-logo-icon{height:40px;width:auto;display:block;flex-shrink:0;object-fit:contain}.nav-logo-text{font-family:var(--font-display);font-size:1.1rem;font-weight:800;letter-spacing:-.02em;color:var(--color-ink);white-space:nowrap;line-height:1}@media (max-width:768px){.nav-logo-icon{height:32px}}.logo-dots{display:flex;gap:4px}.logo-dots span{width:10px;height:10px;border-radius:50%;border:2px solid var(--color-ink)}.logo-dots span:first-child{background:var(--color-coral)}.logo-dots span:nth-child(2){background:var(--color-yellow)}.logo-dots span:nth-child(3){background:var(--color-teal)}.logo span{color:var(--color-ink)}.nav-desktop{display:flex;align-items:center;gap:8px}.nav-desktop a{font-size:14px;font-weight:600;color:var(--text-secondary);padding:8px 14px;border-radius:var(--radius-md);border:2px solid transparent;transition:all var(--transition-fast)}.nav-desktop a:hover{color:var(--color-ink);background:var(--color-yellow);border-color:var(--color-ink)}.main-content{margin-top:var(--header-height);padding:28px 20px calc(var(--mobile-nav-height) + 24px);max-width:var(--content-max);width:100%;margin-left:auto;margin-right:auto;min-height:calc(100vh - var(--header-height))}.mobile-nav{position:fixed;bottom:0;left:0;right:0;height:var(--mobile-nav-height);z-index:100;display:none;justify-content:space-around;align-items:center;background:var(--color-surface);border-top:var(--border-width) solid var(--color-ink);border-radius:0;box-shadow:0 -4px 0 0 rgba(13,13,13,.08)}.mobile-nav-item{display:flex;flex-direction:column;align-items:center;gap:4px;font-size:12px;font-weight:700;color:var(--text-muted);padding:12px 16px;border-radius:var(--radius-md);min-width:60px}.mobile-nav-item svg{stroke-width:2.5}.mobile-nav-item:active,.mobile-nav-item:hover{color:var(--color-ink);background:var(--color-yellow)}.mobile-only-icon-label{display:inline}@media (max-width:768px){.nav-desktop{display:none}.mobile-nav{display:flex}.mobile-only-icon-label{display:none}}.page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:28px}.page-header h1{font-family:var(--font-display);font-size:clamp(1.75rem,4vw,2.25rem);font-weight:900;letter-spacing:-.03em;line-height:1.15}.page-header p,.page-subtitle{color:var(--text-secondary);font-size:15px;margin-top:6px;max-width:520px}.dashboard-wrapper{display:flex;flex-direction:column;gap:28px}.welcome-banner{padding:32px;display:flex;justify-content:space-between;align-items:center;background:var(--color-surface);position:relative;overflow:hidden}.welcome-banner:before{content:"";position:absolute;top:-20px;right:-20px;width:120px;height:120px;background:var(--color-coral);border:var(--border-width) solid var(--color-ink);border-radius:50%;opacity:.5}.banner-content{position:relative;z-index:1;width:100%}.banner-content h1{font-family:var(--font-display);font-size:clamp(1.5rem,3vw,2rem);font-weight:900;letter-spacing:-.02em;margin-bottom:8px}.banner-content p{color:var(--text-secondary);margin-bottom:20px;font-size:15px;max-width:480px}.banner-actions{display:flex;gap:12px;flex-wrap:wrap;width:100%}.banner-actions .btn{text-align:center}.stats-grid{display:grid;grid-template-columns:1fr 1fr 1.6fr;gap:16px}@media (max-width:1024px){.stats-grid{grid-template-columns:1fr 1fr}.weekly-card{grid-column:1/-1}}@media (max-width:768px){.stats-grid{grid-template-columns:1fr}}.stat-card{padding:22px;gap:16px}.stat-card,.stat-icon{display:flex;align-items:center}.stat-icon{width:52px;height:52px;border-radius:var(--radius-md);border:var(--border-width) solid var(--color-ink);justify-content:center;flex-shrink:0;box-shadow:var(--shadow-brutal-sm)}.due-icon{background:var(--color-coral)}.due-icon,.total-icon{color:var(--color-ink)}.total-icon{background:var(--color-yellow)}.stat-info h3{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:4px}.stat-value{font-family:var(--font-display);font-size:2rem;font-weight:900;line-height:1}.weekly-card{padding:22px;display:flex;flex-direction:column;gap:12px}.weekly-card h3{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.weekly-metrics{display:flex;flex-wrap:wrap;gap:8px 14px;margin-bottom:10px}.weekly-metric{font-size:13px;font-weight:700;padding:4px 10px;background:var(--color-bg-warm);border:2px solid var(--color-ink);border-radius:var(--radius-full)}.weekly-metric.streak{background:var(--color-yellow)}.weekly-metric.muted{font-weight:600;background:transparent;border-style:dashed}.week-tracker{width:100%;max-width:600px;margin:0 auto;padding:0 clamp(0px,5vw,32px)}.week-labels{display:grid;grid-template-columns:repeat(7,1fr);gap:clamp(4px,1.6vw,8px);text-align:center}.week-label{font-size:10px;font-weight:800;color:var(--text-muted);text-transform:uppercase}.week-label.today{color:var(--color-ink)}.week-dots-row{display:grid;grid-template-columns:repeat(7,1fr);gap:clamp(4px,1.6vw,10px)}.week-dot{aspect-ratio:1;max-width:clamp(28px,8vw,38px);margin:0 auto;width:100%;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;background:var(--color-surface);border:2px solid var(--color-ink);color:var(--text-muted)}.week-dot.studied{background:var(--color-teal);color:var(--color-ink)}.week-dot.today{box-shadow:0 0 0 3px var(--color-yellow)}.week-dot.future{opacity:.4;border-style:dashed}.weekly-empty p{font-size:13px;color:var(--text-secondary)}.weekly-empty-hint{font-size:12px!important;color:var(--text-muted)!important}.weekly-cta{display:inline-block;margin-top:8px;font-size:13px;font-weight:700;padding:6px 12px;background:var(--color-yellow);border:2px solid var(--color-ink);border-radius:var(--radius-md)}.books-page-wrapper,.main-section{display:flex;flex-direction:column;gap:20px}.books-shelf-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.books-shelf-header h2{font-family:var(--font-display);font-weight:800;font-size:1.35rem}.btn-add-book{padding:8px 16px;font-size:13px;font-weight:700;color:var(--color-ink);background:var(--color-mint);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-md);box-shadow:var(--shadow-brutal-sm);cursor:pointer}.btn-add-book:hover{background:var(--color-teal)}.books-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}.book-card{padding:22px;position:relative;display:flex;flex-direction:column;gap:10px;min-height:190px;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.book-card:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-brutal-lg)}.book-card h3{font-family:var(--font-display);font-size:1.15rem;font-weight:800;padding-right:48px}.book-desc{font-size:14px;color:var(--text-secondary);line-height:1.5;flex-grow:1}.book-meta{font-size:12px;font-weight:700;color:var(--text-muted)}.book-actions{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:auto;flex-wrap:wrap}.btn-action,.btn-book-action{padding:8px 14px;font-size:13px;font-weight:700;border-radius:var(--radius-sm);border:2px solid var(--color-ink);transition:all var(--transition-fast)}.btn-detail,.text-btn{background:transparent;color:var(--text-secondary);box-shadow:none;border-style:dashed}.btn-detail:hover,.text-btn:hover{background:var(--color-bg-warm);color:var(--color-ink)}.btn-study,.study-btn{background:var(--color-yellow);color:var(--color-ink);box-shadow:var(--shadow-brutal-sm);text-decoration:none}.btn-study:hover,.study-btn:hover{background:var(--color-yellow-hover)}.btn-delete-book{position:absolute;top:16px;right:16px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--color-surface);border:2px solid var(--color-ink);border-radius:var(--radius-sm);cursor:pointer;font-size:14px;z-index:2;box-shadow:var(--shadow-brutal-sm)}.manual-word-label-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.btn-check-word{padding:4px 9px;border:2px solid var(--color-ink);border-radius:var(--radius-sm);background:var(--color-teal);color:var(--color-ink);font-size:12px;font-weight:800;cursor:pointer}.btn-check-word:disabled{cursor:wait;opacity:.65}.word-lookup-status{margin:6px 0 0;font-size:12px;font-weight:700}.word-lookup-status-success{color:#087f5b}.word-lookup-status-empty{color:var(--text-secondary)}.word-lookup-status-error{color:#b42318}.word-lookup-status-loading{color:var(--text-secondary)}.inline-spinner{display:inline-block;width:12px;height:12px;border:2px solid;border-right:2px solid transparent;border-radius:50%;animation:spin .7s linear infinite;vertical-align:-2px}.btn-delete-book:hover{background:var(--color-coral)}.book-card .badge,.book-card .neo-badge{position:absolute;top:16px;right:16px}.book-card:has(.badge-system) .btn-delete-book{display:none}.empty-books{padding:48px 24px;text-align:center;color:var(--text-muted);grid-column:1/-1;font-weight:600}.skeleton-line,.skeleton-text,.skeleton-value{background:linear-gradient(90deg,#E8E4DA 25%,#F5F1E8 50%,#E8E4DA 75%);background-size:800px 100%;animation:shimmer 1.5s linear infinite;border-radius:8px;border:2px solid rgba(13,13,13,.08)}.skeleton-text{height:16px}.skeleton-value{height:36px;width:60px;margin-top:4px}.skeleton-card{pointer-events:none;min-height:140px;padding:24px}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:60px 20px;color:var(--text-secondary);font-weight:600}.spinner{width:40px;height:40px;border:3px solid var(--color-bg-warm);border-top-color:var(--color-ink);animation:spin .8s linear infinite}.review-page-wrapper{max-width:520px;margin:0 auto}.flashcard-container{perspective:1200px;margin:24px 0}.flashcard{background:var(--color-surface);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-xl);box-shadow:var(--shadow-brutal-lg);min-height:320px;padding:32px 24px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;cursor:pointer;transition:transform .5s cubic-bezier(.4,0,.2,1);transform-style:preserve-3d}.flashcard.flipped{transform:rotateY(180deg)}.card-word{font-family:var(--font-display);font-size:clamp(2rem,6vw,2.75rem);font-weight:900;letter-spacing:-.02em}.ipa-text{font-size:1rem;color:var(--text-secondary);font-weight:500;margin-top:8px}.card-meaning{font-size:1.25rem;font-weight:700;color:var(--color-ink)}.review-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px}.review-btn-forgot{background:var(--color-coral)!important;border-color:var(--color-ink)!important}.review-btn-remember{background:var(--color-teal)!important;border-color:var(--color-ink)!important}.auth-page{min-height:calc(100vh - var(--header-height) - 40px);display:flex;align-items:center;justify-content:center;padding:2rem 1rem}.auth-card{width:100%;max-width:420px;padding:2rem}.auth-card h1{font-family:var(--font-display);font-size:1.75rem;font-weight:900;margin-bottom:.25rem}.auth-sub{color:var(--text-secondary);margin-bottom:1.5rem}.auth-form{gap:1rem}.auth-form,.auth-form label{display:flex;flex-direction:column}.auth-form label{gap:6px;font-size:13px;font-weight:700}.auth-error{color:var(--color-error)}.auth-error,.auth-success{font-size:14px;font-weight:600}.auth-success{color:var(--color-teal)}.auth-footer{margin-top:1.25rem;text-align:center;color:var(--text-secondary);font-size:14px}.auth-footer a{font-weight:700;text-decoration:underline;text-underline-offset:3px}.auth-btn{font-size:13px;font-weight:700;padding:8px 14px;border-radius:var(--radius-md);border:2px solid var(--color-ink);cursor:pointer;box-shadow:var(--shadow-brutal-sm)}.auth-btn-login{background:var(--color-yellow);color:var(--color-ink)}.auth-btn-logout{background:var(--color-surface);color:var(--color-ink)}.auth-menu{display:flex;align-items:center;gap:8px}.auth-label{font-size:12px;font-weight:600;color:var(--text-muted);max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.neo-back-btn{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;background:var(--color-coral);box-shadow:var(--shadow-brutal-sm);cursor:pointer;font-size:18px}.neo-back-btn,.neo-progress{border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-full)}.neo-progress{height:12px;background:var(--color-surface);overflow:hidden}.neo-progress-fill{height:100%;background:var(--color-yellow);border-right:var(--border-width) solid var(--color-ink);transition:width .3s ease}@media (max-width:900px){.stats-grid{grid-template-columns:1fr}}@media (max-width:768px){.welcome-banner{flex-direction:column;align-items:flex-start;padding:24px}.banner-content{width:100%}.banner-actions{align-items:stretch;flex-direction:column;width:100%}.banner-actions .btn,.banner-actions button{display:flex;width:100%;max-width:none;justify-content:center;text-align:center;margin-right:0!important}.form-row{flex-direction:column}}@media (max-width:480px){.weekly-card{padding:18px!important}.weekly-metrics{gap:8px}.weekly-metric{font-size:12px;padding:4px 8px}.week-tracker{padding:0}}.auth-slider-container{display:block}@media (max-width:768px){.auth-slider-container{display:none!important}.auth-split-grid{grid-template-columns:1fr!important}}@keyframes shimmer-brutal{0%{opacity:.5;background-color:var(--color-surface-muted)}50%{opacity:.8;background-color:var(--color-bg-warm)}to{opacity:.5;background-color:var(--color-surface-muted)}}.brutal-skeleton{animation:shimmer-brutal 1.5s infinite;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-md);box-shadow:var(--shadow-brutal-sm)}.review-wrapper{display:flex;flex-direction:column;align-items:center;gap:16px;width:100%;height:100vh;height:100dvh;min-height:100vh;min-height:100dvh;margin:0 auto;padding:max(30px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));overflow:hidden;touch-action:none;position:fixed;top:0;left:0;right:0;background:var(--color-bg);z-index:1000;--review-card-width:min(calc(100vw - 48px),720px,calc((100vh - 190px) * 0.8));--review-card-width:min(calc(100vw - 48px),720px,calc((100dvh - 190px) * 0.8))}.review-wrapper,.review-wrapper *,.review-wrapper :after,.review-wrapper :before{overscroll-behavior:none}.review-wrapper .card-container,.review-wrapper .card-face,.review-wrapper .perspective-wrapper{touch-action:none}.review-sync-barrier{width:min(100%,var(--review-card-width));display:flex;flex-direction:column;gap:4px;padding:10px 14px;text-align:center;color:var(--text-secondary);border:var(--border-width) solid var(--color-ink);box-shadow:var(--shadow-brutal-sm);background:var(--color-surface);font-size:12px;line-height:1.35}.review-sync-barrier strong{color:var(--color-ink);font-size:13px}.review-loading-status{width:min(100%,var(--review-card-width));display:flex;flex-direction:column;gap:4px;text-align:center;color:var(--text-secondary);font-size:12px;line-height:1.35}.review-loading-status strong{color:var(--color-ink);font-size:13px}body:has(.review-wrapper){overflow:hidden;overscroll-behavior:none;touch-action:none}.review-completed,.review-empty{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100vh;width:100%;text-align:center;gap:16px;padding:40px;position:fixed;top:0;left:0;right:0;background:var(--color-bg);z-index:1000}.completed-icon{font-size:56px}.review-header{width:100%;max-width:var(--review-card-width);margin:0 auto;display:flex;align-items:center;gap:14px;padding:0;z-index:100}.review-progress{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:4px}.progress-bar-container{width:100%;height:11px;background:var(--color-surface);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-full);overflow:hidden}.progress-bar{height:100%;background:var(--color-yellow);border-right:var(--border-width) solid var(--color-ink);transition:width var(--transition-fast)}@media (prefers-reduced-motion:reduce){.review-wrapper *,.review-wrapper :after,.review-wrapper :before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.progress-text{font-size:clamp(12px,1.5vw,15px);font-weight:800;color:var(--text-secondary);min-width:0;text-align:center;line-height:1.1}.header-left-buttons,.header-right-buttons{display:flex;align-items:center;justify-content:center;width:48px;flex:0 0 48px}.review-header.no-undo .header-left-buttons{display:none}.btn-undo{width:46px;height:46px;padding:0;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-full);font-size:25px;font-weight:800;cursor:pointer;background:var(--color-surface);box-shadow:var(--shadow-brutal-sm);transition:transform .1s ease,box-shadow .1s ease}.btn-undo:hover{transform:translate(-1px,-1px);box-shadow:var(--shadow-brutal)}.btn-undo:disabled{color:var(--color-ink);opacity:1;cursor:default}.btn-undo:disabled:hover{transform:none;box-shadow:var(--shadow-brutal-sm)}.btn-close{width:46px;height:46px;background:var(--color-coral);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-full);font-weight:800;cursor:pointer;box-shadow:var(--shadow-brutal-sm)}.btn-close,.perspective-wrapper{display:flex;align-items:center;justify-content:center}.perspective-wrapper{perspective:1000px;flex:0 0 auto;min-height:0}.card-container,.perspective-wrapper{width:100%;max-width:var(--review-card-width);margin:0 auto}.card-container{aspect-ratio:7/10;max-height:calc(100vh - 190px);position:relative;transform-style:preserve-3d;transition:transform .6s cubic-bezier(.4,0,.2,1);cursor:pointer;pointer-events:auto}.card-container.flipped{transform:rotateY(180deg)}.review-card-flip-control{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.review-card-flip-control:focus-visible{position:relative;width:auto;height:auto;overflow:visible;clip:auto;clip-path:none;display:inline-flex;align-items:center;justify-content:center;align-self:center;margin:0 auto 8px;padding:8px 12px;border:2px solid var(--color-ink);border-radius:var(--radius-full);background:var(--color-yellow);color:var(--color-ink);font-weight:800;z-index:20}.review-loading-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;border-radius:var(--radius-lg);background:rgba(255,255,255,.54);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);pointer-events:none;z-index:8;text-align:center}.review-loading-next-icon{font-size:28px;line-height:1}.review-loading-text{font-size:14px;font-weight:800;color:var(--text-primary)}.is-buffering-next-card{cursor:default}.card-face{position:absolute;inset:0;backface-visibility:hidden;transition:transform .5s cubic-bezier(.4,0,.2,1);padding:clamp(26px,4vw,44px);display:flex;flex-direction:column;justify-content:space-between}@media (max-width:768px){.card-face{padding:18px 20px}}.card-front{transform:rotateY(0deg)}.card-back{transform:rotateY(180deg)}.card-top{display:flex;justify-content:flex-start;align-items:center;font-size:clamp(12px,1.6vw,15px);font-weight:800;color:var(--text-muted);width:100%;min-width:0;min-height:24px}.admin-delete-vocab{width:30px;height:30px;display:inline-grid;place-items:center;flex:0 0 auto;border:0;border-radius:0;background:transparent;color:#b42318;cursor:pointer;font-size:16px;line-height:1}.admin-delete-vocab:focus-visible,.admin-delete-vocab:hover{background:transparent}.admin-delete-vocab:hover{opacity:.72}.admin-delete-vocab:focus-visible{outline:2px solid #b42318;outline-offset:2px}.source-book{display:block;width:100%;min-width:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.tags-list{display:flex;gap:6px}.tag-badge{background:var(--color-mint);border:2px solid var(--color-ink);padding:6px 12px;border-radius:var(--radius-full);font-weight:700;font-size:11px;white-space:nowrap}.card-middle{justify-content:center;width:100%}.word-text{font-family:var(--font-display);font-size:clamp(2.25rem,6vw,3rem);font-weight:900}.ipa-front{margin-top:8px;font-size:1.1rem;color:var(--text-secondary);font-style:italic}.card-bottom{gap:12px}.back-content-grid,.card-bottom{display:flex;flex-direction:column;align-items:center}.back-content-grid{gap:clamp(18px,2.5vh,26px);width:100%;padding:0}.back-section{background:transparent;border:0;border-radius:0;padding:0;width:min(100%,560px)}.section-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);margin-bottom:6px}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.btn-icon-small{background:var(--color-yellow);border:1px solid var(--color-ink);border-radius:6px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:12px;cursor:pointer;transition:all .15s ease}.btn-icon-small:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 2px 4px rgba(0,0,0,.1)}.btn-icon-small:active:not(:disabled){transform:translateY(0)}.btn-icon-small:disabled{opacity:.5;cursor:not-allowed}.meaning-section{background:transparent}.meaning-block-compact{width:100%;text-align:center}.meaning-vietnamese-compact{font-size:clamp(16px,1.9vw,20px);font-weight:900;color:var(--text-primary);margin:0;line-height:1.28}.meaning-english-compact{font-size:clamp(15px,1.8vw,19px);color:#777;margin:14px 0 0;font-style:italic;line-height:1.32}.notes-block-compact{width:100%;background:var(--color-surface-muted);border:1px solid rgba(13,13,13,.1);border-radius:8px;padding:8px 12px}.notes-header-compact{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.notes-label{font-size:12px;font-weight:700;color:var(--text-secondary)}.btn-minimal-compact{background:none;border:none;font-size:14px;cursor:pointer;padding:2px;line-height:1}.notes-input-compact{width:100%;font-size:13px;padding:6px 8px;border:1px solid var(--color-ink);border-radius:4px;font-family:inherit}.notes-text-compact{font-size:13px;color:var(--text-primary);margin:0;line-height:1.3}.examples-block-compact{width:100%;background:var(--color-surface-muted);border:1px solid rgba(13,13,13,.1);border-radius:8px;padding:8px 12px}.examples-section{display:flex;align-items:center;justify-content:center;gap:clamp(8px,1.2vw,14px)}.examples-section.is-swipeable{touch-action:pan-y;cursor:grab;-webkit-user-select:none;user-select:none}.examples-section.is-swipeable:active{cursor:grabbing}.quote-mark{color:#777787;font-family:Georgia,serif;font-size:clamp(24px,3vw,32px);font-weight:900;line-height:.9;margin-top:0;flex:0 0 auto;align-self:flex-start}.examples-header-compact{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.examples-label{font-size:12px;font-weight:700;color:var(--text-secondary)}.example-item-compact{flex:0 1 auto;min-width:0;gap:6px;width:fit-content;max-width:100%}.example-add-slot,.example-item-compact{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.example-add-slot{min-height:138px;gap:8px}.admin-add-example-center{min-width:138px;justify-content:center;margin-inline:auto}.example-add-hint{margin:0;font-size:12px;line-height:1.35;color:var(--text-muted);text-align:center}.ex-en-compact{font-size:clamp(15px,1.9vw,19px);font-weight:400;color:var(--text-primary);margin:0;line-height:1.38;text-align:center;width:fit-content;max-width:100%}.ex-vi-compact{font-size:clamp(13px,1.6vw,16px);color:var(--text-secondary);margin:0;line-height:1.4;text-align:center}.example-carousel-controls{display:grid;grid-template-columns:auto minmax(38px,auto) auto;align-items:center;justify-content:center;gap:clamp(12px,2.4vw,20px);margin-top:0;margin-inline:auto;min-height:34px}.example-carousel-button{display:inline-flex;align-items:center;justify-content:center;width:clamp(30px,4vw,36px);height:clamp(30px,4vw,36px);border:1.5px solid var(--color-ink);border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-ink);line-height:1;cursor:pointer;padding:0;transition:background-color var(--transition-fast),transform var(--transition-fast)}.example-carousel-icon{display:block;width:18px;height:18px;flex:0 0 18px}.example-carousel-button:hover{background:var(--color-surface-muted);transform:translateY(-1px)}.example-carousel-button:active{transform:translateY(0)}.example-carousel-button:focus-visible{outline:3px solid rgba(255,216,90,.7);outline-offset:2px}.example-carousel-position{color:var(--text-muted);font-size:clamp(12px,1.6vw,14px);font-weight:800;line-height:1;text-align:center;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.example-actions-row{width:100%;justify-content:center}.admin-editable-content{cursor:pointer;border-radius:4px;transition:background-color var(--transition-fast)}.admin-editable-content:hover{background:rgba(255,224,102,.26)}@keyframes speaker-playing{0%,to{transform:scale(1) rotate(0deg)}35%{transform:scale(1.08) rotate(-4deg)}70%{transform:scale(1.04) rotate(4deg)}}@keyframes speaker-wave{0%,to{opacity:.25}50%{opacity:1}}.btn-tts.is-speaking svg,.ipa-pronunciation-btn.is-speaking svg{animation:speaker-playing .62s ease-in-out infinite;transform-origin:center}.btn-tts.is-speaking svg path,.ipa-pronunciation-btn.is-speaking svg path{animation:speaker-wave .62s ease-in-out infinite}.review-edit-modal-backdrop{position:fixed;inset:0;z-index:3000;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(10,10,10,.84)}.review-edit-modal{width:min(100%,560px);padding:22px;background:var(--color-surface)}.review-edit-modal-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.review-edit-modal-header h2{font-family:var(--font-display);font-size:20px;line-height:1.2}.review-edit-close{width:34px;height:34px;flex:0 0 34px;border:2px solid var(--color-ink);border-radius:var(--radius-full);background:var(--color-coral);font-weight:900;cursor:pointer}.review-edit-modal textarea{width:100%;min-height:110px;resize:vertical;padding:12px;border:2px solid var(--color-ink);border-radius:var(--radius-sm);background:var(--color-surface);font:inherit;line-height:1.45}.review-edit-example-list{display:flex;flex-direction:column;gap:14px}.review-edit-example-tabs{display:flex;flex-wrap:nowrap;align-items:center;gap:8px;overflow-x:auto;padding-bottom:2px}.review-edit-example-tab{padding:7px 12px;border:2px solid var(--color-ink);border-radius:var(--radius-full);background:rgba(255,255,255,.55);color:var(--color-ink);font-size:12px;font-weight:800;cursor:pointer;white-space:nowrap;flex:0 0 auto}.review-edit-example-tab.is-active{background:rgba(255,224,102,.42)}.review-edit-example-add{width:30px;height:30px;flex:0 0 30px;display:inline-flex;align-items:center;justify-content:center;border:2px dashed var(--color-ink);border-radius:var(--radius-full);background:rgba(255,224,102,.18);color:var(--color-ink);font-size:18px;font-weight:900;line-height:1;cursor:pointer}.review-edit-example-add:hover{background:rgba(255,224,102,.3)}.review-edit-example-item{display:flex;flex-direction:column;gap:8px}.review-edit-example-item-header{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;font-weight:800;color:var(--text-secondary)}.review-edit-example-translation{width:100%;padding:10px 12px;border:2px solid var(--color-ink);border-radius:var(--radius-sm);background:var(--color-surface);font:inherit}.admin-add-inline{width:fit-content;padding:6px 12px;border:2px dashed var(--color-ink);border-radius:var(--radius-full);background:rgba(255,224,102,.18);color:var(--color-ink);font-size:13px;font-weight:800;cursor:pointer}.admin-add-inline:hover{background:rgba(255,224,102,.3)}.admin-add-example{margin-top:2px}.example-actions-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:0}.review-edit-error{margin-top:8px;color:#b42318;font-size:13px;font-weight:700}.review-edit-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}.review-edit-actions .btn{min-width:88px;padding:9px 14px}.error-text-compact{font-size:11px;color:var(--color-error);margin:4px 0 0}.mobile-swipe-buttons{display:none;gap:12px;margin-top:16px;width:100%}@media (max-width:768px){.mobile-swipe-buttons{display:flex;justify-content:space-between}.btn-swipe-left,.btn-swipe-right{flex:1 1;display:flex;align-items:center;justify-content:center;gap:8px;padding:16px;border:2px solid var(--color-ink);border-radius:12px;font-weight:700;font-size:14px;cursor:pointer;transition:all .15s ease;box-shadow:2px 2px 0 0 var(--color-ink)}.btn-swipe-left{background:var(--color-coral);color:var(--color-ink)}.btn-swipe-right{background:var(--color-teal);color:var(--color-ink)}.btn-swipe-left:active:not(:disabled),.btn-swipe-right:active:not(:disabled){transform:translate(2px,2px);box-shadow:none}.btn-swipe-left:disabled,.btn-swipe-right:disabled{opacity:.5;cursor:not-allowed}}.front-actions{display:flex}.btn-tts,.front-actions{justify-content:center;align-items:center}.btn-tts{display:inline-flex;gap:8px;background:var(--color-yellow);border:var(--border-width) solid var(--color-ink);padding:12px;border-radius:var(--radius-full);font-weight:700;font-size:13px;cursor:pointer;box-shadow:var(--shadow-brutal-sm)}.tip-text{font-size:12px;color:var(--text-muted);font-weight:600}.swipe-overlay{position:absolute;top:0;bottom:0;width:50%;pointer-events:none;z-index:10;display:flex;align-items:center;justify-content:center;font-size:80px}.swipe-left{left:0;background:linear-gradient(90deg,rgba(255,71,87,.88) 0,rgba(255,107,107,.32) 58%,transparent)}.swipe-left:after{content:"❌";filter:drop-shadow(0 4px 8px rgba(0,0,0,.2))}.swipe-right{right:0;background:linear-gradient(270deg,rgba(35,181,161,.9) 0,rgba(94,207,192,.34) 58%,transparent)}.swipe-right:after{content:"✅";filter:drop-shadow(0 4px 8px rgba(0,0,0,.2))}.scrollable-back-content{width:100%;margin:16px 0;text-align:left;display:flex;flex-direction:column;gap:16px}.card-middle{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;text-align:center;flex:1 1;padding:12px 0;gap:12px;overflow-y:auto;overflow-x:hidden}.card-middle::-webkit-scrollbar{width:6px}.card-middle::-webkit-scrollbar-track{background:transparent}.card-middle::-webkit-scrollbar-thumb{background:var(--color-ink);border-radius:var(--radius-full)}.card-middle-front{justify-content:center;padding:0;gap:0}.word-header-back{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;width:100%;padding:0;border-bottom:0;margin-bottom:clamp(18px,2.8vh,28px)}.word-text-back{font-family:var(--font-display);font-size:clamp(30px,4.5vw,42px);font-weight:900;letter-spacing:-.02em;line-height:1}.ipa-pronunciation-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-width:0;background:#fbf7ee;border:1px solid rgba(13,13,13,.08);border-radius:var(--radius-full);padding:6px 14px 7px;font-size:clamp(14px,1.8vw,18px);font-weight:700;font-style:italic;color:var(--color-ink);cursor:pointer;box-shadow:0 3px 8px rgba(13,13,13,.035),inset 0 0 0 1px rgba(255,255,255,.55);transition:transform .1s,box-shadow .1s}.ipa-pronunciation-btn:hover{transform:translateY(-1px);box-shadow:0 4px 9px rgba(13,13,13,.045),inset 0 0 0 1px rgba(255,255,255,.6)}.ipa-pronunciation-btn:active{transform:translateY(1px);box-shadow:0 2px 5px rgba(13,13,13,.03),inset 0 0 0 1px rgba(255,255,255,.5)}.btn-tts-small{width:36px;height:36px;background:var(--color-teal);border:2px solid var(--color-ink);border-radius:var(--radius-full);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-brutal-sm)}.examples-block,.meaning-block,.notes-block{display:flex;flex-direction:column;gap:8px}.examples-block h3,.meaning-block h3,.notes-block h3{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:0}.meaning-vietnamese{font-size:1.35rem;font-weight:800;line-height:1.3}.meaning-english{font-size:14px;margin-top:4px}.examples-header,.notes-header{gap:8px}.btn-minimal{font-size:16px;font-weight:700;padding:6px 8px;line-height:1;box-shadow:var(--shadow-brutal-sm)}.notes-textarea{border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-md)}.notes-text,.notes-textarea{font-size:14px;line-height:1.5}.example-item{border-radius:var(--radius-md)}.ex-en{font-size:14px;font-weight:600}.ex-vi{font-size:13px;margin-top:4px;line-height:1.4}.ai-badge{right:10px;font-size:9px;font-weight:800}.no-examples-text{font-size:13px}.error-text{font-size:12px;padding:8px 10px}.action-buttons-container.tinder-actions{display:grid;grid-template-columns:1fr 1fr;gap:clamp(12px,2vw,22px);width:100%;max-width:var(--review-card-width);position:static;transform:none;margin:0;z-index:10}.tinder-actions--mobile{display:none}@media (max-width:768px){.tinder-actions--desktop{display:none}.tinder-actions--mobile{display:grid;position:static;padding:0;gap:12px;z-index:50}.srs-btn{padding:10px 12px;min-height:54px}.card-container{height:auto;min-height:unset}}@media (max-width:480px){.tinder-actions--mobile{gap:8px;padding:12px}.srs-btn{padding:9px 8px;min-height:52px}}.action-buttons-container.four-actions{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:10px;width:100%}.srs-btn{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:clamp(8px,1.4vw,13px);padding:clamp(11px,1.5vw,16px) 16px;border:var(--border-width) solid var(--color-ink);border-radius:22px;cursor:pointer;box-shadow:var(--shadow-brutal);transition:transform var(--transition-fast),box-shadow var(--transition-fast);font-family:var(--font-display);font-weight:900;font-size:clamp(15px,1.8vw,20px);min-height:clamp(52px,6.5vh,66px)}.srs-btn:active{transform:translate(2px,2px);box-shadow:none}.action-icon{font-size:16px}.srs-label{font-size:13px}.btn-forgotten{background:var(--color-coral);color:var(--color-ink)}.btn-remembered{background:var(--color-teal);color:var(--color-ink)}.action-icon{font-size:clamp(23px,3vw,31px);margin-bottom:0;line-height:1}.srs-label{font-weight:900;font-size:inherit;line-height:1}.srs-interval{font-size:10px;font-weight:600;opacity:.8;margin-top:2px}.book-detail-wrapper{display:flex;flex-direction:column;gap:20px}.book-detail-header{padding:28px;display:block}.header-meta{display:flex;flex-direction:column;gap:14px;min-width:0}.header-top-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.header-right{display:flex;align-items:flex-start}.header-meta h1,.title-row h1{font-family:var(--font-display);font-size:clamp(1.35rem,3vw,1.75rem);font-weight:900}.title-row{display:flex;align-items:flex-start;gap:12px}.book-toolbar{display:flex;gap:8px;margin-left:auto}.btn-icon{width:38px;height:38px;background:var(--color-surface);border:var(--border-width) solid var(--color-ink);cursor:pointer;font-size:16px;box-shadow:var(--shadow-brutal-sm)}.btn-icon,.btn-more-menu{border-radius:var(--radius-md)}.btn-more-menu{font-size:20px;font-weight:700;line-height:1}.btn-icon-danger:hover{background:var(--color-coral)}.btn-back{background:none;border:none;font-size:13px;font-weight:700;color:var(--text-secondary);cursor:pointer;margin-bottom:0}.btn-back:hover{color:var(--color-ink);text-decoration:underline}.header-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;justify-content:flex-start;margin-top:8px}.filter-section{padding:24px;display:flex;flex-direction:column;gap:16px}.search-input-wrapper{display:flex;align-items:center;gap:12px;background:var(--color-surface);border:var(--border-width) solid var(--color-ink);padding:12px 16px;border-radius:var(--radius-md);box-shadow:var(--shadow-brutal-sm);transition:box-shadow var(--transition-fast),border-color var(--transition-fast)}.search-input-wrapper:focus-within{border-color:var(--color-teal);box-shadow:3px 3px 0 0 var(--color-teal)}.search-input-wrapper input{width:100%;border:none;background:transparent;font-size:15px;font-weight:500;outline:none}.search-input-wrapper input::placeholder{color:var(--text-muted)}.chips-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.filter-chip{display:inline-flex;align-items:center;justify-content:center;background:var(--color-surface);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-full);font-size:13px;font-weight:600;padding:8px 14px;cursor:pointer;transition:all var(--transition-fast);min-height:36px;box-sizing:border-box}.filter-chip button{background:none;border:none;padding:0;margin:0;font:inherit;cursor:pointer}.filter-chip.active{background:var(--color-yellow)}.chip-label{padding:0;margin:0;line-height:1}.chip-remove{border:none;border-left:2px solid var(--color-ink);background:transparent;padding:0 0 0 10px;height:16px;font-weight:700;margin-left:8px;font-size:14px;line-height:1}.add-chip-button,.chip-remove{cursor:pointer;display:inline-flex;align-items:center}.add-chip-button{justify-content:center;gap:6px;padding:8px 14px;border-radius:var(--radius-full);border:var(--border-width) dashed var(--color-ink);font-size:13px;font-weight:600;color:var(--text-muted);background:var(--color-surface);transition:all var(--transition-fast);min-height:36px;box-sizing:border-box}.add-chip-button svg{flex-shrink:0;width:14px;height:14px}.add-chip-button:hover{color:var(--color-ink);background:var(--color-bg-warm)}.add-chip-wrapper{position:relative;z-index:10}.custom-dropdown-menu{position:absolute;top:calc(100% + 8px);left:0;background:var(--color-surface);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-md);padding:12px;width:min(300px,90vw);max-height:400px;overflow-y:auto;box-shadow:var(--shadow-brutal-lg);z-index:1000;display:block}.custom-dropdown-menu.hidden{display:none}.checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:14px}.dropdown-tags-list{padding-left:20px;margin-left:6px;border-left:2px solid var(--color-ink)}.vocab-list{display:flex;flex-direction:column;overflow:hidden}.vocab-list-item{padding:20px 24px;display:flex;justify-content:space-between;align-items:center;gap:18px;cursor:pointer;transition:background .15s ease;border-bottom:2px dashed rgba(13,13,13,.1)}.vocab-list-item:last-child{border-bottom:none}.vocab-list-item:hover{background:var(--color-bg-warm)}.skeleton-item{pointer-events:none;padding:16px 24px}.vocab-main-info{display:flex;flex-direction:column;gap:6px;flex:1 1;min-width:0}.vocab-word-line{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap}.vocab-word-line h3.word{font-family:var(--font-display);font-size:clamp(1.2rem,2.4vw,1.7rem);font-weight:900;margin:0;line-height:1.12}.vocab-word-line .ipa{font-size:clamp(.95rem,1.8vw,1.15rem);color:var(--text-secondary);font-style:italic;font-weight:500}.vocab-main-info .meaning{margin:0;font-size:clamp(1rem,2vw,1.18rem);color:var(--color-ink);font-weight:400;line-height:1.35}.vocab-meta-line{margin:10px 0 0;color:var(--text-secondary);font-size:clamp(.9rem,1.7vw,1rem);font-weight:500;line-height:1.35}.vocab-actions{display:flex;align-items:center;gap:12px;align-self:center;flex-shrink:0}.srs-status{font-size:.8rem;font-weight:800;padding:6px 12px;border:2px solid var(--color-ink);border-radius:var(--radius-full);text-transform:uppercase;white-space:nowrap}.vocab-list-item .srs-status{font-size:.78rem;font-weight:800;padding:5px 12px;min-width:52px;text-align:center;text-transform:none;line-height:1.1}.delete-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:2px solid var(--color-ink);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer;transition:background .15s ease}.delete-btn:hover{background:var(--color-coral)}.tag-pill{background:var(--color-mint);border:2px solid var(--color-ink);font-size:11px;font-weight:700;padding:2px 8px;border-radius:var(--radius-full)}.vocab-row-actions{display:flex;align-items:center;gap:12px}.srs-badge{font-size:10px;font-weight:800;padding:4px 10px;border:2px solid var(--color-ink);border-radius:var(--radius-full);text-transform:uppercase}.badge-new{background:var(--color-info)}.badge-learning{background:var(--color-yellow)}.badge-reviewing{background:var(--color-teal)}.badge-mastered{background:var(--color-mint)}.badge-leech{background:var(--color-coral)}.btn-delete{background:var(--color-surface);border:2px solid var(--color-ink);border-radius:var(--radius-sm);width:32px;height:32px;cursor:pointer}.btn-delete:hover{background:var(--color-coral)}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.modal-header h2{font-family:var(--font-display);font-size:1.15rem;font-weight:800}.btn-close-modal{width:36px;height:36px;background:var(--color-coral);border:2px solid var(--color-ink);border-radius:var(--radius-full);cursor:pointer;font-weight:800}.btn-text-action{background:none;border:none;font-size:13px;font-weight:700;color:var(--color-ink);text-decoration:underline;cursor:pointer}.modal-header-actions{display:flex;align-items:center;gap:10px}.detail-card{margin-bottom:16px;border:2px solid var(--color-ink);border-radius:var(--radius-md);box-shadow:3px 3px 0 var(--color-ink);overflow:hidden}.detail-card:last-child{margin-bottom:0}.detail-card-header{background:var(--color-surface);padding:10px 16px;border-bottom:2px solid var(--color-ink)}.detail-card-header h3{font-family:var(--font-display);font-size:.85rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em;color:var(--color-ink);margin:0}.detail-card-body{padding:16px;background:white}.word-main-card{background:var(--color-yellow);border:3px solid var(--color-ink);box-shadow:5px 5px 0 var(--color-ink)}.word-main-card .detail-card-body{padding:20px;background:transparent}.word-main-content{text-align:center}.word-main-title{font-family:var(--font-display);font-size:2.25rem;font-weight:900;color:var(--color-ink);margin:0 0 8px}.word-main-ipa{font-size:1.15rem;color:var(--color-ink);opacity:.85;font-style:italic;margin:0 0 12px}.word-main-meaning{font-size:1.35rem;font-weight:800;color:var(--color-ink);margin:0;line-height:1.4}.book-meta-text{font-weight:600}.book-meta-text,.definition-text{font-size:.95rem;color:var(--text-secondary);margin:0}.definition-text{line-height:1.6}.notes-card{background:var(--color-mint)}.notes-text{color:var(--color-ink)}.tags-row{display:flex;flex-wrap:wrap;gap:8px}.srs-details-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.srs-stat{display:flex;flex-direction:column;gap:6px;padding:10px 12px;background:var(--color-surface);border:2px solid var(--color-ink);border-radius:var(--radius-sm)}.srs-stat span:first-child{font-size:.75rem;color:var(--text-muted);font-weight:800;text-transform:uppercase;letter-spacing:.08em}.srs-stat strong{font-size:1rem;font-weight:900}.examples-card{background:var(--color-surface-muted)}.examples-list-detail{display:flex;flex-direction:column;gap:10px}.example-item-detail{padding:14px 16px;border:2px solid var(--color-ink);border-radius:var(--radius-sm);background:white;position:relative}.ex-ai{background:var(--color-lavender)}.ex-en{font-size:.95rem;font-weight:700;color:var(--color-ink);margin:0 0 6px}.ex-en,.ex-vi{line-height:1.5}.ex-vi{font-size:.9rem;color:var(--text-secondary);margin:0}.ai-tag{font-size:.7rem;font-weight:900;background:var(--color-yellow);border:2px solid var(--color-ink);padding:3px 8px;border-radius:var(--radius-full);position:absolute;top:10px;right:10px}.muted-text{color:var(--text-muted);font-style:italic;margin:0}.scrollable-body{max-height:75vh;overflow-y:auto;padding-right:8px}.scrollable-body::-webkit-scrollbar{width:10px}.scrollable-body::-webkit-scrollbar-track{background:var(--color-surface);border-left:2px solid var(--color-ink)}.scrollable-body::-webkit-scrollbar-thumb{background:var(--color-ink);border-radius:0}.app-modal-content.modal-large{max-width:660px}.app-modal-content.modal-detail{max-width:600px}.empty-vocab{padding:48px 24px;text-align:center;color:var(--text-secondary);font-weight:600}.section-meta,.unit-meta{display:block;font-size:11px;font-weight:600;color:var(--text-muted)}.section-meta{color:var(--text-secondary)}.importer-wrapper{display:flex;flex-direction:column;gap:24px}.importer-layout{display:grid;grid-template-columns:1.1fr 1.9fr;gap:20px;align-items:start}.input-panel,.preview-panel{padding:24px;display:flex;flex-direction:column;gap:16px}.input-panel h2,.preview-panel h2{font-family:var(--font-display);font-size:1.15rem;font-weight:800}.btn-block{width:100%}.btn-text{background:none;border:none;font-weight:700;text-decoration:underline;cursor:pointer}.error-panel{background:var(--color-coral)}.error-panel,.success-panel{border:var(--border-width) solid var(--color-ink);padding:12px;border-radius:var(--radius-md);font-weight:600;font-size:13px}.success-panel{background:var(--color-mint)}.preview-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.table-container{overflow-x:auto;max-height:520px;border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-md);box-shadow:var(--shadow-brutal-sm)}.preview-table{width:100%;border-collapse:collapse;font-size:13px}.preview-table th{background:var(--color-yellow);border-bottom:var(--border-width) solid var(--color-ink);padding:10px 12px;text-align:left;font-weight:800;position:sticky;top:0}.preview-table td{border-bottom:1px solid rgba(13,13,13,.12);padding:8px 12px;vertical-align:top}.preview-table tr:hover td{background:var(--color-bg-warm)}.preview-table input{width:100%;padding:6px 8px;border:2px solid var(--color-ink);border-radius:var(--radius-sm);background:var(--color-surface);font-size:12px}@media (max-width:1024px){.importer-layout{grid-template-columns:1fr}.vocab-row-content{flex-direction:column;align-items:flex-start;gap:8px}.header-actions{width:100%;flex-direction:column}.header-actions .btn{width:100%;justify-content:center}}@media (max-width:768px){.book-detail-header{padding:20px}.filter-section,.vocab-list-item{padding:16px 20px}.vocab-actions{gap:8px}.chips-row{gap:6px}.filter-chip{font-size:12px}.chip-label,.filter-chip{padding:6px 12px}.add-chip-button{font-size:12px;padding:6px 12px}}@media (max-width:600px){.review-wrapper .card-container{height:auto}.header-actions{width:100%}.header-actions .btn{width:100%;justify-content:center}.book-detail-header{padding:16px}.filter-section{padding:12px 16px}.vocab-list-item{padding:16px;gap:12px;align-items:flex-start}.vocab-word-line{gap:12px}.vocab-main-info .meaning{font-size:1rem}.vocab-word-line h3.word{font-size:1.12rem}.vocab-word-line .ipa{font-size:.95rem}.vocab-meta-line{font-size:.9rem}.vocab-list-item .srs-status{font-size:.76rem;min-width:50px;padding:5px 10px}}.examples-block,.meaning-block,.notes-block{margin-bottom:18px}.examples-block:last-child,.meaning-block:last-child,.notes-block:last-child{margin-bottom:0}.examples-header h3,.meaning-block h3,.notes-header h3{font-size:.8rem;font-weight:900;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin:0 0 10px}.meaning-vietnamese{font-size:1.3rem;font-weight:900;color:var(--color-ink);margin:0}.meaning-english{font-size:.95rem;color:var(--text-secondary);margin:8px 0 0;line-height:1.5}.examples-header,.notes-header{display:flex;justify-content:space-between;align-items:center}.btn-minimal{width:34px;height:34px;display:flex;align-items:center;justify-content:center;background:var(--color-surface);border:2px solid var(--color-ink);border-radius:var(--radius-sm);cursor:pointer;font-size:1rem;box-shadow:2px 2px 0 var(--color-ink);transition:transform .1s ease,box-shadow .1s ease}.btn-minimal:hover{transform:translate(-1px,-1px)}.btn-minimal:active{transform:translate(2px,2px);box-shadow:none}.btn-minimal:disabled{opacity:.5;cursor:not-allowed}.notes-textarea{width:100%;box-sizing:border-box;background:var(--color-surface);border:2px solid var(--color-ink);border-radius:var(--radius-sm);padding:10px 12px;font-size:.95rem;resize:none;font-family:inherit}.notes-text{font-size:.95rem;color:var(--text-secondary);margin:0;line-height:1.6}.examples-list{display:flex;flex-direction:column;gap:10px}.example-item{padding:12px 14px;border:2px solid var(--color-ink);border-radius:var(--radius-sm);background:var(--color-surface-muted);position:relative}.example-ai{background:var(--color-lavender)}.examples-list .ex-en{font-size:.95rem;font-weight:700;color:var(--color-ink);margin:0 0 6px;line-height:1.5}.examples-list .ex-vi{font-size:.9rem;color:var(--text-secondary);margin:0;line-height:1.5}.ai-badge{font-size:.7rem;font-weight:900;background:var(--color-yellow);border:2px solid var(--color-ink);padding:2px 6px;border-radius:var(--radius-full);position:absolute;top:8px;right:8px}.error-text{background:var(--color-coral);border:2px solid var(--color-ink);border-radius:var(--radius-sm);padding:10px 12px;font-size:.85rem;font-weight:700;color:var(--color-ink);margin-bottom:10px;line-height:1.4}.no-examples-text{font-size:.9rem;color:var(--text-muted);font-style:italic;margin:0}.spinner-mini{width:16px;height:16px;border:3px solid var(--color-ink);border-top:3px solid transparent;border-radius:50%;animation:spin-mini .8s linear infinite}@keyframes spin-mini{to{transform:rotate(1turn)}}.review-session-expired-dialog{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px;background:rgb(0 0 0/45%)}.review-session-expired-dialog-card{width:min(560px,100%);padding:24px}.review-session-expired-dialog-actions{display:flex;gap:12px;justify-content:flex-end;flex-wrap:wrap;margin-top:20px}.import-page{display:flex;flex-direction:column;gap:var(--space-lg)}.import-hero{position:relative;overflow:hidden;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:30px 34px;background:var(--color-teal);border:var(--border-width) solid var(--color-ink);border-radius:var(--radius-lg);box-shadow:var(--shadow-brutal)}.import-hero h1{max-width:690px;margin-top:12px;font:900 clamp(1.8rem,4vw,2.65rem)/1.05 var(--font-display);letter-spacing:-.035em}.import-hero p{max-width:670px;margin-top:12px;font-weight:500}.import-hero-sticker{flex:0 0 96px;display:grid;place-items:center;width:96px;height:96px;font-size:44px;background:var(--color-yellow);border:var(--border-width) solid var(--color-ink);border-radius:50%;box-shadow:var(--shadow-brutal);transform:rotate(7deg)}.import-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(260px,.75fr);gap:var(--space-lg);align-items:start}.import-guide,.import-panel,.import-results{padding:clamp(20px,3vw,30px)}.import-heading{display:flex;gap:12px;align-items:center}.import-heading>span{display:grid;place-items:center;flex:0 0 38px;height:38px;font:800 16px var(--font-display);background:var(--color-yellow);border:2px solid var(--color-ink);border-radius:50%}.import-guide h2,.import-heading h2{font:800 1.35rem/1.15 var(--font-display)}.import-heading p{margin-top:3px;color:var(--text-secondary);font-size:13px}.api-status{display:flex;align-items:center;gap:12px;margin:22px 0;padding:13px 14px;border:2px solid var(--color-ink);border-radius:var(--radius-md)}.api-status.ready{background:color-mix(in srgb,var(--color-mint) 45%,white)}.api-status.missing{background:color-mix(in srgb,var(--color-coral) 30%,white)}.api-status>b{display:grid;place-items:center;flex:0 0 30px;height:30px;border:2px solid var(--color-ink);border-radius:50%;background:white}.api-status>div{display:flex;flex:1 1;flex-direction:column;min-width:0;font-size:13px}.api-status small{color:var(--text-secondary)}.import-label{display:flex;justify-content:space-between;gap:12px;font-size:13px}.import-label span{color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.import-label .over{color:var(--color-error);font-weight:800}.import-textarea{min-height:220px;resize:vertical;line-height:1.6}.field-hint{color:var(--text-secondary);font-size:12px}.import-cta{width:100%;margin-top:4px}.spinner{width:17px;height:17px;border:2px solid;border-right:2px solid transparent;border-radius:50%;animation:spin .7s linear infinite}.import-alert{display:flex;flex-direction:column;margin-top:18px;padding:12px 14px;border:2px solid var(--color-ink);border-radius:var(--radius-sm);font-size:13px}.import-alert.error{background:color-mix(in srgb,var(--color-error) 25%,white)}.import-alert.success{background:color-mix(in srgb,var(--color-mint) 45%,white)}.import-guide{background:var(--color-yellow)}.import-guide ul{display:flex;flex-direction:column;gap:18px;margin-top:22px;list-style:none}.import-guide li{display:flex;gap:12px}.import-guide li>b{flex:0 0 36px;font:800 12px var(--font-display)}.import-guide li div{display:flex;flex-direction:column}.import-guide small{margin-top:3px;color:var(--text-secondary);line-height:1.35}.import-results{display:flex;flex-direction:column;gap:22px}.results-toolbar{display:flex;justify-content:space-between;gap:18px;align-items:center}.results-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.select-all{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:13px;font-weight:700;white-space:nowrap}.select-all input,.word-check input{width:19px;height:19px;accent-color:var(--color-teal)}.book-select{width:min(280px,100%)}.word-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.word-card{position:relative;padding:18px 18px 4px 50px;background:var(--color-surface-muted);border:2px solid var(--color-ink);border-radius:var(--radius-md);opacity:.64}.word-card.selected{opacity:1;background:color-mix(in srgb,var(--color-teal) 12%,white)}.word-check{position:absolute;top:29px;left:17px}.word-fields{display:grid;grid-template-columns:1.2fr .8fr;gap:0 12px}.word-fields .wide{grid-column:1/-1}.word-fields textarea{resize:vertical}.result-skeleton{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:18px;border:2px solid var(--color-ink);border-radius:var(--radius-md)}@media(max-width:900px){.import-layout{grid-template-columns:1fr}.import-guide ul{display:grid;grid-template-columns:repeat(3,1fr)}.results-toolbar{align-items:flex-start;flex-direction:column}.results-actions{width:100%;justify-content:flex-start}}@media(max-width:680px){.import-hero{padding:24px 20px}.import-hero-sticker{display:none}.import-guide ul,.word-grid{grid-template-columns:1fr}.api-status{align-items:flex-start;flex-wrap:wrap}.api-status .btn,.book-select,.results-actions,.results-actions .btn,.select-all{width:100%}.word-card{padding:16px 14px 2px 46px}.word-fields{grid-template-columns:1fr}.word-fields .wide{grid-column:auto}}@media(max-width:420px){.import-guide,.import-panel,.import-results{padding:18px 15px}.import-hero h1{font-size:1.7rem}}.key-error-list{margin:8px 0 4px;padding-left:18px}.key-error-list li{margin:3px 0}.import-alert .btn{align-self:flex-start;margin-top:8px}.analysis-lock-hero{background:var(--color-yellow)}.analysis-lock-card{display:flex;align-items:center;gap:24px;padding:clamp(24px,4vw,42px);background:var(--color-surface)}.analysis-lock-card h2{font:800 clamp(1.35rem,3vw,2rem)/1.1 var(--font-display)}.analysis-lock-card p{max-width:680px;margin:10px 0 20px;color:var(--text-secondary);line-height:1.6}.analysis-lock-card>a{display:inline-flex}.analysis-lock-icon{display:grid;place-items:center;flex:0 0 72px;width:72px;height:72px;background:var(--color-teal);border:var(--border-width) solid var(--color-ink);border-radius:20px;box-shadow:var(--shadow-brutal);font-size:32px}@media(max-width:680px){.analysis-lock-card{align-items:flex-start;flex-direction:column;gap:18px}.analysis-lock-icon{width:58px;height:58px;flex-basis:58px;font-size:25px}}