:root{--bg: #fff8ec;--bg-card: #ffffff;--bg-cream: #ffe8be;--bg-cream-deep: #f5d9a8;--orange: #e8842c;--orange-hover: #d4721f;--orange-soft: #fff0e0;--blue: #2e6db5;--blue-hover: #255a96;--blue-soft: #e8f1fb;--brown: #3d2817;--text: #2c1810;--text-muted: #6b5344;--border: #e8d4bc;--danger: #c44b2b;--ok: #2f9e5a;--radius: 18px;--radius-sm: 14px;--shadow: 0 8px 28px rgba(61, 40, 23, .08);--shadow-lg: 0 16px 48px rgba(61, 40, 23, .12);--font: "Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;--header-h: 56px;--tabbar-h: 68px;--ease: cubic-bezier(.22, 1, .36, 1);--safe-b: env(safe-area-inset-bottom, 0px);--safe-t: env(safe-area-inset-top, 0px)}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font);color:var(--text);line-height:1.55;-webkit-font-smoothing:antialiased;background-color:var(--bg);background-image:radial-gradient(ellipse 70% 45% at 100% 100%,rgba(232,241,251,.45) 0%,transparent 55%),linear-gradient(180deg,#fff8ec,#fff5e4);background-attachment:fixed}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}button,input,textarea{font-family:inherit}.auth-shell{min-height:100dvh;display:flex;flex-direction:column;padding:calc(20px + var(--safe-t)) 20px calc(32px + var(--safe-b));position:relative}.auth-brand{position:relative;z-index:1;display:flex;align-items:center;gap:10px;color:var(--text);text-decoration:none;margin-bottom:28px}.auth-brand:hover{text-decoration:none}.auth-brand img{width:44px;height:44px;border-radius:50%;object-fit:cover;box-shadow:0 4px 14px #3d28171f}.auth-brand-name{font-weight:800;font-size:1.15rem;letter-spacing:-.02em}.auth-brand-name span{color:var(--orange)}.auth-main{position:relative;z-index:1;flex:1;display:flex;flex-direction:column;justify-content:center;max-width:420px;width:100%;margin:0 auto;animation:rise-in .45s var(--ease) both}.auth-title{margin:0 0 8px;font-size:clamp(1.85rem,6vw,2.25rem);font-weight:800;letter-spacing:-.035em;line-height:1.15}.auth-lead{margin:0 0 28px;color:var(--text-muted);font-size:1.05rem;font-weight:600}.auth-form{display:flex;flex-direction:column;gap:14px}.field label{display:block;font-size:.85rem;font-weight:700;color:var(--text-muted);margin-bottom:6px}.field input{width:100%;padding:15px 16px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:#ffffffe0;color:var(--text);font-size:1rem;font-weight:600;outline:none;transition:border-color .15s,box-shadow .15s,background .15s}.field input:focus{border-color:var(--orange);background:#fff;box-shadow:0 0 0 4px #e8842c29}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:800;font-size:1rem;padding:15px 28px;border-radius:var(--radius-sm);border:none;cursor:pointer;text-decoration:none;transition:transform .18s var(--ease),box-shadow .18s,background .15s,color .15s}.btn:hover{text-decoration:none;transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.btn:focus-visible,.train-tab:focus-visible,.train-option:focus-visible,.pay-tier:focus-visible,.ob-date-toggle:focus-visible{outline:3px solid rgba(232,132,44,.55);outline-offset:2px}.btn-primary{background:linear-gradient(180deg,#f0953f 0%,var(--orange) 100%);color:#fff;box-shadow:0 8px 22px #e8842c61}.btn-primary:hover:not(:disabled){background:linear-gradient(180deg,var(--orange) 0%,var(--orange-hover) 100%);color:#fff}.btn-ghost{background:#ffffff73;color:var(--text-muted);border:1px solid transparent;padding:12px 16px}.btn-ghost:hover{color:var(--orange);background:var(--orange-soft);border-color:#e8842c33}.btn-compact{padding:8px 12px;font-size:.88rem}.btn-block{width:100%}.auth-divider{display:flex;align-items:center;gap:12px;margin:22px 0;color:var(--text-muted);font-size:.85rem;font-weight:700}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}.auth-footer{margin-top:24px;text-align:center;color:var(--text-muted);font-weight:600;font-size:.95rem}.auth-error{margin:0 0 12px;padding:12px 14px;border-radius:var(--radius-sm);background:#fdeceb;color:var(--danger);font-size:.92rem;font-weight:700}.tg-login{display:flex;flex-direction:column;align-items:stretch;justify-content:center;min-height:44px;gap:10px}.tg-login-widget.is-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.tg-login-widget{display:flex;justify-content:center;min-height:44px}.tg-login-note{margin:0;text-align:center;color:var(--text-muted);font-size:.9rem;font-weight:600;line-height:1.4}.tg-login-fallback{display:flex;flex-direction:column;gap:10px}.btn-tg{background:#2aabee;color:#fff;box-shadow:0 8px 22px #2aabee47}.btn-vk{background:#07f;color:#fff;box-shadow:0 8px 22px #0077ff47}.btn-vk:hover:not(:disabled){background:#06d;color:#fff}.btn-tg{background:#2aabee;color:#fff;box-shadow:0 8px 22px #2aabee52}.btn-tg:hover:not(:disabled){background:#229ed9;color:#fff}.btn-share-copy{background:var(--brown);color:#fff;box-shadow:0 8px 22px #3d281738}.btn-share-copy:hover:not(:disabled){background:#2c1c10;color:#fff}.btn-share-copy.is-done{background:var(--ok);box-shadow:0 8px 22px #2f9e5a47}.auth-social{display:flex;flex-direction:column;gap:10px}.vk-login{display:flex;flex-direction:column;gap:8px;min-height:44px}.vk-onetap{display:flex;justify-content:center;width:100%}.vk-onetap.is-busy{opacity:.45;pointer-events:none}.app-frame{--sidebar-w: 0px;min-height:100dvh;max-width:560px;margin:0 auto;display:flex;flex-direction:column;padding-bottom:calc(var(--tabbar-h) + var(--safe-b) + 8px)}.app-frame.is-wide{max-width:720px}.app-frame.is-focus{padding-bottom:calc(16px + var(--safe-b))}.app-sidebar{display:none}.app-body{display:flex;flex-direction:column;flex:1;min-width:0}.app-header{position:sticky;top:0;z-index:40;padding-top:var(--safe-t);background:#fff8ecd1;backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);border-bottom:1px solid rgba(232,212,188,.65)}.app-header-inner{min-height:var(--header-h);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;padding:8px 16px}.app-header-brand{margin:0;justify-self:start}.app-header-brand.is-compact{gap:0}.app-header-brand img{width:36px;height:36px}.app-header-title{margin:0;justify-self:center;font-size:1rem;font-weight:800;letter-spacing:-.02em;text-align:center}.app-header-actions{justify-self:end;display:flex;align-items:center;gap:6px}.app-back{justify-self:start;font-weight:700;font-size:.92rem;color:var(--text-muted);text-decoration:none;padding:8px 4px}.app-back:hover{color:var(--orange);text-decoration:none}.app-main{flex:1;padding:20px 18px 28px;animation:rise-in .4s var(--ease) both}.app-tabbar{position:fixed;left:50%;transform:translate(-50%);bottom:0;z-index:45;width:min(560px,100%);display:grid;grid-template-columns:repeat(4,1fr);gap:2px;padding:8px 10px calc(8px + var(--safe-b));background:#ffffffe6;backdrop-filter:blur(16px) saturate(1.15);-webkit-backdrop-filter:blur(16px) saturate(1.15);border-top:1px solid rgba(232,212,188,.8);box-shadow:0 -8px 32px #3d28170f}.app-tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:52px;padding:6px 4px;border-radius:14px;color:var(--text-muted);text-decoration:none;font-size:.68rem;font-weight:800;letter-spacing:.01em;transition:color .15s,background .15s,transform .15s}.app-tab:hover{text-decoration:none;color:var(--orange);background:var(--orange-soft)}.app-tab.is-active{color:var(--orange);background:linear-gradient(180deg,var(--orange-soft),rgba(255,240,224,.35))}.app-tab svg{opacity:.9}.app-side-link{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;color:var(--text-muted);text-decoration:none;font-weight:800;font-size:.95rem;transition:background .15s,color .15s,transform .15s}.app-side-link:hover{text-decoration:none;color:var(--orange);background:var(--orange-soft)}.app-side-link.is-active{color:var(--orange);background:linear-gradient(90deg,var(--orange-soft),rgba(255,255,255,.4));box-shadow:inset 3px 0 0 var(--orange)}.app-sidebar-brand{margin:0 0 28px}.app-sidebar-nav{display:flex;flex-direction:column;gap:6px;flex:1}.app-sidebar-foot{margin:24px 0 0;font-size:.78rem;font-weight:700;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase}.app-shell{min-height:100dvh;padding:calc(16px + var(--safe-t)) 18px calc(28px + var(--safe-b));max-width:560px;margin:0 auto;animation:rise-in .35s var(--ease) both}.app-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px}.app-hello{margin:0 0 10px;font-size:clamp(1.9rem,6.5vw,2.45rem);font-weight:800;letter-spacing:-.04em;line-height:1.12}.app-hello em{font-style:normal;color:var(--orange)}.app-sub{margin:0 0 22px;color:var(--text-muted);font-weight:600;font-size:1.02rem;max-width:34ch}.app-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.app-stat{background:#ffffffc7;border:1px solid rgba(232,212,188,.9);border-radius:var(--radius-sm);padding:14px 10px;text-align:center;box-shadow:var(--shadow)}.app-stat-value{display:block;font-size:1.4rem;font-weight:800;color:var(--orange);letter-spacing:-.02em}.app-stat-label{display:block;margin-top:4px;font-size:.72rem;font-weight:800;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.app-note{margin-top:18px;color:var(--text-muted);font-weight:600;font-size:.95rem}.home-layout{display:flex;flex-direction:column;gap:0}.home-hero{margin-bottom:22px}.home-kicker{margin:0 0 8px;font-size:.78rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--blue)}.home-stats{margin:22px 0 20px}.home-cta{font-size:1.05rem;padding-block:16px;animation:soft-pulse 2.8s ease-in-out infinite}.home-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.home-tile{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-height:108px;padding:16px;border-radius:var(--radius);background:#ffffffd1;border:1px solid rgba(232,212,188,.95);box-shadow:var(--shadow);text-decoration:none;color:var(--text);transition:transform .2s var(--ease),border-color .15s,box-shadow .2s}.home-tile:hover{text-decoration:none;transform:translateY(-2px);border-color:#e8842c73;box-shadow:var(--shadow-lg)}.home-tile-accent{background:linear-gradient(155deg,#fff 0%,var(--orange-soft) 100%);border-color:#e8842c47}.home-tile-wide{grid-column:1 / -1;min-height:84px;flex-direction:row;align-items:center;justify-content:space-between;background:linear-gradient(120deg,var(--blue-soft),#fff 55%)}.home-tile-label{font-weight:800;font-size:1.05rem;letter-spacing:-.02em}.home-tile-icon{color:var(--orange);margin-bottom:2px}.home-tile-icon-inline{vertical-align:-5px;margin-right:4px;color:var(--orange)}.home-tile-wide-text{display:flex;flex-direction:column;gap:4px;min-width:0}.home-countdown{display:inline-flex;align-items:center;gap:8px;margin:0 0 18px;padding:10px 14px;border-radius:var(--radius-sm);background:var(--blue-soft);color:var(--blue);font-weight:700;font-size:.98rem}.home-countdown strong{font-weight:800;font-size:1.15rem}.home-countdown-icon{flex-shrink:0}.home-tile-desc{font-size:.86rem;font-weight:600;color:var(--text-muted);line-height:1.35}.home-badge{position:absolute;top:12px;right:12px;min-width:24px;height:24px;padding:0 7px;border-radius:999px;background:var(--orange);color:#fff;font-size:.75rem;font-weight:800;display:inline-flex;align-items:center;justify-content:center}.home-loading{display:flex;flex-direction:column;gap:12px;padding-top:24px}.home-skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg,#fff6,#ffe8bea6,#fff6);background-size:200% 100%;animation:shimmer 1.2s ease infinite}.home-skeleton-title{height:36px;width:70%}.home-skeleton-sub{height:18px;width:90%}.home-skeleton-hero{height:160px;margin-top:8px}.train-pick{display:flex;flex-direction:column;gap:0;max-width:720px}.train-pick-lead{margin-bottom:18px}.train-tabs{display:flex;gap:4px;margin-bottom:18px;padding:4px;background:#ffffffa6;border:1px solid var(--border);border-radius:999px;overflow-x:auto;-webkit-overflow-scrolling:touch}.train-tab{flex:1;border:none;background:transparent;padding:11px 12px;border-radius:999px;font-weight:800;font-size:.84rem;color:var(--text-muted);cursor:pointer;white-space:nowrap;transition:background .15s,color .15s,box-shadow .15s}.train-tab.is-active{background:#fff;color:var(--text);box-shadow:0 4px 14px #3d281714}.train-modes{display:flex;flex-direction:column;gap:12px}.train-modes-grid{display:grid;grid-template-columns:1fr;gap:10px}.train-grid{display:flex;flex-direction:column;gap:12px}.train-card{display:flex;align-items:flex-start;gap:14px;width:100%;text-align:left;border:1.5px solid rgba(232,212,188,.95);background:#ffffffeb;border-radius:var(--radius);padding:16px;cursor:pointer;font-family:inherit;color:var(--text);text-decoration:none;box-shadow:var(--shadow);transition:transform .18s var(--ease),border-color .15s,box-shadow .18s}a.train-card,a.train-card:link,a.train-card:visited,a.train-card:hover,a.train-card:active{text-decoration:none;color:var(--text)}a.train-card .train-card-title,a.train-card .train-card-desc{color:inherit}.train-card:hover:not(:disabled){transform:translateY(-2px);border-color:#e8842c73;box-shadow:var(--shadow-lg)}.train-card:disabled{opacity:.6}.train-card-hero{align-items:center;padding:20px 18px;background:linear-gradient(145deg,#fff 0%,var(--orange-soft) 100%);border-color:#e8842c52}.train-card-hero .train-card-icon-wrap{width:52px;height:52px;border-radius:16px}.train-card-hero .train-card-title{font-size:1.35rem}.train-card-soft{background:linear-gradient(120deg,var(--blue-soft),#fff 60%);border-color:#2e6db538}.train-card-wide{grid-column:1 / -1}.train-card-icon-wrap{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:14px;background:var(--orange-soft);color:var(--orange)}.train-card-icon-wrap-blue{background:#2e6db51f;color:var(--blue)}.train-card-icon{color:inherit;margin:0}.train-card-body{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.train-card-kicker{font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--orange)}.train-card-title{display:block;font-size:1.08rem;font-weight:800;letter-spacing:-.02em;color:var(--text);line-height:1.2}.train-card-desc{display:block;color:var(--text-muted);font-weight:600;font-size:.88rem;line-height:1.35}.train-card-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.train-chip{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;background:#fff8ecf2;border:1px solid rgba(232,212,188,.9);color:var(--text-muted);font-size:.72rem;font-weight:800;letter-spacing:.01em}.train-chip-accent{background:var(--orange-soft);border-color:#e8842c47;color:var(--orange-hover)}.train-list{display:flex;flex-direction:column;gap:8px;max-height:min(62dvh,520px);overflow:auto;padding-right:2px}.train-row{display:flex;align-items:flex-start;gap:12px;width:100%;text-align:left;border:1px solid rgba(232,212,188,.95);background:#ffffffe0;border-radius:var(--radius-sm);padding:14px 15px;cursor:pointer;font-family:inherit;text-decoration:none;color:inherit;transition:border-color .15s,transform .15s}.train-row:hover:not(:disabled){border-color:var(--orange);transform:translateY(-1px);text-decoration:none}.train-row:disabled{opacity:.6}.train-row-num{flex-shrink:0;font-weight:800;color:var(--orange);min-width:2.2rem}.train-row-body{display:flex;flex-direction:column;gap:2px}.train-row-title{font-weight:700;font-size:.95rem;color:var(--text)}.train-row-meta{font-size:.8rem;font-weight:600;color:var(--text-muted)}.train-section-label{margin:18px 4px 6px;font-size:.78rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.text-session{display:flex;flex-direction:column;gap:10px}.text-passage-title{margin:8px 0 0;font-size:1.15rem;font-weight:800;color:var(--text)}.text-passage{margin:0;padding:16px 18px;white-space:pre-wrap;line-height:1.55;font-size:.98rem;font-weight:600;color:var(--text);background:#ffffffd1;border:1px solid rgba(232,212,188,.95);border-radius:var(--radius);max-height:min(42vh,360px);overflow:auto}.text-task-title{margin:8px 0 0;font-size:1.05rem;font-weight:800}.text-task-prompt{margin:4px 0 0;white-space:pre-wrap;line-height:1.45;font-weight:600}.text-task-meta{margin:0;font-size:.82rem;color:var(--text-muted);font-weight:700}.text-answer-label{margin-top:8px;font-size:.85rem;font-weight:800}.text-answer-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.text-answer-hint{font-size:.78rem;font-weight:700;color:var(--text-muted)}.voice-mic-btn{display:inline-flex;align-items:center;gap:8px;font-weight:800}.voice-mic-dot{width:10px;height:10px;border-radius:50%;background:var(--orange, #e8842c)}.voice-mic-btn.is-recording{color:#b42318;border-color:#b4231859}.voice-mic-btn.is-recording .voice-mic-dot{background:#b42318;box-shadow:0 0 #b4231873;animation:voice-pulse 1.2s ease-out infinite}@keyframes voice-pulse{0%{box-shadow:0 0 #b4231873}70%{box-shadow:0 0 0 10px #b4231800}to{box-shadow:0 0 #b4231800}}.text-answer{min-height:160px}.text-char-count{margin:0;font-size:.78rem;color:var(--text-muted);font-weight:700}.text-char-count.is-over{color:#c0392b}.text-checking{padding:12px 0;font-weight:700}.text-score-list{margin:12px 0 0;padding-left:18px;font-weight:700;line-height:1.6}.ai-task-options{margin:8px 0 0;padding-left:20px;font-weight:700;line-height:1.55}.ai-task-img{width:100%;max-height:280px;object-fit:contain;border-radius:var(--radius);background:#ffffffb3}.paywall-box{margin-bottom:16px;padding:16px;border-radius:var(--radius);background:linear-gradient(145deg,var(--orange-soft),#fff);border:1px solid rgba(232,132,44,.28);box-shadow:var(--shadow)}.active-session-card{margin-bottom:16px;padding:14px 16px;border-radius:var(--radius);background:linear-gradient(145deg,#fff8ef,#fff);border:1px solid rgba(232,132,44,.35);box-shadow:var(--shadow)}.active-session-title{margin:0 0 4px;font-size:.85rem;font-weight:700;color:var(--text-muted)}.active-session-label{margin:0;font-size:1.05rem;font-weight:800;line-height:1.3}.active-session-progress{margin:4px 0 0;font-size:.9rem;font-weight:600;color:var(--text-muted)}.active-session-actions{display:flex;gap:8px;margin-top:12px}.active-session-actions .btn{flex:1;min-height:44px}.paywall-title{margin:0 0 6px;font-weight:800}.paywall-eta,.paywall-upsell{margin:0 0 6px;font-weight:600;color:var(--text-muted);font-size:.92rem}.train-session{position:relative}.train-progress-label{font-weight:700;font-size:.9rem;color:var(--text-muted)}.train-progress{height:7px;background:#e8d4bcb3;border-radius:999px;overflow:hidden;margin-bottom:20px}.train-progress-bar{height:100%;background:linear-gradient(90deg,var(--orange),#f0a45a);border-radius:999px;transition:width .28s var(--ease)}.train-question-text{margin:0 0 18px;font-size:clamp(1.05rem,3.5vw,1.18rem);font-weight:700;line-height:1.45;white-space:pre-wrap;letter-spacing:-.01em}.train-question-img{width:100%;border-radius:var(--radius-sm);margin-bottom:16px;box-shadow:var(--shadow)}.train-options{display:flex;flex-direction:column;gap:10px}.train-option{display:flex;align-items:flex-start;gap:12px;width:100%;text-align:left;border:1.5px solid var(--border);background:#ffffffeb;border-radius:var(--radius-sm);padding:15px 16px;font-family:inherit;font-weight:600;font-size:.98rem;color:var(--text);cursor:pointer;box-shadow:0 2px 10px #3d28170a;transition:border-color .15s,background .15s,transform .15s,box-shadow .15s}button.train-option:hover:not(:disabled){border-color:var(--blue);background:var(--blue-soft);transform:translateY(-1px);box-shadow:var(--shadow)}.train-option:disabled{opacity:.75}.train-option-letter{flex-shrink:0;width:30px;height:30px;border-radius:10px;background:var(--bg-cream);color:var(--brown);font-weight:800;font-size:.85rem;display:inline-flex;align-items:center;justify-content:center}.train-option.is-correct{border-color:var(--ok);background:#e8f7ee}.train-option.is-wrong{border-color:var(--danger);background:#fdeceb}.train-options.is-locked .train-option{cursor:default}.train-feedback{margin-top:8px}.train-feedback-title{margin:0 0 10px;font-size:1.25rem;font-weight:800;letter-spacing:-.02em}.train-feedback.is-ok .train-feedback-title{color:var(--ok)}.train-feedback.is-bad .train-feedback-title{color:var(--danger)}.train-feedback-body{margin:0 0 14px;font-weight:600;color:var(--text-muted);white-space:pre-wrap}.train-feedback-warn{margin:0 0 12px;font-weight:700;color:var(--orange-hover)}.train-feedback .train-options{margin-bottom:16px}.train-actions{display:flex;flex-direction:column;gap:10px;margin-top:8px}.review-recall,.review-self{display:flex;flex-direction:column;gap:12px;margin-top:8px}.review-textarea{width:100%;min-height:118px;resize:vertical;padding:14px 16px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:#ffffffeb;color:var(--text);font-size:1rem;font-weight:600;font-family:inherit;line-height:1.45;outline:none}.review-textarea:focus{border-color:var(--orange);box-shadow:0 0 0 4px #e8842c29}.xp-flash{position:fixed;top:28%;left:50%;transform:translate(-50%);z-index:50;padding:12px 22px;border-radius:999px;background:var(--orange);color:#fff;font-weight:800;font-size:1.15rem;box-shadow:0 8px 28px #e8842c73;animation:xp-pop 1.1s ease forwards;pointer-events:none}@keyframes xp-pop{0%{opacity:0;transform:translate(-50%) translateY(12px) scale(.9)}20%{opacity:1;transform:translate(-50%) translateY(0) scale(1.05)}70%{opacity:1;transform:translate(-50%) translateY(-8px) scale(1)}to{opacity:0;transform:translate(-50%) translateY(-24px) scale(.96)}}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes soft-pulse{0%,to{box-shadow:0 8px 22px #e8842c59}50%{box-shadow:0 10px 28px #e8842c80}}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.pwa-banner{position:fixed;left:12px;right:12px;bottom:calc(var(--tabbar-h) + var(--safe-b) + 10px);z-index:80;display:flex;flex-direction:column;gap:12px;padding:16px;border-radius:var(--radius);background:#fffffff2;border:1.5px solid var(--border);box-shadow:var(--shadow-lg);animation:rise-in .35s var(--ease) both}.pwa-banner-text{display:flex;flex-direction:column;gap:4px}.pwa-banner-text strong{font-size:1.05rem}.pwa-banner-text span{color:var(--text-muted);font-size:.9rem;font-weight:600}.pwa-banner-actions{display:flex;gap:8px}.pwa-banner-actions .btn{flex:1;padding:12px 16px}.section-title{margin:22px 0 12px;font-size:1.05rem;font-weight:800;letter-spacing:-.02em;color:var(--text);display:flex;align-items:baseline;justify-content:space-between;gap:12px}.section-title-meta{font-size:.85rem;font-weight:800;color:var(--text-muted)}.coverage-bar{margin:0 0 14px}.coverage-bar-track{height:12px;border-radius:999px;background:var(--bg-cream);overflow:hidden}.coverage-bar-track-sm{height:6px;margin-top:8px}.coverage-bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--blue),#5a9ad4);min-width:0;transition:width .45s var(--ease)}.coverage-bar-label{margin:8px 0 0;font-size:.88rem;font-weight:700;color:var(--text-muted)}.btn.is-done{opacity:.55}.stack{display:flex;flex-direction:column;gap:10px}.stack-mt{margin-top:20px}.plain-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.plain-row{display:flex;align-items:center;padding:14px 16px;border-radius:var(--radius-sm);background:#ffffffb8;border:1px solid rgba(232,212,188,.9)}.plain-row-body{flex:1;min-width:0}.plain-row-title{font-weight:800;font-size:.98rem}.plain-row-meta{margin-top:2px;font-size:.82rem;font-weight:700;color:var(--text-muted)}.auth-email-details{margin:0}.auth-email-details summary{cursor:pointer;list-style:none;font-weight:800;font-size:.95rem;color:var(--blue);padding:8px 0;text-align:center}.auth-email-details summary::-webkit-details-marker{display:none}.auth-email-details[open] summary{margin-bottom:12px}.auth-email-details .auth-form{animation:rise-in .35s var(--ease) both}.auth-aside{display:none}.ob-hero{margin-bottom:18px}.ob-hero-logo{width:56px;height:56px;border-radius:50%;object-fit:cover;margin-bottom:14px;box-shadow:0 6px 18px #3d281724}.ob-bullets{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-wrap:wrap;gap:8px}.ob-bullets li{font-size:.82rem;font-weight:800;color:var(--blue);background:var(--blue-soft);padding:6px 12px;border-radius:999px}.ob-preview{margin:0 0 22px;position:relative}.ob-preview-blur{filter:blur(2.5px);opacity:.85;pointer-events:none;-webkit-user-select:none;user-select:none;transform:scale(.98)}.ob-preview-caption{margin:10px 0 0;text-align:center;font-size:.82rem;font-weight:700;color:var(--text-muted)}.ob-date-toggle{background:none;border:none;padding:0;margin:0;color:var(--blue);font-weight:700;font-size:.9rem;cursor:pointer;text-align:left;text-decoration:underline;text-underline-offset:3px}.ob-trust{margin:4px 0 0;text-align:center;color:var(--text-muted);font-size:.82rem;font-weight:700;line-height:1.4}.ob-gap{margin:8px 0 18px;padding:16px;border-radius:var(--radius);background:#ffffffc7;border:1px solid rgba(232,212,188,.9);box-shadow:var(--shadow)}.ob-gap-track{position:relative;height:14px;border-radius:999px;background:var(--bg-cream);margin:18px 0 28px;overflow:visible}.ob-gap-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--orange),#f0a85a);min-width:8%;transition:width .5s var(--ease)}.ob-gap-you{position:absolute;top:-22px;transform:translate(-50%);font-size:.72rem;font-weight:800;color:var(--orange);white-space:nowrap}.ob-gap-goal{position:absolute;right:0;top:18px;font-size:.72rem;font-weight:800;color:var(--blue);white-space:nowrap}.ob-gap-meta{display:flex;justify-content:space-between;gap:12px;font-size:.85rem;font-weight:700;color:var(--text-muted)}.ob-save-warn{margin:0;padding:12px 14px;border-radius:var(--radius-sm);background:var(--orange-soft);color:var(--brown);font-weight:700;font-size:.92rem;border:1px solid rgba(232,132,44,.25)}.train-actions-sticky{position:sticky;bottom:calc(12px + var(--safe-b));margin-top:16px;padding-top:8px;background:linear-gradient(180deg,transparent,var(--bg) 28%);z-index:2}.pay-pain{margin:0 0 18px;padding:16px 18px;border-radius:var(--radius);background:#fdeceb;border:1px solid rgba(196,75,43,.22)}.pay-pain-title{margin:0 0 6px;font-weight:800;font-size:1.05rem;color:var(--danger)}.pay-pain-eta{margin:0 0 8px;font-weight:700;font-size:.92rem;color:var(--text-muted)}.pay-pain-cta{margin:0;font-weight:800;font-size:.95rem;color:var(--text)}.pay-campaign{margin:0 0 18px;padding:14px 16px;border-radius:var(--radius);background:linear-gradient(135deg,var(--orange-soft),#fff8ec);border:1.5px solid rgba(232,132,44,.35);box-shadow:var(--shadow)}.pay-campaign-badge{display:inline-block;font-size:.7rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#fff;background:var(--orange);padding:3px 8px;border-radius:6px;margin-bottom:6px}.pay-campaign-title{margin:0;font-weight:800;font-size:1.1rem}.pay-campaign-deadline{margin:4px 0 0;font-weight:700;font-size:.88rem;color:var(--text-muted)}.pay-compare{display:flex;flex-direction:column;gap:0;border-radius:var(--radius);overflow:hidden;border:1px solid rgba(232,212,188,.9);background:#ffffffb8;margin-bottom:8px}.pay-compare-head,.pay-compare-row{display:grid;grid-template-columns:1.2fr .9fr .9fr;gap:8px;padding:10px 14px;align-items:center}.pay-compare-head{background:var(--bg-cream);font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.pay-compare-row:nth-child(2n){background:#fff8ec8c}.pay-compare-label{font-weight:800;font-size:.88rem}.pay-compare-free{font-weight:700;font-size:.85rem;color:var(--text-muted)}.pay-compare-prem{font-weight:800;font-size:.85rem;color:var(--ok)}.pay-tiers{display:flex;flex-direction:column;gap:12px}.pay-tier{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%;padding:18px 18px 16px;border-radius:var(--radius);border:1.5px solid rgba(232,212,188,.95);background:#ffffffd9;box-shadow:var(--shadow);cursor:pointer;text-align:left;color:var(--text);transition:transform .18s var(--ease),box-shadow .18s,border-color .15s}.pay-tier:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-lg)}.pay-tier:disabled{opacity:.65;cursor:not-allowed;transform:none}.pay-tier.is-featured{border-color:var(--orange);border-width:2px;background:linear-gradient(180deg,#fff 0%,var(--orange-soft) 100%);padding-top:28px}.pay-tier-badge{position:absolute;top:-1px;right:14px;font-size:.7rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#fff;background:var(--orange);padding:4px 10px;border-radius:0 0 10px 10px}.pay-tier-label{font-weight:800;font-size:1.05rem}.pay-tier-price{display:flex;align-items:baseline;gap:10px;margin:4px 0 2px}.pay-tier-old{font-size:1rem;font-weight:700;color:var(--text-muted);text-decoration:line-through;opacity:.75}.pay-tier-now{font-size:1.75rem;font-weight:800;letter-spacing:-.03em;color:var(--orange)}.pay-tier-day{font-size:.85rem;font-weight:700;color:var(--text-muted)}.pay-tier-cta{margin-top:10px;align-self:stretch;text-align:center;font-weight:800;font-size:.95rem;padding:12px;border-radius:var(--radius-sm);background:#e8842c1f;color:var(--orange)}.pay-tier.is-featured .pay-tier-cta{background:linear-gradient(180deg,#f0953f 0%,var(--orange) 100%);color:#fff;box-shadow:0 6px 16px #e8842c4d}.pay-trust{margin:20px 0 8px;text-align:center;color:var(--text-muted);font-weight:700;font-size:.88rem}.pay-methods{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin-bottom:8px}.pay-methods span{font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);background:#ffffffb3;border:1px solid var(--border);padding:5px 10px;border-radius:8px}@media(min-width:640px){.app-main{padding:28px 24px 36px}.home-grid{gap:14px}.train-modes-grid{grid-template-columns:1fr 1fr;gap:12px}.train-modes-grid>.train-card:not(.train-card-wide){min-height:124px}.auth-shell{padding-inline:32px}.auth-main{max-width:440px}.pwa-banner{left:auto;right:max(24px,calc(50% - 256px));bottom:calc(var(--tabbar-h) + 24px);width:360px}}@media(min-width:960px){.app-frame,.app-frame.is-wide{--sidebar-w: 240px;max-width:1180px;margin:0 auto;padding:20px 24px 28px;display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);gap:0 20px;align-items:stretch}.app-frame.is-focus{padding-bottom:28px}.app-sidebar{display:flex;flex-direction:column;position:sticky;top:20px;align-self:start;height:calc(100dvh - 40px);padding:22px 16px;border-radius:22px;background:#ffffffb8;border:1px solid rgba(232,212,188,.9);box-shadow:var(--shadow);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.app-body{min-height:calc(100dvh - 40px);border-radius:22px;background:#ffffff8c;border:1px solid rgba(232,212,188,.75);box-shadow:var(--shadow);overflow:hidden}.app-header{border-radius:22px 22px 0 0;background:#fff8ece6}.app-header-inner{padding:10px 28px;grid-template-columns:auto 1fr auto}.app-header-inner:not(:has(.app-back)){grid-template-columns:1fr auto}.app-header-inner:not(:has(.app-back)) .app-header-brand{display:none}.app-header-title{justify-self:start;font-size:1.15rem}.app-header-inner:not(:has(.app-back)) .app-header-title{justify-self:start}.app-back{padding-left:0}.app-main{padding:32px 36px 40px}.app-tabbar{display:none}.home-layout{display:grid;grid-template-columns:minmax(280px,1.05fr) minmax(280px,1fr);gap:28px 32px;align-items:start}.home-hero{margin-bottom:0;padding:8px 4px 0}.home-cta{max-width:320px}.home-grid{grid-template-columns:1fr 1fr}.app-hello{font-size:clamp(2.1rem,3vw,2.6rem)}.app-sub{max-width:38ch;font-size:1.08rem}.train-pick{max-width:780px}.train-list{max-height:min(68dvh,640px)}.train-options,.train-question-text{max-width:720px}.pwa-banner{left:auto;right:28px;bottom:28px;width:360px}.auth-shell{max-width:1120px;width:100%;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto auto;gap:28px 48px;align-items:start;align-content:start;justify-items:stretch;padding:36px 48px 48px}.auth-brand{grid-column:1 / -1;margin-bottom:0}.auth-main{max-width:440px;width:100%;justify-self:start;align-self:center;margin:0;flex:none;justify-content:flex-start}.auth-aside{display:flex;align-items:center;justify-content:center;align-self:stretch;min-height:360px;border-radius:28px;padding:36px 32px;background:linear-gradient(145deg,#ffffff8c,#fff0e0d9),radial-gradient(circle at 30% 30%,rgba(232,132,44,.2),transparent 55%);border:1px solid rgba(232,212,188,.85);box-shadow:var(--shadow-lg)}.auth-aside-card{width:100%;max-width:320px}.auth-aside-preview{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;gap:2px 14px;align-items:center;padding:18px 20px;margin-bottom:22px;border-radius:var(--radius);background:#ffffffe0;border:1px solid rgba(232,212,188,.9);box-shadow:var(--shadow)}.auth-aside-preview-grade{grid-row:1 / 3;font-size:2.6rem;font-weight:800;color:var(--orange);letter-spacing:-.04em;line-height:1}.auth-aside-preview-score{font-size:1.15rem;font-weight:800;color:var(--text)}.auth-aside-preview-label{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.auth-aside-title{margin:0 0 14px;font-size:1.35rem;font-weight:800;letter-spacing:-.03em;line-height:1.25}.auth-aside-bullets{margin:0;padding:0 0 0 1.1em;display:flex;flex-direction:column;gap:8px;font-weight:700;color:var(--text-muted);font-size:.98rem}}@media(min-width:1280px){.app-frame,.app-frame.is-wide{--sidebar-w: 260px;max-width:1280px;padding:28px 32px 36px;gap:0 28px}.app-main{padding:36px 44px 48px}.home-layout{gap:36px 48px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.theory-list .theory-row{flex-direction:column;align-items:stretch;gap:10px;text-decoration:none;color:inherit}.theory-list .theory-row:hover{text-decoration:none}.theory-row-bar{display:block;height:6px;border-radius:999px;background:var(--border);overflow:hidden}.theory-row-bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--orange),var(--blue));border-radius:inherit;transition:width .35s var(--ease)}.theory-actions{display:flex;flex-direction:column;gap:10px;margin:8px 0 20px}.btn-secondary{background:var(--blue-soft);color:var(--blue);border:1px solid transparent}.btn-secondary:hover{background:#d9e8f8;text-decoration:none}.theory-section-hint{margin:0 0 14px;color:var(--text-muted);font-size:.95rem}.theory-section{margin-bottom:18px}.theory-section-title{margin:0 0 8px;font-size:1.05rem;color:var(--brown)}.theory-elem-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.theory-elem{display:grid;grid-template-columns:auto auto 1fr;gap:8px 10px;align-items:start;padding:12px 14px;border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border);color:inherit;text-decoration:none;transition:border-color .2s var(--ease),transform .2s var(--ease)}.theory-elem:hover{text-decoration:none;border-color:var(--orange);transform:translateY(-1px)}.theory-elem.is-done{background:#f3faf5;border-color:#c7e6d2}.theory-elem-mark{color:var(--ok);font-weight:800;width:1.1rem;text-align:center}.theory-elem:not(.is-done) .theory-elem-mark{color:var(--text-muted)}.theory-elem-code{font-weight:800;color:var(--blue);font-variant-numeric:tabular-nums}.theory-elem-title{font-size:.95rem;line-height:1.4;color:var(--text)}.theory-reader{max-width:42rem}.theory-progress{display:flex;align-items:center;gap:12px;margin-bottom:14px}.theory-progress-track{flex:1;height:8px;border-radius:999px;background:var(--border);overflow:hidden}.theory-progress-fill{height:100%;background:linear-gradient(90deg,var(--orange),#f0a45a);border-radius:inherit;transition:width .3s var(--ease)}.theory-progress-label{font-size:.85rem;font-weight:700;color:var(--text-muted);min-width:3.2rem;text-align:right}.theory-xp-toast{margin:0 0 12px;padding:8px 12px;border-radius:12px;background:var(--orange-soft);color:var(--orange-hover);font-weight:700;font-size:.92rem;animation:theoryFadeIn .4s var(--ease)}.theory-xp-toast.muted{background:var(--blue-soft);color:var(--blue);font-weight:600}@keyframes theoryFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.theory-body{padding:18px 16px;border-radius:var(--radius);background:var(--bg-card);border:1px solid var(--border);box-shadow:var(--shadow);white-space:pre-wrap;word-break:break-word;font-size:1.02rem;line-height:1.65;animation:theoryFadeIn .35s var(--ease)}.theory-body b{color:var(--brown)}.theory-check-toggle{margin-top:14px;padding:0;border:0;background:none;color:var(--blue);font-weight:700;font-size:.95rem;cursor:pointer}.theory-check-box{margin:8px 0 0;padding:12px 14px;border-radius:var(--radius-sm);background:var(--blue-soft);color:var(--text);font-size:.95rem;animation:theoryFadeIn .3s var(--ease)}.theory-nav{display:flex;justify-content:space-between;gap:12px;margin-top:18px}.theory-nav .btn{min-width:7.5rem}.theory-footer-links{display:flex;justify-content:space-between;gap:12px;margin-top:18px;font-size:.92rem}.theory-elem-kicker{margin:0 0 4px;color:var(--text-muted);font-size:.9rem}.theory-elem-heading{margin:0 0 12px;font-size:1.25rem;line-height:1.35;color:var(--brown)}.theory-topic-row{display:flex;align-items:stretch;gap:0;padding:0;overflow:hidden}.theory-topic-main{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:14px 16px;border:0;background:transparent;text-align:left;cursor:pointer;color:inherit;font:inherit}.theory-topic-main:disabled{opacity:.6;cursor:wait}.theory-topic-read{display:flex;align-items:center;padding:0 16px;border-left:1px solid var(--border);background:var(--orange-soft);color:var(--orange-hover);font-weight:800;font-size:.9rem;text-decoration:none;white-space:nowrap}.theory-topic-read:hover{text-decoration:none;background:#ffe0c2}.share-buttons{display:flex;flex-direction:column;gap:10px;margin-top:8px}.invite-boost .paywall-title{color:var(--orange-hover)}.invite-banner{margin:12px 0 4px;text-align:left}.invite-milestones{gap:8px}.invite-milestone{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border);font-weight:700;color:var(--text)}.invite-milestone.is-done{border-color:#2f9e5a59;background:#2f9e5a14}.invite-milestone-mark{display:inline-flex;flex-shrink:0;color:var(--text-muted)}.invite-milestone.is-done .invite-milestone-mark{color:var(--ok)}.invite-milestone-text{line-height:1.35}.mock-review-feed{display:flex;flex-direction:column;gap:12px;margin:12px 0 16px}.mock-review-bubble{border-radius:14px;padding:12px 14px;text-align:left}.mock-review-bubble-q{background:#ffffffb8;border:1px solid rgba(40,28,18,.08)}.mock-review-bubble-fox{background:#ff8c421f;border:1px solid rgba(255,140,66,.22)}.mock-review-fox-label{margin:0 0 6px;font-size:.8rem;font-weight:700;color:var(--orange-hover, #e06a20)}.mock-review-q{margin:0 0 8px;white-space:pre-wrap}.mock-review-options{margin:0;padding-left:1.1rem}.mock-review-options li.is-selected{font-weight:700}.mock-review-correct{margin:10px 0 0}.league-page{display:flex;flex-direction:column;gap:1.25rem;padding-bottom:1.5rem}.league-hero .app-hello{margin-bottom:.25rem}.league-window{display:flex;flex-direction:column;gap:.35rem}.league-row{display:grid;grid-template-columns:3rem 1fr auto;gap:.5rem;align-items:center;padding:.65rem .75rem;border-radius:var(--radius-sm);background:#ffffff8c}.league-row.is-me{background:var(--orange-soft);font-weight:700}.league-row.zone-up{box-shadow:inset 3px 0 0 var(--ok)}.league-row.zone-down{box-shadow:inset 3px 0 0 var(--danger)}.league-rank{color:var(--text-muted);font-size:.9rem}.league-xp{font-variant-numeric:tabular-nums;font-weight:700}.league-hints{margin-top:.5rem;font-size:.9rem;color:var(--text-muted)}.league-hints p{margin:.2rem 0}.league-warn{color:var(--danger)!important;font-weight:700}.league-personal h2,.league-pair h2{margin:0 0 .5rem;font-size:1.1rem}.league-bar{height:10px;border-radius:999px;background:var(--border);overflow:hidden;margin-top:.5rem}.league-bar-fill{height:100%;background:linear-gradient(90deg,var(--orange),var(--blue));border-radius:inherit;transition:width .4s var(--ease)}.league-actions{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem}
