:root{--c-black:#000000;--c-graphite:#12171C;--c-white:#F3F3F3;--c-gray-500:#595C5E;--c-gray-400:#7C8383;--c-gray-300:#999B9D;--c-gray-200:#BEC1C1;--c-red-bright:#F20715;--c-red-deep:#B4010E;--c-green:#127143;--c-green-deep:#0C6434;--c-surface-1:#171E25;--c-surface-2:#1D2630;--bg-primary:#F7F7F7;--bg-secondary:#FFFFFF;--bg-tertiary:#F7F7F7;--bg-elevated:#FFFFFF;--bg-hover:#F0F0F0;--text-primary:var(--c-graphite);--text-secondary:var(--c-gray-500);--text-tertiary:var(--c-gray-400);--text-inverse:var(--c-white);--accent:var(--c-green);--accent-hover:var(--c-green-deep);--accent-light:rgba(18, 113, 67, 0.1);--accent-dark:var(--c-green-deep);--success:var(--c-green);--success-light:rgba(18, 113, 67, 0.15);--error:var(--c-red-deep);--error-light:rgba(180, 1, 14, 0.15);--warning:#F0B429;--warning-light:rgba(240, 180, 41, 0.15);--border:#E6E6E6;--border-light:#F0F0F0;--border-dark:#D1D1D1;--shadow-sm:0 1px 2px 0 rgba(0, 0, 0, 0.05);--shadow:0 1px 3px 0 rgba(0, 0, 0, 0.1),0 1px 2px 0 rgba(0, 0, 0, 0.06);--shadow-md:0 4px 6px -1px rgba(0, 0, 0, 0.1),0 2px 4px -1px rgba(0, 0, 0, 0.06);--shadow-lg:0 10px 15px -3px rgba(0, 0, 0, 0.1),0 4px 6px -2px rgba(0, 0, 0, 0.05);--shadow-xl:0 20px 25px -5px rgba(0, 0, 0, 0.1),0 10px 10px -5px rgba(0, 0, 0, 0.04);--spacing-xs:0.25rem;--spacing-sm:0.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-2xl:3rem;--spacing-3xl:4rem;--font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;--font-mono:'SF Mono','Monaco','Inconsolata','Fira Code','Courier New',monospace;--font-size-xs:0.75rem;--font-size-sm:0.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:1.875rem;--font-size-4xl:2.25rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-sm:0.375rem;--radius-md:0.5rem;--radius-lg:0.75rem;--radius-xl:1rem;--radius-2xl:1.5rem;--radius-full:9999px;--transition-fast:150ms cubic-bezier(0.4, 0, 0.2, 1);--transition-base:200ms cubic-bezier(0.4, 0, 0.2, 1);--transition-slow:300ms cubic-bezier(0.4, 0, 0.2, 1);--lane-bg:#f8f9fa;--caret-color:#6366f1}[data-theme=dark]{--bg-primary:var(--c-graphite);--bg-secondary:var(--c-surface-1);--bg-tertiary:var(--c-surface-2);--bg-elevated:var(--c-surface-2);--bg-hover:var(--c-surface-1);--text-primary:var(--c-white);--text-secondary:var(--c-gray-200);--text-tertiary:var(--c-gray-500);--text-inverse:var(--c-graphite);--accent:var(--c-red-deep);--accent-hover:#D00210;--accent-light:rgba(242, 7, 21, 0.1);--accent-dark:#8E000B;--success:var(--c-green);--success-light:rgba(18, 113, 67, 0.15);--error:var(--c-red-deep);--error-light:rgba(180, 1, 14, 0.15);--warning:#F0B429;--warning-light:rgba(240, 180, 41, 0.15);--border:rgba(124, 131, 131, 0.25);--border-light:rgba(124, 131, 131, 0.15);--border-dark:rgba(124, 131, 131, 0.35);--shadow-sm:0 1px 2px 0 rgba(0, 0, 0, 0.3);--shadow:0 1px 3px 0 rgba(0, 0, 0, 0.4),0 1px 2px 0 rgba(0, 0, 0, 0.3);--shadow-md:0 4px 6px -1px rgba(0, 0, 0, 0.4),0 2px 4px -1px rgba(0, 0, 0, 0.3);--shadow-lg:0 10px 15px -3px rgba(0, 0, 0, 0.4),0 4px 6px -2px rgba(0, 0, 0, 0.3);--shadow-xl:0 20px 25px -5px rgba(0, 0, 0, 0.4),0 10px 10px -5px rgba(0, 0, 0, 0.2);--lane-bg:var(--c-surface-2);--caret-color:var(--c-red-bright)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-family);background:var(--bg-primary);color:var(--text-primary);line-height:1.6;transition:background-color var(--transition-base),color var(--transition-base);min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-sprite{position:absolute;width:0;height:0;pointer-events:none}.icon{width:20px;height:20px;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;fill:none;display:inline-block;flex-shrink:0}.icon-filled{fill:currentColor;stroke:none}.btn .icon,.btn-icon .icon{width:20px;height:20px}.mode-card-icon .icon{width:48px;height:48px}.finish-icon .icon{width:64px;height:64px}.readme-section{position:fixed;top:var(--spacing-lg);left:var(--spacing-lg);z-index:1000}.readme-toggle{background:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-lg);cursor:pointer;font-size:var(--font-size-sm);display:flex;align-items:center;gap:var(--spacing-sm);box-shadow:var(--shadow-md);transition:all var(--transition-base);font-weight:var(--font-weight-medium)}.readme-toggle:hover{background:var(--bg-hover);box-shadow:var(--shadow-lg);transform:translateY(-1px)}.readme-icon{font-size:var(--font-size-lg)}.readme-content{position:absolute;top:calc(100% + var(--spacing-sm));left:0;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--spacing-xl);max-width:500px;max-height:80vh;overflow-y:auto;box-shadow:var(--shadow-xl);animation:slideDown var(--transition-base)}@keyframes slideDown{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.readme-content h2{margin-bottom:var(--spacing-md);color:var(--accent);font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold)}.readme-content h3{margin-top:var(--spacing-lg);margin-bottom:var(--spacing-sm);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.readme-content ul{margin-left:var(--spacing-xl);margin-bottom:var(--spacing-md)}.readme-content code{background:var(--bg-tertiary);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-sm)}.header{background:var(--bg-elevated);border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm);position:sticky;top:0;z-index:100}.header-content{max-width:1400px;margin:0 auto;padding:var(--spacing-lg) var(--spacing-xl);display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-lg)}.header-brand-btn{background:0 0;border:none;padding:0;cursor:pointer;text-align:left;text-decoration:none;color:inherit;transition:all var(--transition-base);border-radius:var(--radius-md);padding:var(--spacing-xs);margin:calc(var(--spacing-xs) * -1);display:flex;align-items:center;gap:var(--spacing-md)}.header-brand-btn:hover{opacity:.8;transform:translateX(2px)}.header-brand-btn:active{transform:translateX(0)}.header-logo{height:120px;width:auto;display:block;flex-shrink:0}@media (max-width:768px){.header-logo{height:80px}}.header-brand-text{display:flex;flex-direction:column}.header-brand h1{font-size:var(--font-size-3xl);color:var(--accent);font-weight:var(--font-weight-bold);margin:0;line-height:1.2;pointer-events:none}.header-subtitle{font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:var(--spacing-xs);font-weight:var(--font-weight-normal);pointer-events:none}.header-controls{display:flex;gap:var(--spacing-sm);align-items:center}.header-nav-link{padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--text-primary);text-decoration:none;border-radius:var(--radius-md);transition:all var(--transition-base)}.header-nav-link:hover{color:var(--accent);background:var(--accent-light)}.btn-icon{background:var(--bg-secondary);border:1px solid var(--border);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-xl);transition:all var(--transition-base);display:flex;align-items:center;justify-content:center;width:40px;height:40px;position:relative;overflow:hidden}.btn-icon::before{content:'';position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:var(--accent-light);transform:translate(-50%,-50%);transition:width .3s,height .3s}.btn-icon:hover::before{width:100%;height:100%}.btn-icon:hover{background:var(--bg-hover);border-color:var(--accent);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-icon:active{transform:translateY(0)}.btn-icon span,.btn-icon svg{position:relative;z-index:1}[data-theme=dark] .btn-icon{color:var(--c-white);background:var(--c-surface-1);border-color:rgba(124,131,131,.4)}[data-theme=dark] .btn-icon:hover{background:var(--c-surface-2);border-color:var(--c-red-deep);color:var(--c-white)}[data-theme=dark] .btn-icon .icon{color:#fff;stroke:#FFFFFF;stroke-width:2.25;opacity:1;filter:brightness(1.3) contrast(1.1)}.hero-section{background:linear-gradient(135deg,var(--accent-light) 0,var(--bg-secondary) 100%);padding:var(--spacing-3xl) var(--spacing-xl);text-align:center;border-bottom:1px solid var(--border)}[data-theme=dark] .hero-section{background:var(--bg-primary);border-bottom:1px solid var(--border)}.hero-content{max-width:800px;margin:0 auto}.hero-title{font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);color:var(--text-primary);margin-bottom:var(--spacing-md);line-height:1.2}.hero-description{font-size:var(--font-size-xl);color:var(--text-secondary);font-weight:var(--font-weight-normal)}.mode-selection{padding:var(--spacing-3xl) var(--spacing-xl);max-width:1400px;margin:0 auto}.mode-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--spacing-xl);margin-top:var(--spacing-2xl)}.mode-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--spacing-2xl);cursor:pointer;transition:all var(--transition-base);text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md);box-shadow:var(--shadow);position:relative;overflow:hidden}.mode-card::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--accent),var(--accent-hover));transform:scaleX(0);transition:transform var(--transition-base)}.mode-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--accent)}.mode-card:hover::before{transform:scaleX(1)}.mode-card:active{transform:translateY(-1px)}.mode-card-icon{width:80px;height:80px;border-radius:var(--radius-full);background:linear-gradient(145deg,var(--accent-light),var(--bg-secondary));display:inline-flex;align-items:center;justify-content:center;color:var(--accent);box-shadow:var(--shadow-md);margin-bottom:var(--spacing-sm)}.mode-card-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin:0}.mode-card-description{font-size:var(--font-size-sm);color:var(--text-secondary);margin:0;line-height:1.5}.game-area{max-width:1200px;margin:0 auto;padding:var(--spacing-2xl) var(--spacing-xl)}.game-config{margin-bottom:var(--spacing-xl);padding:var(--spacing-lg);background:var(--bg-elevated);border-radius:var(--radius-xl);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.stats-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--spacing-lg);margin-bottom:var(--spacing-2xl);padding:var(--spacing-lg);background:var(--bg-secondary);border-radius:var(--radius-xl);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.stat-item{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-md);background:var(--bg-elevated);border-radius:var(--radius-lg);transition:all var(--transition-base)}.stat-item:hover{background:var(--bg-hover);box-shadow:var(--shadow)}.stat-label{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:var(--font-weight-medium);letter-spacing:.2px}.stat-value{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--accent);line-height:1}.lanes-container{display:flex;flex-direction:column;gap:var(--spacing-xl);margin-bottom:var(--spacing-2xl)}.lane{position:relative;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--spacing-xl);min-height:120px;transition:all var(--transition-base);box-shadow:var(--shadow-sm);overflow:hidden}.lane.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-light),var(--shadow);background:var(--bg-elevated)}.lane-label{position:absolute;top:var(--spacing-md);left:var(--spacing-lg);font-size:var(--font-size-xs);color:var(--text-secondary);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:1px;background:var(--bg-elevated);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);border:1px solid var(--border)}.lane-progress{position:absolute;top:0;left:0;height:8px;background:linear-gradient(90deg,var(--accent) 0,var(--accent-hover) 100%);border-radius:var(--radius-xl);width:0%;transition:width .1s linear;opacity:.6;z-index:0}.text-display{position:relative;z-index:1;font-size:var(--font-size, 18px);line-height:1.8;font-family:var(--font-mono);padding-top:var(--spacing-xl);word-wrap:break-word;white-space:pre-wrap;min-height:100px;--remaining-intensity:1}.text-display span{display:inline}.text-correct{color:var(--success);background:0 0;font-weight:var(--font-weight-medium)}.text-caret{color:var(--caret-color);background:var(--caret-color);animation:1s infinite blink;font-weight:var(--font-weight-bold);position:relative;border-radius:var(--radius-sm);padding:0 2px}.text-caret.block{background:var(--caret-color);color:var(--bg-primary);padding:2px 4px;border-radius:var(--radius-sm);margin:0 2px}.text-caret.underline{text-decoration:underline;text-decoration-color:var(--caret-color);text-decoration-thickness:3px;background:0 0;padding:0}.text-remaining{color:var(--text-primary);opacity:var(--remaining-intensity);font-weight:var(--font-weight-normal)}.text-current-word-inline{color:var(--text-primary);opacity:var(--remaining-intensity);font-weight:var(--font-weight-normal);text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:2px;text-underline-offset:4px}.text-current-word-error{color:var(--error);opacity:1;font-weight:var(--font-weight-medium)}.text-current-word-correct{color:var(--success);opacity:1;font-weight:var(--font-weight-medium)}.text-display.text-hidden{color:transparent;opacity:.15;filter:blur(6px);position:relative;transition:opacity var(--transition-base),filter var(--transition-base)}.text-display.text-hidden *{visibility:hidden}.text-display.text-hidden::after{content:'Szöveg elrejtve ehhez a témához';visibility:visible;color:var(--text-secondary);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--spacing-md);text-align:center;filter:none;opacity:1}.text-error{color:var(--error);background:var(--error-light);text-decoration:line-through;border-radius:var(--radius-sm);padding:0 2px}@keyframes blink{0%,50%{opacity:1}100%,51%{opacity:0}}.hidden-input{position:absolute;opacity:0;pointer-events:none;width:0;height:0}.game-controls{display:flex;gap:var(--spacing-md);justify-content:center;flex-wrap:wrap;margin-bottom:var(--spacing-xl)}.btn{padding:var(--spacing-md) var(--spacing-xl);background:var(--accent);color:var(--text-inverse);border:none;border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-base);display:inline-flex;align-items:center;gap:var(--spacing-sm);box-shadow:var(--shadow);position:relative;overflow:hidden}.btn::before{content:'';position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:rgba(255,255,255,.2);transform:translate(-50%,-50%);transition:width .4s,height .4s}.btn:hover::before{width:300px;height:300px}.btn:hover{background:var(--accent-hover);box-shadow:var(--shadow-md);transform:translateY(-2px)}.btn:active{transform:translateY(0);box-shadow:var(--shadow)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn .btn-icon{background:0 0;border:none;width:auto;height:auto;padding:0;box-shadow:none;position:static;display:inline-flex;align-items:center;justify-content:center}.btn .btn-icon::before{display:none}.btn-primary{background:var(--accent);color:var(--text-inverse)}.btn-primary:hover{background:var(--accent-hover)}[data-theme=dark] .btn-primary{background:var(--c-red-deep);color:var(--c-white)}[data-theme=dark] .btn-primary:hover{background:#d00210}.btn-secondary{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{background:var(--bg-hover);border-color:var(--accent)}.btn-outline{background:0 0;color:var(--accent);border:2px solid var(--accent)}.btn-outline:hover{background:var(--accent-light)}.btn-icon{font-size:var(--font-size-lg)}.charts-canvas{width:100%;max-width:100%;height:200px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-xl);margin-bottom:var(--spacing-xl);box-shadow:var(--shadow)}.finish-screen{width:min(720px,calc(100% - 2 * var(--spacing-xl)));margin:var(--spacing-2xl) auto;padding:var(--spacing-xl) var(--spacing-lg)}.finish-screen-content{background:var(--bg-elevated);border-radius:var(--radius-2xl);border:1px solid var(--border);padding:var(--spacing-2xl);box-shadow:var(--shadow-xl);text-align:center}.finish-header{margin-bottom:var(--spacing-xl)}.finish-icon{width:80px;height:80px;display:inline-flex;align-items:center;justify-content:center;margin-bottom:var(--spacing-sm);animation:.6s ease-in-out bounce;background:radial-gradient(circle at 30% 30%,rgba(99,102,241,.15),transparent 55%),var(--accent-light);color:var(--accent);border-radius:var(--radius-full);box-shadow:var(--shadow-lg)}@keyframes bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}.finish-title{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--accent);margin-bottom:var(--spacing-xs)}.finish-subtitle{font-size:var(--font-size-base);color:var(--text-secondary)}.finish-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--spacing-md);margin-bottom:var(--spacing-xl)}.finish-stats .stat-item{padding:var(--spacing-md);background:var(--bg-secondary);border-radius:var(--radius-lg);border:1px solid var(--border);transition:all var(--transition-base)}.finish-stats .stat-item:hover{background:var(--bg-hover);transform:translateY(-2px);box-shadow:var(--shadow)}.finish-actions{display:flex;gap:var(--spacing-sm);justify-content:center;flex-wrap:wrap}.share-canvas{display:none}.modal{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:4000;animation:fadeIn var(--transition-base)}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.modal[hidden]{display:none!important;pointer-events:none!important}.modal-content{background:var(--bg-elevated);border-radius:var(--radius-2xl);max-width:600px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-xl);animation:slideUp var(--transition-slow);border:1px solid var(--border);padding:var(--spacing-xl)}@keyframes slideUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-xl);border-bottom:1px solid var(--border)}.modal-header h2{margin:0;color:var(--text-primary);font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold)}.modal-close{background:var(--bg-secondary);border:1px solid var(--border);font-size:var(--font-size-2xl);cursor:pointer;color:var(--text-secondary);line-height:1;padding:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);transition:all var(--transition-base)}.modal-close:hover{color:var(--text-primary);background:var(--bg-hover);border-color:var(--accent)}.modal-body{padding:var(--spacing-xl);display:flex;flex-direction:column;gap:var(--spacing-md)}.modal-description{color:var(--text-secondary);margin:0 0 var(--spacing-sm) 0}.time-options{display:flex;flex-wrap:wrap;gap:var(--spacing-sm)}.pill-option{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius-full);background:var(--bg-secondary);cursor:pointer;transition:all var(--transition-base);box-shadow:var(--shadow-sm)}.pill-option:hover{border-color:var(--accent);box-shadow:var(--shadow-md)}.pill-option.pill-option-selected{border-color:var(--accent);background:var(--accent-light);color:var(--accent-dark);box-shadow:var(--shadow-md)}.pill-option-inline{padding-right:12px}.pill-input-wrap{display:inline-flex;align-items:center;gap:6px;background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-full);padding:6px 10px 6px 12px;box-shadow:var(--shadow-sm)}.pill-option-inline input[type=number]::-webkit-inner-spin-button,.pill-option-inline input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.pill-option-inline input[type=number]{width:90px;border:none;background:0 0;color:var(--text-primary);font-weight:var(--font-weight-semibold);outline:0;padding:4px 0;text-align:right;appearance:textfield;-moz-appearance:textfield}.pill-option-inline input[type=number]:focus{outline:0}.pill-suffix{color:var(--text-secondary);font-size:var(--font-size-sm);margin-left:2px;font-weight:var(--font-weight-medium)}.pill-option[data-quote-theme]{min-width:110px;justify-content:center}.setting-group{margin-bottom:var(--spacing-lg);padding:var(--spacing-lg);background:var(--bg-secondary);border-radius:var(--radius-lg);border:1px solid var(--border);transition:all var(--transition-base)}.setting-group:hover{background:var(--bg-hover);border-color:var(--accent)}.setting-group label{display:block;margin-bottom:var(--spacing-xs);color:var(--text-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-base)}.setting-description{font-size:var(--font-size-sm);color:var(--text-secondary);margin-bottom:var(--spacing-md);line-height:1.5}.setting-range-wrapper{display:flex;align-items:center;gap:var(--spacing-md);margin:var(--spacing-md) 0}.setting-group input[type=range]{flex:1;accent-color:var(--accent)}.setting-value{font-weight:var(--font-weight-semibold);color:var(--accent);min-width:50px;text-align:right}.font-size-preview{margin-top:var(--spacing-md);padding:var(--spacing-md);background:var(--bg-tertiary);border-radius:var(--radius-md);border:1px solid var(--border)}.font-preview-text{margin:0;font-family:var(--font-mono);color:var(--text-primary);line-height:1.8;transition:font-size var(--transition-base)}.setting-group input[type=checkbox]{margin-right:var(--spacing-sm);accent-color:var(--accent);width:18px;height:18px;cursor:pointer}.setting-group select{width:100%;padding:var(--spacing-md);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-primary);color:var(--text-primary);font-size:var(--font-size-base);font-family:var(--font-family);cursor:pointer;transition:all var(--transition-base)}.setting-group select:hover{border-color:var(--accent)}.setting-group select:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.history-controls{display:flex;gap:var(--spacing-md);margin-bottom:var(--spacing-xl);flex-wrap:wrap}.history-list{display:flex;flex-direction:column;gap:var(--spacing-md)}.history-item{padding:var(--spacing-lg);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--spacing-md);transition:all var(--transition-base)}.history-item:hover{background:var(--bg-hover);border-color:var(--accent);transform:translateX(4px);box-shadow:var(--shadow)}.history-item.best{border-color:var(--success);background:var(--success-light)}.history-item-info{flex:1;min-width:200px}.history-item-stats{display:flex;gap:var(--spacing-lg);flex-wrap:wrap;font-weight:var(--font-weight-medium);align-items:center}.history-expand-icon{color:var(--text-secondary);font-size:.8em;transition:transform var(--transition-base)}.history-item-header{width:100%;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--spacing-md)}.history-item-details{width:100%;margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--border);display:flex;flex-direction:column;gap:var(--spacing-sm)}.history-detail-item{font-size:var(--font-size-sm);color:var(--text-secondary);padding:var(--spacing-xs) 0}.history-detail-section{margin-top:var(--spacing-sm);padding-top:var(--spacing-sm);border-top:1px solid var(--border-light)}.history-stats-summary{margin-bottom:var(--spacing-xl);padding:var(--spacing-lg);background:var(--bg-secondary);border-radius:var(--radius-lg);border:1px solid var(--border)}.history-chart-container{margin-bottom:var(--spacing-xl);padding:var(--spacing-lg);background:var(--bg-secondary);border-radius:var(--radius-lg);border:1px solid var(--border);display:flex;flex-direction:column}.history-chart-container h3{flex-shrink:0;margin-bottom:var(--spacing-md);color:var(--text-primary)}.history-chart-wrapper{width:100%;height:300px;max-height:300px;position:relative;flex-shrink:0;overflow:hidden}.history-chart-wrapper>div{width:100%!important;height:300px!important;max-height:300px!important;position:relative!important}.history-chart-canvas{width:100%!important;height:300px!important;max-height:300px!important;border-radius:var(--radius-md);position:relative}.stats-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--spacing-lg)}.stats-summary-item{display:flex;flex-direction:column;gap:var(--spacing-xs);text-align:center}.stats-summary-label{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:var(--font-weight-medium)}.stats-summary-value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--accent)}.keyboard-helper{position:fixed;bottom:var(--spacing-xl);left:50%;transform:translateX(-50%);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-2xl);padding:var(--spacing-xl);box-shadow:var(--shadow-xl);z-index:1500;max-width:90%;animation:slideUp var(--transition-base)}.keyboard-layout{display:flex;flex-direction:column;gap:var(--spacing-sm);margin-bottom:var(--spacing-lg)}.keyboard-row{display:flex;gap:var(--spacing-xs);justify-content:center}.keyboard-row kbd{padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);font-family:var(--font-mono);font-size:var(--font-size-sm);min-width:40px;text-align:center;box-shadow:var(--shadow);transition:all var(--transition-base);font-weight:var(--font-weight-medium)}.keyboard-row kbd:hover{background:var(--bg-hover);transform:translateY(-2px);box-shadow:var(--shadow-md)}.keyboard-close{width:100%;padding:var(--spacing-md);background:var(--accent);color:var(--text-inverse);border:none;border-radius:var(--radius-lg);cursor:pointer;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);transition:all var(--transition-base)}.keyboard-close:hover{background:var(--accent-hover);transform:translateY(-2px);box-shadow:var(--shadow-md)}body.countdown-active{overflow:hidden;height:100vh;touch-action:none;overscroll-behavior:contain}.countdown-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.8);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:3000;pointer-events:auto;animation:fadeIn var(--transition-base);overflow:hidden}.countdown-watermark{position:absolute;top:75%;left:50%;transform:translate(-50%,-50%);width:500px;height:auto;opacity:.25;z-index:3001;pointer-events:none;user-select:none}@media (max-width:768px){.countdown-watermark{width:400px}}.countdown-overlay[hidden]{display:none!important;pointer-events:none!important}.countdown-number{font-size:10rem;font-weight:var(--font-weight-bold);color:var(--text-inverse);text-shadow:0 0 40px rgba(255,255,255,.5);animation:1s ease-in-out pulse}@keyframes pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.2);opacity:.8}}.pause-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.8);backdrop-filter:blur(8px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-xl);z-index:3000;animation:fadeIn var(--transition-base)}.pause-overlay[hidden]{display:none!important;pointer-events:none!important}.pause-message{font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);color:var(--text-inverse);text-shadow:0 0 40px rgba(255,255,255,.5)}@media (max-width:768px){.header-content{flex-direction:column;align-items:flex-start;gap:var(--spacing-md)}.hero-title{font-size:var(--font-size-3xl)}.hero-description{font-size:var(--font-size-lg)}.mode-grid{grid-template-columns:1fr;gap:var(--spacing-lg)}.stats-bar{grid-template-columns:repeat(2,1fr);gap:var(--spacing-md);padding:var(--spacing-lg)}.text-display{font-size:16px}.finish-stats{grid-template-columns:repeat(2,1fr)}.modal-content{width:95%;max-height:95vh}.keyboard-helper{width:95%;padding:var(--spacing-lg)}.keyboard-row kbd{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-xs);min-width:32px}.countdown-number{font-size:6rem}.pause-message{font-size:var(--font-size-3xl)}}@media (max-width:480px){.readme-section{position:relative;top:0;left:0;margin:var(--spacing-md)}.readme-content{position:relative;max-width:100%}.header-content{padding:var(--spacing-md)}.hero-section{padding:var(--spacing-2xl) var(--spacing-md)}.mode-selection{padding:var(--spacing-xl) var(--spacing-md)}.game-area{padding:var(--spacing-md)}.text-display{font-size:14px}.game-controls{flex-direction:column}.btn{width:100%}.finish-stats{grid-template-columns:1fr}.finish-actions{flex-direction:column}.finish-actions .btn{width:100%}.history-controls{flex-direction:column}.history-controls .btn{width:100%}}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,::after,::before{animation-duration:0s!important;animation-iteration-count:1!important;transition-duration:0s!important}}@media print{.game-controls,.header-controls,.keyboard-helper,.modal,.readme-section{display:none}}