@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&display=swap";:root{--bg-page:#fafafa;--bg-card:#fff;--bg-subtle:#f5f5f4;--bg-hover:#f0efee;--bg-active:#eaeae8;--text-primary:#1c1c1c;--text-body:#3c3c3c;--text-secondary:#787878;--text-tertiary:#a0a0a0;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-bg:#eff6ff;--success:#34c759;--success-bg:#f0fbf4;--warning:#ff9500;--warning-bg:#fffbf0;--error:#ff3b30;--error-bg:#fff5f5;--border:#e8e8e8;--border-hover:#d4d4d4;--border-focus:var(--accent);--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--radius:12px;--radius-sm:8px;--radius-xs:4px;--shadow-sm:0 1px 2px #0000000a;--shadow-md:0 2px 8px #0000000f;--shadow-lg:0 8px 24px #00000014;--font:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}@media (prefers-color-scheme:dark){:root{--bg-page:#141414;--bg-card:#1c1c1e;--bg-subtle:#252528;--bg-hover:#2c2c2f;--bg-active:#3a3a3d;--text-primary:#f5f5f5;--text-body:#d4d4d4;--text-secondary:#9a9a9a;--text-tertiary:#6b6b6b;--accent:#5b9bff;--accent-hover:#4a8aee;--accent-bg:#1a2744;--success:#30d158;--success-bg:#0d2818;--warning:#ffb340;--warning-bg:#2a1f0a;--error:#ff6961;--error-bg:#2a0e0e;--border:#333336;--border-hover:#48484a;--shadow-sm:0 1px 2px #0003;--shadow-md:0 2px 8px #0000004d;--shadow-lg:0 8px 24px #0006}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-size:16px}body{background:var(--bg-page);color:var(--text-body);min-height:100dvh;line-height:1.5}h1{color:var(--text-primary);letter-spacing:-.02em;font-size:1.5rem;font-weight:600}h2{color:var(--text-primary);letter-spacing:-.01em;font-size:1.25rem;font-weight:500}h3{color:var(--text-primary);font-size:1rem;font-weight:500}.app-layout{flex-direction:column;min-height:100dvh;display:flex}.app-header{z-index:50;background:var(--bg-card);border-bottom:1px solid var(--border);padding:var(--space-sm) var(--space-md);justify-content:space-between;align-items:center;height:56px;display:flex;position:sticky;top:0}.app-header h1{font-size:1.125rem}.app-main{padding:var(--space-md);width:100%;max-width:640px;padding-bottom:calc(56px + var(--space-md) + env(safe-area-inset-bottom,0px));flex:1;margin:0 auto}.app-nav{z-index:50;background:var(--bg-card);border-top:1px solid var(--border);padding:var(--space-xs) 0 env(safe-area-inset-bottom,var(--space-xs));justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.nav-item{padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);color:var(--text-tertiary);letter-spacing:.02em;flex-direction:column;align-items:center;gap:2px;font-size:.6875rem;font-weight:500;text-decoration:none;transition:color .15s,background .15s;display:flex;position:relative}.nav-item svg{width:24px;height:24px}.nav-item:hover{color:var(--text-secondary)}.nav-item.active{color:var(--accent)}.nav-item.active:after{content:"";background:var(--accent);border-radius:1px;width:20px;height:2px;position:absolute;top:0;left:50%;transform:translate(-50%)}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-md);margin-bottom:var(--space-md);transition:box-shadow .2s}.card.active{box-shadow:var(--shadow-md);border-color:var(--border-hover)}.card.done{opacity:.6}.btn{justify-content:center;align-items:center;gap:var(--space-sm);padding:10px var(--space-md);border-radius:var(--radius-sm);cursor:pointer;width:100%;font-size:.875rem;font-weight:500;font-family:var(--font);border:none;text-decoration:none;transition:background .15s,opacity .15s;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:hover:not(:disabled){opacity:.9}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--bg-subtle);color:var(--text-body)}.btn-secondary:hover:not(:disabled){background:var(--bg-hover)}.btn-ghost{color:var(--text-secondary);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--bg-subtle)}.input,.textarea{border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;font-size:.875rem;font-family:var(--font);background:var(--bg-card);color:var(--text-body);padding:10px 12px;transition:border-color .15s}.input:focus,.textarea:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-bg);outline:none}.textarea{resize:vertical;min-height:80px}.label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);margin-bottom:var(--space-xs);font-size:.6875rem;font-weight:500;display:block}.stats-grid{gap:var(--space-sm);margin-bottom:var(--space-lg);grid-template-columns:repeat(2,1fr);display:grid}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-md) var(--space-md) 12px}.stat-value{color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:2rem;font-weight:300;line-height:1.1}.stat-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);margin-top:6px;font-size:.6875rem;font-weight:500}.progress-bar{background:var(--bg-subtle);border-radius:3px;height:6px;overflow:hidden}.progress-fill{background:var(--accent);border-radius:3px;height:100%;transition:width .3s}.progress-text{color:var(--text-tertiary);text-align:center;margin-top:var(--space-xs);font-variant-numeric:tabular-nums;font-size:.75rem}.diff-row{gap:var(--space-sm);margin:var(--space-sm) 0;display:flex}.diff-btn{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-card);color:var(--text-secondary);cursor:pointer;font-size:.8125rem;font-weight:500;font-family:var(--font);flex:1;padding:8px;transition:all .15s}.diff-btn:hover{border-color:var(--border-hover)}.diff-btn.selected{border-width:2px}.diff-btn.sel-easy{border-color:var(--success);color:var(--success);background:var(--success-bg)}.diff-btn.sel-normal{border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}.diff-btn.sel-hard{border-color:var(--error);color:var(--error);background:var(--error-bg)}.timer-display{font-variant-numeric:tabular-nums;text-align:center;color:var(--text-primary);font-size:2.5rem;font-weight:300}.timer-display.warn{color:var(--warning)}.timer-display.end{color:var(--error)}.tag{text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);margin-bottom:var(--space-xs);font-size:.6875rem;font-weight:500;display:inline-block}.check-item{align-items:flex-start;gap:var(--space-sm);padding:var(--space-sm) 0;border-bottom:1px solid var(--border);display:flex}.check-item:last-child{border-bottom:none}.check-item input[type=checkbox]{accent-color:var(--accent);margin-top:3px}.check-item.checked .ci-text{color:var(--text-tertiary);text-decoration:line-through}.ci-text{color:var(--text-body);font-size:.875rem}.ci-desc{color:var(--text-tertiary);margin-top:2px;font-size:.75rem;display:block}.streak{text-align:center;padding:var(--space-sm);color:var(--text-secondary);font-size:.875rem}.toast{top:var(--space-md);right:var(--space-md);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-sm) var(--space-md);box-shadow:var(--shadow-lg);z-index:100;font-size:.875rem;animation:.2s slideIn;position:fixed}@keyframes slideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.landing{min-height:100dvh;padding:var(--space-xl);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.landing h1{letter-spacing:-.03em;margin-bottom:var(--space-sm);font-size:2.25rem;font-weight:600;line-height:1.15}.landing p{color:var(--text-secondary);max-width:480px;margin-bottom:var(--space-xl);font-size:1rem;line-height:1.6}.lab-badge{background:var(--accent-bg);color:var(--accent);letter-spacing:.04em;margin-bottom:var(--space-md);text-transform:uppercase;border:1px solid #2563eb33;border-radius:999px;align-items:center;padding:4px 12px;font-size:.6875rem;font-weight:600;display:inline-flex}.features-grid{gap:var(--space-md);width:100%;max-width:640px;margin-bottom:var(--space-xl);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.feature-card{text-align:left;padding:var(--space-md);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);transition:box-shadow .2s}.feature-card:hover{box-shadow:var(--shadow-md)}.feature-card h3{margin-bottom:var(--space-xs);font-size:.875rem;font-weight:500}.feature-card p{color:var(--text-secondary);margin:0;font-size:.8125rem;line-height:1.5}.hero-card{background:var(--accent);color:#fff;border-radius:var(--radius);padding:var(--space-lg) var(--space-md);margin-bottom:var(--space-lg);cursor:pointer;text-decoration:none;transition:background .15s;display:block}.hero-card:hover{background:var(--accent-hover)}.hero-card h3{color:#fff;margin-bottom:4px;font-size:1.125rem;font-weight:600}.hero-card p{color:#ffffffd9;margin:0;font-size:.8125rem}.diff-badge{border-radius:var(--radius-xs);padding:2px 8px;font-size:.6875rem;font-weight:500;display:inline-block}.diff-badge-easy{background:var(--success-bg);color:var(--success)}.diff-badge-normal{background:var(--accent-bg);color:var(--accent)}.diff-badge-hard{background:var(--error-bg);color:var(--error)}.empty-state{text-align:center;padding:var(--space-2xl) var(--space-md);color:var(--text-secondary)}.empty-state p{margin-bottom:var(--space-md)}.lang-switcher{background:var(--bg-subtle);border-radius:var(--radius-sm);gap:2px;padding:2px;display:flex}.lang-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:.75rem;font-weight:500;transition:all .15s}.lang-btn.active{background:var(--bg-card);color:var(--text-primary);box-shadow:var(--shadow-sm)}.skeleton{background:linear-gradient(90deg, var(--bg-subtle) 25%, var(--bg-hover) 50%, var(--bg-subtle) 75%);border-radius:var(--radius-xs);background-size:200% 100%;animation:1.5s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.875rem}th{text-align:left;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em;padding:var(--space-sm);border-bottom:1px solid var(--border);font-size:.75rem;font-weight:500}th.text-center{text-align:center}td{padding:var(--space-sm);border-bottom:1px solid var(--border);color:var(--text-body)}td.text-center{text-align:center;font-size:.8125rem}tr:last-child td{border-bottom:none}.note-text{font-style:italic}@media (width>=768px){.stats-grid{grid-template-columns:repeat(3,1fr)}}.text-sm{font-size:.8125rem}.text-xs{font-size:.75rem}.text-body{color:var(--text-body)}.text-secondary{color:var(--text-secondary)}.text-tertiary{color:var(--text-tertiary)}.text-primary{color:var(--text-primary)}.text-center{text-align:center}.font-medium{font-weight:500}.mb-xs{margin-bottom:var(--space-xs)}.mb-sm{margin-bottom:var(--space-sm)}.mb-md{margin-bottom:var(--space-md)}.mb-lg{margin-bottom:var(--space-lg)}.mt-xs{margin-top:var(--space-xs)}.mt-sm{margin-top:var(--space-sm)}.mt-md{margin-top:var(--space-md)}.mt-lg{margin-top:var(--space-lg)}.pt-sm{padding-top:var(--space-sm)}.flex{display:flex}.flex-col{flex-direction:column}.flex-1{flex:1}.flex-between{justify-content:space-between;align-items:center;display:flex}.flex-start{justify-content:space-between;align-items:flex-start;display:flex}.flex-center{justify-content:center;align-items:center;display:flex}.flex-wrap{flex-wrap:wrap}.flex-end{justify-content:flex-end}.items-center{align-items:center}.items-end{align-items:flex-end}.gap-xs{gap:var(--space-xs)}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.text-right{text-align:right}.cursor-pointer{cursor:pointer}.w-auto{width:auto}.no-underline{text-decoration:none}.saved-indicator{color:var(--success);margin-top:var(--space-sm);font-size:.8125rem}.icon-sm{width:18px;height:18px}.icon-md{width:28px;height:28px}.edit-grid{gap:var(--space-sm);grid-template-columns:1fr auto auto;align-items:end;display:grid}.input-narrow{width:60px}.exercise-meta{color:var(--text-secondary);margin-bottom:var(--space-sm);font-size:.875rem}.exercise-technique{color:var(--text-secondary);margin-bottom:var(--space-md);font-size:.8125rem;line-height:1.5}.exercise-prev{color:var(--text-tertiary);background:var(--bg-subtle);border-radius:var(--radius-sm);margin-bottom:12px;padding:6px 10px;font-size:.8125rem}.big-number{text-align:center;margin:20px 0}.big-number-value{color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:2.5rem;font-weight:300}.big-number-label{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em;margin-top:var(--space-xs);font-size:.75rem}.toggle-track{background:var(--bg-active);cursor:pointer;border:none;border-radius:12px;flex-shrink:0;width:44px;height:24px;padding:0;transition:background .2s;position:relative}.toggle-track.on{background:var(--accent)}.toggle-track:disabled{opacity:.45;cursor:not-allowed}.toggle-thumb{width:20px;height:20px;box-shadow:var(--shadow-sm);pointer-events:none;background:#fff;border-radius:50%;transition:left .2s;position:absolute;top:2px;left:2px}.toggle-track.on .toggle-thumb{left:22px}.toggle-track:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.pref-row{justify-content:space-between;align-items:center;display:flex}.pref-label{color:var(--text-body);font-size:.8125rem}.pref-sublabel{color:var(--text-body);margin-bottom:6px;font-size:.8125rem}.error-boundary{min-height:60vh;padding:var(--space-xl);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.error-boundary h2{margin-bottom:var(--space-sm);font-size:1.25rem;font-weight:500}.error-boundary p{color:var(--text-secondary);margin-bottom:var(--space-lg);max-width:400px;font-size:.875rem}.feedback-fab{bottom:calc(56px + var(--space-md));right:var(--space-md);z-index:60;border:1px solid var(--border);background:var(--bg-card);width:44px;height:44px;box-shadow:var(--shadow-md);cursor:pointer;color:var(--text-secondary);border-radius:50%;justify-content:center;align-items:center;font-size:1.125rem;transition:box-shadow .15s;display:flex;position:fixed}.feedback-fab:hover{box-shadow:var(--shadow-lg)}.feedback-panel{bottom:calc(56px + var(--space-md));right:var(--space-md);z-index:60;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);width:300px;box-shadow:var(--shadow-lg);padding:var(--space-md);position:fixed}.inline-timer{align-items:center;gap:var(--space-sm);margin-top:var(--space-xs);display:flex}.inline-timer-btn.btn{width:auto;padding:4px 10px;font-size:.75rem}.inline-timer-value{font-variant-numeric:tabular-nums;font-size:.875rem}.advice-item{color:var(--text-secondary);padding:var(--space-xs) 0;font-size:.875rem}.error-toast{color:var(--error);margin:var(--space-sm) 0;padding:var(--space-sm) 12px;background:var(--error-bg);border-radius:var(--radius-sm);font-size:.875rem}.avatar{border-radius:50%;width:40px;height:40px}.dropzone{border:2px dashed var(--border);border-radius:var(--radius);padding:var(--space-2xl) var(--space-md);text-align:center;cursor:pointer;transition:border-color .15s}.dropzone:hover,.dropzone.dragover{border-color:var(--accent)}.dropzone-icon{margin-bottom:var(--space-sm);font-size:2rem}.btn-danger{background:var(--error);color:#fff}.btn-danger:hover:not(:disabled){background:#e0342d}.chevron{width:16px;height:16px;color:var(--text-tertiary);flex-shrink:0;transition:transform .2s}.chevron.open{transform:rotate(180deg)}.chevron-lg{width:20px;height:20px}.collapse-content{border-top:1px solid var(--border);padding-top:var(--space-sm);margin-top:12px}.chart-sm{height:180px;margin-top:var(--space-sm)}.chart-md{height:200px;margin-top:var(--space-sm)}.slot-badge{border-radius:var(--radius-xs);border:1px solid;padding:2px 8px;font-size:.6875rem;font-weight:500;display:inline-block}.slot-morning{background:var(--accent-bg);border-color:var(--accent);color:var(--accent)}.slot-day{background:var(--success-bg);border-color:var(--success);color:var(--success)}.slot-evening{background:var(--warning-bg);border-color:var(--warning);color:var(--warning)}.slot-toggle{cursor:pointer;border:1px solid var(--border);background:var(--bg-card);color:var(--text-secondary);font-size:.75rem;font-weight:500;font-family:var(--font);border-radius:6px;padding:4px 12px;transition:all .15s}.slot-toggle.active-morning{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.slot-toggle.active-day{border-color:var(--success);background:var(--success-bg);color:var(--success)}.slot-toggle.active-evening{border-color:var(--warning);background:var(--warning-bg);color:var(--warning)}.exercise-row{padding:var(--space-sm) 0;border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.exercise-row:last-child{border-bottom:none}.schedule-day{margin-bottom:0}.schedule-day.today{border-color:var(--accent);background:var(--accent-bg)}.schedule-day-name{min-width:32px;font-size:.875rem;font-weight:500}.schedule-day-name.today{color:var(--accent);font-weight:600}.schedule-today-badge{text-transform:uppercase;color:var(--accent);letter-spacing:.06em;font-size:.625rem;font-weight:500}.session-slot-row{justify-content:space-between;align-items:center;display:flex}.session-slot-row+.session-slot-row{padding-top:var(--space-sm)}.steps-row{gap:var(--space-xl);margin:var(--space-xl) 0;justify-content:center;width:100%;max-width:560px;display:flex}.step-item{text-align:center;flex:1}.step-circle{background:var(--accent-bg);width:36px;height:36px;color:var(--accent);margin:0 auto var(--space-sm);border-radius:50%;justify-content:center;align-items:center;font-size:.875rem;font-weight:600;display:flex}.step-label{color:var(--text-body);font-size:.8125rem;font-weight:500}.footer-text{margin-top:var(--space-2xl);color:var(--text-tertiary);font-size:.75rem}.confidence-badge{border-radius:12px;padding:2px 10px;font-size:.75rem;font-weight:500;display:inline-block}.card-warning{background:var(--warning-bg);border-color:var(--warning)}.card-warning .label{color:var(--warning)}.text-success{color:var(--success)}.text-error{color:var(--error)}
