@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Poppins:wght@600;700&display=swap";.update-prompt{position:fixed;bottom:1rem;left:1rem;right:1rem;background:var(--sand-100);border:1px solid var(--rust);border-radius:8px;padding:1rem;box-shadow:0 4px 12px #00000026;z-index:1000}.update-content{display:flex;align-items:center;justify-content:space-between;gap:1rem}.update-content p{margin:0;color:var(--text-primary);font-weight:500}.update-content .btn{margin:0}@media (max-width: 640px){.update-prompt{left:.5rem;right:.5rem;bottom:.5rem}.update-content{flex-direction:column;align-items:stretch}.update-content .btn{width:100%}}.avatar-img,.avatar-fallback{border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.avatar-img{object-fit:cover}.avatar-fallback{background:var(--rust);color:#fff;font-weight:700;font-family:Poppins,system-ui,sans-serif}.home{min-height:100%;display:flex;flex-direction:column}.home-header{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;padding:calc(var(--safe-top) + 1.25rem) calc(var(--gutter) + var(--safe-right)) 1rem calc(var(--gutter) + var(--safe-left))}.home-greeting{font-size:.85rem;color:var(--text-muted);margin-bottom:.1rem}.home-title{font-size:1.75rem}.home-body{padding:0 calc(var(--gutter) + var(--safe-right)) calc(2rem + var(--safe-bottom)) calc(var(--gutter) + var(--safe-left))}.account-menu{position:relative;flex-shrink:0}.account-avatar-btn{padding:0;min-height:0;border-radius:50%;line-height:0}.account-avatar-btn:hover{opacity:.85}.account-dropdown{position:absolute;top:calc(100% + .5rem);right:0;z-index:30;width:13.5rem;padding:.875rem 1rem;text-align:left}.account-dropdown-name{font-size:.9rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-dropdown-email{font-size:.75rem;color:var(--text-muted);margin-bottom:.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-signout{width:100%;padding-left:0;justify-content:flex-start}.online-title{display:flex;align-items:center;gap:.4rem}.online-dot{width:8px;height:8px;border-radius:50%;background:#3fae7a;box-shadow:0 0 0 3px #3fae7a40}.presence-strip{display:flex;gap:1rem;list-style:none;overflow-x:auto;margin-inline:calc(-1 * (var(--gutter) + var(--safe-left))) calc(-1 * (var(--gutter) + var(--safe-right)));padding-inline:calc(var(--gutter) + var(--safe-left)) calc(var(--gutter) + var(--safe-right));padding-bottom:.25rem;scrollbar-width:none}.presence-strip::-webkit-scrollbar{display:none}.presence-item{display:flex;flex-direction:column;align-items:center;gap:.35rem;flex-shrink:0;width:3.5rem}.presence-name{font-size:.7rem;font-weight:500;color:var(--text-secondary);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.countdown-strip{display:flex;gap:.625rem;list-style:none;overflow-x:auto;scroll-snap-type:x proximity;margin-inline:calc(-1 * (var(--gutter) + var(--safe-left))) calc(-1 * (var(--gutter) + var(--safe-right)));padding-inline:calc(var(--gutter) + var(--safe-left)) calc(var(--gutter) + var(--safe-right));padding-bottom:.25rem;scrollbar-width:none}.countdown-strip::-webkit-scrollbar{display:none}.countdown-card{scroll-snap-align:start;display:flex;flex-direction:column;align-items:flex-start;width:8.25rem;padding:.875rem .875rem 1rem;background:var(--bg-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-card);text-align:left;border-top:3px solid var(--rust)}.countdown-days{font-family:Poppins,system-ui,sans-serif;font-size:2rem;font-weight:700;line-height:1;color:var(--rust)}.countdown-unit{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:.4rem}.countdown-label{font-size:.85rem;font-weight:500;line-height:1.3;color:var(--text-primary)}.event-list{list-style:none;overflow:hidden}.event-row{display:grid;grid-template-columns:4.75rem 1fr auto;align-items:center;gap:.75rem;padding:.875rem 1rem}.event-row+.event-row{border-top:1px solid var(--sand-100)}.event-when{display:flex;flex-direction:column}.event-day{font-size:.8rem;font-weight:600;color:var(--text-primary)}.event-time{font-size:.75rem;color:var(--text-muted)}.event-what{display:flex;flex-direction:column;min-width:0}.event-title{font-size:.9rem;font-weight:500;line-height:1.3}.event-location{font-size:.75rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-source{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--teal);background:var(--teal-soft);padding:.2rem .45rem;border-radius:var(--radius-sm);white-space:nowrap}.hub-grid{display:grid;gap:.75rem}.hub-card{display:flex;align-items:center;gap:.875rem;width:100%;padding:1.125rem 1rem;background:var(--bg-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);text-align:left;min-height:76px}.hub-card:hover{box-shadow:var(--shadow-raised)}.hub-icon{display:grid;place-items:center;flex-shrink:0;width:46px;height:46px;border-radius:var(--radius-md)}.hub-icon svg{width:24px;height:24px}.tone-rust .hub-icon{background:var(--rust-soft);color:var(--rust)}.tone-teal .hub-icon{background:var(--teal-soft);color:var(--teal)}.tone-gold .hub-icon{background:#fdf4e2;color:var(--gold)}.tone-sand .hub-icon{background:var(--sand-100);color:var(--sand-600)}.hub-text{display:flex;flex-direction:column;flex:1;min-width:0}.hub-title{font-family:Poppins,system-ui,sans-serif;font-size:1.0625rem;font-weight:600}.hub-meta{font-size:.8rem;color:var(--text-muted)}@media (min-width: 520px){.hub-grid{grid-template-columns:1fr 1fr}}@media (min-width: 700px){.home-header,.home-body{max-width:760px;margin-inline:auto;width:100%}}.screen{min-height:100%;display:flex;flex-direction:column}.screen-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:.25rem;padding:calc(var(--safe-top) + .5rem) var(--gutter) .75rem;padding-left:calc(var(--gutter) + var(--safe-left) - 8px);padding-right:calc(var(--gutter) + var(--safe-right));background:#faf8f5e0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--sand-200)}.back-btn{flex-shrink:0;display:grid;place-items:center;width:44px;min-height:44px;border-radius:var(--radius-pill);color:var(--text-primary)}.back-btn svg{width:24px;height:24px}.back-btn:hover{background:var(--sand-100)}.screen-heading{min-width:0}.screen-heading h2{font-size:1.25rem}.screen-heading p{font-size:.8rem;color:var(--text-muted);margin-top:.1rem}.screen-body{flex:1;padding:1.25rem calc(var(--gutter) + var(--safe-right)) 2rem calc(var(--gutter) + var(--safe-left));padding-bottom:calc(2rem + var(--safe-bottom))}@media (min-width: 700px){.screen-header,.screen-body{max-width:760px;margin-inline:auto;width:100%}}.scoreboard{list-style:none;overflow:hidden}.score-row{display:grid;grid-template-columns:1.75rem 1fr auto;grid-template-areas:"rank name value" "rank date value";align-items:center;column-gap:.75rem;padding:.75rem 1rem}.score-row+.score-row{border-top:1px solid var(--sand-100)}.score-rank{grid-area:rank;display:grid;place-items:center;width:1.75rem;height:1.75rem;border-radius:var(--radius-pill);background:var(--sand-100);color:var(--text-secondary);font-size:.8rem;font-weight:700}.score-rank.rank-1{background:#f6e4bb;color:#8a6414}.score-rank.rank-2{background:#e6e4e1;color:#6b6660}.score-rank.rank-3{background:#f0ddcf;color:#8f5a33}.score-name{grid-area:name;font-size:.9375rem;font-weight:600}.score-date{grid-area:date;font-size:.75rem;color:var(--text-muted)}.score-value{grid-area:value;font-family:Poppins,system-ui,sans-serif;font-size:1rem;font-weight:600;color:var(--rust);white-space:nowrap}.section-count{font-size:.75rem;font-weight:600;color:var(--text-muted)}.game-grid{display:grid;gap:.75rem;list-style:none}.game-card{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"icon text" "icon meta";align-items:start;column-gap:.875rem;row-gap:.5rem;width:100%;padding:1rem;background:var(--bg-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);text-align:left}.game-card:hover{box-shadow:var(--shadow-raised)}.game-card.coming-soon{opacity:.55}.game-card.coming-soon .game-icon{filter:grayscale(1)}.game-icon{grid-area:icon;display:grid;place-items:center;width:46px;height:46px;border-radius:var(--radius-md);background:var(--sand-100);color:var(--rust)}.game-icon svg{width:26px;height:26px}.game-text{grid-area:text;display:flex;flex-direction:column;min-width:0}.game-name{font-family:Poppins,system-ui,sans-serif;font-size:1.0625rem;font-weight:600}.game-blurb{font-size:.8rem;line-height:1.4;color:var(--text-secondary);margin-top:.1rem}.game-meta{grid-area:meta;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.game-top-score{display:inline-flex;align-items:center;gap:.3rem;font-size:.75rem;font-weight:600;color:var(--gold)}.game-top-score svg{width:13px;height:13px}.scores-link{display:flex;align-items:center;gap:.875rem;width:100%;padding:1rem;margin-bottom:1.5rem;text-align:left}.scores-link-icon{display:grid;place-items:center;flex-shrink:0;width:46px;height:46px;border-radius:var(--radius-md);background:#fdf4e2;color:var(--gold)}.scores-link-icon svg{width:24px;height:24px}.scores-link-text{display:flex;flex-direction:column;flex:1;min-width:0}.scores-link-title{font-family:Poppins,system-ui,sans-serif;font-size:1rem;font-weight:600}.scores-link-meta{font-size:.8rem;color:var(--text-muted)}.game-detail-hero{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"icon content";align-items:start;gap:1rem;padding:1rem 1.25rem;margin-bottom:1.5rem}.game-detail-icon{grid-area:icon;display:grid;place-items:center;width:60px;height:60px;border-radius:var(--radius-lg);background:var(--sand-100);color:var(--rust);flex-shrink:0}.game-detail-icon svg{width:36px;height:36px}.game-detail-content{grid-area:content;display:flex;flex-direction:column;text-align:left}.game-detail-hero h3{font-size:1.1rem;font-weight:600;margin:0 0 .25rem}.game-detail-blurb{font-size:.85rem;line-height:1.4;color:var(--text-secondary);margin-bottom:.5rem}.game-detail-tags{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-start}.game-detail-status{display:flex;align-items:center;gap:.625rem;padding:.875rem 1rem;background:var(--rust-soft);border-radius:var(--radius-md);font-size:.85rem;color:var(--rust);margin-bottom:1.5rem}.game-detail-status svg{flex-shrink:0;width:18px;height:18px}.mode-tabs{display:flex;gap:.5rem;margin-bottom:.625rem}.mode-tab{flex:1;padding:.6rem .75rem;min-height:40px;border-radius:var(--radius-md);background:var(--bg-surface);box-shadow:var(--shadow-card);font-size:.85rem;font-weight:500;color:var(--text-secondary)}.mode-tab.active{background:var(--rust);color:#fff;font-weight:600}.mode-blurb{font-size:.8rem;color:var(--text-muted);margin-bottom:1.25rem}.blocks-play-btn{width:100%;margin-bottom:1.5rem}.generating-card{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding:2.5rem 1.25rem;margin-bottom:1.5rem;text-align:center;color:var(--text-secondary);font-size:.9rem}.generating-spinner{width:28px;height:28px;color:var(--rust);animation:generating-spin .8s linear infinite}@keyframes generating-spin{to{transform:rotate(360deg)}}.generating-error{display:flex;align-items:flex-start;gap:.625rem;padding:.875rem 1rem;margin-bottom:1.5rem;background:var(--rust-soft);border-radius:var(--radius-md);color:var(--rust)}.generating-error svg{flex-shrink:0;width:20px;height:20px;margin-top:.1rem}.generating-error-title{font-size:.85rem;font-weight:600}.generating-error-detail{font-size:.8rem;line-height:1.4;margin-top:.15rem;color:var(--rust);opacity:.9}.topic-picker{padding:1rem;margin-bottom:1.5rem}.topic-picker-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.4rem}.difficulty-toggle{display:inline-flex;flex-shrink:0;gap:2px;padding:3px;border-radius:var(--radius-pill);background:var(--sand-200)}.difficulty-btn{min-height:30px;padding:0 .75rem;border-radius:var(--radius-pill);background:transparent;color:var(--text-secondary);font-size:.75rem;font-weight:600}.difficulty-btn:hover:not(.active){color:var(--text-primary)}.difficulty-btn.active{background:var(--bg-surface);color:var(--teal);box-shadow:var(--shadow-card)}.difficulty-btn:disabled{opacity:.5}.difficulty-note{margin-bottom:.875rem;font-size:.7rem;color:var(--text-muted)}.topic-chips{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;list-style:none;margin-bottom:.75rem}.topic-load-more{width:100%;margin-bottom:1rem}.topic-chip{display:flex;align-items:center;justify-content:center;width:100%;height:100%;box-sizing:border-box;padding:.6rem;min-height:48px;border-radius:var(--radius-md);background:var(--sand-100);color:var(--text-primary);font-size:.85rem;font-weight:500;text-align:center;line-height:1.25}.topic-chip:hover{background:var(--rust-soft);color:var(--rust)}.topic-chip:disabled,.topic-custom input:disabled{opacity:.5}.topic-custom-panel{padding:.9rem;border-radius:var(--radius-lg);background:var(--teal-soft)}.topic-custom-label{display:flex;align-items:center;gap:.4rem;margin-bottom:.6rem;font-size:.8rem;font-weight:700;color:var(--teal)}.topic-custom{display:flex;flex-direction:column;gap:.6rem}.topic-custom input{font-family:inherit;font-size:1rem;padding:.7rem .875rem;min-height:44px;border:1px solid transparent;border-radius:var(--radius-md);background:var(--bg-surface);color:var(--text-primary);box-shadow:var(--shadow-card)}.topic-custom input:focus-visible{border-color:var(--rust);outline:none;box-shadow:0 0 0 3px var(--rust-soft)}.topic-custom-submit{width:100%}.topic-custom-submit:disabled{opacity:.5}.topic-note{font-size:.75rem;line-height:1.4;color:var(--text-muted);margin-top:.625rem}.resume-banner{display:flex;align-items:center;gap:.5rem;padding:.75rem .75rem .75rem 1rem;margin-bottom:1rem;border-left:3px solid var(--teal)}.resume-banner-body{display:flex;flex-direction:column;flex:1;min-width:0;text-align:left}.resume-banner-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--teal)}.resume-banner-topic{font-size:.95rem;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:.1rem}.resume-banner-count{font-weight:500;color:var(--text-muted)}.resume-banner-dismiss{display:grid;place-items:center;flex-shrink:0;width:32px;height:32px;border-radius:var(--radius-pill);color:var(--text-muted)}.resume-banner-dismiss:hover{background:var(--sand-100);color:var(--text-secondary)}.resume-banner-dismiss:disabled{opacity:.5}.ws-library{display:grid;gap:.625rem;list-style:none;margin-bottom:1.5rem}.ws-library-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.875rem 1rem}.ws-library-open{display:flex;flex:1;flex-direction:column;align-items:flex-start;min-width:0;text-align:left}.ws-library-topic{font-family:Poppins,system-ui,sans-serif;font-size:1rem;font-weight:600}.ws-library-meta{font-size:.75rem;color:var(--text-muted);margin-top:.15rem}.ws-library-delete{display:grid;place-items:center;flex-shrink:0;width:36px;height:36px;border-radius:50%;background:var(--sand-100);color:var(--text-muted);font-size:1.25rem;line-height:1}.ws-library-delete:hover{background:var(--rust-soft);color:var(--rust)}.ws-library-delete:disabled{opacity:.5}.score-tabs{display:flex;gap:.5rem;overflow-x:auto;margin-inline:calc(-1 * (var(--gutter) + var(--safe-left))) calc(-1 * (var(--gutter) + var(--safe-right)));padding-inline:calc(var(--gutter) + var(--safe-left)) calc(var(--gutter) + var(--safe-right));padding-bottom:.25rem;margin-bottom:1.5rem;scrollbar-width:none}.score-tabs::-webkit-scrollbar{display:none}.score-tab{flex-shrink:0;padding:.5rem .875rem;min-height:38px;border-radius:var(--radius-pill);background:var(--bg-surface);box-shadow:var(--shadow-card);font-size:.85rem;font-weight:500;color:var(--text-secondary);white-space:nowrap}.score-tab.active{background:var(--rust);color:#fff;font-weight:600}.countdown-form{display:flex;flex-direction:column;gap:.875rem;padding:1.125rem 1rem;margin-bottom:1.5rem}.countdown-field{display:flex;flex-direction:column;gap:.375rem}.countdown-field span{font-size:.75rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.countdown-field input{font-family:inherit;font-size:1rem;padding:.7rem .875rem;min-height:44px;border:1px solid var(--sand-200);border-radius:var(--radius-sm);background:var(--bg-ground);color:var(--text-primary)}.countdown-field input:focus-visible{border-color:var(--rust);outline:none;box-shadow:0 0 0 3px var(--rust-soft)}.countdown-error{font-size:.8rem;color:var(--rust)}.countdown-submit{width:100%}.countdown-submit:disabled{opacity:.5}.countdown-row-bottom{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.countdown-remove{flex-shrink:0;font-size:.75rem;padding:.35rem .6rem;min-height:32px}.countdown-list{display:grid;gap:.75rem;list-style:none}.countdown-row{padding:1rem}.countdown-row-top{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.countdown-row-label{font-family:Poppins,system-ui,sans-serif;font-size:1.0625rem;font-weight:600}.countdown-row-days{display:flex;align-items:baseline;gap:.25rem;font-family:Poppins,system-ui,sans-serif;font-size:1.5rem;font-weight:700;color:var(--rust);white-space:nowrap}.countdown-row-days span{font-family:Inter,sans-serif;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.countdown-bar{display:block;height:6px;border-radius:var(--radius-pill);background:var(--sand-100);overflow:hidden;margin-bottom:.5rem}.countdown-bar span{display:block;height:100%;border-radius:var(--radius-pill);background:linear-gradient(90deg,var(--rust),#d07a3f)}.countdown-row-date{font-size:.8rem;color:var(--text-muted)}.blocks-scorebar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1.25rem;margin-bottom:.875rem;background:linear-gradient(135deg,var(--rust) 0%,#c96b34 100%);border-radius:var(--radius-lg);box-shadow:var(--shadow-raised);color:#fff}.blocks-score-main,.blocks-score-side{display:flex;flex-direction:column}.blocks-score-side{align-items:flex-end}.blocks-score-value{display:inline-block;font-family:Poppins,system-ui,sans-serif;font-size:1.9rem;font-weight:700;line-height:1;animation:scoreBump .32s ease-out}.blocks-best-value{font-family:Poppins,system-ui,sans-serif;font-size:1.25rem;font-weight:600;opacity:.9}.blocks-score-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;opacity:.8;margin-top:.15rem}@keyframes scoreBump{0%{transform:scale(1.35)}to{transform:scale(1)}}.blocks-banner{position:absolute;top:50%;left:50%;z-index:40;padding:.6rem 1.25rem;transform:translate(-50%,-50%);background:#1a1410d1;color:#fff;font-family:Poppins,system-ui,sans-serif;font-size:1.1rem;font-weight:700;letter-spacing:.02em;white-space:nowrap;border-radius:var(--radius-pill);pointer-events:none;animation:bannerPop .9s ease-out forwards}@keyframes bannerPop{0%{transform:translate(-50%,-50%) scale(.6);opacity:0}15%{transform:translate(-50%,-50%) scale(1.1);opacity:1}30%{transform:translate(-50%,-50%) scale(1);opacity:1}75%{opacity:1}to{transform:translate(-50%,-60%) scale(1);opacity:0}}.blocks-board-wrap{position:relative;display:flex;justify-content:center;margin-bottom:.875rem}.blocks-board{position:relative;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);width:100%;max-width:26rem;aspect-ratio:1;gap:2px;padding:6px;background:var(--sand-200);border-radius:var(--radius-md);box-shadow:var(--shadow-card);touch-action:none}.blocks-cell{border-radius:2px;background:var(--bg-surface)}.blocks-cell.clearing{animation:cellFlash .28s ease-in-out;z-index:1}.blocks-cell.preview-valid{background:#2d6b5f59}.blocks-cell.preview-invalid{background:#a852254d}.blocks-cell.preview-clear{background:#b8862b66;box-shadow:inset 0 0 0 2px #b8862b99}@keyframes cellFlash{0%{filter:brightness(1);transform:scale(1)}45%{filter:brightness(2.4) saturate(1.4);transform:scale(1.12)}to{filter:brightness(1);transform:scale(1)}}.blocks-tray{display:grid;grid-template-columns:repeat(3,1fr);gap:.625rem;margin-bottom:.75rem}.blocks-tray-slot{position:relative;display:grid;place-items:center;aspect-ratio:1.4;background:var(--bg-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-card);touch-action:none}.blocks-tray-slot:disabled{opacity:.4}.piece-preview{position:relative;pointer-events:none}.piece-preview-cell{position:absolute;border-radius:2px}.blocks-ghost{position:fixed;pointer-events:none;z-index:50}.blocks-ghost-cell{position:absolute;border-radius:2px;box-sizing:border-box;border:2px solid rgba(255,255,255,.85)}.blocks-ghost.invalid .blocks-ghost-cell{opacity:.5;filter:grayscale(.5)}.piece-color-1{background:#ef4444}.piece-color-2{background:#f97316}.piece-color-3{background:#eab308}.piece-color-4{background:#22c55e}.piece-color-5{background:#3b82f6}.piece-color-6{background:#a855f7}.piece-color-1,.piece-color-2,.piece-color-3,.piece-color-4,.piece-color-5,.piece-color-6{box-shadow:inset 0 0 0 1px #ffffff73,inset 0 -2px #0000001f,inset 0 2px #ffffff40}.blocks-cell.piece-color-1,.blocks-cell.piece-color-2,.blocks-cell.piece-color-3,.blocks-cell.piece-color-4,.blocks-cell.piece-color-5,.blocks-cell.piece-color-6{animation:cellPop .16s ease-out}@keyframes cellPop{0%{transform:scale(.55);opacity:.5}to{transform:scale(1);opacity:1}}.blocks-gameover{padding:1.5rem;text-align:center}.blocks-gameover h3{font-size:1.25rem;margin-bottom:.5rem}.blocks-gameover-score{font-family:Poppins,system-ui,sans-serif;font-size:1.75rem;font-weight:700;color:var(--rust);margin-bottom:.5rem}.blocks-gameover-flag{font-size:.85rem;font-weight:600;margin-bottom:.375rem}.blocks-gameover-flag.new-best{color:var(--teal)}.blocks-gameover-flag.family{color:var(--gold)}.blocks-gameover-flag:last-of-type{margin-bottom:1.25rem}.ws-scorebar{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding:.4rem .9rem;margin-bottom:.5rem;background:linear-gradient(135deg,var(--teal) 0%,#24564c 100%);border-radius:var(--radius-md);box-shadow:var(--shadow-card);color:#fff}.ws-stat{display:flex;align-items:baseline;gap:.3rem}.ws-stat-right{flex-direction:row-reverse}.ws-stat-value{font-family:Poppins,system-ui,sans-serif;font-size:.95rem;font-weight:700;line-height:1}.ws-stat-label{font-size:.6rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;opacity:.75}.ws-trace{height:2.1rem;margin-bottom:.375rem;display:flex;align-items:center;justify-content:flex-start;overflow-x:auto;font-family:Poppins,system-ui,sans-serif;font-size:.8rem;font-weight:500;color:var(--text-muted);letter-spacing:.02em;white-space:nowrap}.ws-trace.active{font-size:1.75rem;font-weight:700;letter-spacing:.1em;color:var(--teal)}.ws-trace.celebrating{gap:.5rem;padding:0 .6rem;border-radius:var(--radius-sm);font-size:1.4rem;font-weight:700;letter-spacing:.08em;animation:ws-found-pop .4s ease-out}.ws-trace-found-label{font-size:.65rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;opacity:.7}@keyframes ws-found-pop{0%{transform:scale(.9);opacity:0}60%{transform:scale(1.04);opacity:1}to{transform:scale(1);opacity:1}}.ws-board{display:grid;gap:2px;width:100%;max-width:30rem;aspect-ratio:1;margin:0 auto .75rem;padding:4px;background:var(--sand-200);border-radius:var(--radius-md);box-shadow:var(--shadow-card);touch-action:none;-webkit-user-select:none;user-select:none}.ws-cell{display:grid;place-items:center;background:var(--bg-surface);border-radius:2px;overflow:hidden;font-family:Poppins,system-ui,sans-serif;font-weight:700;line-height:1;font-size:clamp(1rem,5.5vw,1.6rem);color:var(--text-secondary)}.ws-cell.dragging{background:var(--rust);color:#fff;transform:scale(1.12);box-shadow:0 0 0 2px #fff,0 2px 6px #00000059;z-index:1;position:relative}.ws-cell.found{background:var(--rust-soft);color:var(--rust)}.ws-word-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(4.75rem,1fr));gap:1px;list-style:none;margin-bottom:1rem;padding:1px;background:var(--sand-200);border-radius:var(--radius-sm);overflow:hidden}.ws-word{display:block;padding:.35rem .2rem;background:var(--bg-surface);font-size:.7rem;font-weight:600;color:var(--text-secondary);letter-spacing:.01em;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ws-word.found{background:var(--teal-soft);color:var(--teal);text-decoration:line-through;text-decoration-thickness:2px}.ws-complete{padding:1.5rem;text-align:center}.ws-complete h3{font-size:1.25rem;margin-bottom:.5rem}.ws-complete-time{font-family:Poppins,system-ui,sans-serif;font-size:1.75rem;font-weight:700;color:var(--teal);margin-bottom:1.25rem}.ttt-fit{display:flex;flex-direction:column;gap:.55rem;height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 7.5rem);padding-top:.5rem;overflow:hidden}.ttt-scorebar{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;padding:.6rem .75rem;flex-shrink:0;background:linear-gradient(135deg,var(--teal) 0%,#24564c 100%);border-radius:var(--radius-md);box-shadow:var(--shadow-card);color:#fff;text-align:center}.ttt-round-badge{position:absolute;top:-.5rem;left:50%;transform:translate(-50%);padding:.1rem .6rem;background:var(--gold);border-radius:var(--radius-pill);font-size:.6rem;font-weight:700;color:#fff;box-shadow:var(--shadow-card)}.ttt-tally{display:flex;flex-direction:column;align-items:center;gap:.1rem;min-width:0;padding:.15rem 0;border-radius:var(--radius-md);transition:background .2s ease,box-shadow .2s ease}.ttt-tally.turn{background:#ffffff29;box-shadow:inset 0 0 0 1.5px #ffffff8c}.ttt-tally-draw{opacity:.85}.ttt-streak{font-size:.6rem;font-weight:700;line-height:1}.ttt-tally-mark{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ttt-tally-value{font-family:Poppins,system-ui,sans-serif;font-size:1.4rem;font-weight:700;line-height:1;animation:ttt-bump .4s ease-out}@keyframes ttt-bump{0%{transform:scale(1.4)}to{transform:scale(1)}}.ttt-players{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-shrink:0;padding-inline:.5rem}.ttt-chip{display:grid;place-items:center;width:2.4rem;height:2.4rem;flex-shrink:0;overflow:hidden;border-radius:50%;background:var(--sand-200);opacity:.45;transition:opacity .25s ease,transform .25s ease,background .2s ease,box-shadow .2s ease}.ttt-chip-x{color:var(--rust)}.ttt-chip-o{color:var(--teal)}.ttt-chip.turn{opacity:1;transform:scale(1.12)}.ttt-chip-x.turn{background:var(--rust-soft);box-shadow:0 0 0 1.5px var(--rust)}.ttt-chip-o.turn{background:var(--teal-soft);box-shadow:0 0 0 1.5px var(--teal)}.ttt-chip .ttt-glyph-stroke{filter:none}.ttt-status-row{display:flex;align-items:center;justify-content:center;flex:1;min-width:0;gap:.5rem}.ttt-status{display:flex;min-width:0;align-items:center;justify-content:center;gap:.4rem;min-height:1.5rem;font-size:.95rem;font-weight:600;color:var(--text-secondary);text-align:center}.ttt-next-btn{flex-shrink:0;padding:.4rem .85rem;font-size:.8rem;animation:ttt-fade-in .25s ease-out .4s both}@keyframes ttt-fade-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.ttt-status-spinner{width:15px;height:15px;color:var(--teal);animation:ttt-spin .8s linear infinite}@keyframes ttt-spin{to{transform:rotate(360deg)}}.ttt-status.settled{color:var(--rust);font-weight:700}.ttt-board-wrap{position:relative;flex:1;min-height:0;display:flex}.ttt-board-frame{position:relative;width:100%;max-width:22rem;max-height:100%;aspect-ratio:1;margin:auto;padding:6px;background:var(--sand-200);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.ttt-board{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:6px;width:100%;height:100%}.ttt-cell{display:grid;place-items:center;width:100%;height:100%;min-height:0;border-radius:var(--radius-md);background:var(--bg-surface);color:var(--text-primary);animation:ttt-settle .28s ease-out backwards;animation-delay:calc(var(--i, 0) * 25ms);transition:transform .1s ease,box-shadow .1s ease}@keyframes ttt-settle{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.ttt-cell:not(:disabled):active{transform:scale(.93);box-shadow:var(--shadow-raised)}.ttt-cell:disabled{cursor:default}.ttt-cell.mark-x{color:var(--rust)}.ttt-cell.mark-o{color:var(--teal)}.ttt-cell.winning{background:var(--gold);color:#fff;animation:ttt-pop .35s ease-out}.ttt-cell.dimmed{opacity:.35;filter:grayscale(35%);transition:opacity .3s ease .35s,filter .3s ease .35s}@keyframes ttt-pop{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}.ttt-glyph{width:64%;height:64%;overflow:visible}.ttt-glyph-stroke{fill:none;stroke:currentColor;stroke-width:11;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;animation:ttt-draw .25s ease-out forwards;filter:drop-shadow(0 2px 3px rgba(26,20,16,.25))}.ttt-glyph-x2{animation-delay:.16s}@keyframes ttt-draw{to{stroke-dashoffset:0}}.ttt-strike{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2}.ttt-strike line{stroke:var(--text-primary);stroke-width:8;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;filter:drop-shadow(0 0 3px rgba(255,255,255,.85)) drop-shadow(0 2px 3px rgba(26,20,16,.35));animation:ttt-draw .35s ease-out .15s forwards}.ttt-confetti{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:3}.ttt-confetti span{position:absolute;top:-8%;left:50%;width:.4rem;height:.7rem;border-radius:1px;background:var(--gold);opacity:0;animation:ttt-fall 1.1s ease-in forwards}.ttt-confetti span:nth-child(4n+1){background:var(--rust)}.ttt-confetti span:nth-child(4n+2){background:var(--teal)}.ttt-confetti span:nth-child(1){left:6%;--drift: 18px;animation-delay:.05s}.ttt-confetti span:nth-child(2){left:13%;--drift: -22px;animation-delay:.18s}.ttt-confetti span:nth-child(3){left:20%;--drift: 10px;animation-delay:.02s}.ttt-confetti span:nth-child(4){left:27%;--drift: -14px;animation-delay:.24s}.ttt-confetti span:nth-child(5){left:34%;--drift: 24px;animation-delay:.1s}.ttt-confetti span:nth-child(6){left:41%;--drift: -8px;animation-delay:.3s}.ttt-confetti span:nth-child(7){left:48%;--drift: 16px;animation-delay:.06s}.ttt-confetti span:nth-child(8){left:55%;--drift: -20px;animation-delay:.22s}.ttt-confetti span:nth-child(9){left:62%;--drift: 12px;animation-delay:.14s}.ttt-confetti span:nth-child(10){left:69%;--drift: -16px;animation-delay:.28s}.ttt-confetti span:nth-child(11){left:76%;--drift: 20px;animation-delay:.08s}.ttt-confetti span:nth-child(12){left:83%;--drift: -10px;animation-delay:.32s}.ttt-confetti span:nth-child(13){left:90%;--drift: 14px;animation-delay:.16s}.ttt-confetti span:nth-child(14){left:10%;--drift: -18px;animation-delay:.36s}.ttt-confetti span:nth-child(15){left:58%;--drift: 8px;animation-delay:.4s}.ttt-confetti span:nth-child(16){left:44%;--drift: -12px;animation-delay:.2s}@keyframes ttt-fall{0%{opacity:1;transform:translate(0) rotate(0)}to{opacity:0;transform:translate(var(--drift),26rem) rotate(280deg)}}.ttt-note{flex-shrink:0;font-size:.75rem;line-height:1.4;color:var(--text-muted);text-align:center}@media (max-height: 600px){.ttt-fit{gap:.35rem}.ttt-scorebar{padding:.4rem .6rem}.ttt-chip{width:2rem;height:2rem}.ttt-note{display:none}}.ttt-lobby{display:grid;gap:.5rem;list-style:none;margin-bottom:1.5rem}.ttt-lobby-item{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;width:100%;padding:.875rem 1rem;text-align:left}.ttt-lobby-item:hover{box-shadow:var(--shadow-raised)}.ttt-lobby-item:disabled{opacity:.6}.ttt-lobby-name{font-family:Poppins,system-ui,sans-serif;font-size:1rem;font-weight:600}.ttt-lobby-meta{font-size:.8rem;color:var(--text-muted)}.ttt-error{padding:.875rem 1rem;margin-bottom:1rem;background:var(--rust-soft);border-radius:var(--radius-md);font-size:.85rem;color:var(--rust)}.ttt-leave{display:block;width:100%;margin-top:.5rem;flex-shrink:0}.c4-scorebar{display:grid;grid-template-columns:repeat(3,1fr);gap:.35rem;padding:.4rem .6rem;margin-bottom:.4rem;background:linear-gradient(135deg,#1e6fd9,#0b3e8f);border-radius:var(--radius-md);box-shadow:var(--shadow-card);color:#fff;text-align:center}.c4-tally{display:flex;flex-direction:column;gap:.1rem;min-width:0}.c4-tally-label{font-size:.55rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.c4-tally-value{font-family:Poppins,system-ui,sans-serif;font-size:1.1rem;font-weight:700;line-height:1}.c4-status{display:flex;align-items:center;justify-content:center;gap:.4rem;min-height:1.2rem;margin-bottom:.3rem;font-size:.9rem;font-weight:600;color:var(--text-secondary)}.c4-status.settled{color:#d62828}.c4-status-spinner{width:15px;height:15px;color:#1e6fd9;animation:c4-spin .8s linear infinite}@keyframes c4-spin{to{transform:rotate(360deg)}}.c4-wrapper{position:relative}.c4-board{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;width:100%;max-width:28rem;aspect-ratio:7 / 6;margin:0 auto .6rem;padding:8px;background:linear-gradient(160deg,#2472dd,#0b3e8f);border-radius:var(--radius-md);box-shadow:var(--shadow-card),inset 0 2px 3px #ffffff40,inset 0 -3px 6px #00000040;transition:opacity .3s ease}.c4-board.dimmed{opacity:.35}.c4-column{display:grid;grid-template-rows:repeat(6,1fr);gap:3px;min-height:0;padding:0;border-radius:4px;background:transparent;position:relative;overflow:visible}.c4-column-header{display:flex;align-items:center;justify-content:center;height:100%;position:relative}.c4-column-button{width:100%;height:100%;border:none;background:transparent;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center}.c4-column-button:not(:disabled):active .c4-ghost-disc{transform:scale(.88)}.c4-column-button:disabled{cursor:default}.c4-ghost-disc{width:100%;aspect-ratio:1;border-radius:50%;box-shadow:0 3px 6px #0000004d;animation:c4-ghost-bob 5s ease-in-out infinite;transition:transform .15s ease,opacity .2s ease}.c4-ghost-disc.fading{opacity:0;transition:opacity .16s ease}.c4-ghost-disc.ghost-R{background:#e4172a}.c4-ghost-disc.ghost-Y{background:#ffc400}@keyframes c4-ghost-bob{0%,to{transform:translateY(0)}50%{transform:translateY(5px)}}.c4-column-button:disabled .c4-ghost-disc{animation:none;opacity:.2;filter:grayscale(1);box-shadow:none}.c4-slot{display:block;width:100%;height:100%;min-height:0;border-radius:50%;background:var(--bg-ground);box-shadow:inset 0 2px 5px #00000059;position:relative;overflow:visible}.c4-disc{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%}.c4-disc.disc-R{background:#e4172a;box-shadow:0 3px 6px #00000059}.c4-disc.disc-Y{background:#ffc400;box-shadow:0 3px 6px #00000059}.c4-disc.newly-dropped{animation:c4-drop .75s cubic-bezier(.32,0,.67,0) both}@keyframes c4-drop{0%{transform:translateY(var(--drop-from, -400%))}72%{transform:translateY(0);animation-timing-function:ease-out}84%{transform:translateY(10%)}to{transform:translateY(0)}}.c4-disc.winning{animation:c4-win-pop .45s ease-out}.c4-disc.disc-R.winning{animation:c4-win-pop .45s ease-out,c4-win-glow-r 1.3s ease-in-out infinite .45s}.c4-disc.disc-Y.winning{animation:c4-win-pop .45s ease-out,c4-win-glow-y 1.3s ease-in-out infinite .45s}@keyframes c4-win-pop{0%{transform:scale(1)}45%{transform:scale(1.22)}to{transform:scale(1)}}@keyframes c4-win-glow-r{0%,to{box-shadow:0 0 0 3px #fff,0 0 10px 2px #e4172ab3}50%{box-shadow:0 0 0 4px #fff,0 0 20px 6px #e4172af2}}@keyframes c4-win-glow-y{0%,to{box-shadow:0 0 0 3px #fff,0 0 10px 2px #ffc400b3}50%{box-shadow:0 0 0 4px #fff,0 0 20px 6px #ffc400f2}}.c4-column-headers{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;width:100%;max-width:28rem;margin:0 auto .15rem;padding:8px;aspect-ratio:7 / 1;position:relative}.c4-result{padding:.9rem;margin-bottom:.5rem;text-align:center;background:var(--bg-card);border-radius:var(--radius-md)}.c4-result h3{font-size:1.1rem;margin-bottom:.6rem}.c4-result button{font-size:.95rem;padding:.6rem 1rem}.c4-note{font-size:.7rem;line-height:1.3;color:var(--text-muted);text-align:center;margin-top:0}.c4-confetti-field{position:absolute;inset:-10px 0 auto 0;height:0;overflow:visible;pointer-events:none;z-index:5}.c4-confetti-piece{position:absolute;top:0;width:8px;height:14px;border-radius:2px;animation:c4-confetti-fall 1.8s cubic-bezier(.3,0,.7,1) forwards}@keyframes c4-confetti-fall{0%{transform:translateY(0) rotate(0);opacity:1}85%{opacity:1}to{transform:translateY(340px) rotate(var(--spin, 360deg));opacity:0}}.c4-lobby{display:grid;gap:.5rem;list-style:none;margin-bottom:1.5rem}.c4-lobby-item{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;width:100%;padding:.875rem 1rem;text-align:left}.c4-lobby-item:hover{box-shadow:var(--shadow-raised)}.c4-lobby-item:disabled{opacity:.6}.c4-lobby-name{font-family:Poppins,system-ui,sans-serif;font-size:1rem;font-weight:600}.c4-lobby-meta{font-size:.8rem;color:var(--text-muted)}.c4-error{padding:.875rem 1rem;margin-bottom:1rem;background:var(--rust-soft);border-radius:var(--radius-md);font-size:.85rem;color:var(--rust)}.c4-leave{display:block;width:100%;margin-top:.5rem}.bs-error{display:flex;align-items:center;gap:8px;color:var(--danger, #c0392b);font-size:14px}.bs-lobby{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.bs-lobby-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;cursor:pointer}.bs-lobby-name{font-weight:600}.bs-lobby-meta{font-size:13px;opacity:.65}.bs-status{display:flex;align-items:center;gap:8px;justify-content:center;font-size:15px;font-weight:600;text-align:center;margin:4px 0 12px}.bs-status.settled{opacity:.8}.bs-status-spinner{width:16px;height:16px;animation:bs-spin 1s linear infinite}@keyframes bs-spin{to{transform:rotate(360deg)}}.bs-scorebar{display:flex;gap:8px;margin-bottom:10px}.bs-tally{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;background:var(--card-bg, #fff);border-radius:12px}.bs-tally-label{font-size:12px;opacity:.65}.bs-tally-value{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}.bs-grids{display:flex;flex-direction:column;gap:14px}.bs-grid-section{display:flex;flex-direction:column;gap:4px}.bs-grid-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;opacity:.6}.bs-board{display:grid;grid-template-columns:repeat(10,1fr);gap:2px;width:100%;max-width:360px;margin:0 auto;background:#b3d9f2;border:2px solid #7fb8dd;border-radius:8px;padding:4px;box-sizing:border-box}.bs-cell{aspect-ratio:1;border:none;border-radius:3px;padding:0;background:#dceefb;cursor:default;min-width:0}.bs-cell.fireable{cursor:pointer}.bs-cell.fireable:not(:disabled):active{filter:brightness(.85)}.bs-cell:disabled{cursor:default}.bs-cell.ship-c{background:#7c5cbf}.bs-cell.ship-b{background:#3f6fbf}.bs-cell.ship-r{background:#bf5c56}.bs-cell.ship-s{background:#4f8f5e}.bs-cell.ship-d{background:#b08a3e}.bs-cell.shot-miss{background:#dceefb;position:relative}.bs-cell.shot-miss:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:30%;height:30%;border-radius:50%;background:#6b7f8e}.bs-cell.shot-hit{background:#e2574c;position:relative}.bs-cell.shot-hit:after{content:"✕";position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:clamp(8px,2.6vw,13px);font-weight:800;line-height:1}.bs-ship-row{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:10px 0}.bs-ship-chip{font-size:12px;font-weight:600;padding:4px 8px;border-radius:999px}.bs-ship-chip.pending{background:#dceefb;color:#2c5d8f}.bs-ship-chip.placed{background:#4f8f5e;color:#fff}.bs-place-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:8px 0}.bs-leave{margin-top:10px;color:var(--danger, #c0392b)}.bs-result{text-align:center;padding:16px}.bs-result h3{margin:0 0 10px}.reaction-scorebar{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding:.4rem .9rem;margin-bottom:.875rem;background:linear-gradient(135deg,var(--teal) 0%,#24564c 100%);border-radius:var(--radius-md);box-shadow:var(--shadow-card);color:#fff}.reaction-stat{display:flex;align-items:baseline;gap:.3rem}.reaction-stat-right{flex-direction:row-reverse}.reaction-stat-value{font-family:Poppins,system-ui,sans-serif;font-size:.95rem;font-weight:700;line-height:1}.reaction-stat-label{font-size:.6rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;opacity:.75}.reaction-panel{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;width:100%;min-height:16rem;padding:2rem 1.25rem;margin-bottom:1rem;border-radius:var(--radius-lg);box-shadow:var(--shadow-card);text-align:center;touch-action:manipulation;-webkit-user-select:none;user-select:none;transition:background-color .06s linear}.reaction-panel:active{transform:none}.reaction-panel-big{font-family:Poppins,system-ui,sans-serif;font-size:2.25rem;font-weight:700;line-height:1.1}.reaction-panel-small{font-size:.85rem;font-weight:500;opacity:.85}.reaction-panel.phase-idle,.reaction-panel.phase-scored,.reaction-panel.phase-done{background:var(--sand-100);color:var(--text-primary)}.reaction-panel.phase-waiting{background:var(--rust);color:#fff}.reaction-panel.phase-go{background:#1f7a4d;color:#fff}.reaction-panel.phase-tooSoon{background:var(--gold);color:#fff}.reaction-times{display:grid;grid-template-columns:repeat(5,1fr);gap:.4rem;list-style:none;margin-bottom:1.25rem}.reaction-time{padding:.45rem .25rem;border-radius:var(--radius-sm);background:var(--sand-100);font-size:.8rem;font-weight:600;color:var(--text-muted);text-align:center}.reaction-time.filled{color:var(--text-primary)}.reaction-time.best{background:var(--teal-soft);color:var(--teal)}.reaction-time.void{background:var(--rust-soft);color:var(--rust)}.reaction-result{padding:1.5rem 1.25rem;text-align:center}.reaction-result h3{font-family:Poppins,system-ui,sans-serif;font-size:2rem;color:var(--teal);margin-bottom:.25rem}.reaction-result-detail{font-size:.85rem;color:var(--text-secondary);margin-bottom:.5rem}.reaction-result-flag{font-size:.85rem;font-weight:700;color:var(--gold);margin-bottom:1rem}.reaction-result-gap{font-size:.8rem;color:var(--text-muted);margin-bottom:1rem}.auth-screen{display:flex;align-items:center;justify-content:center;min-height:100dvh;background:var(--bg-ground);padding:2rem calc(var(--gutter) + .5rem)}.auth-container{text-align:center;max-width:340px}.auth-container h1{font-size:2.25rem;margin-bottom:.5rem;color:var(--text-primary)}.auth-container>p{font-size:1rem;line-height:1.5;color:var(--text-secondary);margin-bottom:2rem}.auth-container code{font-size:.875rem;background:var(--sand-100);padding:.1rem .3rem;border-radius:4px}.app-container{min-height:100dvh;display:flex;flex-direction:column}.app-content{flex:1;min-height:0}:root{--sand-50: #faf8f5;--sand-100: #f5ede6;--sand-200: #e8dcd2;--sand-300: #d4c3b0;--sand-600: #8b6f5e;--rust: #a85225;--rust-hover: #8f4620;--rust-soft: #fdf1e9;--teal: #2d6b5f;--teal-hover: #1f4a43;--teal-soft: #e7f1ee;--gold: #b8862b;--text-primary: #1a1410;--text-secondary: #5c4d42;--text-muted: #8b7d72;--bg-surface: #ffffff;--bg-ground: #faf8f5;--radius-sm: 10px;--radius-md: 14px;--radius-lg: 20px;--radius-pill: 999px;--shadow-card: 0 1px 2px rgba(26, 20, 16, .05), 0 4px 12px rgba(26, 20, 16, .05);--shadow-raised: 0 2px 4px rgba(26, 20, 16, .06), 0 10px 24px rgba(26, 20, 16, .08);--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--gutter: 16px}*{margin:0;padding:0;box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg-ground);color:var(--text-primary);-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}html{width:100%;min-height:100dvh}body,#root{width:100%;min-height:100%}h1,h2,h3{font-family:Poppins,system-ui,sans-serif;font-weight:600;line-height:1.2}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;border-radius:var(--radius-sm);font-size:1rem;min-height:44px;transition:background-color .15s,transform .1s,box-shadow .15s}button:active{transform:scale(.98)}:focus-visible{outline:2px solid var(--rust);outline-offset:2px}@media (prefers-reduced-motion: reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}.btn{font-weight:500;padding:.75rem 1.5rem;border-radius:var(--radius-sm)}.btn-primary{background:var(--rust);color:#fff}.btn-primary:hover{background:var(--rust-hover)}.btn-secondary{background:var(--teal);color:#fff}.btn-secondary:hover{background:var(--teal-hover)}.btn-text{color:var(--rust);padding:.5rem .75rem;font-size:.875rem}.btn-text:hover{background:#a8522514}.card{background:var(--bg-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.section{margin-bottom:1.75rem}.section-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.section-title{display:flex;align-items:center;gap:.5rem;font-family:Inter,sans-serif;font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.section-title svg{width:15px;height:15px}.pill{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .6rem;border-radius:var(--radius-pill);font-size:.7rem;font-weight:600;white-space:nowrap}.pill svg{width:12px;height:12px}.pill-solo{background:var(--teal-soft);color:var(--teal)}.pill-multi{background:var(--rust-soft);color:var(--rust)}.pill-sample{background:var(--sand-200);color:var(--sand-600);letter-spacing:.04em;text-transform:uppercase}.sample-note{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;margin-bottom:1.25rem;font-size:.8rem;line-height:1.4;color:var(--text-muted)}.chevron-affordance{flex-shrink:0;width:20px;height:20px;color:var(--sand-300)}.empty-state{padding:2rem 1.25rem;text-align:center;color:var(--text-muted);font-size:.9rem}.loading{display:flex;align-items:center;justify-content:center;height:100dvh;font-size:1.125rem;color:var(--text-secondary)}
