:root{--color-primary: #FF6B6B;--color-primary-dark: #e85555;--color-primary-light: #ff8a8a;--color-primary-bg: #fff0f0;--color-secondary: #FFC857;--color-accent: #EBAA13;--color-accent-light: #FFC857;--color-input: #65D9BA;--color-input-dark: #45A29E;--color-play: #AF51A2;--color-play-dark: #9E398F;--color-success: #65D9BA;--color-success-light: #e0f8f0;--color-danger: #FF6B6B;--color-danger-light: #fff0f0;--color-warning: #FFC857;--color-warning-light: #fff8e6;--color-bg: #FFE8E8;--color-surface: #ffffff;--color-border: #e6e6e6;--color-text: #333333;--color-text-secondary: #666666;--color-text-muted: #999999;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--font-sans: "Nunito", system-ui, -apple-system, sans-serif;--font-display: "Fredoka", var(--font-sans);--radius-sm: .5rem;--radius-md: .75rem;--radius-lg: 1rem;--radius-xl: 1.25rem;--radius-full: 9999px;--shadow-sm: 0 2px 4px rgba(51, 51, 51, .06);--shadow-md: 0 4px 12px rgba(51, 51, 51, .1);--shadow-lg: 0 8px 24px rgba(51, 51, 51, .12);--shadow-xl: 0 16px 32px rgba(51, 51, 51, .14)}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);background:linear-gradient(160deg,#ffe8e8,#fff0e0,#ffecd2);background-attachment:fixed;color:var(--color-text);line-height:1.6;min-height:100vh}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:600;line-height:1.3;color:var(--color-text)}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:var(--font-sans)}.app-layout{min-height:100vh;display:flex;flex-direction:column}.container{max-width:960px;margin:0 auto;padding:0 var(--space-lg)}.btn{display:inline-flex;align-items:center;gap:var(--space-sm);padding:.75rem 1.5rem;border:none;border-radius:var(--radius-full);font-size:.875rem;font-weight:700;font-family:var(--font-sans);transition:all .2s ease;text-decoration:none;white-space:nowrap}.btn:hover{text-decoration:none;transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn:active{transform:translateY(0)}.btn-primary{background:var(--color-secondary);color:var(--color-text);box-shadow:0 3px 10px #ffc85766}.btn-primary:hover{box-shadow:0 5px 16px #ffc85780;filter:brightness(1.05)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border:2px solid var(--color-secondary)}.btn-secondary:hover{background:var(--color-warning-light);border-color:var(--color-secondary)}.btn-danger{background:var(--color-primary);color:#fff}.btn-danger:hover{background:var(--color-primary-dark)}.btn-ghost{background:transparent;color:var(--color-text-secondary);padding:.5rem .75rem}.btn-ghost:hover{background:var(--color-bg);color:var(--color-text)}.btn-lg{padding:1rem 2rem;font-size:1.125rem;font-weight:900;border-radius:var(--radius-full)}.btn-sm{padding:.375rem .875rem;font-size:.8125rem}.btn-icon{width:2.25rem;height:2.25rem;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full)}.card{background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-xl);box-shadow:var(--shadow-sm);transition:box-shadow .2s ease,transform .2s ease}.card-hover:hover{box-shadow:var(--shadow-md);transform:translateY(-3px);border-color:var(--color-input)}.form-group{margin-bottom:var(--space-lg)}.form-label{display:block;font-size:.875rem;font-weight:700;color:var(--color-text);margin-bottom:var(--space-xs)}.form-input,.form-select,.form-textarea{width:100%;padding:.75rem 1rem;border:3px solid var(--color-input);border-radius:var(--radius-lg);font-size:.9375rem;font-family:var(--font-sans);color:var(--color-text);background:var(--color-surface);transition:border-color .2s ease,box-shadow .2s ease}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--color-input-dark);box-shadow:0 0 0 3px #65d9ba33}.form-textarea{min-height:80px;resize:vertical}.form-hint{font-size:.8125rem;color:var(--color-text-muted);margin-top:var(--space-xs)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md)}.badge{display:inline-flex;align-items:center;padding:.2rem .75rem;font-size:.75rem;font-weight:700;border-radius:var(--radius-full);letter-spacing:.02em}.badge-primary{background:var(--color-primary-bg);color:var(--color-primary)}.badge-success{background:var(--color-success-light);color:#2d8a6e}.badge-warning{background:var(--color-warning-light);color:#b8860b}.badge-danger{background:var(--color-danger-light);color:#c44}.navbar{background:var(--color-primary);border-bottom:none;padding:0 var(--space-lg);height:64px;display:flex;align-items:center;position:sticky;top:0;z-index:100}.navbar-inner{max-width:960px;width:100%;margin:0 auto;display:flex;align-items:center;justify-content:space-between}.navbar-brand{font-family:var(--font-display);font-size:1.5rem;font-weight:600;display:inline-flex;align-items:center;gap:.5rem;color:#fff;letter-spacing:-.01em}.navbar-actions{display:flex;align-items:center;gap:var(--space-md)}.navbar-actions>span{color:#ffffffd9!important}.navbar-actions .btn-ghost{color:#ffffffd9}.navbar-actions .btn-ghost:hover{background:#ffffff26;color:#fff}.page-header{padding:var(--space-xl) 0;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-md)}.page-title{font-size:1.75rem;font-weight:700}.page-subtitle{color:var(--color-text-secondary);font-size:.9375rem;margin-top:var(--space-xs)}.page-content{flex:1;padding-bottom:var(--space-2xl)}.grid{display:grid;gap:var(--space-lg)}.grid-2{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}.grid-3{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.empty-state{text-align:center;padding:var(--space-2xl) var(--space-xl);color:var(--color-text-secondary)}.empty-state-icon{font-size:3rem;margin-bottom:var(--space-md);opacity:.5}.empty-state h3{color:var(--color-text);margin-bottom:var(--space-sm)}.alert{padding:var(--space-md) var(--space-lg);border-radius:var(--radius-md);font-size:.875rem;margin-bottom:var(--space-md)}.alert-error{background:var(--color-danger-light);color:#c44;border:2px solid #ffcccc}.alert-success{background:var(--color-success-light);color:#2d8a6e;border:2px solid #b0eed8}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#33333380;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:200;padding:var(--space-lg)}.modal{background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);max-width:520px;width:100%;max-height:90vh;overflow-y:auto;padding:var(--space-xl);border:2px solid var(--color-border)}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-lg)}.modal-title{font-size:1.25rem;font-weight:600}.modal-actions{display:flex;gap:var(--space-sm);justify-content:flex-end;margin-top:var(--space-xl)}.spinner{display:inline-block;width:1.5rem;height:1.5rem;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.loading-page{display:flex;align-items:center;justify-content:center;min-height:50vh;flex-direction:column;gap:var(--space-md);color:var(--color-text-secondary)}.copy-field{display:flex;align-items:center;gap:var(--space-sm);background:var(--color-bg);border:2px solid var(--color-input);border-radius:var(--radius-lg);padding:var(--space-sm) var(--space-md)}.copy-field code{flex:1;font-size:.8125rem;color:var(--color-text-secondary);word-break:break-all}.student-theme{--color-bg: #F0E0F5;background:linear-gradient(160deg,#f0e0f5,#e8d4f0,#f5e6fa)!important;background-attachment:fixed}.student-theme .navbar{background:linear-gradient(135deg,var(--color-play),var(--color-play-dark));border-bottom:none}.student-theme .navbar-brand{color:#fff}.game-container{max-width:700px;margin:0 auto}.game-progress{display:flex;align-items:center;gap:var(--space-md);margin-bottom:var(--space-xl)}.game-progress-bar{flex:1;height:8px;background:var(--color-border);border-radius:var(--radius-full);overflow:hidden}.game-progress-fill{height:100%;background:linear-gradient(90deg,var(--color-primary),var(--color-secondary));border-radius:var(--radius-full);transition:width .4s ease}.game-progress-text{font-size:.875rem;font-weight:500;color:var(--color-text-secondary);white-space:nowrap}.game-card{background:var(--color-surface);border:3px solid var(--color-input);border-radius:var(--radius-xl);padding:var(--space-2xl);text-align:center;box-shadow:var(--shadow-md)}.game-word{font-family:var(--font-display);font-size:2rem;font-weight:700;color:var(--color-primary);margin-bottom:var(--space-md)}.game-translation{font-size:1.125rem;color:var(--color-text-secondary)}.game-input{width:100%;padding:.875rem 1rem;border:3px solid var(--color-input);border-radius:var(--radius-lg);font-size:1.125rem;text-align:center;font-family:var(--font-sans);transition:border-color .2s}.game-input:focus{outline:none;border-color:var(--color-input-dark);box-shadow:0 0 0 4px #65d9ba33}.game-input.correct{border-color:var(--color-success);background:var(--color-success-light);color:#2d8a6e}.game-input.incorrect{border-color:var(--color-danger);background:var(--color-danger-light);color:#c44}.game-sentence{font-size:1.125rem;line-height:1.8;margin-bottom:var(--space-lg);color:var(--color-text)}.game-blank{display:inline-block;min-width:120px;border-bottom:2px dashed var(--color-primary);color:var(--color-primary);font-weight:600;padding:0 var(--space-sm)}.game-hint{font-size:.875rem;color:var(--color-text-muted);font-style:italic}.game-actions{display:flex;gap:var(--space-md);justify-content:center;margin-top:var(--space-xl)}.game-result{font-size:1.25rem;font-weight:600;padding:var(--space-md);border-radius:var(--radius-md);margin-top:var(--space-md)}.game-result.correct{background:var(--color-success-light);color:#2d8a6e}.game-result.incorrect{background:var(--color-danger-light);color:#c44}.match-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--space-sm);margin-top:var(--space-lg)}.match-tile{padding:var(--space-md);border:3px solid var(--color-border);border-radius:var(--radius-lg);text-align:center;font-weight:600;cursor:pointer;transition:all .2s;background:var(--color-surface);min-height:60px;display:flex;align-items:center;justify-content:center}.match-tile:hover{border-color:var(--color-input);background:#65d9ba14}.match-tile.selected{border-color:var(--color-play);background:#af51a214;color:var(--color-play)}.match-tile.matched{border-color:var(--color-success);background:var(--color-success-light);color:#2d8a6e;pointer-events:none}.match-tile.wrong{border-color:var(--color-primary);background:var(--color-danger-light);animation:shake .4s ease}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}.quiz-options{display:grid;gap:var(--space-sm);margin-top:var(--space-lg)}.quiz-option{padding:var(--space-md) var(--space-lg);border:3px solid var(--color-border);border-radius:var(--radius-lg);text-align:left;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;background:var(--color-surface)}.quiz-option:hover{border-color:var(--color-input);background:#65d9ba14}.quiz-option.correct{border-color:var(--color-success);background:var(--color-success-light);color:#2d8a6e}.quiz-option.incorrect{border-color:var(--color-danger);background:var(--color-danger-light);color:#c44}.score-display{text-align:center;padding:var(--space-2xl)}.score-number{font-family:var(--font-display);font-size:4rem;font-weight:600;background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.score-label{color:var(--color-text-secondary);font-size:1.125rem;margin-top:var(--space-sm)}.game-modes{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-lg);margin-top:var(--space-xl)}.game-mode-card{background:var(--color-surface);border:3px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-xl);text-align:center;cursor:pointer;transition:all .2s}.game-mode-card:hover{border-color:var(--color-play);box-shadow:var(--shadow-md);transform:translateY(-4px)}.game-mode-icon{font-size:2.5rem;margin-bottom:var(--space-md)}.game-mode-title{font-size:1.0625rem;font-weight:600;margin-bottom:var(--space-xs)}.game-mode-desc{font-size:.8125rem;color:var(--color-text-secondary)}@media (max-width: 768px){.form-row{grid-template-columns:1fr}.page-header{flex-direction:column;align-items:flex-start}.game-word{font-size:1.5rem}.score-number{font-size:3rem}.scramble-letters{gap:var(--space-xs)}.scramble-tile{width:40px;height:40px;font-size:1rem}.scramble-slot{width:32px;height:40px;font-size:1rem}}.scramble-answer{display:flex;justify-content:center;gap:var(--space-xs);margin:var(--space-lg) 0;min-height:52px;flex-wrap:wrap}.scramble-slot{width:36px;height:44px;border-bottom:2px solid var(--color-border);display:flex;align-items:center;justify-content:center;font-size:1.125rem;font-weight:600;font-family:var(--font-display);color:var(--color-text);transition:all .2s}.scramble-slot.filled{border-bottom-color:var(--color-primary);color:var(--color-primary)}.scramble-slot.correct{border-bottom-color:var(--color-success);color:#2d8a6e;background:var(--color-success-light);border-radius:var(--radius-sm)}.scramble-slot.incorrect{border-bottom-color:var(--color-danger);color:#c44;background:var(--color-danger-light);border-radius:var(--radius-sm)}.scramble-letters{display:flex;justify-content:center;gap:var(--space-sm);margin:var(--space-xl) 0 var(--space-lg);flex-wrap:wrap}.scramble-tile{width:48px;height:48px;border:3px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);font-size:1.25rem;font-weight:600;font-family:var(--font-display);color:var(--color-text);cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}.scramble-tile:hover:not(.used):not(:disabled){border-color:var(--color-play);background:#af51a214;color:var(--color-play);transform:translateY(-3px);box-shadow:var(--shadow-sm)}.scramble-tile.used{opacity:.2;transform:scale(.9);pointer-events:none}.speed-intro{text-align:center;padding:var(--space-xl)}.speed-timer-display{font-family:var(--font-display);font-weight:600;background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:var(--space-md)}.speed-rules{display:flex;flex-direction:column;gap:var(--space-sm);margin:var(--space-lg) auto 0;max-width:260px}.speed-rule{font-size:.875rem;color:var(--color-text-secondary);padding:var(--space-xs) var(--space-md);background:var(--color-bg);border-radius:var(--radius-md)}.speed-rule strong{color:var(--color-primary)}.speed-timer-bar{height:6px;background:var(--color-border);border-radius:var(--radius-full);overflow:hidden;margin-bottom:var(--space-lg)}.speed-timer-fill{height:100%;border-radius:var(--radius-full)}.speed-stats{display:flex;justify-content:center;gap:var(--space-2xl);margin-bottom:var(--space-lg)}.speed-stat{display:flex;flex-direction:column;align-items:center}.speed-stat-value{font-family:var(--font-display);font-size:1.5rem;font-weight:700;color:var(--color-text)}.speed-stat-label{font-size:.75rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.speed-card{transition:border-color .3s ease}.speed-flash-correct{border-color:var(--color-success)!important}.speed-flash-skip{border-color:var(--color-warning)!important}.speed-streak-banner{margin-top:var(--space-md);padding:var(--space-xs) var(--space-md);background:linear-gradient(135deg,var(--color-secondary),var(--color-accent));color:var(--color-text);font-weight:700;font-size:.875rem;border-radius:var(--radius-full);display:inline-block;animation:streak-bounce .5s ease}@keyframes streak-bounce{0%{transform:scale(.8);opacity:0}50%{transform:scale(1.1)}to{transform:scale(1);opacity:1}}.race-lobby{max-width:600px;margin:0 auto}.race-lobby-card{padding:var(--space-2xl)}.race-lobby-players{margin-bottom:var(--space-xl)}.race-player-list{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.race-player-chip{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-md) var(--space-xs) var(--space-xs);border:2px solid var(--color-border);border-radius:var(--radius-full);font-size:.875rem;font-weight:500;background:var(--color-surface);animation:chip-appear .3s ease}@keyframes chip-appear{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.race-car-mini{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff}.race-lobby-waiting{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);color:var(--color-text-muted);font-size:.875rem;padding:var(--space-md) 0}.race-track-container{background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-lg) var(--space-xl);box-shadow:var(--shadow-md);overflow:hidden}.race-track{position:relative;min-height:60px}.race-finish-line{position:absolute;right:2%;top:0;bottom:0;width:4px;background:repeating-linear-gradient(to bottom,#1e293b,#1e293b 8px,#fff 8px,#fff 16px);border-radius:2px;z-index:1}.race-finish-line:before{content:"MÅL";position:absolute;top:-22px;right:-14px;font-size:.625rem;font-weight:700;color:var(--color-text-muted);letter-spacing:.05em}.race-lane{position:relative;height:48px;border-bottom:1px dashed var(--color-border);margin-bottom:2px}.race-lane:last-child{border-bottom:none;margin-bottom:0}.race-car{position:absolute;top:50%;transform:translateY(-50%);left:0;display:flex;align-items:center;gap:var(--space-xs);padding:4px 10px 4px 6px;border-radius:var(--radius-full);color:#fff;font-size:.75rem;font-weight:600;white-space:nowrap;box-shadow:0 2px 6px #0003;z-index:2}.race-car-mine{box-shadow:0 0 0 3px #fffc,0 2px 8px #0000004d}.race-car-name{max-width:80px;overflow:hidden;text-overflow:ellipsis}.race-score-bar{text-align:center;font-size:.875rem;color:var(--color-text-secondary);padding:var(--space-md) 0}.race-question-card{max-width:600px;margin:0 auto}.race-results{display:flex;flex-direction:column;gap:var(--space-sm);margin-top:var(--space-lg)}.race-result-row{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.race-result-mine{border-color:var(--color-primary);background:var(--color-primary-bg)}.race-result-place{font-family:var(--font-display);font-weight:700;font-size:1.125rem;color:var(--color-primary);min-width:36px}.race-result-name{flex:1;font-weight:500}.race-result-score{font-size:.875rem;color:var(--color-text-secondary)}.race-winner-banner{text-align:center;padding:var(--space-lg) var(--space-xl);background:linear-gradient(135deg,#fef3c7,#fde68a);border:2px solid #f59e0b;border-radius:var(--radius-lg);margin-bottom:var(--space-lg)}.race-trophy{display:block;font-size:.875rem;font-weight:600;color:#92400e;text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--space-xs)}.race-winner-name{font-family:var(--font-display);font-size:1.75rem;font-weight:700;color:#78350f}.race-finished{max-width:600px;margin:0 auto}@media (max-width: 768px){.race-car-name{max-width:50px;font-size:.625rem}.race-track-container{padding:var(--space-md) var(--space-sm)}}
