.container{margin-left:auto;margin-right:auto;width:100%}.container-padding{padding-left:var(--spacing-md);padding-right:var(--spacing-md)}.container-sm{max-width:640px}.container-md{max-width:768px}.container-lg{max-width:1024px}.container-xl{max-width:1280px}.container-full{max-width:100%}@media(min-width:768px){.container-padding{padding-left:var(--spacing-lg);padding-right:var(--spacing-lg)}}.stack{display:flex}.stack-vertical{flex-direction:column}.stack-horizontal{flex-direction:row}.stack-gap-small{gap:var(--spacing-sm)}.stack-gap-medium{gap:var(--spacing-md)}.stack-gap-large{gap:var(--spacing-lg)}.stack-align-start{align-items:flex-start}.stack-align-center{align-items:center}.stack-align-end{align-items:flex-end}.stack-align-stretch{align-items:stretch}.card{background-color:var(--color-surface);border-radius:var(--border-radius-lg)}.card-padding-small{padding:var(--spacing-sm)}.card-padding-medium{padding:var(--spacing-md)}.card-padding-large{padding:var(--spacing-lg)}.card-shadow{box-shadow:var(--shadow-md)}.card-border{border:2px solid var(--color-border)}.btn{display:inline-flex;align-items:center;justify-content:center;font-weight:600;text-align:center;text-decoration:none;border:2px solid transparent;cursor:pointer;transition:all .2s ease-in-out;border-radius:var(--border-radius-md);font-family:inherit}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-small{min-height:var(--min-touch-target);padding:var(--spacing-sm) var(--spacing-md);font-size:.875rem}.btn-medium{min-height:var(--min-touch-target);padding:var(--spacing-md) var(--spacing-lg);font-size:1rem}.btn-large{min-height:48px;padding:var(--spacing-md) var(--spacing-xl);font-size:1.125rem}.btn-primary{background-color:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background-color:var(--color-primary-hover);border-color:var(--color-primary-hover)}.btn-secondary{background-color:var(--color-secondary);color:#fff;border-color:var(--color-secondary)}.btn-secondary:hover:not(:disabled){background-color:var(--color-secondary-hover);border-color:var(--color-secondary-hover)}.btn-danger{background-color:var(--color-danger);color:#fff;border-color:var(--color-danger)}.btn-danger:hover:not(:disabled){background-color:#a52834;border-color:#a52834}.input-wrapper{display:flex;flex-direction:column;gap:var(--spacing-sm)}.input-label{font-weight:600;font-size:1rem;color:var(--color-text)}.input-required{color:var(--color-danger)}.input{min-height:var(--min-touch-target);padding:var(--spacing-md);font-size:1rem;font-family:inherit;color:var(--color-text);background-color:var(--color-background);border:2px solid var(--color-border);border-radius:var(--border-radius-md);transition:border-color .2s ease-in-out}.input:focus{outline:none;border-color:var(--color-primary)}.input:disabled{opacity:.5;cursor:not-allowed}.input-error{border-color:var(--color-danger)}.input-error-message{color:var(--color-danger);font-size:.875rem;margin-top:var(--spacing-xs)}.badge{display:inline-flex;align-items:center;padding:var(--spacing-xs) var(--spacing-sm);font-size:.75rem;font-weight:600;border-radius:var(--border-radius-sm);text-transform:uppercase;letter-spacing:.5px}.badge-primary{background-color:var(--color-primary);color:#fff}.badge-secondary{background-color:var(--color-secondary);color:#fff}.badge-success{background-color:var(--color-success);color:#fff}.badge-warning{background-color:var(--color-warning);color:#fff}.badge-danger{background-color:var(--color-danger);color:#fff}.badge-info{background-color:#3b82f6;color:#fff}.tooltip-tour{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50}.tooltip-tour-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#0a0c1266}.tooltip-tour-highlight{position:absolute;border-radius:12px;box-shadow:0 0 0 2px #fffc,0 0 0 9999px #0a0c1259;pointer-events:none}.tooltip-tour-bubble{position:absolute;background:#0f1722;color:#fff;border-radius:16px;padding:16px;display:grid;grid-template-columns:72px 1fr;gap:12px;box-shadow:0 12px 30px #0000004d;border:1px solid rgba(255,255,255,.15)}.tooltip-tour-bubble:after{content:"";position:absolute;top:22px;width:12px;height:12px;background:#0f1722;border:1px solid rgba(255,255,255,.15);transform:rotate(45deg)}.tooltip-tour-bubble.is-right:after{left:-6px;border-right:none;border-top:none}.tooltip-tour-bubble.is-left:after{right:-6px;border-left:none;border-bottom:none}.tooltip-tour-bubble.is-center:after{display:none}.tooltip-tour-bubble.is-large{grid-template-columns:88px 1fr;padding:20px;gap:16px}.tooltip-tour-critter{width:72px;height:72px;border-radius:14px;background-color:#1a2534;background-repeat:no-repeat;background-position:center;box-shadow:inset 0 0 0 1px #ffffff14}.tooltip-tour-bubble.is-large .tooltip-tour-critter{width:88px;height:88px}.tooltip-tour-title{font-weight:700;font-size:1rem;margin-bottom:4px}.tooltip-tour-bubble.is-large .tooltip-tour-title{font-size:1.2rem}.tooltip-tour-body{font-size:.9rem;color:#ffffffd9}.tooltip-tour-bubble.is-large .tooltip-tour-body{font-size:1rem}.tooltip-tour-progress{margin-top:6px;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:#fff9}.tooltip-tour-actions{margin-top:12px;display:flex;gap:8px}.tooltip-tour-button{background:transparent;border:1px solid rgba(255,255,255,.3);color:#fff;padding:6px 10px;border-radius:999px;font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;cursor:pointer}.tooltip-tour-button:disabled{opacity:.4;cursor:not-allowed}.tooltip-tour-button.primary{background:#f5b942;border-color:#f5b942;color:#3d2b00;font-weight:700}.tooltip-tour-restart{position:fixed;bottom:20px;right:20px;z-index:40;background:#0f1722;color:#fff;border:1px solid rgba(255,255,255,.2);padding:8px 14px;border-radius:999px;font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;cursor:pointer;box-shadow:0 8px 20px #00000040}.tooltip-tour-restart:hover{background:#1a2534}.home-page{min-height:100vh;padding:var(--spacing-xl) 0;background:linear-gradient(135deg,#667eea,#764ba2)}.home-header{text-align:center;color:#fff;margin-bottom:var(--spacing-lg)}.home-title{font-size:2.5rem;font-weight:700;margin-bottom:var(--spacing-md);text-shadow:2px 2px 4px rgba(0,0,0,.2)}.home-subtitle{font-size:1.25rem;opacity:.9}.connection-status{margin-top:var(--spacing-md);display:flex;justify-content:center}.error-message{padding:var(--spacing-md);background-color:#ff00001a;border:2px solid var(--color-danger);border-radius:var(--border-radius-md);color:var(--color-danger);font-weight:600;text-align:center}.home-card{width:100%;max-width:500px}.section-description{color:var(--color-text-secondary)}.divider{position:relative;text-align:center;margin:var(--spacing-md) 0}.divider:before{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background-color:var(--color-border)}.divider-text{position:relative;padding:0 var(--spacing-md);background-color:var(--color-surface);color:var(--color-text-secondary);font-size:.875rem;font-weight:600;text-transform:uppercase}.join-section{display:flex;flex-direction:column;gap:var(--spacing-md)}.invite-note{margin:0;font-size:.875rem;color:var(--color-text-secondary)}.home-actions{display:flex;justify-content:center;padding-top:var(--spacing-md);border-top:2px solid var(--color-border)}.home-features{width:100%;max-width:500px;color:#fff}.features-title{font-size:1.25rem;font-weight:600;margin-bottom:var(--spacing-md);text-align:center}.home-features .card{background-color:#fffffff2}.home-features h4{font-size:1.125rem;font-weight:600;margin-bottom:var(--spacing-xs);color:var(--color-text)}.home-features p{color:var(--color-text-secondary);font-size:.875rem}@media(max-width:768px){.home-title{font-size:2rem}.home-subtitle{font-size:1rem}}.toast{position:fixed;top:var(--spacing-lg);right:var(--spacing-lg);min-width:300px;max-width:500px;padding:var(--spacing-md);border-radius:var(--border-radius);box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:var(--spacing-sm);animation:slideIn .3s ease-out;z-index:9999}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.toast-message{flex:1;margin:0;font-weight:500;color:#fff}.toast-close{background:none;border:none;color:#fff;font-size:1.5rem;line-height:1;cursor:pointer;opacity:.8;transition:opacity .2s;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.toast-close:hover{opacity:1}.toast-info{background-color:#3b82f6}.toast-success{background-color:var(--color-success)}.toast-warning{background-color:var(--color-warning)}.toast-danger{background-color:var(--color-danger)}.video-tile{position:relative;width:100%;max-width:480px;aspect-ratio:16 / 9;background-color:#1a1a1a;border-radius:var(--border-radius-md);overflow:hidden;box-shadow:var(--shadow-md);margin:0 auto}.video-element{width:100%;height:100%;object-fit:cover}.video-overlay{position:absolute;bottom:0;left:0;right:0;padding:var(--spacing-sm);background:linear-gradient(to top,rgba(0,0,0,.8),transparent)}.video-info{display:flex;align-items:center;gap:var(--spacing-sm)}.player-name{color:#fff;font-weight:600;font-size:.875rem;text-shadow:1px 1px 2px rgba(0,0,0,.8)}.muted-indicator{font-size:1.25rem}.no-video{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;color:#ffffff80;font-size:1rem;font-weight:600}.avatar-placeholder{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-sm)}.avatar-icon{font-size:4rem;opacity:.7}.avatar-name{color:#fffc;font-size:1.125rem;font-weight:600}.media-controls{padding:var(--spacing-md);background-color:var(--color-surface);border-radius:var(--border-radius-lg);border:2px solid var(--color-border)}.media-controls.media-controls-compact{display:inline-flex;align-items:center;gap:4px;padding:0;background:transparent;border:none}.media-controls-group{display:flex;gap:var(--spacing-md);justify-content:center;flex-wrap:wrap}.media-controls-compact .media-controls-group{gap:4px;align-items:center}@media(max-width:768px){.media-controls-group{flex-direction:column}}.grid{display:grid;width:100%}.grid-gap-small{gap:var(--spacing-sm)}.grid-gap-medium{gap:var(--spacing-md)}.grid-gap-large{gap:var(--spacing-lg)}.video-grid-container{width:100%;max-width:1000px;margin:0 auto}.video-grid-container.is-row-portrait{max-width:420px}.video-grid-container.is-row.is-row-pinned{position:fixed;top:calc(var(--spacing-md) + 48px);left:50%;transform:translate(-50%) translate(var(--pin-x, 0px),var(--pin-y, 0px));z-index:20;width:min(100%,1000px);padding:44px var(--spacing-sm) var(--spacing-sm);background-color:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-lg)}.video-grid-container.is-row.is-row-pinned:before{content:"";position:absolute;top:0;left:0;right:0;height:44px;background:linear-gradient(180deg,#090c1238,#090c1200);border-top-left-radius:inherit;border-top-right-radius:inherit;pointer-events:none}.video-grid-container.is-row.is-row-pinned.is-row-portrait{width:min(420px,100%)}.video-grid-container.is-cube{max-width:100%}.video-carousel{display:flex;align-items:center;gap:var(--spacing-sm);width:100%}.video-carousel-controls{display:flex;align-items:center;gap:var(--spacing-sm);flex:0 0 auto}.video-carousel-controls.is-portrait{width:100%;justify-content:space-between}.video-row-drag-hint{font-size:.7rem;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.08em;opacity:0;transition:opacity .2s ease}.video-row-controls{position:absolute;top:6px;right:8px;display:inline-flex;gap:4px;padding:2px;height:28px;align-items:center;border-radius:999px;background:#090c128c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:2}.video-row-layout-controls{display:inline-flex;gap:4px;align-items:center}.video-control-icon{width:20px;height:20px;border-radius:999px;border:1px solid rgba(255,255,255,.25);background:#ffffff14;color:#f8f8f8;font-size:.7rem;line-height:1;padding:0;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .15s ease,background .15s ease,border-color .15s ease}.video-control-icon:hover{transform:translateY(-1px);background:#ffffff2e}.video-control-icon.is-active{border-color:#fff9;background:#ffffff47}.video-row-control-divider{width:1px;height:14px;background:#fff3;margin:0 4px}.video-row-media-controls{display:inline-flex;gap:6px}.video-control-stop{width:9px;height:9px;background:#f8f8f8;border-radius:2px;display:block}.video-grid-container.is-row.is-row-pinned:hover .video-row-drag-hint,.video-grid-container.is-row.is-row-pinned:focus-within .video-row-drag-hint{opacity:1}.video-grid-container.is-row.is-row-pinned{border-width:3px;cursor:default}.video-grid-container.is-row.is-row-pinned.is-row-drag-ready{cursor:grab}.video-grid-container.is-row.is-row-pinned.is-row-drag-ready:active{cursor:grabbing}.video-row{display:flex;gap:var(--spacing-md);overflow-x:auto;overflow-y:hidden;padding-bottom:var(--spacing-sm);scroll-snap-type:x proximity;scrollbar-width:thin;flex:1;min-width:0}.video-row .video-tile{flex:0 0 320px;width:320px;scroll-snap-align:start}.video-grid-container.is-row-portrait .video-row{flex-direction:column;align-items:center;overflow-x:hidden;overflow-y:auto;max-height:min(60vh,520px);scroll-snap-type:y proximity;padding-bottom:0;padding-right:var(--spacing-sm)}.video-grid-container.is-row-portrait .video-carousel{flex-direction:column;align-items:center}.video-grid-container.is-row-portrait .video-row{width:min(320px,100%)}.video-grid-container.is-row-portrait .video-row .video-tile{width:280px;max-width:280px;flex:0 0 auto;height:auto}.row-orientation-toggle{display:inline-flex;align-items:center;gap:6px;font-size:.75rem;font-weight:600;color:var(--color-text);margin-left:auto}.row-orientation-toggle input{position:absolute;opacity:0;pointer-events:none}.row-orientation-slider{position:relative;width:36px;height:20px;background-color:var(--color-border);border-radius:999px;transition:background-color .2s ease;box-shadow:inset 0 0 0 1px #00000014}.row-orientation-slider:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background-color:var(--color-surface);border-radius:50%;transition:transform .2s ease;box-shadow:var(--shadow-sm)}.row-orientation-toggle input:checked+.row-orientation-slider{background-color:var(--color-primary)}.row-orientation-toggle input:checked+.row-orientation-slider:after{transform:translate(16px)}.carousel-button{width:36px;height:36px;border-radius:999px;border:1px solid var(--color-border);background-color:var(--color-surface);color:var(--color-text);cursor:pointer;flex:0 0 auto}.carousel-button:hover{background-color:var(--color-background)}.carousel-button:disabled{opacity:.5;cursor:not-allowed}.video-cube{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;z-index:5;pointer-events:none}.video-cube-fallback,.video-cube-note{font-size:.875rem;color:var(--color-text-secondary);margin-bottom:var(--spacing-sm)}@media(max-width:900px){.video-row .video-tile{flex-basis:260px;width:260px}.carousel-button{width:32px;height:32px}.video-cube{height:100vh}}.memory-game{width:100%;max-width:800px;margin:0 auto;position:relative}.memory-setup{max-width:500px;margin:0 auto}.difficulty-selector{width:100%}.difficulty-selector label{display:block;font-weight:600;margin-bottom:var(--spacing-md);color:var(--color-text)}.difficulty-buttons{display:flex;gap:var(--spacing-md);flex-wrap:wrap;justify-content:center}.turn-indicator{display:flex;align-items:center;gap:var(--spacing-md)}.turn-indicator h3{margin:0;font-size:1.125rem;color:var(--color-text)}.scores{display:flex;gap:var(--spacing-lg);flex-wrap:wrap}.memory-start-note{font-size:.9rem;color:var(--color-text-secondary);text-align:center}.memory-selecting-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;background-size:cover;background-position:center;border-radius:var(--border-radius-lg);display:grid;place-items:center;padding:var(--spacing-lg)}.memory-selecting-overlay:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#0a0f1673;border-radius:inherit}.memory-selecting-overlay>*{position:relative;z-index:1}.memory-selecting-text{background:#0c121cb3;color:#fff;padding:.75rem 1.5rem;border-radius:999px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;animation:memory-flash .9s infinite}.player-score{display:flex;align-items:center;gap:var(--spacing-sm)}.memory-card{aspect-ratio:1;min-width:80px;min-height:80px;background:none;border:none;cursor:pointer;perspective:1000px;padding:0}.memory-card:disabled{cursor:not-allowed}.card-inner{position:relative;width:100%;height:100%;transition:transform .6s;transform-style:preserve-3d}.memory-card.flipped .card-inner{transform:rotateY(180deg)}.card-front,.card-back{position:absolute;width:100%;height:100%;backface-visibility:hidden;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius-lg);font-size:3rem;font-weight:700;border:3px solid var(--color-border)}.card-front{background-color:var(--color-primary);color:#fff}.card-back{background-color:var(--color-surface);transform:rotateY(180deg)}.memory-card.matched .card-back{background-color:var(--color-success);color:#fff}.game-over{background-color:var(--color-success);color:#fff;text-align:center}.winner-text{font-size:1.5rem;font-weight:700;margin:0}.final-scores{display:flex;flex-direction:column;gap:var(--spacing-sm);width:100%}.final-score{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-sm);background-color:#fff3;border-radius:var(--border-radius-md)}@media(max-width:768px){.card-front,.card-back{font-size:2rem}.game-header{flex-direction:column;align-items:flex-start}.difficulty-buttons{flex-direction:column}}@keyframes memory-flash{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.05)}}.file-upload{width:100%}.file-upload-label{display:block;font-weight:600;margin-bottom:var(--spacing-sm);color:var(--color-text)}.file-upload-hint{display:block;font-size:.875rem;font-weight:400;color:var(--color-text-secondary);margin-top:var(--spacing-xs)}.file-upload-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.file-upload-area{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-md);padding:var(--spacing-xl);border:2px dashed var(--color-border);border-radius:var(--border-radius-lg);background-color:var(--color-surface);min-height:200px;transition:border-color .2s,background-color .2s,transform .2s}.file-upload-area:hover{border-color:var(--color-primary);background-color:var(--color-background)}.file-upload-area.dragging{border-color:var(--color-primary);background-color:var(--color-primary-background, rgba(59, 130, 246, .1));border-width:3px;transform:scale(1.02)}.upload-icon{font-size:3rem;opacity:.6;transition:transform .2s,opacity .2s}.file-upload-area.dragging .upload-icon{transform:scale(1.2);opacity:.9}.file-upload-area.dragging .upload-text{font-weight:600;color:var(--color-primary)}.upload-text{margin:0;color:var(--color-text-secondary);font-size:.875rem}.upload-text-secondary{margin:0;color:var(--color-text-secondary);font-size:.75rem;opacity:.7}.file-upload-preview{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md);border:2px solid var(--color-border);border-radius:var(--border-radius-lg);background-color:var(--color-surface)}.preview-image{max-width:100%;max-height:300px;border-radius:var(--border-radius-md);box-shadow:var(--shadow-sm)}.preview-info{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xs)}.preview-dimensions{font-size:.875rem;color:var(--color-text-secondary)}.file-upload-error{margin-top:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background-color:var(--color-error-background, rgba(239, 68, 68, .1));border:1px solid var(--color-error, #ef4444);border-radius:var(--border-radius-md);color:var(--color-error, #ef4444);font-size:.875rem}.file-upload button{min-height:44px}@media(prefers-contrast:high){.file-upload-area,.file-upload-preview{border-width:3px}}@media(max-width:768px){.file-upload-area{min-height:160px;padding:var(--spacing-lg)}.upload-icon{font-size:2.5rem}.preview-image{max-height:200px}}.jigsaw-puzzle{width:100%;max-width:1400px;margin:0 auto}.jigsaw-setup{max-width:500px;margin:0 auto}.puzzle-config,.image-selector{width:100%}.puzzle-config label,.image-selector label{display:block;font-weight:600;margin-bottom:var(--spacing-md);color:var(--color-text)}.grid-size-buttons{display:flex;gap:var(--spacing-md);flex-wrap:wrap;justify-content:center}.scatter-slider{width:100%}.setup-note{font-size:.875rem;color:var(--color-text-secondary);font-style:italic;text-align:center}.puzzle-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md);background-color:var(--color-surface);border-radius:var(--border-radius-lg);border:2px solid var(--color-border);flex-wrap:wrap;gap:var(--spacing-md)}.progress-info{flex:1;min-width:200px}.progress-info h3{margin:0 0 var(--spacing-sm) 0;font-size:1.125rem;color:var(--color-text)}.progress-bar{width:100%;height:24px;background-color:var(--color-background);border-radius:var(--border-radius-md);overflow:hidden;border:2px solid var(--color-border)}.progress-fill{height:100%;background-color:var(--color-success);transition:width .3s ease}.reference-image{max-width:400px;margin:0 auto}.reference-image img{width:100%;height:auto;border-radius:var(--border-radius-md)}.puzzle-container{position:relative;width:100%;min-height:700px;background-color:var(--color-surface);border-radius:var(--border-radius-lg);border:2px solid var(--color-border);overflow:visible}.solution-grid{position:absolute;top:20px;left:20px}.grid-cell{position:absolute;width:100px;height:100px;border:1px dashed rgba(0,0,0,.2)}.puzzle-piece{position:absolute;cursor:grab;transition:opacity .2s,filter .2s;-webkit-user-select:none;user-select:none;overflow:visible;z-index:2}.puzzle-piece .piece-image{pointer-events:none}.puzzle-piece.dragging{cursor:grabbing;opacity:.9;z-index:1000;filter:drop-shadow(0 4px 8px rgba(0,0,0,.3))}.puzzle-piece.placed{cursor:default;opacity:1;z-index:1;pointer-events:none}.puzzle-piece.placed .piece-outline{stroke:#00c80066;stroke-width:2}.puzzle-piece.locked{cursor:not-allowed;opacity:.6;filter:grayscale(30%)}.lock-indicator{position:absolute;top:-8px;right:-8px;background-color:var(--color-warning);color:#fff;font-size:.625rem;padding:2px 6px;border-radius:var(--border-radius-sm);font-weight:600;white-space:nowrap}.puzzle-complete{background-color:var(--color-success);color:#fff;text-align:center}.puzzle-complete h2{margin:0;color:#fff}.puzzle-complete button{background-color:#fff!important;color:var(--color-success)!important;border:2px solid white!important}@media(prefers-contrast:high){.puzzle-piece .piece-outline{stroke:#0009;stroke-width:2}.puzzle-piece.placed .piece-outline{stroke:#00c800;stroke-width:3}}@media(max-width:768px){.puzzle-container{min-height:400px}.grid-cell{width:80px;height:80px}.grid-size-buttons{flex-direction:column}.puzzle-piece{padding:10px;margin:-10px}}.connect4-game{width:100%;max-width:700px;margin:0 auto;position:relative}.connect4-setup{max-width:500px;margin:0 auto}.player-assignments{display:flex;flex-direction:column;gap:var(--spacing-md);width:100%}.player-assignment{display:flex;align-items:center;justify-content:center;gap:var(--spacing-md);font-size:1.125rem}.color-indicator{width:32px;height:32px;border-radius:50%;border:2px solid var(--color-text)}.color-indicator.red{background-color:#e74c3c}.color-indicator.yellow{background-color:#f1c40f}.game-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md);background-color:var(--color-surface);border-radius:var(--border-radius-lg);border:2px solid var(--color-border);flex-wrap:wrap;gap:var(--spacing-md)}.player-info{display:flex;gap:var(--spacing-lg);flex-wrap:wrap}.player-status{display:flex;align-items:center;gap:var(--spacing-sm);opacity:.5;transition:opacity .2s}.player-status.active{opacity:1}.player-status span{font-weight:600;color:var(--color-text)}.your-color{display:flex;align-items:center;gap:var(--spacing-sm);font-weight:600;color:var(--color-text)}.connect4-view-toggle{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);background-color:var(--color-surface);border-radius:var(--border-radius-lg);border:2px solid var(--color-border)}.connect4-view-label{font-weight:600;color:var(--color-text)}.connect4-view-buttons{display:flex;gap:var(--spacing-sm)}.connect4-selecting-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;background-size:cover;background-position:center;border-radius:var(--border-radius-lg);display:grid;place-items:center;padding:var(--spacing-lg)}.connect4-selecting-overlay:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#0a0f1673;border-radius:inherit}.connect4-selecting-overlay>*{position:relative;z-index:1}.connect4-selecting-text{background:#0c121cb3;color:#fff;padding:.75rem 1.5rem;border-radius:999px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;animation:connect4-flash .9s infinite}.connect4-start-note,.connect4-spectators{font-size:.9rem;color:var(--color-text-secondary);text-align:center}.connect4-board-2d{position:relative;width:min(100%,560px);margin:0 auto;padding:var(--spacing-md);border-radius:var(--border-radius-lg);background-color:#1d2b3f;border:2px solid var(--color-border);box-shadow:var(--shadow-lg)}.connect4-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--spacing-sm);background:#25344a;padding:var(--spacing-md);border-radius:var(--border-radius-md)}.connect4-cell{width:100%;aspect-ratio:1 / 1;border-radius:50%;background:#0f1722;border:2px solid rgba(255,255,255,.08);position:relative;overflow:hidden}.connect4-piece{position:absolute;top:10%;right:10%;bottom:10%;left:10%;border-radius:50%;box-shadow:inset 0 0 10px #0006;transition:transform .2s ease,opacity .2s ease}.connect4-piece.red{background:radial-gradient(circle at 30% 30%,#ff6b5a,#b3261e)}.connect4-piece.yellow{background:radial-gradient(circle at 30% 30%,#ffe37a,#d19a00)}.connect4-piece.preview{opacity:.5}.connect4-piece.last-move{transform:scale(1.08);box-shadow:0 0 0 3px #fff9}.connect4-columns{position:absolute;inset:var(--spacing-md);display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--spacing-sm)}.connect4-column-button{background:transparent;border:none;cursor:pointer}.connect4-column-button:disabled{cursor:not-allowed}.connect4-controls{padding:var(--spacing-md);background-color:var(--color-surface);border-radius:var(--border-radius-lg);border:2px solid var(--color-border)}.connect4-controls-summary{cursor:pointer;font-weight:600;color:var(--color-text);list-style:none}.connect4-controls-summary::-webkit-details-marker{display:none}.connect4-controls[open] .connect4-controls-summary{margin-bottom:var(--spacing-md)}.connect4-controls-content{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--spacing-md)}.connect4-control label{display:block;font-weight:600;margin-bottom:var(--spacing-sm);color:var(--color-text)}.connect4-slider{width:100%}.connect4-board-3d{position:relative;width:min(100%,760px);margin:0 auto;padding:var(--spacing-md);border-radius:var(--border-radius-lg);background:radial-gradient(circle at top,#2e3d51cc,#131c28f2);border:2px solid var(--color-border);box-shadow:var(--shadow-lg)}.connect4-3d-canvas{width:100%;height:420px}.connect4-3d-controls{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-sm);margin-bottom:var(--spacing-sm);flex-wrap:wrap}.connect4-3d-instructions{font-size:.75rem;color:#ffffffbf;text-transform:uppercase;letter-spacing:.08em;text-align:center;flex:1 1 260px}.connect4-3d-reset{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid rgba(255,255,255,.2);background:#ffffff14;color:#f8f8f8;padding:.4rem .8rem;border-radius:999px;font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;cursor:pointer;transition:transform .15s ease,background .15s ease}.connect4-3d-reset:hover{transform:translateY(-1px);background:#ffffff29}.connect4-3d-fallback{padding:var(--spacing-lg);background-color:var(--color-surface);border-radius:var(--border-radius-lg);border:2px dashed var(--color-border);text-align:center;color:var(--color-text-secondary)}.game-over{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;text-align:center}.game-over h2{margin:0;color:#fff}.winner-indicator{width:80px;height:80px;border-radius:50%;border:4px solid white;animation:celebrate 1s ease-in-out infinite}.winner-indicator.red{background-color:#e74c3c}.winner-indicator.yellow{background-color:#f1c40f}@keyframes celebrate{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}@keyframes connect4-flash{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.05)}}@media(max-width:768px){.color-indicator{width:24px;height:24px}.game-header{flex-direction:column;align-items:flex-start}}.game-lobby{min-height:100vh;padding:var(--spacing-xl) 0;background-color:var(--color-background)}.lobby-header{text-align:center}.lobby-header h1{font-size:2rem;font-weight:700;margin-bottom:var(--spacing-lg);color:var(--color-text)}.room-code-card{display:inline-block;background-color:var(--color-primary);color:#fff}.room-code-label{font-size:.875rem;opacity:.9;margin-bottom:var(--spacing-xs)}.room-code{font-size:1.5rem;font-weight:700;letter-spacing:2px;font-family:Courier New,monospace}.section-title{font-size:1.5rem;font-weight:600;margin-bottom:var(--spacing-sm);color:var(--color-text)}.section-description{color:var(--color-text-secondary);margin-bottom:var(--spacing-lg)}.games-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--spacing-lg);margin-bottom:var(--spacing-xl)}.game-card{transition:transform .2s,box-shadow .2s}.game-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.game-name{font-size:1.25rem;font-weight:600;margin-bottom:var(--spacing-xs);color:var(--color-text)}.game-description{color:var(--color-text-secondary);margin-bottom:var(--spacing-xs)}.game-meta{display:flex;align-items:center;gap:var(--spacing-sm);margin-top:var(--spacing-sm)}.game-players{font-size:.875rem;color:var(--color-text-secondary);font-weight:600;margin:0}.players-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.player-item{padding:var(--spacing-sm);border-radius:var(--border-radius);background-color:var(--color-surface);border:1px solid var(--color-border)}.player-name{font-weight:600;color:var(--color-text);flex:1}.no-players{text-align:center;color:var(--color-text-secondary);font-style:italic;padding:var(--spacing-lg)}.host-message{text-align:center;color:var(--color-text-secondary);font-size:.875rem;margin-top:var(--spacing-sm)}.lobby-actions{display:flex;justify-content:center;padding-top:var(--spacing-lg);border-top:2px solid var(--color-border)}.game-room{min-height:100vh;padding:var(--spacing-md);background-color:var(--color-background)}.game-room-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md);background-color:var(--color-surface);border-radius:var(--border-radius-lg);border:2px solid var(--color-border);flex-wrap:wrap;gap:var(--spacing-md)}.room-info{display:flex;align-items:center;gap:var(--spacing-lg);flex-wrap:wrap}.room-info h1{font-size:1.5rem;font-weight:700;color:var(--color-text);margin:0}.game-type{color:var(--color-text-secondary);margin:var(--spacing-xs) 0 0 0;font-size:.875rem}.room-badges{display:flex;gap:var(--spacing-sm);align-items:center}.section-title{font-size:1.25rem;font-weight:600;color:var(--color-text);margin-bottom:var(--spacing-md)}.video-section{padding:var(--spacing-md);background-color:var(--color-surface);border-radius:var(--border-radius-lg);border:2px solid var(--color-border)}.video-section-header{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.video-layout-toggle{display:flex;gap:var(--spacing-sm);flex-wrap:wrap}.pin-toggle{display:inline-flex;align-items:center;gap:var(--spacing-xs);font-size:.875rem;font-weight:600;color:var(--color-text)}.pin-toggle input{position:absolute;opacity:0;pointer-events:none}.pin-toggle-slider{position:relative;width:44px;height:24px;background-color:var(--color-border);border-radius:999px;transition:background-color .2s ease;box-shadow:inset 0 0 0 1px #00000014}.pin-toggle-slider:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;background-color:var(--color-surface);border-radius:50%;transition:transform .2s ease;box-shadow:var(--shadow-sm)}.pin-toggle input:checked+.pin-toggle-slider{background-color:var(--color-primary)}.pin-toggle input:checked+.pin-toggle-slider:after{transform:translate(20px)}.game-area{padding:var(--spacing-md)}.game-container{width:100%;max-width:none;display:flex;justify-content:center;padding:var(--spacing-lg)}.no-game{text-align:center;padding:var(--spacing-xl);color:var(--color-text-secondary)}.game-placeholder{text-align:center;padding:var(--spacing-xl);background-color:var(--color-surface);border-radius:var(--border-radius-lg);border:2px dashed var(--color-border);width:100%;max-width:600px}.game-placeholder h3{font-size:1.5rem;font-weight:600;color:var(--color-text);margin-bottom:var(--spacing-md);text-transform:capitalize}.hint{color:var(--color-text-secondary);font-size:.875rem;font-style:italic;margin-top:var(--spacing-sm)}.players-section{width:100%;max-width:500px;margin-top:var(--spacing-xl)}.players-section h3{font-size:1.125rem;font-weight:600;color:var(--color-text);margin-bottom:var(--spacing-md)}.player-item{background-color:var(--color-background)}.player-info-row{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-md)}.player-name{font-weight:600;color:var(--color-text)}.player-badges{display:flex;gap:var(--spacing-sm);align-items:center}@media(max-width:768px){.game-room-header{flex-direction:column;align-items:flex-start}.room-info{flex-direction:column;align-items:flex-start;gap:var(--spacing-sm)}.player-info-row{flex-direction:column;align-items:flex-start}}.settings-page{min-height:100vh;padding:var(--spacing-xl) 0;background-color:var(--color-background)}.settings-header{text-align:center;margin-bottom:var(--spacing-lg)}.settings-header h1{font-size:2rem;font-weight:700;margin-bottom:var(--spacing-sm);color:var(--color-text)}.settings-header p{color:var(--color-text-secondary)}.setting-group{padding:var(--spacing-md) 0}.setting-group:not(:last-child){border-bottom:2px solid var(--color-border)}.setting-group h2{font-size:1.25rem;font-weight:600;margin-bottom:var(--spacing-md);color:var(--color-text)}.setting-item{margin-bottom:var(--spacing-lg)}.setting-label{font-weight:600;font-size:1rem;color:var(--color-text);display:block;margin-bottom:var(--spacing-sm)}.setting-description{color:var(--color-text-secondary);font-size:.875rem;margin-top:var(--spacing-xs);font-weight:400}.setting-slider{width:100%;min-height:var(--min-touch-target);cursor:pointer}.setting-checkbox{display:flex;flex-direction:column;cursor:pointer}.setting-checkbox input[type=checkbox]{width:var(--min-touch-target);height:var(--min-touch-target);cursor:pointer;margin-bottom:var(--spacing-sm)}.settings-actions{display:flex;justify-content:space-between;gap:var(--spacing-md);padding-top:var(--spacing-lg);border-top:2px solid var(--color-border)}@media(max-width:768px){.settings-actions{flex-direction:column}}:root{--color-primary: #0056b3;--color-primary-hover: #004494;--color-secondary: #6c757d;--color-secondary-hover: #545b62;--color-success: #0f5132;--color-warning: #997404;--color-danger: #842029;--color-background: #ffffff;--color-surface: #f8f9fa;--color-text: #212529;--color-text-secondary: #495057;--color-border: #dee2e6;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--min-touch-target: 44px;--border-radius-sm: .25rem;--border-radius-md: .5rem;--border-radius-lg: .75rem;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .1);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--focus-outline: 3px solid #0056b3;--focus-outline-offset: 2px}.high-contrast{--color-primary: #0000ff;--color-primary-hover: #0000cc;--color-background: #000000;--color-surface: #1a1a1a;--color-text: #ffffff;--color-text-secondary: #cccccc;--color-border: #ffffff;--color-success: #00ff00;--color-warning: #ffff00;--color-danger: #ff0000}.reduced-motion *,.reduced-motion *:before,.reduced-motion *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--color-background);color:var(--color-text);min-height:100vh}*:focus{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}*:focus:not(:focus-visible){outline:none}*:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}.skip-to-main{position:absolute;top:-40px;left:0;background:var(--color-primary);color:#fff;padding:8px;text-decoration:none;z-index:100}.skip-to-main:focus{top:0}.visually-hidden,.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}
