:root{--color-primary: #4F46E5;--color-primary-light: #818CF8;--color-primary-dark: #3730A3;--color-primary-bg: #EEF2FF;--color-success: #34C759;--color-success-light: #ECFDF5;--color-success-dark: #065F46;--color-danger: #FF3B30;--color-danger-light: #FEF2F2;--color-danger-dark: #991B1B;--color-warning: #FF9500;--color-warning-light: #FFF5E6;--color-warning-dark: #92400E;--color-info: #0EA5E9;--color-purple: #7C3AED;--label-primary: #000000;--label-secondary: rgba(60, 60, 67, .6);--label-tertiary: rgba(60, 60, 67, .3);--label-quaternary: rgba(60, 60, 67, .18);--separator: rgba(60, 60, 67, .12);--separator-opaque: #C6C6C8;--color-white: #FFFFFF;--color-gray-50: #F8FAFC;--color-gray-100: #F2F2F7;--color-gray-200: #E5E5EA;--color-gray-300: #C7C7CC;--color-gray-400: #8E8E93;--color-gray-500: #636366;--color-gray-600: #48484A;--color-gray-700: #3A3A3C;--color-gray-800: #2C2C2E;--color-gray-900: #1C1C1E;--surface-bg: #F2F2F7;--surface-card: #FFFFFF;--surface-inset: #EFEFF4;--surface-overlay: rgba(0, 0, 0, .45);--font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", system-ui, sans-serif;--font-size-xs: .6875rem;--font-size-sm: .8125rem;--font-size-base: 1rem;--font-size-lg: 1.0625rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.375rem;--font-size-3xl: 1.75rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.2;--line-height-normal: 1.45;--line-height-relaxed: 1.65;--letter-spacing-tight: -.04em;--letter-spacing-normal: -.02em;--letter-spacing-wide: .04em;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--max-width: 480px;--header-height: 56px;--bottom-nav-height: 68px;--safe-bottom: env(safe-area-inset-bottom, 0px);--radius-xs: 6px;--radius-sm: 8px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 18px;--radius-2xl: 22px;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0,0,0,.06), 0 0 0 .5px rgba(0,0,0,.04);--shadow-md: 0 2px 10px rgba(0,0,0,.08), 0 0 0 .5px rgba(0,0,0,.04);--shadow-lg: 0 4px 20px rgba(0,0,0,.1), 0 1px 4px rgba(0,0,0,.06);--shadow-xl: 0 8px 40px rgba(0,0,0,.12), 0 2px 8px rgba(0,0,0,.08);--shadow-primary: 0 4px 16px rgba(79, 70, 229, .28);--transition-micro: .1s ease;--transition-fast: .15s ease;--transition-base: .25s ease;--transition-slow: .4s ease;--transition-spring: .35s cubic-bezier(.34, 1.56, .64, 1);--transition-decel: .3s cubic-bezier(0, 0, .2, 1);--transition-accel: .2s cubic-bezier(.4, 0, 1, 1);--ease-decel: cubic-bezier(0, 0, .2, 1);--ease-accel: cubic-bezier(.4, 0, 1, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--z-base: 1;--z-overlay: 100;--z-modal: 200;--z-toast: 300}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--label-primary);background-color:var(--surface-bg);min-height:100dvh;overscroll-behavior:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100dvh;display:flex;flex-direction:column}h1,h2,h3,h4{font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);color:var(--label-primary)}h1{font-size:var(--font-size-2xl)}h2{font-size:var(--font-size-xl)}h3{font-size:var(--font-size-lg)}p{line-height:var(--line-height-relaxed)}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:var(--font-family);border:none;outline:none;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}input,textarea{font-family:var(--font-family);font-size:var(--font-size-base);outline:none;border:none}input:focus-visible,textarea:focus-visible{outline:none}.page{flex:1;display:flex;flex-direction:column;max-width:var(--max-width);margin:0 auto;width:100%;padding:0 var(--space-4);padding-bottom:calc(var(--bottom-nav-height) + var(--safe-bottom) + var(--space-4))}.page--full{padding:0}.page--no-nav{padding-bottom:var(--space-4)}.card{background:var(--surface-card);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-md)}.divider{height:.5px;background:var(--separator);margin:var(--space-4) 0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}@keyframes bounce-in{0%{transform:scale(.85);opacity:0}60%{transform:scale(1.04);opacity:1}to{transform:scale(1);opacity:1}}@keyframes progress-fill{0%{width:0}}.animate-fade-in{animation:fadeIn .2s var(--ease-decel) both}.animate-slide-up{animation:slideUp .22s var(--ease-decel) both}.animate-slide-down{animation:slideDown .2s var(--ease-decel) both}.animate-scale-in{animation:scaleIn .22s var(--ease-decel) both}.animate-bounce-in{animation:bounce-in .35s var(--ease-spring) both}.animate-shake{animation:shake .4s ease both}.stagger>*{animation-fill-mode:both}.stagger>*:nth-child(1){animation-delay:0ms}.stagger>*:nth-child(2){animation-delay:50ms}.stagger>*:nth-child(3){animation-delay:.1s}.stagger>*:nth-child(4){animation-delay:.15s}.stagger>*:nth-child(n+5){animation-delay:.2s}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-gray-300);border-radius:var(--radius-full)}.toast-container{position:fixed;top:calc(var(--space-3) + env(safe-area-inset-top,0px));left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:var(--space-2);z-index:var(--z-toast);width:calc(100% - var(--space-8));max-width:360px;pointer-events:none}.toast{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-full);box-shadow:0 4px 24px #0000002e,0 0 0 .5px #00000014;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);pointer-events:auto;background:#1c1c1ee6;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);color:var(--color-white);letter-spacing:-.01em}.toast--success .toast__icon{background:#34c75940;color:var(--color-success)}.toast--error .toast__icon{background:#ff3b3040;color:var(--color-danger)}.toast--info .toast__icon{background:#ffffff26;color:#fffc}.toast__icon{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);flex-shrink:0;transition:background var(--transition-fast)}.toast__message{flex:1}.app-shell{display:flex;flex-direction:column;min-height:100dvh}.app-shell__main{flex:1;display:flex;flex-direction:column}.bottom-nav{position:fixed;bottom:0;isolation:isolate;height:calc(var(--bottom-nav-height) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:#ffffffd1;-webkit-backdrop-filter:blur(24px) saturate(180%);backdrop-filter:blur(24px) saturate(180%);border-top:.5px solid var(--separator);display:flex;align-items:stretch;z-index:var(--z-overlay);box-shadow:0 -1px #0000000f;max-width:var(--max-width);left:50%;transform:translate(-50%);width:100%}@media(min-width:481px){.bottom-nav{border-left:.5px solid var(--separator);border-right:.5px solid var(--separator);box-shadow:var(--shadow-lg),0 -4px 16px #0000000f}}.bottom-nav__item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-1);background:transparent;color:var(--label-secondary);transition:color var(--transition-fast);padding:var(--space-2) var(--space-1);min-height:44px;border-radius:var(--radius-md);margin:var(--space-1);-webkit-tap-highlight-color:transparent}.bottom-nav__item:active{opacity:.75}.bottom-nav__item--active{color:var(--color-primary)}.bottom-nav__pill{position:absolute;top:var(--space-2);bottom:var(--space-2);left:0;width:calc(100% / var(--nav-total, 3));transform:translate(calc(var(--pill-idx, 0) * 100%));background:var(--color-primary-bg);border-radius:var(--radius-lg);transition:transform var(--transition-spring);pointer-events:none;z-index:0}.bottom-nav__item{position:relative;z-index:1}.bottom-nav__icon{font-size:1.25rem;line-height:1;transition:transform var(--transition-spring);display:block}.bottom-nav__label{font-size:.65rem;font-weight:var(--font-weight-medium);letter-spacing:.01em}.bottom-nav__item--logout{color:var(--label-quaternary)}.bottom-nav__item--logout:active{color:var(--color-danger);opacity:1}.spinner{border-radius:50%;border:2.5px solid var(--color-gray-100);border-top-color:currentColor;animation:spin .75s linear infinite;display:inline-block;flex-shrink:0}.spinner--primary{color:var(--color-primary)}.spinner--white{color:var(--color-white)}.spinner--success{color:var(--color-success)}.spinner--sm{width:18px;height:18px;border-width:2px}.spinner--md{width:28px;height:28px}.spinner--lg{width:40px;height:40px;border-width:3px}.page-loader{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--surface-bg);z-index:var(--z-modal);animation:fadeIn var(--transition-base) both}.page-loader__inner{display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.page-loader__text{font-size:var(--font-size-sm);color:var(--label-tertiary);animation:pulse 1.5s ease-in-out infinite;letter-spacing:-.01em}@keyframes page-enter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes page-enter-right{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}.page-transition{animation:page-enter .24s cubic-bezier(0,0,.2,1) both;min-height:100%;display:flex;flex-direction:column}.page-transition--drill{animation:page-enter-right .26s cubic-bezier(0,0,.2,1) both}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-family:var(--font-family);font-weight:var(--font-weight-semibold);border-radius:var(--radius-full);transition:transform var(--transition-micro),opacity var(--transition-micro),box-shadow var(--transition-fast);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;position:relative;-webkit-tap-highlight-color:transparent;letter-spacing:-.01em}.btn--sm{padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);min-height:36px}.btn--md{padding:var(--space-3) var(--space-5);font-size:var(--font-size-base);min-height:44px}.btn--lg{padding:var(--space-4) var(--space-6);font-size:var(--font-size-lg);min-height:52px}.btn--full{width:100%}.btn--primary{background:var(--color-primary);color:var(--color-white);box-shadow:var(--shadow-primary)}.btn--primary:hover:not(:disabled){box-shadow:0 6px 24px #4f46e561}.btn--primary:active:not(:disabled){transform:scale(.97);opacity:.92;box-shadow:var(--shadow-primary)}.btn--secondary{background:var(--color-gray-100);color:var(--label-primary)}.btn--secondary:active:not(:disabled){transform:scale(.97);background:var(--color-gray-200)}.btn--ghost{background:transparent;color:var(--color-primary)}.btn--ghost:hover:not(:disabled){background:var(--color-primary-bg)}.btn--ghost:active:not(:disabled){transform:scale(.97)}.btn--danger{background:var(--color-danger);color:var(--color-white)}.btn--danger:hover:not(:disabled){opacity:.88}.btn--danger:active:not(:disabled){transform:scale(.97)}.btn--success{background:var(--color-success);color:var(--color-white)}.btn:disabled{opacity:.42;cursor:not-allowed}.btn--loading{pointer-events:none}.btn__text--hidden{opacity:0;position:absolute}.auth-page{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-6) var(--space-4);position:relative;overflow:hidden;background:var(--surface-bg)}.auth-page__bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.auth-page__bg:before{content:"";position:absolute;top:-25%;right:-15%;width:55vw;height:55vw;max-width:380px;max-height:380px;background:radial-gradient(circle,rgba(79,70,229,.1) 0%,transparent 70%);border-radius:50%}.auth-page__bg:after{content:"";position:absolute;bottom:-15%;left:-15%;width:50vw;height:50vw;max-width:320px;max-height:320px;background:radial-gradient(circle,rgba(52,199,89,.07) 0%,transparent 70%);border-radius:50%}.auth-page__content{width:100%;max-width:400px;display:flex;flex-direction:column;gap:var(--space-6);position:relative;z-index:1}.auth-header{text-align:center}.auth-header__logo{font-size:3rem;line-height:1;margin-bottom:var(--space-3);animation:bounce-in var(--transition-spring) .1s both;display:block}.auth-header__title{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--label-primary);letter-spacing:-.03em;margin-bottom:var(--space-1)}.auth-header__subtitle{font-size:var(--font-size-sm);color:var(--label-secondary)}.auth-card{padding:0;overflow:hidden;box-shadow:var(--shadow-xl);border-radius:var(--radius-xl)}.auth-card__tabs{display:flex;position:relative;background:var(--color-gray-100);padding:4px;margin:var(--space-5) var(--space-5) 0;border-radius:var(--radius-md)}.auth-tab{flex:1;padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--label-secondary);background:transparent;border-radius:var(--radius-sm);transition:color var(--transition-fast);position:relative;z-index:1;min-height:34px;letter-spacing:-.01em}.auth-tab--active{color:var(--label-primary)}.auth-tab__indicator{position:absolute;top:4px;bottom:4px;left:4px;width:calc(50% - 4px);background:var(--color-white);border-radius:7px;box-shadow:var(--shadow-sm);transition:transform var(--transition-decel)}.auth-tab__indicator--right{transform:translate(100%)}.auth-form{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-5)}.form-field{display:flex;flex-direction:column;gap:var(--space-2)}.form-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--label-primary);letter-spacing:-.01em}.form-hint{font-weight:var(--font-weight-normal);color:var(--label-tertiary)}.form-input-wrap{display:flex;align-items:center;gap:var(--space-3);background:var(--color-white);border:1.5px solid var(--separator-opaque);border-radius:var(--radius-md);padding:0 var(--space-4);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);min-height:50px}.form-input-wrap:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 3px #4f46e51a}.form-input-icon{font-size:var(--font-size-base);opacity:.35;flex-shrink:0}.form-input{flex:1;background:transparent;color:var(--label-primary);font-size:1rem;padding:var(--space-3) 0}.form-input::placeholder{color:var(--label-quaternary)}.form-error{display:flex;align-items:center;gap:var(--space-2);background:var(--color-danger-light);color:var(--color-danger-dark);font-size:var(--font-size-sm);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md)}.pw-strength{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-1)}.pw-strength__bars{display:flex;gap:4px;flex:1}.pw-strength__bar{height:3px;flex:1;border-radius:var(--radius-full);background:var(--color-gray-200);transition:background var(--transition-base)}.pw-strength--weak .pw-strength__bar--filled{background:var(--color-danger)}.pw-strength--medium .pw-strength__bar--filled{background:var(--color-warning)}.pw-strength--strong .pw-strength__bar--filled{background:var(--color-success)}.pw-strength__label{font-size:11px;font-weight:var(--font-weight-semibold);min-width:38px;text-align:right}.pw-strength--weak .pw-strength__label{color:var(--color-danger)}.pw-strength--medium .pw-strength__label{color:var(--color-warning)}.pw-strength--strong .pw-strength__label{color:var(--color-success-dark)}.auth-switch{text-align:center;font-size:var(--font-size-sm);color:var(--label-secondary);padding:0 var(--space-5) var(--space-5)}.auth-switch__btn{background:none;color:var(--color-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm)}@keyframes shimmer{0%{background-position:-200% center}to{background-position:200% center}}.skeleton{display:block;background:linear-gradient(90deg,var(--color-gray-100) 25%,rgba(0,0,0,.04) 50%,var(--color-gray-100) 75%);background-size:200% 100%;animation:shimmer 1.5s ease infinite;flex-shrink:0}.skeleton--mb{margin-bottom:var(--space-3)}.skeleton--mb-sm{margin-bottom:var(--space-2)}.skeleton-card{background:var(--surface-card);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-sm)}.skeleton-card__row{display:flex;gap:var(--space-3);margin-top:var(--space-3)}.skeleton-card__row .skeleton{flex:1}.skeleton-stat{background:var(--surface-card);border-radius:var(--radius-lg);padding:var(--space-4);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}.home-page{padding-top:calc(var(--space-6) + env(safe-area-inset-top,0px));gap:var(--space-6)}.home-header{padding-top:var(--space-2)}.home-header__greeting{font-size:var(--font-size-sm);color:var(--label-secondary);margin-bottom:var(--space-1);letter-spacing:0}.home-header__title{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--label-primary);letter-spacing:-.03em;line-height:1.15}.home-skeleton-progress{height:80px;border-radius:var(--radius-lg)}.home-progress{padding:var(--space-4) var(--space-5);background:var(--surface-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.home-progress__header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--space-3)}.home-progress__title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--label-secondary);text-transform:uppercase;letter-spacing:.04em;font-size:11px}.home-progress__pct{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);letter-spacing:-.03em}.home-progress__bar{height:4px;background:var(--color-gray-200);border-radius:var(--radius-full);overflow:hidden;margin-bottom:var(--space-2)}.home-progress__fill{height:100%;border-radius:var(--radius-full);transition:width 1s cubic-bezier(0,0,.2,1);animation:progress-fill 1.2s cubic-bezier(0,0,.2,1) both}.home-progress__hint{font-size:11px;color:var(--label-tertiary);letter-spacing:0}.home-modes{display:flex;flex-direction:column;gap:var(--space-3)}.home-modes.stagger .mode-card{animation:slideUp .22s var(--ease-decel) both}.mode-card{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-5);border-radius:var(--radius-lg);text-align:left;transition:transform var(--transition-micro),opacity var(--transition-micro);min-height:68px;position:relative;overflow:hidden}.mode-card:not(:disabled):active{transform:scale(.98);opacity:.92}.mode-card:disabled{opacity:.6;cursor:not-allowed}.mode-card--random{background:var(--color-primary);color:#fff;box-shadow:var(--shadow-primary)}.mode-card--themed{background:var(--color-info);color:#fff;box-shadow:0 4px 16px #0ea5e94d}.mode-card--whitecode{background:var(--color-warning);color:#fff;box-shadow:0 4px 16px #ff95004d}.mode-card__icon{font-size:1.625rem;line-height:1;flex-shrink:0;opacity:.95}.mode-card__content{flex:1}.mode-card__content h3{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:inherit;margin-bottom:2px;letter-spacing:-.01em}.mode-card__content p{font-size:13px;opacity:.8;line-height:1.35}.mode-card__arrow{font-size:var(--font-size-base);opacity:.75;transition:transform var(--transition-fast)}.mode-card__arrow--chevron{font-size:var(--font-size-xl);transition:transform var(--transition-base)}.mode-card__arrow--open{transform:rotate(180deg)}.themes-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}.themes-grid.stagger .theme-pill{animation:slideUp .2s var(--ease-decel) both}.theme-pill{display:flex;align-items:center;gap:var(--space-2);background:var(--surface-card);border-radius:var(--radius-md);padding:var(--space-3) var(--space-3);font-size:12px;font-weight:var(--font-weight-medium);color:var(--label-primary);transition:transform var(--transition-micro),background var(--transition-fast);min-height:44px;text-align:left;box-shadow:var(--shadow-sm)}.theme-pill:not(:disabled):active{transform:scale(.97);background:var(--color-gray-100)}.theme-pill__emoji{font-size:.9375rem;flex-shrink:0}.theme-pill__label{flex:1;line-height:1.3}.theme-pill__count{font-size:11px;color:var(--label-tertiary);white-space:nowrap}.home-section{display:flex;flex-direction:column;gap:var(--space-3)}.home-section__header{display:flex;align-items:center;justify-content:space-between}.home-section__title{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--label-primary);letter-spacing:-.01em}.home-section__link{background:none;color:var(--color-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.top-failed{display:flex;flex-direction:column;background:var(--surface-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.failed-item{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4) var(--space-4);border-bottom:.5px solid var(--separator)}.failed-item:last-child{border-bottom:none}.failed-item__badge{font-size:11px;font-weight:var(--font-weight-bold);color:var(--color-danger-dark);background:var(--color-danger-light);border-radius:var(--radius-xs);padding:3px 7px;white-space:nowrap;flex-shrink:0;margin-top:1px}.failed-item__text{font-size:var(--font-size-sm);color:var(--label-primary);line-height:1.45}.home-onboarding{text-align:center;padding:var(--space-6) var(--space-5);background:var(--surface-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.home-onboarding__icon{font-size:2.75rem;line-height:1;margin-bottom:var(--space-4)}.home-onboarding__title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--label-primary);letter-spacing:-.02em;margin-bottom:var(--space-2)}.home-onboarding__text{font-size:var(--font-size-sm);color:var(--label-secondary);line-height:1.65;margin-bottom:var(--space-5)}.home-onboarding__steps{display:flex;flex-direction:column;gap:var(--space-3);text-align:left}.onboarding-step{display:flex;align-items:center;gap:var(--space-3);font-size:var(--font-size-sm);color:var(--label-primary)}.onboarding-step__num{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:var(--color-primary);color:#fff;font-size:12px;font-weight:var(--font-weight-bold);flex-shrink:0}.question-dots{display:flex;align-items:center;justify-content:center;gap:5px;flex-wrap:wrap;padding:var(--space-1) 0}.question-dot{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0;transition:transform var(--transition-spring),background var(--transition-fast)}.question-dot--pending{background:var(--color-gray-200)}.question-dot--current{background:var(--color-primary);transform:scale(1.3);box-shadow:0 0 0 2.5px var(--color-primary-bg);animation:pulse-dot 1.6s ease-in-out infinite}.question-dot--correct{background:var(--color-success);animation:dot-correct .45s var(--ease-spring) both}.question-dot--wrong{background:var(--color-danger);animation:dot-wrong .45s ease both}@keyframes pulse-dot{0%,to{box-shadow:0 0 0 3px var(--color-primary-bg)}50%{box-shadow:0 0 0 5px var(--color-primary-bg)}}@keyframes dot-correct{0%{transform:scale(1)}50%{transform:scale(1.6)}to{transform:scale(1)}}@keyframes dot-wrong{0%,to{transform:translate(0)}20%{transform:translate(-3px)}40%{transform:translate(3px)}60%{transform:translate(-2px)}80%{transform:translate(2px)}}.chat-ia{background:var(--surface-bg);border-radius:0 0 var(--radius-lg) var(--radius-lg);display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4)}.chat-ia__empty{display:flex;flex-direction:column;gap:var(--space-3)}.chat-ia__empty p{color:var(--label-secondary);font-size:var(--font-size-sm);text-align:center}.chat-ia__suggestions{display:flex;flex-direction:column;gap:var(--space-2)}.chat-ia__suggestion{background:var(--color-white);color:var(--color-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);border:1px solid var(--color-primary-bg);text-align:left;transition:background var(--transition-fast),transform var(--transition-micro);min-height:44px;-webkit-tap-highlight-color:transparent}.chat-ia__suggestion:active{background:var(--color-primary-bg);transform:scale(.98)}.chat-ia__messages{display:flex;flex-direction:column;gap:var(--space-3);overflow-y:auto;max-height:300px;padding-right:var(--space-1);overscroll-behavior:contain}.chat-msg{display:flex;align-items:flex-end;gap:var(--space-2)}.chat-msg--user{flex-direction:row-reverse}.chat-msg__avatar{font-size:1rem;flex-shrink:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--color-gray-200);border-radius:50%}.chat-msg__bubble{max-width:82%;padding:var(--space-3) var(--space-4);font-size:var(--font-size-sm);line-height:1.55}.chat-msg--user .chat-msg__bubble{background:var(--color-primary);color:var(--color-white);border-radius:var(--radius-lg) var(--radius-lg) var(--radius-sm) var(--radius-lg)}.chat-msg--ai .chat-msg__bubble{background:var(--color-white);color:var(--label-primary);border-radius:var(--radius-lg) var(--radius-lg) var(--radius-lg) var(--radius-sm);box-shadow:var(--shadow-sm);min-height:38px;display:flex;align-items:center}.chat-ia__typing{display:inline-flex;align-items:center;gap:5px;padding:2px 0}.chat-ia__typing span{width:6px;height:6px;border-radius:50%;background:var(--label-tertiary);animation:typing-bounce 1.4s ease-in-out infinite}.chat-ia__typing span:nth-child(2){animation-delay:.2s}.chat-ia__typing span:nth-child(3){animation-delay:.4s}@keyframes typing-bounce{0%,60%,to{transform:translateY(0);opacity:.35}30%{transform:translateY(-5px);opacity:1}}.chat-ia__error-row{display:flex;align-items:center;gap:var(--space-2);justify-content:center;flex-wrap:wrap}.chat-ia__error{font-size:12px;color:var(--color-danger);text-align:center}.chat-ia__retry{font-size:12px;font-weight:var(--font-weight-semibold);color:var(--color-primary);background:none;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);white-space:nowrap;transition:opacity var(--transition-micro);-webkit-tap-highlight-color:transparent}.chat-ia__retry:active{opacity:.7}.chat-ia__form{display:flex;gap:var(--space-2);align-items:center;background:var(--color-white);border:1.5px solid var(--separator-opaque);border-radius:var(--radius-full);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);transition:border-color var(--transition-fast)}.chat-ia__form:focus-within{border-color:var(--color-primary)}.chat-ia__input{flex:1;background:transparent;color:var(--label-primary);font-size:1rem;padding:var(--space-1) 0;min-width:0}.chat-ia__input::placeholder{color:var(--label-quaternary)}.chat-ia__char-count{font-size:11px;color:var(--color-warning);font-weight:var(--font-weight-semibold);flex-shrink:0;min-width:24px;text-align:right}.chat-ia__send{width:34px;height:34px;border-radius:50%;background:var(--color-primary);color:var(--color-white);font-size:var(--font-size-base);font-weight:var(--font-weight-bold);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:transform var(--transition-micro),opacity var(--transition-micro)}.chat-ia__send:active:not(:disabled){transform:scale(.93)}.chat-ia__send:disabled{background:var(--color-gray-300);cursor:not-allowed}.correction-panel{display:flex;flex-direction:column;gap:var(--space-1)}.correction-panel-card{background:var(--color-white);border-radius:var(--radius-lg);box-shadow:0 1px 3px #0000000f,0 8px 32px #0000000d;overflow:hidden;animation:slideUp .22s var(--ease-decel) both}.correction-layer{border-bottom:.5px solid var(--separator);background:transparent;transition:background var(--transition-fast)}.correction-layer:last-child{border-bottom:none}.correction-layer--open{background:var(--surface-inset)}.correction-layer__header{display:flex;align-items:center;gap:var(--space-3);padding:14px var(--space-5);width:100%;text-align:left;background:transparent;min-height:52px;transition:background var(--transition-micro);-webkit-tap-highlight-color:transparent}.correction-layer__header:active{background:var(--color-gray-50)}.correction-layer__icon{font-size:1rem;flex-shrink:0;width:22px;text-align:center;line-height:1}.correction-layer__title{flex:1;font-size:.9375rem;font-weight:var(--font-weight-semibold);color:var(--label-primary);letter-spacing:-.01em;transition:color var(--transition-fast)}.correction-layer--open.correction-layer--success .correction-layer__title{color:var(--color-success-dark)}.correction-layer--open.correction-layer--warning .correction-layer__title{color:var(--color-warning-dark)}.correction-layer--open.correction-layer--primary .correction-layer__title{color:var(--color-primary)}.correction-layer--open.correction-layer--purple .correction-layer__title{color:var(--color-purple)}.correction-layer__chevron{font-size:.6875rem;color:var(--label-tertiary);transition:transform var(--transition-base),color var(--transition-fast);flex-shrink:0}.correction-layer__chevron--open{transform:rotate(180deg);color:var(--label-secondary)}.correction-layer__body{padding:2px var(--space-5) var(--space-5);padding-left:calc(var(--space-5) + 22px + var(--space-3))}.correction-layer__text{font-size:var(--font-size-sm);color:var(--label-secondary);line-height:1.7}.correction-layer__empty{font-size:var(--font-size-sm);color:var(--label-tertiary);font-style:italic}.chat-toggle{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:transparent;color:var(--label-tertiary);border:none;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);transition:color var(--transition-fast),opacity var(--transition-micro);min-height:40px;width:100%;animation:slideUp .22s var(--ease-decel) .18s both;-webkit-tap-highlight-color:transparent}.chat-toggle:active{opacity:.7}.chat-toggle--open{color:var(--color-primary)}.chat-toggle__icon{font-size:.875rem}.chat-toggle__chevron{font-size:.5rem;color:var(--label-quaternary);transition:transform var(--transition-base)}.chat-toggle__chevron--open{transform:rotate(180deg)}.timer{position:relative;width:44px;height:44px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.timer__ring{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;transform:rotate(-90deg)}.timer__ring-bg{fill:none;stroke:var(--color-gray-100);stroke-width:3}.timer__ring-fill{fill:none;stroke:var(--color-primary);stroke-width:3;stroke-linecap:round;transition:stroke-dasharray 1s linear,stroke var(--transition-base)}.timer--warning .timer__ring-fill{stroke:var(--color-danger);animation:pulse 1.2s ease-in-out infinite}.timer__time{font-size:.625rem;font-weight:var(--font-weight-bold);color:var(--label-secondary);letter-spacing:-.02em;position:relative;z-index:1}.timer--warning .timer__time{color:var(--color-danger)}.session-page{display:flex;flex-direction:column;min-height:100dvh;background:var(--surface-bg);max-width:var(--max-width);margin:0 auto;width:100%}.session-header{display:flex;align-items:center;gap:var(--space-3);padding:calc(var(--space-3) + env(safe-area-inset-top,0px)) var(--space-4) var(--space-3);background:var(--surface-card);border-bottom:.5px solid var(--separator);position:sticky;top:0;z-index:var(--z-base)}.session-header__back{background:var(--color-gray-100);color:var(--label-secondary);width:36px;height:36px;border-radius:50%;font-size:var(--font-size-sm);flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:background var(--transition-micro),transform var(--transition-micro);-webkit-tap-highlight-color:transparent}.session-header__back:active{background:var(--color-gray-200);transform:scale(.93)}.session-header__progress{flex:1}.session-content{flex:1;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-4);overflow-y:auto;padding-bottom:var(--space-8)}.question-card{background:var(--surface-card);border-radius:var(--radius-xl);padding:var(--space-5);box-shadow:var(--shadow-md);display:flex;flex-direction:column;gap:var(--space-5)}.question-card__meta{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.question-card__badge{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);padding:3px 8px;border-radius:var(--radius-full)}.question-card__badge--theme{background:var(--color-primary-bg);color:var(--color-primary)}.question-card__badge--easy{background:var(--color-success-light);color:var(--color-success-dark)}.question-card__badge--medium{background:var(--color-warning-light);color:var(--color-warning-dark)}.question-card__badge--hard{background:var(--color-danger-light);color:var(--color-danger-dark)}.question-card__counter{margin-left:auto;font-size:var(--font-size-xs);color:var(--label-tertiary);font-weight:var(--font-weight-semibold);letter-spacing:-.01em}.question-card__text{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--label-primary);line-height:var(--line-height-relaxed);letter-spacing:-.01em}.answers-list{display:flex;flex-direction:column;gap:var(--space-3)}.answers-list.stagger .answer-btn{animation:slideUp .2s var(--ease-decel) both}.answer-btn{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);background:var(--color-gray-100);border:none;border-radius:var(--radius-lg);text-align:left;font-size:var(--font-size-base);color:var(--label-primary);transition:transform var(--transition-micro),background var(--transition-fast);min-height:56px;-webkit-tap-highlight-color:transparent}.answer-btn:not(:disabled):active{transform:scale(.97);background:var(--color-gray-200)}.answer-btn:disabled{cursor:not-allowed}.answer-btn--selected{background:var(--color-primary-bg);color:var(--color-primary);transform:none}.answer-btn--correct{background:var(--color-success-light)!important;color:var(--color-success-dark)!important;animation:bounce-in .35s var(--ease-spring) both}.answer-btn--wrong{background:var(--color-danger-light)!important;color:var(--color-danger-dark)!important;animation:shake .4s ease both}.answer-btn__letter{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:var(--color-gray-200);color:var(--label-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);flex-shrink:0;transition:all var(--transition-fast)}.answer-btn--selected .answer-btn__letter{background:var(--color-primary);color:#fff}.answer-btn--correct .answer-btn__letter{background:var(--color-success);color:#fff}.answer-btn--wrong .answer-btn__letter{background:var(--color-danger);color:#fff}.answer-btn__text{flex:1;line-height:var(--line-height-normal)}.answer-btn__icon{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);margin-left:auto;flex-shrink:0}.verdict-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 13px;border-radius:var(--radius-full);font-size:.8125rem;font-weight:var(--font-weight-semibold);letter-spacing:.01em;animation:bounce-in .35s var(--ease-spring) both;align-self:flex-start}.verdict-chip--correct{background:var(--color-success-light);color:var(--color-success-dark)}.verdict-chip--wrong{background:var(--color-danger-light);color:var(--color-danger-dark)}.verdict-chip__icon{font-weight:700}.verdict-chip__label{line-height:1}.correct-answer-callout{background:var(--color-success-light);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);display:flex;flex-direction:column;gap:var(--space-1)}.correct-answer-callout__label{font-size:11px;font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:.07em;color:var(--color-success-dark)}.correct-answer-callout__text{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-success-dark);line-height:var(--line-height-normal)}.correction-view{display:flex;flex-direction:column;gap:var(--space-4)}.correction-view__question{font-size:1.0625rem;font-weight:var(--font-weight-semibold);color:var(--label-primary);line-height:1.55;letter-spacing:-.015em;animation:fadeIn var(--transition-base) both}.session-next-btn{border-radius:var(--radius-full)!important;box-shadow:var(--shadow-primary);margin-top:var(--space-2)}.whitecode-advance{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-gray-50);border-radius:var(--radius-md);animation:fadeIn var(--transition-fast) both}.whitecode-advance__track{height:3px;background:var(--color-gray-200);border-radius:var(--radius-full);overflow:hidden}.whitecode-advance__bar{height:100%;border-radius:var(--radius-full);background:var(--color-primary);animation:progress-fill .8s linear both}.whitecode-advance__label{font-size:var(--font-size-xs);color:var(--label-tertiary);text-align:center;letter-spacing:-.01em}.recap-page{padding-bottom:var(--space-8)}@keyframes confetti-fall{0%{transform:translateY(-20px) rotate(0) scaleX(1);opacity:1}60%{transform:translateY(40vh) rotate(400deg) scaleX(-1);opacity:1}to{transform:translateY(75vh) rotate(720deg) scaleX(1);opacity:0}}.confetti-blast{position:fixed;top:0;left:0;right:0;height:100vh;pointer-events:none;z-index:500;overflow:hidden}.confetti-particle{position:absolute;top:-16px;left:var(--left);width:var(--size);height:var(--size);background:var(--c);border-radius:var(--shape);animation:confetti-fall var(--dur) var(--delay) ease-in both}.recap-hero{padding:var(--space-10) var(--space-6) var(--space-8);display:flex;justify-content:center;align-items:center}.recap-hero--success{background:linear-gradient(160deg,#052e16,#166534,#16a34a)}.recap-hero--fail{background:linear-gradient(160deg,#0f172a,#1e293b 60%,#334155)}.recap-hero__inner{text-align:center;color:#fff;display:flex;flex-direction:column;align-items:center;gap:var(--space-3)}.recap-hero__emoji{font-size:3.25rem;line-height:1;filter:drop-shadow(0 2px 8px rgba(0,0,0,.3))}.recap-hero__score{display:flex;align-items:baseline;gap:var(--space-2);line-height:1}.recap-hero__correct{font-size:4rem;font-weight:var(--font-weight-bold);color:#fff;letter-spacing:-.04em}.recap-hero__sep{font-size:2rem;opacity:.4;color:#fff}.recap-hero__total{font-size:2.5rem;font-weight:var(--font-weight-semibold);opacity:.6;color:#fff;letter-spacing:-.03em}.recap-hero__pct{font-size:var(--font-size-base);opacity:.75;color:#fff;letter-spacing:0}.recap-hero__verdict{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);padding:var(--space-2) var(--space-5);border-radius:var(--radius-full);background:#ffffff26;color:#fff;letter-spacing:-.01em;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.recap-actions{display:flex;gap:var(--space-3);padding:var(--space-5) var(--space-4) var(--space-2)}.recap-actions .btn{flex:1}.recap-filter-tabs{display:flex;gap:0;padding:4px;background:var(--color-gray-100);border-radius:var(--radius-md);margin:0 var(--space-4) var(--space-2)}.recap-filter-tab{flex:1;padding:var(--space-2) var(--space-3);border-radius:9px;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);background:transparent;color:var(--label-secondary);transition:background var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast);min-height:34px;letter-spacing:-.01em;-webkit-tap-highlight-color:transparent}.recap-filter-tab--active{background:var(--color-white);color:var(--label-primary);box-shadow:var(--shadow-sm)}.recap-filter-tab--correct.recap-filter-tab--active{color:var(--color-success-dark)}.recap-filter-tab--wrong.recap-filter-tab--active{color:var(--color-danger-dark)}.recap-section{padding:0 var(--space-4)}.recap-empty{text-align:center;color:var(--label-tertiary);font-size:var(--font-size-sm);padding:var(--space-8) 0;font-style:italic}.recap-questions{background:var(--surface-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden}.recap-question{border-bottom:.5px solid var(--separator)}.recap-question:last-child{border-bottom:none}.recap-question--correct,.recap-question--wrong{border-left:none}.recap-question__header{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4) var(--space-4);width:100%;text-align:left;background:transparent;min-height:56px;transition:background var(--transition-micro)}.recap-question__header:active{background:var(--color-gray-100)}.recap-question__dot{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;font-size:11px;font-weight:var(--font-weight-bold);flex-shrink:0;margin-top:2px}.recap-question__dot--correct{background:var(--color-success-light);color:var(--color-success-dark)}.recap-question__dot--wrong{background:var(--color-danger-light);color:var(--color-danger-dark)}.recap-question__meta{flex:1;display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.recap-question__top{display:flex;align-items:center;gap:var(--space-2)}.recap-question__num{font-size:11px;font-weight:var(--font-weight-semibold);color:var(--label-tertiary);flex-shrink:0}.recap-question__theme{font-size:11px;font-weight:var(--font-weight-semibold);color:var(--color-primary);background:var(--color-primary-bg);padding:1px 7px;border-radius:var(--radius-full);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}.recap-question__text{font-size:var(--font-size-sm);color:var(--label-primary);line-height:1.45}.recap-question__chevron{font-size:.625rem;color:var(--label-tertiary);flex-shrink:0;margin-top:4px}.recap-question__correction{padding:var(--space-4);border-top:.5px solid var(--separator);background:var(--surface-bg)}.recap-question__no-correction{padding:var(--space-4);font-size:var(--font-size-sm);color:var(--label-tertiary);font-style:italic;text-align:center}.dashboard-page{padding-top:calc(var(--space-6) + env(safe-area-inset-top,0px));gap:var(--space-6)}.dashboard-header h1{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--label-primary);letter-spacing:-.03em}.dashboard-header__sub{font-size:var(--font-size-sm);color:var(--label-secondary);margin-top:var(--space-1)}.dashboard-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);text-align:center;padding:var(--space-8)}.dashboard-empty__icon{font-size:3rem}.dashboard-empty h2{font-size:var(--font-size-xl);color:var(--label-primary);letter-spacing:-.02em}.dashboard-empty p{font-size:var(--font-size-sm);color:var(--label-secondary)}.dashboard-empty__cta{margin-top:var(--space-2);background:var(--color-primary);color:#fff;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);padding:var(--space-3) var(--space-6);border-radius:var(--radius-full);box-shadow:var(--shadow-primary);transition:transform var(--transition-micro),opacity var(--transition-micro)}.dashboard-empty__cta:active{transform:scale(.97);opacity:.9}.dashboard-global{padding:var(--space-5)}.global-rate{display:flex;align-items:center;gap:var(--space-5)}.global-rate__ring{position:relative;width:92px;height:92px;flex-shrink:0}.global-rate__ring svg{width:100%;height:100%;transform:rotate(-90deg)}.ring-bg{fill:none;stroke:var(--color-gray-200);stroke-width:2.5}.ring-fill{fill:none;stroke-width:2.5;stroke-linecap:round;transition:stroke-dasharray 1.2s cubic-bezier(0,0,.2,1)}.global-rate__center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}.global-rate__num{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);line-height:1;letter-spacing:-.03em}.global-rate__label{font-size:10px;color:var(--label-tertiary);letter-spacing:.02em;text-transform:uppercase}.global-rate__text h2{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);letter-spacing:-.02em;color:var(--label-primary);margin-bottom:var(--space-1)}.global-rate__text p{font-size:var(--font-size-sm);color:var(--label-secondary);line-height:1.4}.global-rate__sessions{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-primary);margin-top:var(--space-2)!important}.dashboard-section{display:flex;flex-direction:column;gap:var(--space-3)}.dashboard-section__title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--label-secondary);text-transform:uppercase;letter-spacing:.04em;font-size:11px;padding-left:var(--space-1)}.themes-stats{background:var(--surface-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden}.themes-stats.stagger .theme-stat,.sessions-list.stagger .session-hist-card,.top-failed-list.stagger .failed-card{animation:slideUp .2s var(--ease-decel) both}.theme-stat{padding:var(--space-4) var(--space-5);display:flex;flex-direction:column;gap:var(--space-2);border-bottom:.5px solid var(--separator)}.theme-stat:last-child{border-bottom:none}.theme-stat__header{display:flex;align-items:center;gap:var(--space-2)}.theme-stat__emoji{font-size:.9375rem;flex-shrink:0;width:20px;text-align:center}.theme-stat__code{font-size:11px;font-weight:var(--font-weight-semibold);color:var(--label-tertiary);flex-shrink:0;letter-spacing:.02em}.theme-stat__label{flex:1;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--label-primary);letter-spacing:-.01em}.theme-stat__rate{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);white-space:nowrap;letter-spacing:-.02em}.theme-stat__bar{height:4px;background:var(--color-gray-200);border-radius:var(--radius-full);overflow:hidden}.theme-stat__fill{height:100%;border-radius:var(--radius-full);transition:width 1s cubic-bezier(0,0,.2,1);animation:progress-fill 1.2s cubic-bezier(0,0,.2,1) both}.theme-stat__count{font-size:11px;color:var(--label-tertiary)}.theme-stat--untouched{opacity:.42}.theme-stat__rate--untouched{font-size:var(--font-size-sm);color:var(--label-tertiary)}.top-failed-list{background:var(--surface-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden}.failed-card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4) var(--space-5);border-bottom:.5px solid var(--separator)}.failed-card:last-child{border-bottom:none}.failed-card__meta{display:flex;align-items:center;gap:var(--space-2)}.failed-card__code{font-size:11px;font-weight:var(--font-weight-semibold);background:var(--color-primary-bg);color:var(--color-primary);padding:2px 7px;border-radius:var(--radius-xs);letter-spacing:.01em}.failed-card__count{font-size:11px;font-weight:var(--font-weight-semibold);color:var(--color-danger-dark);background:var(--color-danger-light);padding:2px 7px;border-radius:var(--radius-xs)}.failed-card__text{font-size:var(--font-size-sm);color:var(--label-primary);line-height:1.45}.sessions-list{background:var(--surface-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden}.session-hist-card{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-5);cursor:pointer;border-bottom:.5px solid var(--separator);transition:background var(--transition-micro)}.session-hist-card:last-child{border-bottom:none}.session-hist-card:active{background:var(--color-gray-100)}.session-hist-card__left{display:flex;flex-direction:column;gap:3px}.session-hist-card__mode{font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--label-primary);letter-spacing:-.01em}.session-hist-card__date{font-size:12px;color:var(--label-secondary)}.session-hist-card__score{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.session-hist-card__pct{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);line-height:1;letter-spacing:-.03em}.session-hist-card__raw{font-size:12px;color:var(--label-tertiary)}
