*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--color-primary:#4f46e5;--color-primary-hover:#4338ca;--color-danger:#dc2626;--color-danger-hover:#b91c1c;--color-success:#16a34a;--color-bg:#f8fafc;--color-surface:#fff;--color-border:#e2e8f0;--color-text:#1e293b;--color-text-secondary:#64748b;--color-text-inverse:#fff;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--radius:8px;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, Consolas, "Courier New", monospace;--color-info:#3b82f6;--color-info-bg:#3b82f61a;--color-info-border:#3b82f64d;--color-danger-bg:#dc26261a;--color-danger-border:#dc26264d;--color-success-bg:#16a34a1a;--color-success-border:#16a34a4d;--color-warning:#f59e0b;--color-warning-bg:#f59e0b1a;--color-warning-border:#f59e0b4d}[data-theme=dark]{--color-bg:#0f172a;--color-surface:#1e293b;--color-border:#334155;--color-text:#f1f5f9;--color-text-secondary:#94a3b8;--color-text-inverse:#0f172a;--color-primary:#818cf8;--color-danger:#f87171;--color-success:#4ade80;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 6px #0006;--color-info:#60a5fa;--color-info-bg:#60a5fa26;--color-info-border:#60a5fa4d;--color-danger-bg:#f8717126;--color-danger-border:#f871714d;--color-success-bg:#4ade8026;--color-success-border:#4ade804d;--color-warning:#fbbf24;--color-warning-bg:#fbbf2426;--color-warning-border:#fbbf244d}body{font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;line-height:1.5}#root{flex-direction:column;min-height:100vh;display:flex}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit;font-size:inherit}input{font-family:inherit;font-size:inherit}@media (width<=480px){input,textarea,select{font-size:16px!important}}.error-boundary{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);max-width:480px;box-shadow:var(--shadow-sm);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;margin:64px auto;padding:48px 24px;display:flex}.error-boundary h2{color:var(--color-danger);font-size:18px}.error-boundary p{color:var(--color-text-secondary);font-size:14px}.error-boundary button{background:var(--color-primary);color:var(--color-text-inverse);border-radius:var(--radius);cursor:pointer;border:none;padding:8px 20px;font-size:14px;font-weight:500}.error-boundary button:hover{background:var(--color-primary-hover,var(--color-primary))}.loading-error{flex-direction:column;align-items:center;gap:12px;padding:32px 0;display:flex}.loading-error p{color:var(--color-danger);font-size:14px}.retry-btn{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);padding:6px 16px;font-size:14px}.retry-btn:hover{background:var(--color-bg)}@media (width<=768px){.app-main{padding:20px 24px}}@media (width<=480px){.app-main{padding:16px 12px 72px}.header-inner{gap:8px;height:48px}.header-logo{font-size:16px}.header-username{display:none}body.review-active .app-main{padding:12px}}.locale-switcher{border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;color:var(--color-text-secondary);opacity:.7;background:0 0;padding:4px 8px;font-size:12px;font-weight:600;line-height:1;transition:opacity .15s}.locale-switcher:hover{opacity:1}.header{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:0 16px;padding-top:env(safe-area-inset-top)}.header-inner{align-items:center;gap:16px;max-width:800px;height:56px;margin:0 auto;display:flex}.header-logo{color:var(--color-primary);font-size:18px;font-weight:700;text-decoration:none}.header-logo:hover{text-decoration:none}.breadcrumb{flex:1;align-items:center;gap:4px;font-size:14px;display:flex}.breadcrumb-sep{color:var(--color-text-secondary);margin:0 2px}.breadcrumb-link{color:var(--color-text-secondary);text-decoration:none}.breadcrumb-link:hover{color:var(--color-primary);text-decoration:underline}.breadcrumb-item{color:var(--color-text);font-weight:500}.header-auth{align-items:center;gap:12px;margin-left:auto;display:flex}.header-username{color:var(--color-text-secondary);font-size:14px;font-weight:500}.header-logout-btn{color:var(--color-text-secondary);border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;background:0 0;padding:6px 12px;font-size:13px;font-weight:500;transition:color .15s,border-color .15s}.header-logout-btn:hover{color:var(--color-text);border-color:var(--color-text-secondary)}.header-auth-link{color:var(--color-primary);font-size:14px;font-weight:500;text-decoration:none}.header-auth-link:hover{text-decoration:underline}.theme-toggle{cursor:pointer;opacity:.7;background:0 0;border:none;padding:4px;font-size:18px;line-height:1;transition:opacity .15s}.theme-toggle:hover{opacity:1}.header-back-btn{color:var(--color-primary);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:4px 0;font-size:14px;font-weight:500;display:none}@media (width<=480px){.header-back-btn{display:block}.breadcrumb,.header-username,.header-logout-btn,.header-auth-link,body.review-active .header{display:none}}.tab-bar{background:var(--color-surface);border-top:1px solid var(--color-border);z-index:100;height:56px;padding-bottom:env(safe-area-inset-bottom);display:none;position:fixed;bottom:0;left:0;right:0}.tab-bar-item{color:var(--color-text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:2px;text-decoration:none;transition:color .15s;display:flex}.tab-bar-item--active{color:var(--color-primary)}.tab-bar-icon{font-size:20px;line-height:1}.tab-bar-label{font-size:11px;font-weight:500}@media (width<=480px){.tab-bar{grid-template-columns:repeat(3,1fr);display:grid}body.review-active .tab-bar{display:none}}.loading-spinner{flex-direction:column;align-items:center;gap:12px;padding:48px 0;display:flex}.spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:32px;height:32px;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{color:var(--color-text-secondary);font-size:14px}.notification{--notif-color:var(--color-info);--notif-bg:var(--color-info-bg);--notif-border:var(--color-info-border);background:var(--color-surface);border-radius:var(--radius);width:340px;max-width:420px;box-shadow:var(--shadow-md);opacity:0;align-items:flex-start;gap:12px;padding:14px 16px 18px;transition:opacity .3s,transform .3s cubic-bezier(.34,1.56,.64,1);display:flex;position:relative;overflow:hidden;transform:translate(100%)}.notification--visible{opacity:1;transform:translate(0)}.notification--leaving{opacity:0;transition:opacity .3s,transform .3s;transform:translate(100%)scale(.95)}.notification--info{--notif-color:var(--color-info);--notif-bg:var(--color-info-bg);--notif-border:var(--color-info-border)}.notification--success{--notif-color:var(--color-success);--notif-bg:var(--color-success-bg);--notif-border:var(--color-success-border)}.notification--warning{--notif-color:var(--color-warning);--notif-bg:var(--color-warning-bg);--notif-border:var(--color-warning-border)}.notification--error{--notif-color:var(--color-danger);--notif-bg:var(--color-danger-bg);--notif-border:var(--color-danger-border)}.notification__icon{width:22px;height:22px;color:var(--notif-color);flex-shrink:0;justify-content:center;align-items:center;display:flex}.notification__icon svg{width:100%;height:100%}.notification__content{flex:1;min-width:0}.notification__title{color:var(--color-text);margin-bottom:2px;font-size:14px;font-weight:600;line-height:1.4}.notification__message{color:var(--color-text-secondary);word-wrap:break-word;word-break:break-word;font-size:13px;line-height:1.5}.notification__action{color:var(--notif-color);background:var(--notif-bg);border:1px solid var(--notif-border);cursor:pointer;border-radius:6px;align-items:center;margin-top:6px;padding:4px 10px;font-family:inherit;font-size:12px;font-weight:500;transition:background .15s;display:inline-flex}.notification__action:hover{background:var(--notif-border)}.notification__close{width:22px;height:22px;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .15s,background .15s;display:flex}.notification__close svg{width:14px;height:14px}.notification__close:hover{color:var(--color-text);background:#0000000f}.notification__progress{background:#00000014;height:3px;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.notification__progress-bar{background:var(--notif-color);height:100%;animation:linear forwards notification-progress}@keyframes notification-progress{0%{width:100%}to{width:0%}}.notification:hover .notification__progress-bar{animation-play-state:paused}@media (width<=480px){.notification{width:100%;max-width:none}}.notification-container{z-index:9999;pointer-events:none;flex-direction:column;gap:10px;display:flex;position:fixed}.notification-container>*{pointer-events:auto}.notification-container--top-right{align-items:flex-end;top:20px;right:20px}.notification-container--top-left{align-items:flex-start;top:20px;left:20px}.notification-container--top-center{align-items:center;top:20px;left:50%;transform:translate(-50%)}.notification-container--bottom-right{flex-direction:column-reverse;align-items:flex-end;bottom:20px;right:20px}.notification-container--bottom-left{flex-direction:column-reverse;align-items:flex-start;bottom:20px;left:20px}.notification-container--bottom-center{flex-direction:column-reverse;align-items:center;bottom:20px;left:50%;transform:translate(-50%)}@media (width<=480px){.notification-container{top:calc(10px + env(safe-area-inset-top,0px))!important;align-items:stretch!important;bottom:auto!important;left:12px!important;right:12px!important;transform:none!important}}.cookie-consent{z-index:99;background:var(--color-surface);border-top:1px solid var(--color-border);box-shadow:var(--shadow-md);animation:.3s cookie-slide-up;position:fixed;bottom:0;left:0;right:0}@keyframes cookie-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.cookie-consent-inner{align-items:center;gap:16px;max-width:800px;margin:0 auto;padding:12px 16px;display:flex}.cookie-consent-text{color:var(--color-text-secondary);flex:1;font-size:13px;line-height:1.5}.cookie-consent-text a{color:var(--color-primary);font-weight:500}.cookie-consent-btn{background:var(--color-primary);color:var(--color-text-inverse);border-radius:var(--radius);white-space:nowrap;cursor:pointer;border:none;flex-shrink:0;padding:8px 20px;font-size:13px;font-weight:600}.cookie-consent-btn:hover{background:var(--color-primary-hover,var(--color-primary))}body.review-active .cookie-consent{display:none}@media (width<=480px){.cookie-consent{bottom:calc(56px + env(safe-area-inset-bottom,0px))}.cookie-consent-inner{flex-direction:column;align-items:stretch;gap:8px}.cookie-consent-btn{text-align:center;width:100%}}.main-page{max-width:600px;margin:0 auto}.onboarding{text-align:center;flex-direction:column;align-items:center;padding:32px 16px 24px;animation:.3s onboarding-fade-in;display:flex}@keyframes onboarding-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.onboarding-visual{background:var(--color-surface);border:2px solid var(--color-border);border-radius:50%;justify-content:center;align-items:center;width:120px;height:120px;margin-bottom:24px;font-size:48px;transition:transform .2s,border-color .2s;display:flex}.onboarding-visual:hover{border-color:var(--color-primary);transform:scale(1.05)}.onboarding-step-content{flex-direction:column;align-items:center;gap:8px;min-height:100px;display:flex}.onboarding-step-content h2{color:var(--color-text);font-size:22px;font-weight:700}.onboarding-step-content p{color:var(--color-text-secondary);max-width:340px;font-size:15px;line-height:1.6}.onboarding-dots{gap:8px;margin:24px 0;display:flex}.onboarding-dot{background:var(--color-border);cursor:pointer;border:none;border-radius:50%;width:8px;height:8px;padding:0;transition:background .2s,width .2s}.onboarding-dot--active{background:var(--color-primary);border-radius:4px;width:24px}.onboarding-actions{flex-direction:column;gap:8px;width:100%;max-width:280px;display:flex}.onboarding-btn{border-radius:var(--radius);cursor:pointer;border:none;padding:12px 24px;font-size:15px;font-weight:600;transition:background .15s,opacity .15s}.onboarding-btn--primary{background:var(--color-primary);color:var(--color-text-inverse)}.onboarding-btn--primary:hover{background:var(--color-primary-hover,var(--color-primary))}.onboarding-btn--ghost{color:var(--color-text-secondary);border:1px solid var(--color-border);background:0 0}.onboarding-btn--ghost:hover{background:var(--color-surface);color:var(--color-text)}.home-dashboard{animation:.3s home-fade-in}@keyframes home-fade-in{0%{opacity:0}to{opacity:1}}.home-greeting{margin-bottom:20px;font-size:22px;font-weight:700}.home-greeting-name{color:var(--color-primary)}.home-stats{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:24px;display:grid}.home-stat{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);flex-direction:column;align-items:center;gap:4px;padding:16px 12px;display:flex}.home-stat-value{font-size:28px;font-weight:700}.home-stat-label{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:12px}.home-stat--due .home-stat-value{color:var(--color-danger)}.home-stat--streak .home-stat-value{color:var(--color-success)}.home-section-title{color:var(--color-text-secondary);margin-bottom:12px;font-size:16px;font-weight:600}.home-actions{flex-direction:column;gap:10px;margin-bottom:28px;display:flex}.home-action-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);align-items:center;gap:14px;padding:16px 20px;text-decoration:none;transition:box-shadow .15s,border-color .15s;display:flex}.home-action-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-sm);text-decoration:none}.home-action-icon{background:var(--color-bg);border-radius:var(--radius);flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:20px;display:flex}.home-action-info{flex-direction:column;gap:2px;display:flex}.home-action-title{font-size:15px;font-weight:600}.home-action-subtitle{color:var(--color-text-secondary);font-size:13px}.home-topics{flex-direction:column;gap:8px;display:flex}.home-topic-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);justify-content:space-between;align-items:center;padding:16px 20px;text-decoration:none;transition:box-shadow .15s,border-color .15s;display:flex}.home-topic-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-sm);text-decoration:none}.home-topic-name{font-size:16px;font-weight:600}.home-topic-slug{color:var(--color-text-secondary);background:var(--color-bg);border-radius:4px;padding:2px 8px;font-size:13px}@media (width<=480px){.onboarding{padding:24px 12px 20px}.onboarding-visual{width:100px;height:100px;margin-bottom:20px;font-size:40px}.onboarding-step-content h2{font-size:20px}.onboarding-step-content p{font-size:14px}.home-stats{grid-template-columns:1fr;gap:8px}.home-stat{flex-direction:row;justify-content:space-between;padding:12px 16px}.home-greeting{font-size:20px}}.topics-page h1{margin-bottom:20px;font-size:24px}.topic-list{flex-direction:column;gap:8px;display:flex}.topic-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);justify-content:space-between;align-items:center;padding:16px 20px;text-decoration:none;transition:box-shadow .15s,border-color .15s;display:flex}.topic-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-sm);text-decoration:none}.topic-name{font-size:16px;font-weight:600}.topic-slug{color:var(--color-text-secondary);background:var(--color-bg);border-radius:4px;padding:2px 8px;font-size:13px}.stats-dashboard{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:24px;display:grid}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);flex-direction:column;align-items:center;gap:4px;padding:16px 12px;display:flex}.stat-value{color:var(--color-text);font-size:28px;font-weight:700}.stat-label{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:12px}.stat-card--due .stat-value{color:var(--color-danger)}.stat-card--streak .stat-value{color:var(--color-success)}@media (width<=480px){.stats-dashboard{grid-template-columns:1fr;gap:8px}.stat-card{flex-direction:row;justify-content:space-between;padding:12px 16px}}.confirm-overlay{z-index:100;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.confirm-dialog{background:var(--color-surface);border-radius:var(--radius);width:90%;max-width:400px;box-shadow:var(--shadow-md);padding:24px}.confirm-message{margin-bottom:20px;font-size:15px}.confirm-actions{justify-content:flex-end;gap:8px;display:flex}.confirm-cancel-btn{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);padding:8px 16px;font-size:14px}.confirm-cancel-btn:hover{background:var(--color-bg)}.confirm-delete-btn{background:var(--color-danger);border:1px solid var(--color-danger);border-radius:var(--radius);color:var(--color-text-inverse);padding:8px 16px;font-size:14px}.confirm-delete-btn:hover{background:var(--color-danger-hover)}.decks-page h1{margin-bottom:20px;font-size:24px}.deck-form{flex-wrap:wrap;align-items:flex-start;gap:8px;margin-bottom:16px;display:flex}.deck-form input{border:1px solid var(--color-border);border-radius:var(--radius);min-width:200px;padding:8px 12px;font-size:14px}.deck-form input:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #4f46e51a}.deck-form-submit{background:var(--color-primary);border-radius:var(--radius);color:var(--color-text-inverse);border:none;padding:8px 16px;font-size:14px}.deck-form-submit:hover{background:var(--color-primary-hover)}.deck-form-submit:disabled{opacity:.6}.form-error{color:var(--color-danger);width:100%;font-size:13px}.deck-list{flex-direction:column;gap:8px;display:flex}.deck-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.deck-card-link{color:var(--color-text);flex:1;align-items:center;gap:12px;text-decoration:none;display:flex}.deck-card-link:hover{text-decoration:none}.deck-card-name{font-weight:600}.deck-card-meta{color:var(--color-text-secondary);background:var(--color-bg);border-radius:4px;padding:2px 8px;font-size:12px}.deck-delete-btn{color:var(--color-danger);background:0 0;border:none;border-radius:4px;padding:4px 10px;font-size:13px}.deck-delete-btn:hover{background:#dc26261a}.deck-limit-info{color:var(--color-text-secondary);margin-bottom:12px;font-size:13px}.deck-limit-warning{color:#b45309}.deck-limit-reached{color:var(--color-danger);font-weight:500}.deck-limit-cta{font-style:italic}.deck-limit-message{color:var(--color-danger);margin-bottom:12px;font-size:13px}.deck-card-count{color:var(--color-text-secondary);margin-left:4px;font-size:12px}@media (width<=768px){.decks-page h1{font-size:22px}}@media (width<=480px){.decks-page h1{font-size:20px}.deck-form{flex-direction:column}.deck-form input{min-width:100%}.deck-form-submit{width:100%}.deck-card{flex-wrap:wrap;gap:8px}.deck-card-link{min-width:0}}.card-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;justify-content:space-between;align-items:center;margin-bottom:8px;padding:12px 16px;display:flex}.card-item:active{background:#4f46e50d}.card-item-content{flex:1;gap:16px;min-width:0;display:flex}.card-item-front{min-width:120px;font-weight:600}.card-item-back{color:var(--color-text-secondary);min-width:120px}.card-item-hint{color:var(--color-text-secondary);opacity:.4;font-size:13px;font-style:italic}.card-item-actions{gap:4px;display:flex}.card-item-edit-btn,.card-item-delete-btn{border:none;border-radius:4px;padding:4px 10px;font-size:13px}.card-item-edit-btn{color:var(--color-primary);background:0 0}.card-item-edit-btn:hover{background:#4f46e51a}.card-item-delete-btn{color:var(--color-danger);background:0 0}.card-item-delete-btn:hover{background:#dc26261a}@media (width<=768px){.card-item-content{flex-wrap:wrap}}.card-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:12px;padding:16px}.card-form-fields{gap:12px;display:flex}.card-form-field{flex-direction:column;flex:1;gap:4px;display:flex}.card-form-field label{color:var(--color-text-secondary);font-size:13px;font-weight:500}.card-form-field input{border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);background:var(--color-surface);padding:8px 12px;font-size:14px}.card-form-field input:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #4f46e51a}.card-form-error{color:var(--color-danger);margin-top:8px;font-size:13px}.card-form-actions{gap:8px;margin-top:12px;display:flex}.card-form-submit{background:var(--color-primary);border-radius:var(--radius);color:var(--color-text-inverse);border:none;padding:6px 16px;font-size:14px}.card-form-submit:hover{background:var(--color-primary-hover)}.card-form-submit:disabled{opacity:.6}.card-form-cancel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);padding:6px 16px;font-size:14px}.card-form-cancel:hover{background:var(--color-bg)}@media (width<=480px){.card-form-fields{flex-direction:column}}.pagination{justify-content:center;align-items:center;gap:12px;padding:16px 0;display:flex}.pagination-btn{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);padding:6px 14px;font-size:14px}.pagination-btn:hover:not(:disabled){background:var(--color-bg)}.pagination-btn:disabled{opacity:.4;cursor:not-allowed}.pagination-info{color:var(--color-text-secondary);font-size:14px}.cards-page h1{margin-bottom:20px;font-size:24px}.cards-page-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.cards-page-header h1{margin-bottom:0}.review-link{background:var(--color-surface);border:1px solid var(--color-primary);border-radius:var(--radius);color:var(--color-primary);padding:6px 14px;font-size:14px;text-decoration:none}.review-link:hover{background:#4f46e50d;text-decoration:none}.add-btn{background:var(--color-primary);border-radius:var(--radius);color:var(--color-text-inverse);border:none;margin-bottom:16px;padding:8px 16px;font-size:14px;display:inline-block}.add-btn:hover{background:var(--color-primary-hover)}.card-list{margin-top:8px}.empty-state{text-align:center;color:var(--color-text-secondary);padding:32px 0}.card-limit-info{color:var(--color-text-secondary);margin-bottom:12px;font-size:13px}.card-limit-warning{color:#b45309}.card-limit-reached{color:var(--color-danger);font-weight:500}.card-limit-cta{font-style:italic}.card-limit-message{color:var(--color-danger);margin-bottom:12px;font-size:13px}.card-search{margin-bottom:16px}.card-search-input{border:1px solid var(--color-border);border-radius:var(--radius);width:100%;max-width:400px;color:var(--color-text);background:var(--color-surface);padding:8px 12px;font-size:14px}.card-search-input:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #4f46e51a}.card-search-input::placeholder{color:var(--color-text-secondary)}.add-btn:disabled{opacity:.5;cursor:not-allowed}.back-link{color:var(--color-text-secondary);align-items:center;gap:4px;margin-bottom:12px;font-size:14px;text-decoration:none;display:inline-flex}.back-link:hover{color:var(--color-primary);text-decoration:none}@media (width<=768px){.cards-page h1{font-size:22px}}@media (width<=480px){.cards-page h1{font-size:20px}.cards-page-header{flex-direction:column;align-items:flex-start;gap:8px}.card-search-input{max-width:100%}}.swipe-card{border:1px solid var(--color-border);background:var(--color-surface);-webkit-user-select:none;user-select:none;touch-action:none;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;width:100%;max-width:320px;height:50vh;display:flex;position:absolute}.swipe-card--top{z-index:10;cursor:grab;box-shadow:var(--shadow-md)}.swipe-card--top:active{cursor:grabbing}.swipe-card--stacked{z-index:1;opacity:.6;pointer-events:none;transform:scale(.95)translateY(8px)}.swipe-card-overlay{letter-spacing:1px;text-transform:uppercase;pointer-events:none;border-radius:12px;justify-content:center;align-items:center;font-size:24px;font-weight:700;display:flex;position:absolute;inset:0}.swipe-card-overlay--know{color:var(--color-success);border:3px solid var(--color-success);background:#16a34a26}.swipe-card-overlay--dont-know{color:var(--color-danger);border:3px solid var(--color-danger);background:#dc262626}.swipe-card-overlay-content{text-align:center;width:100%;position:absolute;top:5%}.swipe-card-content{text-align:center;flex-direction:column;align-items:center;gap:20px;padding:2px 10px;display:flex}.swipe-card-front{font-size:28px;font-weight:700}.swipe-card-back{color:var(--color-text-secondary);font-size:18px}.swipe-card-hint{color:var(--color-text-secondary);opacity:.6;font-size:12px;position:absolute;bottom:12px}@media (width<=480px){.swipe-card-front{font-size:22px}.swipe-card-back{font-size:16px}.swipe-card-overlay{font-size:20px}}.review-page h1{margin-bottom:20px;font-size:24px}.review-menu-empty,.review-menu-info{text-align:center;margin-bottom:24px}.review-menu-sub{color:var(--color-text-secondary);font-size:14px}.review-menu-actions{justify-content:center;gap:12px;margin-bottom:12px;display:flex}.review-menu-btn{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;padding:12px 28px;font-size:14px;font-weight:500}.review-menu-btn:hover{background:var(--color-border)}.review-menu-btn--primary{background:var(--color-primary);color:var(--color-text-inverse);border-color:var(--color-primary)}.review-menu-btn--primary:hover{background:var(--color-primary-hover)}.review-menu-btn:disabled{opacity:.5;cursor:not-allowed}.review-menu-hint{text-align:center;color:var(--color-text-secondary);font-size:13px}.review-stats{justify-content:center;gap:16px;margin-bottom:24px;display:flex}.review-stat{border-radius:20px;padding:4px 12px;font-size:14px;font-weight:500}.review-stat--known{color:var(--color-success);background:#16a34a1a}.review-stat--unknown{color:var(--color-danger);background:#dc26261a}.review-stat--remaining{background:var(--color-bg);color:var(--color-text-secondary)}.swipe-stack{justify-content:center;align-items:center;width:100%;max-width:320px;height:50vh;margin:0 auto 32px;display:flex;position:relative}.review-done{text-align:center;padding:32px 0}.review-done h2{margin-bottom:16px}.review-done-sub{color:var(--color-text-secondary);font-size:14px}.review-done-stats{justify-content:center;gap:16px;margin-bottom:20px;display:flex}.review-restart-btn{background:var(--color-primary);border-radius:var(--radius);color:var(--color-text-inverse);cursor:pointer;border:none;padding:10px 24px;font-size:14px;font-weight:500}.review-restart-btn:hover{background:var(--color-primary-hover)}.review-restart-btn--secondary{color:var(--color-text-secondary);border:1px solid var(--color-border);background:0 0;margin-left:8px}.review-restart-btn--secondary:hover{background:var(--color-bg)}.review-done-actions{justify-content:center;align-items:center;gap:8px;display:flex}.review-back-link{text-align:center;margin-top:16px}.review-active-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.review-active-header h1{margin-bottom:0}.review-close-btn{color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius);background:0 0;border:none;padding:4px 8px;font-size:24px;line-height:1;transition:background .15s;display:none}.review-close-btn:hover{background:var(--color-border)}@media (width<=480px){.review-page h1{font-size:20px}.review-menu-actions{flex-direction:column}.review-menu-btn{width:100%}.review-stats,.review-done-stats{flex-wrap:wrap;gap:8px}.review-done-actions{flex-direction:column}.review-restart-btn--secondary{margin-left:0}.review-close-btn{display:block}body.review-active .app-main{padding:12px}.review-page--active .swipe-stack{max-width:100%;height:calc(100dvh - 120px)}.review-page--active .swipe-stack .swipe-card{height:65vh}.review-page--active .review-stats{margin-bottom:12px}.review-page--active .review-back-link{display:none}}.settings-page{max-width:400px}.settings-page h1{margin-bottom:24px;font-size:24px}.settings-section{border-bottom:1px solid var(--color-border);margin-bottom:24px;padding-bottom:24px}.settings-section:last-of-type{border-bottom:none}.settings-section-title{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px;font-size:14px;font-weight:500}.settings-row{align-items:center;gap:12px;display:flex}.settings-lang-btn{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);color:var(--color-text);cursor:pointer;padding:8px 20px;font-size:14px;font-weight:500;transition:border-color .15s,background .15s}.settings-lang-btn:hover{border-color:var(--color-text-secondary)}.settings-lang-btn--active{background:var(--color-primary);color:var(--color-text-inverse);border-color:var(--color-primary)}.settings-account-info{margin-bottom:16px}.settings-username{color:var(--color-text);font-size:16px;font-weight:600}.settings-email{color:var(--color-text-secondary);font-size:14px}.settings-logout-btn{color:var(--color-danger);border:1px solid var(--color-danger);border-radius:var(--radius);cursor:pointer;background:0 0;padding:10px 24px;font-size:14px;font-weight:500;transition:background .15s}.settings-logout-btn:hover{background:#dc262614}.settings-version{color:var(--color-text-secondary);margin-top:8px;font-size:13px}.settings-link{color:var(--color-primary);font-size:14px;font-weight:500;text-decoration:none}.settings-link:hover{text-decoration:underline}@media (width<=480px){.settings-page h1{font-size:20px}}.login-page{justify-content:center;align-items:center;min-height:60vh;display:flex}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);width:100%;max-width:400px;padding:32px}.auth-card h1{text-align:center;margin-bottom:24px;font-size:24px}.form-group{margin-bottom:16px}.form-group label{color:var(--color-text);margin-bottom:6px;font-size:14px;font-weight:500;display:block}.form-group input{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);width:100%;color:var(--color-text);box-sizing:border-box;padding:10px 12px;font-size:14px;transition:border-color .15s}.form-group input:focus{border-color:var(--color-primary);outline:none}.auth-button{color:#fff;background:var(--color-primary);border-radius:var(--radius);cursor:pointer;border:none;width:100%;margin-top:8px;padding:12px;font-size:15px;font-weight:600;transition:opacity .15s}.auth-button:hover{opacity:.9}.auth-button:disabled{opacity:.6;cursor:not-allowed}.auth-verify-hint{text-align:center;background:var(--color-warning-bg);border:1px solid var(--color-warning-border);border-radius:var(--radius);margin-bottom:16px;padding:10px 12px}.login-resend-btn{color:var(--color-primary);border:1px solid var(--color-primary);border-radius:var(--radius);cursor:pointer;background:0 0;margin-top:8px;padding:6px 12px;font-size:13px;font-weight:500;display:block}.login-resend-btn:hover{background:var(--color-primary);color:#fff}.auth-footer{text-align:center;color:var(--color-text-secondary);margin-top:20px;font-size:14px}.auth-footer a{color:var(--color-primary);font-weight:500;text-decoration:none}.auth-footer a:hover{text-decoration:underline}.register-page{justify-content:center;align-items:center;min-height:60vh;display:flex}.register-verification-message{color:var(--color-text-secondary);margin-bottom:12px;font-size:14px;line-height:1.6}.register-spam-hint{color:var(--color-text-secondary);margin-bottom:16px;font-size:13px}.register-resend-section{margin:16px 0}.register-resend-sent{color:var(--color-success);font-size:14px}.auth-button--secondary{color:var(--color-primary);border:1px solid var(--color-border);background:0 0}.auth-button--secondary:hover{background:var(--color-bg)}.consent-group{margin-bottom:8px}.consent-label{cursor:pointer;align-items:flex-start;gap:8px;display:flex}.consent-label input[type=checkbox]{cursor:pointer;width:16px;height:16px;accent-color:var(--color-primary);flex-shrink:0;margin-top:3px}.consent-label span{color:var(--color-text-secondary);font-size:13px;line-height:1.5}.consent-label a{color:var(--color-primary);font-weight:500;text-decoration:none}.consent-label a:hover{text-decoration:underline}.verify-page{justify-content:center;align-items:center;min-height:60vh;display:flex}.verify-page .auth-card{text-align:center;max-width:400px}.verify-page h1{margin-bottom:16px;font-size:22px}.verify-success{color:var(--color-success);margin-bottom:8px;font-size:16px;font-weight:600}.verify-status-text{color:var(--color-text-secondary);margin-bottom:16px;font-size:14px}.verify-login-link{text-align:center;margin-top:16px;text-decoration:none;display:inline-block}.verify-resend-form{flex-direction:column;gap:8px;margin-top:12px;display:flex}.verify-resend-form input{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);width:100%;color:var(--color-text);padding:10px 12px;font-size:14px}.verify-resend-sent{color:var(--color-success);margin-top:8px;font-size:14px}.verify-resend-error{color:var(--color-danger);margin-top:8px;font-size:14px}.privacy-page{max-width:680px;margin:0 auto}.privacy-page h1{margin-bottom:8px;font-size:24px}.privacy-updated{color:var(--color-text-secondary);margin-bottom:20px;font-size:13px}.privacy-controller{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:24px;padding:12px 16px;font-size:14px;line-height:1.6}.privacy-section{margin-bottom:20px}.privacy-section h2{margin-bottom:8px;font-size:17px;font-weight:600}.privacy-body p{color:var(--color-text-secondary);white-space:pre-line;margin-bottom:8px;font-size:14px;line-height:1.7}@media (width<=480px){.privacy-page h1{font-size:20px}.privacy-section h2{font-size:16px}}.not-found-page{flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:64px 0;display:flex}.not-found-page h1{color:var(--color-text-secondary);font-size:48px}.not-found-page p{color:var(--color-text-secondary);margin-bottom:16px}.app-main{flex:1;width:100%;max-width:800px;margin:0 auto;padding:24px 16px}
