.app-shell{min-height:100vh;padding:24px 16px 48px;animation:fade-in .35s var(--ease-out)}.game-layout{display:grid;gap:24px;max-width:1100px;margin:0 auto}@media(min-width:960px){.game-layout{grid-template-columns:minmax(0,1fr) 340px;align-items:start}}.home-shell{position:relative;min-height:100vh;display:grid;place-items:center;padding:48px 20px 64px;overflow:hidden}.home-atmosphere{position:absolute;top:-20%;right:-10%;bottom:-20%;left:-10%;background:radial-gradient(circle at 30% 20%,rgba(255,107,53,.18),transparent 42%),radial-gradient(circle at 78% 65%,rgba(255,176,32,.1),transparent 40%);pointer-events:none}.home-stage{position:relative;z-index:1;width:min(920px,100%);text-align:center;animation:rise-in .55s var(--ease-out) both}.home-kicker{margin:0 0 10px;color:var(--accent-soft);font-size:.78rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase}.home-brand{margin:0;font-family:Bebas Neue,sans-serif;font-size:clamp(3.6rem,12vw,6.4rem);letter-spacing:.04em;line-height:.92;color:var(--text)}.home-lede{margin:18px auto 0;max-width:34rem;color:var(--text-muted);font-size:1.05rem}.home-date{margin:18px 0 0;color:var(--text);font-weight:600}.home-sport-nav{display:grid;gap:14px;margin-top:36px;text-align:left}@media(min-width:720px){.home-sport-nav{grid-template-columns:repeat(3,minmax(0,1fr))}}.home-sport-card{display:grid;gap:8px;align-content:start;padding:18px 18px 16px;border-radius:var(--radius-md);border:1px solid var(--border);background:#141e33d9;color:var(--text);box-shadow:var(--shadow);transition:border-color .2s ease,transform .2s var(--ease-out),background .2s ease;animation:rise-in .5s var(--ease-out) both}a.home-sport-card-link{text-decoration:none;color:inherit}.home-sport-card:hover,.home-sport-card:focus-within{border-color:var(--accent-soft);background:#223052f2}a.home-sport-card-link:hover{transform:translateY(-2px)}.home-sport-label{font-family:Bebas Neue,sans-serif;font-size:2rem;letter-spacing:.05em;line-height:1}.home-sport-heading{display:flex;align-items:center;gap:12px}.home-sport-icon{width:40px;height:40px;flex-shrink:0;filter:drop-shadow(0 4px 8px rgba(0,0,0,.28))}.home-sport-detail{color:var(--text-muted);font-size:.88rem}.home-sport-select-label{display:grid;gap:6px;margin-top:6px;color:var(--text-muted);font-size:.8rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.home-sport-select{width:100%;padding:10px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);color:var(--text);font:inherit;font-size:.95rem;font-weight:600;text-transform:none;letter-spacing:normal;cursor:pointer}.home-sport-select:focus{outline:2px solid var(--border-active);outline-offset:1px}.home-sport-option-detail{margin:0;color:var(--text-muted);font-size:.82rem;min-height:2.4em}.home-sport-cta{margin-top:4px;color:var(--accent-soft);font-size:.88rem;font-weight:700}.home-sport-cta-button{display:inline-flex;justify-content:center;align-items:center;margin-top:8px;padding:10px 12px;border-radius:var(--radius-sm);background:var(--accent);color:#fff;text-decoration:none;text-align:center;transition:filter .15s ease,transform .15s ease}.home-sport-cta-button:hover{filter:brightness(1.08);transform:translateY(-1px)}.home-footnote{margin:28px 0 0;color:var(--text-muted);font-size:.88rem}.home-rules{margin-top:36px;padding:22px 24px 24px;border:1px solid var(--border);border-radius:var(--radius-lg);background:#141e33e0;box-shadow:var(--shadow);text-align:left;animation:rise-in .55s var(--ease-out) .08s both}.home-rules .home-kicker{margin-bottom:6px}.home-rules-title{margin:0 0 14px;font-family:Bebas Neue,sans-serif;font-size:1.85rem;letter-spacing:.04em;line-height:1;color:var(--text)}.home-rules-list{margin:0;padding-left:1.25rem;color:var(--text-muted);font-size:.95rem;line-height:1.45}.home-rules-list li+li{margin-top:10px}.home-rules-list strong{color:var(--text);font-weight:700}.loading-card{max-width:420px;margin:15vh auto 0;padding:32px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elevated);box-shadow:var(--shadow);text-align:center;animation:rise-in .4s var(--ease-out)}.loading-card.error h1{margin:0 0 12px;font-family:Bebas Neue,sans-serif;letter-spacing:.04em}.loading-card p{margin:0;color:var(--text-muted)}.loading-card .hint{margin-top:16px;font-size:.92rem}.loading-card code{color:var(--accent-soft)}.sport-picker-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:24px}.sport-picker-link{display:inline-flex;align-items:center;justify-content:center;min-width:120px;padding:12px 20px;border-radius:var(--radius-md);border:1px solid transparent;background:var(--accent);color:#fff;font-weight:700;text-decoration:none;letter-spacing:.04em;transition:filter .15s ease,transform .15s ease}.sport-picker-link:hover{filter:brightness(1.08);transform:translateY(-1px)}.loading-spinner{width:42px;height:42px;margin:0 auto 16px;border:3px solid rgba(255,255,255,.08);border-top-color:var(--accent-soft);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.game-header{display:flex;justify-content:space-between;gap:16px;align-items:end;max-width:1100px;margin:0 auto 24px;flex-wrap:wrap}.game-header-brand{display:grid;gap:8px}.brand-home-link{font-family:Bebas Neue,sans-serif;font-size:clamp(2.2rem,5vw,3.2rem);letter-spacing:.05em;line-height:1;color:var(--text);text-decoration:none}.brand-home-link:hover{color:var(--accent-soft)}.game-header-meta{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;margin:0;color:var(--text-muted);font-size:.92rem}.sport-chip{display:inline-flex;align-items:center;padding:3px 9px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:#e85d041f;color:var(--accent-soft);font-size:.75rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.progress-text{color:var(--text);font-weight:600}.eyebrow,.panel-eyebrow{margin:0 0 4px;color:var(--accent-soft);font-size:.78rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.puzzle-timer-stack{position:fixed;top:14px;left:14px;z-index:40;display:grid;gap:8px;pointer-events:none}.puzzle-timer{display:grid;gap:2px;min-width:108px;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius-md);background:#121c30eb;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.puzzle-timer-beat{border-color:#ffb02073;background:#1c180eeb}.puzzle-timer-label{color:var(--accent-soft);font-size:.68rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.puzzle-timer-value{font-family:Bebas Neue,sans-serif;font-size:1.65rem;letter-spacing:.04em;line-height:1;color:var(--text);font-variant-numeric:tabular-nums}.header-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.mode-toggle{display:inline-flex;padding:3px;border-radius:var(--radius-md);background:var(--bg-elevated);border:1px solid var(--border)}.mode-toggle button{border:0;background:transparent;color:var(--text-muted);padding:8px 14px;border-radius:var(--radius-sm);cursor:pointer}.mode-toggle button.active{background:var(--accent);color:#fff}.header-nav-link{border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);padding:8px 14px;border-radius:var(--radius-md);cursor:pointer;font-weight:600;text-decoration:none;display:inline-flex;align-items:center;font:inherit}.header-nav-link:hover{border-color:var(--accent-soft);color:#fff}.header-nav-link:disabled,.give-up-button:disabled{opacity:.45;cursor:not-allowed}.give-up-button:not(:disabled):hover{border-color:var(--error);color:var(--error)}.archive-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#040a16b8;display:flex;justify-content:flex-end;padding:16px}.archive-panel{width:min(420px,100%);max-height:calc(100vh - 32px);overflow:auto;background:var(--bg-elevated);border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow);padding:24px}.archive-header{display:flex;justify-content:space-between;gap:16px;align-items:start}.archive-header h2{margin:0;font-family:Bebas Neue,sans-serif;letter-spacing:.04em;font-size:2rem}.archive-close{border:1px solid var(--border);background:transparent;color:var(--text-muted);border-radius:999px;padding:8px 12px;cursor:pointer}.archive-note,.archive-loading,.archive-empty,.archive-error{margin:16px 0 0;color:var(--text-muted);font-size:.92rem}.archive-error{color:#ff8f8f}.archive-list{list-style:none;margin:20px 0 0;padding:0;display:grid;gap:8px}.archive-link{display:flex;justify-content:space-between;gap:12px;align-items:baseline;padding:12px 14px;border-radius:12px;border:1px solid var(--border);text-decoration:none;color:var(--text);background:#ffffff05}.archive-link:hover{border-color:var(--accent-soft)}.archive-link.is-current{border-color:var(--accent);background:#ff7a1a1f}.archive-meta{color:var(--text-muted);font-size:.85rem;white-space:nowrap}.puzzle-grid-wrap{padding:48px 40px 56px;overflow:visible}.puzzle-board{position:relative;width:100%;max-width:720px;margin:0 auto;aspect-ratio:1;filter:drop-shadow(0 12px 32px rgba(0,0,0,.4));overflow:visible}.puzzle-board-svg{display:block;width:100%;height:100%}.puzzle-overlays{position:absolute;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);pointer-events:none}.shell-labels-wrap{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:3;overflow:visible}.shell-labels{position:relative;width:100%;height:100%}.puzzle-cell{position:relative;min-width:0;min-height:0;pointer-events:auto}.piece-fill{fill:var(--bg-cell);stroke:none;transition:fill .15s ease}.piece-fill.hover-fill{fill:var(--bg-cell-hover)}.piece-fill.center-fill{fill:var(--bg-cell-center)}.piece-fill.filled-fill{fill:var(--bg-cell-filled)}.piece-stroke{fill:none;stroke:#c5d9ce;stroke-width:2.4;stroke-linejoin:round;stroke-linecap:butt;vector-effect:non-scaling-stroke;pointer-events:none;transition:stroke .2s ease,stroke-width .2s ease,filter .2s ease}.piece-stroke.edge-correct{stroke:var(--success);stroke-width:3.2;filter:drop-shadow(0 0 3px rgba(61,214,140,.95)) drop-shadow(0 0 8px rgba(61,214,140,.55))}.piece-stroke.edge-incorrect{stroke:var(--error);stroke-width:3.2;filter:drop-shadow(0 0 3px rgba(255,107,122,.95)) drop-shadow(0 0 8px rgba(255,107,122,.55))}.board-pass-a .piece-fill{fill:#f4f4f0}.board-pass-a .piece-fill.center-fill{fill:#ebe8e0}.board-pass-a .piece-stroke{stroke:#1a1a1a;stroke-width:3}.board-pass-a .puzzle-board{filter:none;background:#fff;border-radius:16px;padding:8px}.piece-strokes{pointer-events:none}.piece-content{position:absolute;z-index:1;display:flex;align-items:center;justify-content:center;overflow:hidden}.puzzle-cell.is-center .piece-content{overflow:visible}.center-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) minmax(0,1fr);grid-template-rows:minmax(0,.55fr) minmax(0,1fr) minmax(0,.55fr);grid-template-areas:". ppg ." "rpg name blk" ". ast .";width:100%;height:100%;align-items:center;justify-items:center;gap:2px 4px;padding:0}.center-identity{grid-area:name;display:grid;gap:2px;justify-items:center;text-align:center;min-width:0;min-height:0;padding:0 4px}.center-identity strong{font-size:.92rem;line-height:1.15}.center-identity span{font-size:.78rem}.center-layout:has(.cell-content-headshot){isolation:isolate}.center-layout:has(.cell-content-headshot) .center-identity,.center-layout:has(.cell-content-headshot) .cell-content-headshot,.center-layout:has(.cell-content-headshot) .cell-headshot-wrap{display:contents}.center-layout:has(.cell-content-headshot) .cell-headshot{grid-column:1 / -1;grid-row:1 / -1;z-index:0;width:100%;height:100%;object-fit:cover;object-position:top center;align-self:stretch;justify-self:stretch;background:#07110c}.center-layout:has(.cell-content-headshot) .cell-headshot-overlay{grid-column:1 / -1;grid-row:1 / -1;z-index:2;position:relative;inset:auto;align-self:end;justify-self:stretch;margin:0 4px 20px;padding:16px 6px 4px;overflow:visible;background:linear-gradient(transparent,#000000e6 58%)}.center-layout:has(.cell-content-headshot) .cell-headshot-overlay strong{font-size:.86rem;line-height:1.15;text-wrap:balance;overflow-wrap:break-word;text-shadow:0 1px 2px rgba(0,0,0,.95),0 0 8px rgba(0,0,0,.8)}.center-layout:has(.cell-content-headshot) .cell-headshot-overlay span{text-shadow:0 1px 2px rgba(0,0,0,.9)}.center-layout:has(.cell-content-headshot) .stat-edge{position:relative;z-index:3;color:var(--accent-soft);text-shadow:0 1px 2px rgba(0,0,0,.9),0 0 4px rgba(255,176,32,.95),0 0 10px rgba(255,176,32,.7)}.center-layout:has(.cell-content-headshot) .stat-down{transform:translateY(4px)}.cell-button{width:100%;height:100%;border:0;background:transparent;color:var(--text);cursor:pointer;transition:transform .15s ease;padding:8px 6px}.cell-button:hover:not(:disabled){transform:scale(1.02)}.puzzle-cell.is-locked .cell-button{cursor:default}.puzzle-cell.is-selected .cell-button:not(:disabled){outline:2px solid var(--border-active);outline-offset:2px;border-radius:8px}.center-display{position:relative;z-index:1;width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:8px 6px}.cell-content{display:grid;gap:4px;justify-items:center;text-align:center}.cell-content strong{font-size:.98rem;line-height:1.2}.cell-content span{color:var(--text-muted);font-size:.84rem}.cell-content.empty span{color:var(--text-muted)}.mini-stats{font-size:.72rem!important}.cell-button.has-headshot{padding:0}.cell-content-headshot{display:flex;flex-direction:column;width:100%;height:100%;gap:0;text-align:center}.cell-headshot-wrap{position:relative;flex:1 1 auto;min-height:72%;width:100%;overflow:hidden;background:#07110c}.cell-headshot{width:100%;height:100%;object-fit:cover;object-position:top center;display:block}.cell-headshot-overlay{position:absolute;inset:auto 0 0;padding:14px 5px 3px;background:linear-gradient(transparent,#000000e6);display:grid;gap:1px;justify-items:center;pointer-events:none}.cell-headshot-overlay strong{font-size:.78rem;line-height:1.1;color:#fff}.cell-headshot-overlay span{font-size:.64rem;color:#ffffffc7}.cell-headshot-stats{flex:0 0 auto;padding:2px 3px 3px;color:var(--text-muted);background:#00000073;line-height:1.15;font-size:.66rem!important}.stat-edge{font-size:.62rem;font-weight:700;letter-spacing:.03em;color:var(--accent-soft);pointer-events:none;white-space:nowrap;line-height:1.2}.center-layout .stat-edge{position:static;overflow:visible;text-overflow:clip}.stat-up{grid-area:ppg;align-self:start;justify-self:center;transform:translateY(-6px)}.stat-down{grid-area:ast;align-self:end;justify-self:center;transform:translateY(6px)}.stat-left{grid-area:rpg;justify-self:start;align-self:center;transform:translate(-14px) rotate(-90deg);transform-origin:center center;white-space:nowrap}.stat-left.nfl-rb-rec-yds{transform:translate(-28px) rotate(-90deg)}.stat-right{grid-area:blk;justify-self:end;align-self:center;transform:translate(14px) rotate(90deg);transform-origin:center center;white-space:nowrap}.perimeter-label{position:absolute;z-index:2;padding:4px 10px;border-radius:var(--radius-sm);background:var(--label-bg);border:1px solid var(--border);color:var(--text);font-size:.72rem;font-weight:700;white-space:nowrap;max-width:92px;overflow:hidden;text-overflow:ellipsis;pointer-events:none;box-shadow:0 2px 8px #00000040}.guess-panel{padding:22px;border:1px solid var(--border);border-radius:var(--radius-lg);background:#12241ce0;box-shadow:var(--shadow);animation:rise-in .35s var(--ease-out)}.guess-panel.idle{color:var(--text-muted)}.guess-panel h2{margin:0 0 12px;font-family:Bebas Neue,sans-serif;font-size:1.85rem;letter-spacing:.04em;line-height:1;color:var(--text)}.panel-copy{margin:0 0 8px;color:var(--text-muted);font-size:.95rem}.criteria-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}.criteria-chip{display:inline-flex;align-items:center;padding:6px 10px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:#08120e8c;color:var(--text);font-size:.82rem;font-weight:700}.edge-block{margin:0 0 16px}.edge-hints{margin:8px 0 0;padding-left:18px;color:var(--accent-soft);font-size:.88rem}.edge-hints li+li{margin-top:4px}.guess-panel form{display:grid;gap:12px}.guess-panel label{display:grid;gap:6px;font-size:.92rem;color:var(--text-muted)}.guess-panel input{padding:12px 14px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg);color:var(--text)}.guess-panel input:focus{outline:2px solid var(--border-active);outline-offset:1px}.player-typeahead{position:relative}.player-typeahead input{width:100%;box-sizing:border-box}.player-typeahead-menu{position:absolute;z-index:20;top:calc(100% + 6px);left:0;right:0;margin:0;padding:6px;list-style:none;max-height:260px;overflow-y:auto;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:#f8faf7fa;box-shadow:0 12px 28px #00000047}.player-typeahead-option+.player-typeahead-option{margin-top:2px}.player-typeahead-row{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:10px;border:0;border-radius:8px;background:transparent;color:#142018;text-align:left;cursor:pointer}.player-typeahead-option.is-active .player-typeahead-row,.player-typeahead-row:hover{background:#1450301a}.player-typeahead-copy{display:grid;gap:2px;min-width:0}.player-typeahead-name{font-weight:700;font-size:.95rem;color:#101a14}.player-typeahead-years{font-size:.8rem;color:#5b6b61}.player-typeahead-select{flex-shrink:0;padding:6px 12px;border-radius:6px;background:var(--accent);color:#fff;font-size:.78rem;font-weight:700;letter-spacing:.02em}.guess-panel button[type=submit]{padding:12px 16px;border:0;border-radius:var(--radius-md);background:var(--accent);color:#fff;font-weight:700;cursor:pointer;transition:filter .15s ease,transform .15s ease}.guess-panel button[type=submit]:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px)}.guess-panel button[type=submit]:disabled{opacity:.5;cursor:not-allowed}.feedback.error{margin:0;color:var(--error);font-size:.92rem}.mode-help{margin:16px 0 0}.mode-help div+div{margin-top:12px}.mode-help dt{font-weight:700;color:var(--text)}.mode-help dd{margin:4px 0 0}.win-banner{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;background:#050c09c7;padding:20px;animation:fade-in .25s ease}.win-card{max-width:420px;padding:28px;border-radius:var(--radius-lg);background:var(--bg-elevated);border:1px solid var(--success);box-shadow:var(--shadow);text-align:center;animation:rise-in .4s var(--ease-out)}.win-card.gave-up{border-color:var(--accent-soft)}.win-card h2{margin:0 0 8px;font-family:Bebas Neue,sans-serif;letter-spacing:.04em;color:var(--success)}.win-card.gave-up h2{color:var(--accent-soft)}.win-time{margin:0 0 8px;color:var(--text);font-weight:700;font-variant-numeric:tabular-nums}.win-standing{margin:0;color:var(--text);font-size:1.02rem;line-height:1.45}.win-standing.muted{color:var(--text-muted)}.win-actions{margin-top:20px;display:flex;justify-content:center}.win-footnote{margin:16px 0 0;color:var(--text-muted);font-size:.88rem}@media(max-width:720px){.app-shell{padding:16px 12px 40px}.game-header{align-items:start}.puzzle-grid-wrap{padding-inline:8px}.perimeter-label{max-width:92%;font-size:.58rem;padding:2px 5px}.stat-edge{font-size:.5rem}.home-shell{padding:36px 16px 48px}}:root{color-scheme:dark;--bg: #0c1220;--bg-elevated: #141e33;--bg-cell: #1a2740;--bg-cell-hover: #223052;--bg-cell-filled: #1e3a2f;--bg-cell-center: #2a2240;--border: #2f4066;--border-active: #ffb020;--text: #eef3ff;--text-muted: #8fa3c7;--accent: #ff6b35;--accent-soft: #ffb020;--success: #3dd68c;--error: #ff6b7a;--label-bg: #10182a;--shadow: 0 16px 40px rgba(0, 0, 0, .35);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 18px;--ease-out: cubic-bezier(.22, 1, .36, 1);font-family:DM Sans,system-ui,sans-serif;line-height:1.5;font-weight:400;color:var(--text);background:radial-gradient(circle at top,#17233d 0%,var(--bg) 55%);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input{font:inherit}#root{min-height:100vh}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes rise-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
