:root{--color-bg: #1a1d23;--color-bg-elevated: #242830;--color-bg-hover: #2e333d;--color-border: #3a4150;--color-text: #e8eaed;--color-text-muted: #9aa0ab;--color-accent: #3dbfb8;--color-accent-hover: #52d4cd;--color-amber: #e8b84a;--color-coral: #e07a6a;--color-violet: #9b7fd4;--color-success: #5cb87a;--color-warning: #e8b84a;--color-error: #e07a6a;--color-card: #f5f6f8;--color-card-border: #d0d4dc;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "Cascadia Code", monospace;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--focus-ring: 0 0 0 2px var(--color-bg), 0 0 0 4px var(--color-accent);--transition: .15s ease}@media (prefers-reduced-motion: reduce){:root{--transition: 0ms}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);line-height:1.5;min-height:100dvh}#app{min-height:100dvh;display:flex;flex-direction:column}button{font:inherit;cursor:pointer;border:none;background:none;color:inherit}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:none;box-shadow:var(--focus-ring)}a{color:var(--color-accent)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.hub{flex:1;display:flex;flex-direction:column;max-width:1200px;margin:0 auto;padding:var(--space-lg);width:100%}.hub__header{margin-bottom:var(--space-lg)}.hub__title{font-size:1.75rem;font-weight:600;letter-spacing:-.02em}.hub__subtitle{color:var(--color-text-muted);margin-top:var(--space-xs);font-size:.95rem}.hub__filters{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-bottom:var(--space-lg)}.hub__filter{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);background:var(--color-bg-elevated);border:1px solid var(--color-border);color:var(--color-text-muted);transition:background var(--transition),color var(--transition),border-color var(--transition)}.hub__filter:hover{background:var(--color-bg-hover);color:var(--color-text)}.hub__filter--active{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-bg)}.hub__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-md)}.hub__card{display:flex;flex-direction:column;padding:var(--space-md);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);text-align:left;transition:background var(--transition),border-color var(--transition),transform var(--transition)}.hub__card:hover{background:var(--color-bg-hover);border-color:var(--color-accent);transform:translateY(-2px)}.hub__card-header{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm)}.hub__card-icon{width:32px;height:32px;flex-shrink:0}.hub__card-title{font-size:1.1rem;font-weight:600}.hub__card-blurb{color:var(--color-text-muted);font-size:.875rem;flex:1;margin-bottom:var(--space-md)}.hub__card-meta{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;color:var(--color-text-muted)}.hub__badge{display:inline-block;padding:2px 8px;border-radius:var(--radius-sm);font-size:.75rem;font-weight:500;text-transform:capitalize}.hub__badge--card{background:#3dbfb833;color:var(--color-accent)}.hub__badge--word{background:#9b7fd433;color:var(--color-violet)}.hub__badge--number{background:#e8b84a33;color:var(--color-amber)}.hub__badge--board{background:#e07a6a33;color:var(--color-coral)}.hub__badge--logic{background:#5cb87a33;color:var(--color-success)}.hub__badge--reflex{background:#3dbfb833;color:var(--color-accent)}.hub__footer{margin-top:auto;padding-top:var(--space-xl);text-align:center;color:var(--color-text-muted);font-size:.85rem}.game-shell{flex:1;display:flex;flex-direction:column;min-height:100dvh}.game-shell__header{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);background:var(--color-bg-elevated);border-bottom:1px solid var(--color-border)}.game-shell__back{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);color:var(--color-text-muted);transition:background var(--transition),color var(--transition)}.game-shell__back:hover{background:var(--color-bg-hover);color:var(--color-text)}.game-shell__title{flex:1;font-size:1.25rem;font-weight:600}.game-shell__actions{display:flex;gap:var(--space-sm)}.game-shell__stats{display:flex;gap:var(--space-lg);padding:var(--space-sm) var(--space-lg);background:var(--color-bg);border-bottom:1px solid var(--color-border);font-size:.875rem;color:var(--color-text-muted);flex-shrink:0}.game-shell__stat-value{color:var(--color-text);font-weight:600;font-family:var(--font-mono)}.game-shell__body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-lg);overflow:auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-weight:500;transition:background var(--transition),color var(--transition)}.btn--primary{background:var(--color-accent);color:var(--color-bg)}.btn--primary:hover{background:var(--color-accent-hover)}.btn--secondary{background:var(--color-bg-hover);color:var(--color-text);border:1px solid var(--color-border)}.btn--secondary:hover{background:var(--color-border)}.btn--icon{padding:var(--space-sm);border-radius:var(--radius-md);color:var(--color-text-muted)}.btn--icon:hover{background:var(--color-bg-hover);color:var(--color-text)}.modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-md)}.modal{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-lg);max-width:400px;width:100%;box-shadow:var(--shadow-md)}.modal__title{font-size:1.25rem;font-weight:600;margin-bottom:var(--space-md)}.modal__body{color:var(--color-text-muted);margin-bottom:var(--space-lg)}.modal__actions{display:flex;gap:var(--space-sm);justify-content:flex-end}.game-area{width:100%;max-width:600px}.game-message{text-align:center;padding:var(--space-md);color:var(--color-text-muted)}.game-message--win{color:var(--color-success);font-weight:600}.game-message--lose{color:var(--color-error)}.playing-card{width:52px;height:72px;background:var(--color-card);border:1px solid var(--color-card-border);border-radius:var(--radius-sm);display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;user-select:none;box-shadow:var(--shadow-sm);flex-shrink:0}.playing-card--back{background:transparent;border:none}.playing-card--red .playing-card__rank,.playing-card--red .playing-card__suit{color:#c44}.playing-card--black .playing-card__rank,.playing-card--black .playing-card__suit{color:#222}.playing-card__rank{font-size:1rem;font-weight:700;line-height:1}.playing-card__suit{display:flex;margin-top:2px}.playing-card--small{width:40px;height:56px;font-size:.75rem}.playing-card--selected{outline:2px solid var(--color-accent);outline-offset:2px}.playing-card--dragging{opacity:.6}.grid-board{display:grid;gap:2px;background:var(--color-border);border:2px solid var(--color-border);border-radius:var(--radius-md);padding:2px}.grid-cell{width:40px;height:40px;background:var(--color-bg-elevated);display:flex;align-items:center;justify-content:center;font-weight:600;font-family:var(--font-mono);cursor:pointer;transition:background var(--transition);border:none;color:var(--color-text)}.grid-cell:hover:not(:disabled){background:var(--color-bg-hover)}.grid-cell:disabled{cursor:default}.grid-cell--revealed{background:var(--color-bg)}.grid-cell--mine{background:var(--color-error)}.grid-cell--flag{color:var(--color-coral)}.tile-2048{width:100%;height:100%;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);font-weight:700;font-size:1.25rem;font-family:var(--font-mono)}.tile-2048--2{background:#3a4150;color:var(--color-text)}.tile-2048--4{background:#4a5568;color:var(--color-text)}.tile-2048--8{background:#e8b84a;color:var(--color-bg)}.tile-2048--16{background:#e8a04a;color:var(--color-bg)}.tile-2048--32{background:#e8904a;color:var(--color-bg)}.tile-2048--64{background:#e07a6a;color:var(--color-bg)}.tile-2048--128{background:#9b7fd4;color:var(--color-bg);font-size:1rem}.tile-2048--256{background:#8b6fc4;color:var(--color-bg);font-size:1rem}.tile-2048--512{background:#7b5fb4;color:var(--color-bg);font-size:1rem}.tile-2048--1024{background:#3dbfb8;color:var(--color-bg);font-size:.85rem}.tile-2048--2048{background:#2dafa8;color:var(--color-bg);font-size:.85rem}.simon-pad{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm);width:240px;height:240px}.simon-btn{border-radius:var(--radius-md);border:none;cursor:pointer;transition:filter var(--transition),transform var(--transition)}.simon-btn:active,.simon-btn--lit{filter:brightness(1.4);transform:scale(.97)}.simon-btn--0{background:#e07a6a}.simon-btn--1{background:#3dbfb8}.simon-btn--2{background:#e8b84a}.simon-btn--3{background:#9b7fd4}.reaction-zone{width:100%;max-width:400px;height:200px;border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:600;cursor:pointer;transition:background var(--transition);user-select:none}.reaction-zone--wait{background:var(--color-error);color:#fff}.reaction-zone--ready{background:var(--color-amber);color:var(--color-bg)}.reaction-zone--go{background:var(--color-success);color:#fff}.reaction-zone--result{background:var(--color-bg-elevated);border:2px solid var(--color-border)}.word-keyboard{display:flex;flex-direction:column;gap:var(--space-xs);max-width:500px;width:100%}.word-keyboard__row{display:flex;justify-content:center;gap:var(--space-xs)}.word-key{min-width:32px;height:48px;padding:0 var(--space-sm);background:var(--color-bg-hover);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-weight:600;font-size:.875rem;text-transform:uppercase}.word-key--wide{min-width:56px;font-size:.75rem}.word-key--correct{background:var(--color-success);border-color:var(--color-success);color:#fff}.word-key--present{background:var(--color-amber);border-color:var(--color-amber);color:var(--color-bg)}.word-key--absent{background:var(--color-border);color:var(--color-text-muted)}.word-row{display:flex;gap:var(--space-xs);justify-content:center}.word-tile{width:48px;height:48px;border:2px solid var(--color-border);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700;text-transform:uppercase}.word-tile--filled{border-color:var(--color-text-muted)}.word-tile--correct{background:var(--color-success);border-color:var(--color-success);color:#fff}.word-tile--present{background:var(--color-amber);border-color:var(--color-amber);color:var(--color-bg)}.word-tile--absent{background:var(--color-border);border-color:var(--color-border);color:var(--color-text-muted)}.connect-board{display:grid;grid-template-columns:repeat(7,48px);gap:4px;background:var(--color-bg-elevated);padding:var(--space-sm);border-radius:var(--radius-lg)}.connect-col{display:flex;flex-direction:column-reverse;gap:4px;cursor:pointer}.connect-col:hover .connect-slot:first-child{background:var(--color-bg-hover)}.connect-slot{width:48px;height:48px;border-radius:50%;background:var(--color-bg);border:2px solid var(--color-border);display:flex;align-items:center;justify-content:center}.connect-slot--red{background:#e07a6a;border-color:#c66}.connect-slot--yellow{background:#e8b84a;border-color:#c99}.sudoku-board{display:grid;grid-template-columns:repeat(9,36px);gap:1px;background:var(--color-border);border:2px solid var(--color-border)}.sudoku-cell{width:36px;height:36px;background:var(--color-bg-elevated);border:none;text-align:center;font-size:16px;font-weight:600;font-family:var(--font-mono);color:var(--color-text);touch-action:manipulation}.sudoku-cell--given{color:var(--color-accent);font-weight:700}.sudoku-cell--error{background:#e07a6a4d}.sudoku-cell--note{font-size:.5rem;color:var(--color-text-muted)}.sudoku-cell:nth-child(3n){border-right:2px solid var(--color-border)}.sudoku-cell:nth-child(n+19):nth-child(-n+27),.sudoku-cell:nth-child(n+46):nth-child(-n+54){border-bottom:2px solid var(--color-border)}.solitaire-board{display:flex;flex-direction:column;gap:var(--space-lg);width:100%;max-width:700px}.solitaire-row{display:flex;gap:var(--space-md);flex-wrap:wrap}.solitaire-pile{min-width:52px;min-height:72px;border:1px dashed var(--color-border);border-radius:var(--radius-sm);position:relative}.solitaire-pile .playing-card{position:absolute;top:0;left:0}.solitaire-pile .playing-card:nth-child(n+2){top:calc(var(--offset, 0) * 20px)}.solitaire-tableau .playing-card:nth-child(n+2){top:calc(var(--offset, 0) * 18px)}.memory-grid{display:grid;gap:var(--space-sm)}.memory-grid--4{grid-template-columns:repeat(4,52px)}.memory-grid--6{grid-template-columns:repeat(6,52px)}.word-search-grid{display:grid;gap:2px;font-family:var(--font-mono);font-weight:600;user-select:none}.word-search-cell{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--color-bg-elevated);border-radius:2px;cursor:pointer;font-size:.85rem;touch-action:none}.word-search-cell--found{background:var(--color-success);color:#fff}.word-search-cell--selecting{background:var(--color-accent);color:var(--color-bg)}.grid-select{touch-action:none;-webkit-user-select:none;user-select:none}.grid-select--active{touch-action:none}.word-keyboard{touch-action:manipulation;-webkit-tap-highlight-color:transparent}.word-key{touch-action:manipulation}.letter-wheel-game{max-width:100%}.letter-wheel-grid{display:grid;gap:3px;justify-content:center}.letter-wheel-cell{width:min(11vw,36px);height:min(11vw,36px);min-width:28px;min-height:28px;border-radius:var(--radius-sm)}.letter-wheel-cell--empty{background:transparent}.letter-wheel-cell--slot{background:var(--color-bg-hover);border:1px dashed var(--color-border);display:flex;align-items:center;justify-content:center;font-weight:700;font-family:var(--font-mono);font-size:.95rem}.letter-wheel-cell--filled{background:var(--color-bg-elevated);border-style:solid;color:var(--color-accent)}.letter-wheel{position:relative;margin:8px auto}.letter-wheel__btn{touch-action:manipulation;cursor:pointer;padding:0}.letter-wheel-current{min-height:2rem;font-size:1.35rem;font-weight:700;letter-spacing:.12em;font-family:var(--font-mono);text-align:center}.nonogram-board{display:inline-grid;gap:1px;background:var(--color-border)}.nonogram-cell{width:24px;height:24px;background:var(--color-bg-elevated);border:none;cursor:pointer}.nonogram-cell--filled{background:var(--color-text)}.nonogram-cell--marked{background:var(--color-bg)}.nonogram-clue{font-size:.65rem;font-family:var(--font-mono);color:var(--color-text-muted);display:flex;align-items:center;justify-content:flex-end;padding:2px;min-width:24px}.mine-count{font-size:.7rem}.mine-count--1{color:#3dbfb8}.mine-count--2{color:#5cb87a}.mine-count--3{color:#e07a6a}.mine-count--4{color:#9b7fd4}.mine-count--5{color:#e8b84a}.mine-count--6{color:#52d4cd}.mine-count--7{color:#888}.mine-count--8{color:#666}.touch-pad{display:none;flex-direction:column;align-items:center;gap:var(--space-xs);margin-top:var(--space-md);width:100%;max-width:220px;user-select:none;touch-action:manipulation}.touch-pad__row{display:flex;gap:var(--space-xs);justify-content:center}.touch-pad__btn,.touch-strip__btn{min-width:52px;min-height:52px;padding:var(--space-sm);background:var(--color-bg-hover);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:1.25rem;font-weight:600;line-height:1;touch-action:manipulation}.touch-pad__btn:active,.touch-strip__btn:active{background:var(--color-accent);color:var(--color-bg)}.touch-pad__btn--wide{min-width:100%;margin-top:var(--space-xs);font-size:.95rem}.touch-strip{display:none;gap:var(--space-sm);margin-top:var(--space-md);width:100%;max-width:320px;justify-content:center;flex-wrap:wrap}.touch-strip__btn{flex:1;min-width:72px;font-size:.85rem}.game-canvas{display:block;max-width:100%;height:auto;touch-action:manipulation}.game-scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;padding-bottom:var(--space-xs)}.game-instructions{width:100%;max-width:640px;margin:0 auto;border-bottom:1px solid var(--color-border);background:var(--color-bg)}.game-instructions summary{padding:var(--space-sm) var(--space-lg);cursor:pointer;font-size:.875rem;font-weight:500;color:var(--color-text-muted);list-style:none;display:flex;align-items:center;gap:var(--space-xs);touch-action:manipulation}.game-instructions summary::-webkit-details-marker{display:none}.game-instructions summary:before{content:"▸";display:inline-block;transition:transform var(--transition)}.game-instructions[open] summary:before{transform:rotate(90deg)}.game-instructions[open] summary{color:var(--color-text)}.game-instructions__body{padding:0 var(--space-lg) var(--space-md);font-size:.875rem;color:var(--color-text-muted)}.game-instructions__body ul{margin:0;padding-left:1.25rem;display:flex;flex-direction:column;gap:var(--space-xs)}@media (max-width: 640px){.hub{padding:var(--space-md)}.hub__title{font-size:1.4rem}.hub__grid{grid-template-columns:1fr}.game-shell__header{padding:var(--space-sm) var(--space-md);gap:var(--space-sm);padding-top:max(var(--space-sm),env(safe-area-inset-top))}.game-shell__back span{display:none}.game-shell__title{font-size:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-shell__stats{flex-wrap:wrap;gap:var(--space-sm) var(--space-md);padding:var(--space-xs) var(--space-md);font-size:.75rem}.game-shell__body{padding:var(--space-sm);justify-content:flex-start;align-items:center;overflow-anchor:none}.game-shell__body>.word-keyboard,.game-shell__body>.word-search-wrap,.game-shell__body>.letter-wheel-game{align-self:stretch;width:100%}.game-instructions summary,.game-instructions__body{padding-left:var(--space-md);padding-right:var(--space-md)}.touch-pad,.touch-strip{display:flex}.playing-card{width:44px;height:62px}.playing-card--small{width:36px;height:50px}.playing-card__rank{font-size:.85rem}.grid-cell{width:min(14vw,44px)!important;height:min(14vw,44px)!important;min-width:36px;min-height:36px;font-size:.9rem!important}.word-tile{width:min(14vw,44px);height:min(14vw,44px);font-size:1rem}.word-key{min-width:28px;height:44px;font-size:.75rem;padding:0 4px}.word-key--wide{min-width:44px}.connect-board{grid-template-columns:repeat(7,min(11vw,44px))}.connect-slot{width:min(11vw,44px);height:min(11vw,44px)}.sudoku-board{grid-template-columns:repeat(9,min(9vw,34px))}.sudoku-cell{width:min(9vw,34px);height:min(9vw,34px);font-size:.85rem}.memory-grid--4,.memory-grid--6{grid-template-columns:repeat(4,min(20vw,44px))}.word-search-wrap{align-self:stretch;max-width:100%}.word-search-grid{touch-action:none;max-width:100%;justify-content:center}.word-keyboard{width:100%;max-width:100%;position:relative;z-index:1}.word-keyboard__row{flex-wrap:wrap}.game-shell__body input[type=text],.game-shell__body input.btn,.game-shell__body .sudoku-cell{font-size:16px!important;min-height:44px}.game-shell__body select.btn{min-height:44px;font-size:16px}.word-search-cell{width:min(9vw,28px);height:min(9vw,28px);font-size:.7rem}.nonogram-cell{width:min(8vw,22px);height:min(8vw,22px)}.simon-pad{width:min(80vw,240px);height:min(80vw,240px)}.reaction-zone{height:min(40vw,180px);font-size:1rem}.solitaire-board{max-width:100%}.solitaire-row{gap:var(--space-sm)}.game-shell__body .grid-board[style*="64px"]>div{width:min(18vw,56px)!important;height:min(18vw,56px)!important}.game-shell__body .grid-board[style*="22px"] button{width:min(10vw,28px)!important;height:min(10vw,28px)!important;min-width:24px;min-height:24px}}@media (hover: hover) and (pointer: fine) and (min-width: 641px){.touch-pad,.touch-strip{display:none!important}}@media (hover: none) and (pointer: coarse){.touch-pad,.touch-strip{display:flex}}
