:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-synthesis:none;color:#e9edf7;background:#0b101b;--muted:#a5b0c6;--border:#a4b3d11e;--panel:#17213394;--accent:#a6e3d2}
*{box-sizing:border-box}body{margin:0;min-width:320px;background:radial-gradient(ellipse at 90% 0,#32466040,transparent 42%),radial-gradient(ellipse at 30% 80%,#214d4740,transparent 40%);min-height:100vh}button,input,select,textarea{font:inherit}button,a,input,select,textarea,[tabindex]{-webkit-tap-highlight-color:transparent}button,input,select{min-height:44px}button{border:1px solid #7484a14a;border-radius:11px;background:#26354d;color:#eef4ff;font-weight:650;padding:.65rem 1rem;cursor:pointer;touch-action:manipulation}button:hover{background:#324561}button:disabled{opacity:.55;cursor:default}button.primary,.primary-link{background:#a6e3d2;color:#132c2a;border-color:#a6e3d2}.primary:hover{background:#c3f1e5}button.danger{background:#643945;color:#ffe6e6}button.quiet-button{background:transparent;border-color:var(--border);font-size:.78rem}a{color:#b8e8da;text-decoration:none}a:hover{text-decoration:underline}input,select,textarea{border:1px solid #7a8dad58;background:#101a2a;color:#eff3fc;border-radius:9px;padding:.65rem .75rem;min-width:0;max-width:100%;font-size:16px}label{display:block;color:var(--muted);font-size:.82rem;font-weight:600}label>input,label>select,label>textarea{display:block;margin-top:.4rem;width:100%}textarea{resize:vertical}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid #91d7ff;outline-offset:4px}[hidden]{display:none!important}.skip-link{position:fixed;top:-100px;left:1rem;z-index:100;background:#fff;color:#1c3040;padding:1rem}.skip-link:focus{top:.5rem}.app-layout{display:grid;grid-template-columns:218px minmax(0,1fr);max-width:1600px;margin:auto;min-height:100vh}.sidebar{padding:2.2rem 1.35rem;border-right:1px solid var(--border);position:sticky;top:0;height:100vh;display:flex;flex-direction:column;background:#0c132090;backdrop-filter:blur(16px)}.brand{display:flex;align-items:center;gap:.65rem;color:#eff6ff;font-size:2rem;font-weight:750;letter-spacing:-.08em;text-decoration:none}.brand:hover{text-decoration:none}.brand-mark{background:#afdece;color:#153c35;display:grid;place-items:center;width:45px;height:47px;border-radius:14px;font-family:Georgia,serif;letter-spacing:-.12em;padding-right:4px}.brand-subtitle{display:block;letter-spacing:.13em;font-size:.52rem;color:#a1b2c8;margin-top:.12rem}.sidebar nav{display:grid;gap:.45rem;margin-top:3rem}.sidebar nav a{display:flex;align-items:center;gap:.7rem;padding:.8rem .85rem;border-radius:11px;color:#aebbd0;font-size:.88rem;text-decoration:none;border:1px solid transparent;min-height:47px}.sidebar nav a span{width:23px;font-size:1.25rem;text-align:center}.sidebar nav a[aria-current=page]{color:#d7f6ed;background:#375b5540;border-color:#8abfac28}.sidebar nav a:hover{background:#ffffff07;color:#fff}.sidebar-note{margin-top:auto;color:#b2c0d2;font-size:.73rem;line-height:1.8;padding:.8rem .45rem}.sidebar-note p{color:#7e8ba3;font-size:.73rem;margin:.7rem 0}.tiny-dot{display:inline-block;background:#8ddfc4;width:6px;height:6px;border-radius:50%;margin-right:5px}.workspace{min-width:0}.topbar{height:91px;padding:1.3rem 2.5rem;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:1rem}.today-label{color:#a2b0c8;font-size:.8rem}.topbar-actions{display:flex;align-items:center;gap:.8rem;min-width:0}.profile-link{padding:.55rem .75rem;background:#27334690;color:#d8e3f5;border:1px solid var(--border);border-radius:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:130px;font-size:.8rem;min-height:44px;display:flex;align-items:center}.mobile-brand{display:none}.environment-note{margin:.8rem 2.5rem 0;font-size:.76rem;color:#d4bde7;line-height:1.5}.notice{margin:1rem 2.5rem;padding:1rem 1.1rem;border:1px solid #d1af6c55;background:#553f244a;border-radius:12px;color:#f6ddad;font-size:.85rem;line-height:1.65;overflow-wrap:anywhere}#platform-view{padding:2.3rem 2.5rem 1.3rem;outline:none;min-height:70vh}h1,h2,h3,p{overflow-wrap:anywhere}h1{font-family:Georgia,"Times New Roman",serif;font-weight:500;font-size:clamp(2rem,4.3vw,3.3rem);letter-spacing:-.035em;line-height:1.12;margin:0 0 .8rem;color:#f0f1f6}h2{font-size:1.1rem;font-weight:650;margin:0 0 1rem;letter-spacing:-.025em}h3{font-size:1rem;margin:0 0 .55rem;font-weight:650}p{line-height:1.65}.eyebrow{font-size:.64rem;letter-spacing:.15em;text-transform:uppercase;color:#94c8b9;font-weight:700;margin:0 0 .7rem}.lede{color:var(--muted);font-size:.93rem;line-height:1.7;max-width:630px;margin:.4rem 0 1.6rem}.hero{display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:2rem;padding:2rem 2.2rem;border:1px solid #afc9e027;border-radius:22px;background:linear-gradient(115deg,#2c434768,#25304745);box-shadow:0 16px 55px #00000012;margin-bottom:2.1rem;overflow:hidden;position:relative}.hero h1{font-size:clamp(2.2rem,4.5vw,3.5rem);max-width:530px}.hero .lede{max-width:400px;font-size:.88rem}.hero-art{display:grid;grid-template-columns:repeat(3,1fr);align-content:center;gap:9px;transform:rotate(-9deg);width:170px;margin:auto}.hero-art span{display:grid;place-items:center;aspect-ratio:1;border:1px solid #abd6ce40;border-radius:13px;background:#94c3b414;color:#bbdfd7;font-family:Georgia,serif;font-size:1.9rem}.hero-art span:nth-child(3n+1){background:#99d8bd;color:#243e3b;box-shadow:0 3px 0 #8bccb9}.hero-art span:nth-child(4){background:#d9c390;color:#423c2c}.actions{display:flex;align-items:center;flex-wrap:wrap;gap:.6rem}.primary-link,.secondary-link{display:inline-flex;justify-content:center;align-items:center;padding:.7rem 1rem;border-radius:10px;min-height:44px;font-weight:650;font-size:.84rem;text-decoration:none}.secondary-link{border:1px solid #b4c6d438;color:#d6e1f0;background:#20304350}.section-heading{display:flex;gap:1rem;align-items:center;justify-content:space-between;margin-bottom:1rem}.section-heading h2{margin:0}.section-heading a{font-size:.8rem}.game-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:1rem}.game-card{border:1px solid var(--border);border-radius:17px;background:linear-gradient(150deg,#2631487a,#1721338f);padding:1.15rem;min-width:0;display:flex;flex-direction:column;box-shadow:0 6px 22px #0000000b}.game-card p{font-size:.8rem;color:#a5b3ca;margin:.4rem 0 1rem;flex:1;line-height:1.65}.game-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.25rem}.game-icon{width:43px;height:43px;display:grid;place-items:center;background:#a9d9bb;color:#2b4037;border-radius:13px;font-family:Georgia,serif;font-size:1.45rem;letter-spacing:-.05em}.family-spelling-bee{background:#e4cc8b;color:#564117}.family-connections{background:#bea9dd;color:#4c3c67}.family-sudoku{background:#99c7dd;color:#264755}.family-letter-boxed{background:#e1aba7;color:#592d2e}.family-crossword{background:#bcc9df;color:#38445e}.family-strands{background:#9fcbc2;color:#254b45}.family-pips{background:#daaed1;color:#633a5b}.family-tiles{background:#b4c8a0;color:#3b5038}.pill{font-size:.63rem;letter-spacing:.04em;padding:.3rem .5rem;background:#9ab6d51a;border:1px solid #a9bdd52b;border-radius:6px;color:#b2c2da;white-space:nowrap}.pill.bonus{color:#d1beeb;border-color:#c7a7de35;background:#b989de14}.game-card h3{font-size:.98rem}.game-card-actions{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.game-card-actions a,.game-card-actions button{font-size:.75rem;min-height:40px;padding:.5rem .75rem}.game-card-actions a{color:#d4e7df;border:1px solid #99ccbc35;background:#79b6a616;border-radius:9px}.muted{color:var(--muted);font-size:.82rem}.small{font-size:.75rem}.block{margin-top:2rem}.panel{background:var(--panel);border:1px solid var(--border);border-radius:17px;padding:1.4rem;margin-bottom:1.2rem}.panel p{color:var(--muted);font-size:.85rem}.panel form,.form-grid{display:grid;gap:.85rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));align-items:end}.panel form button{justify-self:start}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:.9rem;margin:1.5rem 0 2rem}.metric{border:1px solid var(--border);border-radius:15px;padding:1.15rem;background:#27344b60}.metric strong{display:block;font-size:1.9rem;font-weight:550;color:#d4eede;line-height:1.3}.metric span{display:block;margin-top:.4rem;font-size:.74rem;color:#a8b6ca}.history-list{display:grid;gap:.7rem}.history-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;border:1px solid var(--border);padding:1rem 1.2rem;border-radius:13px;background:#1e2b4070}.history-row h3{margin:0 0 .4rem}.history-row p{margin:.2rem 0;font-size:.75rem;color:var(--muted)}.history-row .actions{flex-shrink:0}.history-row button,.history-row a{font-size:.8rem}.achievement-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:.8rem}.achievement{padding:1rem;border:1px solid var(--border);border-radius:13px;background:#1d2c4090}.achievement.earned{border-color:#93c3a14a;background:#48695226}.achievement p{font-size:.78rem;color:var(--muted);margin:.4rem 0}.achievement .achievement-mark{font-size:1.3rem;color:#c6dbac;margin-bottom:.6rem;display:block}.table-scroll{max-width:100%;overflow:auto}table{border-collapse:collapse;width:100%;font-size:.8rem;text-align:left}th,td{padding:.8rem;border-bottom:1px solid var(--border);white-space:nowrap}th{color:#bccbdd;font-weight:600}td{color:#a9bad0}.player-heading{display:flex;gap:1rem;align-items:flex-start;justify-content:space-between}.player-heading h1{font-size:2.1rem}.player-heading .lede{font-size:.82rem;margin-bottom:1rem}.game-stage{background:transparent;color:#243449;color-scheme:light;padding:0;border:0;border-radius:0;margin:1rem 0;min-height:300px;box-shadow:none;max-width:100%;overflow:clip}:where(.game-stage) button{border:1px solid #b6bcc4;background:#fff;color:#263449;border-radius:9px;padding:.62rem .9rem}:where(.game-stage) button:hover{background:#eef1f5}:where(.game-stage) button.primary{color:#fff;background:#273952;border-color:#273952}:where(.game-stage) input,:where(.game-stage) select,:where(.game-stage) textarea{background:#fff;color:#242b35;border-color:#b6bcc4}:where(.game-stage) label{color:#545e69}:where(.game-stage) h1,:where(.game-stage) h2,:where(.game-stage) h3{color:#26364d;font-family:inherit}:where(.game-stage) p{line-height:1.5}:where(.game-stage) a{color:#215899}:where(.game-stage) :focus-visible{outline-color:#2569a7}.player-footer{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;align-items:center}.player-footer p{font-size:.77rem;color:var(--muted);margin:.4rem 0}.save-status{color:#a4d6be!important}.loading-line{font-size:.9rem;color:#b2c7dc;padding:1rem 0}.error-text{color:#f6c5b0;white-space:pre-wrap;font-size:.85rem;line-height:1.65}.empty-state{padding:2.2rem;border:1px dashed #879db845;border-radius:15px;text-align:center}.empty-state p{font-size:.85rem;color:var(--muted)}.app-footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.4rem;padding:1.5rem 2.5rem 2rem;font-size:.65rem;color:#7f90a9}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}dialog{max-width:min(580px,calc(100vw - 28px));width:100%;border:1px solid #7b91aa7a;border-radius:19px;background:#142136;color:#ebf1fa;padding:1.7rem;box-shadow:0 30px 100px #0009}dialog::backdrop{background:#030813c9;backdrop-filter:blur(4px)}dialog h2{font-size:1.4rem}dialog p{color:#bac8dc;font-size:.88rem}dialog textarea{width:100%;margin:.7rem 0;font-size:.82rem;min-height:130px}.form-full{grid-column:1/-1}.lab-tabs{display:flex;gap:.55rem;flex-wrap:wrap;margin:1.2rem 0}.lab-output{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.74rem;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere;max-height:430px;overflow:auto;background:#0b1423;padding:1rem;border:1px solid var(--border);border-radius:11px}.lab-output:empty{display:none}.lab-layout{display:grid;gap:1rem}.switch-label{display:flex;align-items:center;gap:.65rem;font-size:.85rem}.switch-label input{width:21px;min-height:22px;accent-color:#94dbc4}.profile-directory{display:flex;gap:.6rem;flex-wrap:wrap;margin:1rem 0}.profile-directory button[aria-pressed=true]{border-color:#a2d4c2;background:#3f665956}.search-field{max-width:410px;margin-bottom:1.2rem}.settings-link{display:inline-flex;padding:.6rem .7rem;font-size:.8rem;border:1px solid var(--border);border-radius:9px;min-height:44px;align-items:center}
@media(min-width:1400px){#platform-view{padding:2.8rem 3.4rem}.topbar{padding-inline:3.4rem}}
@media(max-width:980px){.app-layout{grid-template-columns:182px minmax(0,1fr)}.sidebar{padding:1.7rem 1rem}.brand{font-size:1.8rem}.topbar{padding-inline:1.5rem}#platform-view{padding:1.8rem 1.5rem}.environment-note,.notice{margin-inline:1.5rem}.hero{padding:1.6rem;grid-template-columns:minmax(0,1fr) 130px;gap:1rem}.hero-art{width:125px;gap:6px}.hero-art span{border-radius:9px;font-size:1.5rem}.app-footer{padding-inline:1.5rem}}
@media(min-width:0px){body{padding-bottom:calc(72px + env(safe-area-inset-bottom))}.app-layout{display:block}.sidebar{position:fixed;top:auto;bottom:0;left:0;right:0;width:100%;height:auto;padding:0;z-index:20;border-right:0;border-top:1px solid #9cabb538;background:#111c2bef;backdrop-filter:blur(16px)}.sidebar>.brand,.sidebar-note{display:none}.sidebar nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;margin:0;padding:.35rem .4rem calc(.35rem + env(safe-area-inset-bottom))}.sidebar nav a{display:flex;flex-direction:column;gap:.1rem;font-size:.6rem;padding:.35rem .1rem;border-radius:10px;min-height:52px}.sidebar nav a span{font-size:1.25rem;height:24px}.sidebar nav .desktop-nav{display:none}.topbar{height:76px;padding:1rem 1.05rem;padding-top:calc(1rem + env(safe-area-inset-top));gap:.6rem}.today-label{display:none}.mobile-brand{display:block;font-size:1.65rem;letter-spacing:-.09em;color:#eef5ff;font-weight:750}.mobile-brand span{color:#a8dfc6}.topbar-actions{gap:.45rem}.quiet-button{font-size:.68rem!important;padding:.55rem .6rem}.profile-link{font-size:.7rem;max-width:90px;padding:.5rem .6rem}.environment-note{margin:.7rem 1rem 0;font-size:.67rem}.notice{margin:.8rem 1rem;font-size:.79rem}#platform-view{padding:1.4rem 1rem 1rem}.hero{padding:1.45rem 1.3rem;grid-template-columns:minmax(0,1fr) 85px;gap:.6rem;border-radius:17px;margin-bottom:1.65rem}.hero h1{font-size:2.25rem;max-width:230px}.hero .lede{font-size:.79rem;line-height:1.65}.hero-art{width:83px;gap:4px}.hero-art span{font-size:1.2rem;border-radius:6px}.hero .actions a{font-size:.75rem;padding:.65rem .8rem}.hero .eyebrow{font-size:.56rem}.game-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem}.game-card{padding:.9rem;border-radius:14px}.game-card-top{margin-bottom:1rem;gap:.4rem}.game-icon{width:35px;height:35px;border-radius:10px;font-size:1.2rem}.game-card h3{font-size:.88rem}.game-card p{font-size:.71rem;margin:.2rem 0 .8rem;line-height:1.55}.pill{font-size:.51rem;padding:.25rem .35rem}.game-card-actions a,.game-card-actions button{font-size:.69rem;padding:.4rem .55rem;min-height:44px;width:100%;text-align:center}.section-heading h2{font-size:1rem}.section-heading a{font-size:.73rem}.history-row{padding:.95rem;flex-wrap:wrap;gap:.65rem}.history-row h3{font-size:.94rem}.history-row .actions{width:100%}.panel{padding:1.15rem}.panel form{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem}.metric{padding:1rem}.metric strong{font-size:1.7rem}.game-stage{padding:.8rem .5rem;margin-inline:-.35rem;border-radius:13px}.player-heading{flex-wrap:wrap;gap:0}.player-heading h1{font-size:1.8rem}.player-footer{gap:.4rem}.player-footer .actions{width:100%}.player-footer button{font-size:.76rem;padding:.6rem .75rem}.app-footer{padding:1rem;font-size:.6rem;line-height:1.7}.achievement-grid{grid-template-columns:1fr}.empty-state{padding:1.5rem}.lab-tabs button{font-size:.72rem;padding:.55rem .65rem}}
@media(max-width:360px){.hero{grid-template-columns:1fr}.hero-art{display:none}.game-card-top{flex-wrap:wrap}.game-grid{gap:.55rem}.game-card{padding:.8rem}.profile-link{max-width:75px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}

/* Mobile-first play surface: keeps every active puzzle inside the visual viewport while secondary content lives in the shared modal. */
.game-secondary-host{display:none!important}
.secondary-actions-section{padding:.15rem 0 1rem;border-bottom:1px solid var(--border)}
.secondary-actions-section:last-of-type{border-bottom:0}
.secondary-actions-section h3{margin:.35rem 0 .5rem;font-size:.95rem;color:#eaf2ff}
.secondary-actions-section p{margin:.35rem 0;color:#bac8dc;font-size:.84rem;line-height:1.5}
.secondary-action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}
.secondary-action-grid button{width:100%;min-height:44px}
.secondary-share{grid-column:1/-1;margin-top:.35rem}
.secondary-share textarea{width:100%;min-height:110px;resize:vertical}
.secondary-share .primary{width:auto}
.secondary-modal-close{display:flex;justify-content:flex-end;padding-top:.85rem}
.game-secondary-section .wordle-share-text,.game-secondary-section .wordle-copy,.game-secondary-section .bee-share-action,.game-secondary-section .bee-share,.game-secondary-section .connections-results [data-action="share"],.game-secondary-section .connections-share-label,.game-secondary-section .sudoku-share,.game-secondary-section .sudoku-share-area,.game-secondary-section .crossword-control[data-action="share"],.game-secondary-section .crossword-share,.game-secondary-section .lb-result-controls .lb-control:first-child,.game-secondary-section .lb-share,.game-secondary-section .strands-complete>.strands-control,.game-secondary-section .strands-share,.game-secondary-section .pips-control[data-action="share"],.game-secondary-section .pips-share,.game-secondary-section .tiles-share-action,.game-secondary-section .tiles-share{display:none!important}
.player-heading-actions{display:flex;align-items:center;gap:.5rem;flex:0 0 auto}
.player-menu-button{width:44px;min-width:44px;height:44px;padding:0!important;font-size:1.25rem!important;line-height:1}
.player-back{white-space:nowrap}
html.is-playing,body.is-playing{height:100dvh;min-height:0;max-height:100dvh;overflow:hidden;overscroll-behavior:none}
body.is-playing .app-layout{height:100dvh;min-height:0}
body.is-playing .workspace{height:100dvh;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr)}
body.is-playing .app-footer{display:none}
body.is-playing #platform-view{min-height:0;height:100%;overflow:hidden;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto auto;align-content:stretch}
body.is-playing .player-heading{min-height:0}
body.is-playing .game-stage{min-height:0;height:100%;margin:0;overflow:hidden;overscroll-behavior:none;display:flex;align-items:stretch}
body.is-playing .game-stage>section{width:100%;height:100%;min-height:0;overflow:hidden}
body.is-playing .player-footer{min-height:0}
body.is-playing .player-footer>div{display:flex;align-items:center;gap:.65rem;min-width:0}
body.is-playing .player-footer p{white-space:nowrap}
body.is-playing #play-storage-error:empty,body.is-playing #play-load-status:empty{display:none}
body.is-playing #play-load-status{margin:0}
body.is-playing dialog{max-height:min(86dvh,760px);overflow:auto;overscroll-behavior:contain}

@media(max-width:1200px){
  body.is-playing{padding-bottom:0}
  body.is-playing .sidebar,body.is-playing .topbar,body.is-playing .environment-note,body.is-playing .notice{display:none!important}
  body.is-playing .app-layout{display:block}
  body.is-playing .workspace{display:block;height:100dvh}
  body.is-playing #platform-view{height:100dvh;padding:calc(.45rem + env(safe-area-inset-top)) .5rem calc(.4rem + env(safe-area-inset-bottom));grid-template-rows:auto auto minmax(0,1fr) auto auto;gap:.2rem}
  body.is-playing .player-heading{flex-wrap:nowrap;align-items:center;gap:.45rem;padding:0 .1rem .25rem}
  body.is-playing .player-title{min-width:0;flex:1}
  body.is-playing .player-heading .eyebrow{font-size:.53rem;margin:0 0 .05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  body.is-playing .player-heading h1{font-size:1.2rem;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  body.is-playing .player-heading .lede{display:none}
  body.is-playing .player-back{font-size:.67rem;padding:.45rem .55rem;min-height:44px}
  body.is-playing .game-stage{padding:.35rem .25rem;border-radius:10px;margin:0;box-shadow:none}
  body.is-playing .player-footer{display:none}
  body.is-playing .player-footer>div{justify-content:space-between;gap:.35rem}
  body.is-playing .player-footer p{font-size:.62rem!important;margin:0!important;overflow:hidden;text-overflow:ellipsis}
  body.is-playing #play-save-status{max-width:55%;text-align:right}
  body.is-playing #play-load-status{font-size:.65rem;padding:.05rem .15rem;line-height:1.2}
  body.is-playing #play-storage-error{font-size:.7rem;line-height:1.25;margin:.1rem .15rem;max-height:2.5em;overflow:hidden}
  body.is-playing dialog{max-width:calc(100vw - 18px);max-height:calc(100dvh - 18px);padding:1rem;border-radius:14px}
  body.is-playing dialog h2{font-size:1.15rem;margin:.15rem 0 .7rem}
  body.is-playing .secondary-action-grid{grid-template-columns:1fr 1fr}
  body.is-playing .secondary-actions-section p{font-size:.8rem;line-height:1.42}

  /* Duplicate family headings/copy are removed from the live surface; full instructions remain in the one actions modal. */
  body.is-playing .wordle-top>div:first-child,
  body.is-playing .bee-instruction,
  body.is-playing .connections-intro,
  body.is-playing .sudoku-intro,
  body.is-playing .lb-heading,
  body.is-playing .lb-rules,
  body.is-playing .crossword-title,
  body.is-playing .crossword-intro,
  body.is-playing .crossword-facts,
  body.is-playing .pips-instructions,
  body.is-playing .tiles-heading,
  body.is-playing .tiles-rules{display:none!important}

  body.is-playing .wordle-game{max-width:100%;padding:.2rem .15rem;display:flex;flex-direction:column;justify-content:center}
  body.is-playing .wordle-top{min-height:22px;justify-content:flex-end}
  body.is-playing .wordle-timer{font-size:.68rem;padding:.2rem .35rem}
  body.is-playing .wordle-rounds{margin:.15rem 0;gap:.25rem}
  body.is-playing .wordle-round-button{min-height:36px;max-width:3.4rem;padding:.2rem}
  body.is-playing .wordle-message{min-height:1.4em;font-size:.74rem;margin:.1rem 0}
  body.is-playing .wordle-board{width:min(100%,220px);gap:.2rem}
  body.is-playing .wordle-row{gap:.2rem}
  body.is-playing .wordle-tile{font-size:clamp(1rem,5.2vw,1.35rem);border-width:1px}
  body.is-playing .wordle-round-actions{margin:.25rem 0;gap:.3rem}
  body.is-playing .wordle-round-actions button{min-height:40px;padding:.35rem .55rem;font-size:.72rem}
  body.is-playing .wordle-keyboard{margin:.3rem auto 0;gap:.25rem}
  body.is-playing .wordle-key-row{gap:.12rem}
  body.is-playing .wordle-key{min-height:44px;font-size:clamp(.66rem,2.9vw,.86rem);padding:.2rem 0}
  body.is-playing .wordle-clue-label{font-size:.68rem;margin:.1rem 0}
  body.is-playing .wordle-clue-label:nth-of-type(2){margin-top:.25rem}

  body.is-playing .bee-game{padding:.2rem .35rem;display:flex;flex-direction:column;justify-content:center}
  body.is-playing .bee-scoreboard{padding:.45rem .6rem;margin-bottom:.3rem}
  body.is-playing .bee-rank{font-size:.9rem}
  body.is-playing .bee-score{font-size:.72rem}
  body.is-playing .bee-progress{height:6px;margin:.35rem 0}
  body.is-playing .bee-next-rank{font-size:.68rem}
  body.is-playing .bee-layout{display:block}
  body.is-playing .bee-play{padding:0}
  body.is-playing .bee-entry-row{min-height:44px;margin-top:.15rem}
  body.is-playing .bee-input{font-size:1.15rem;padding:.35rem .5rem}
  body.is-playing .bee-feedback{min-height:1.8em;margin:.15rem 0;font-size:.72rem}
  body.is-playing .bee-hive{width:min(100%,230px);height:205px;margin:0 auto .2rem}
  body.is-playing .bee-cell{width:72px;height:64px;font-size:1.45rem}
  body.is-playing .bee-controls{gap:.3rem}
  body.is-playing .bee-button{min-height:44px;padding:.45rem .65rem;font-size:.76rem}
  body.is-playing .bee-keyboard-help{display:none}

  body.is-playing .connections-game{height:100%;display:flex;flex-direction:column;justify-content:center}
  body.is-playing .connections-feedback{font-size:.72rem;min-height:1.6em;margin:.15rem 0}
  body.is-playing .connections-board{gap:.28rem}
  body.is-playing .connections-tile{min-height:clamp(48px,10dvh,64px);font-size:clamp(.62rem,2.7vw,.78rem);padding:.2rem .1rem}
  body.is-playing .connections-board[data-columns="3"] .connections-tile{min-height:clamp(56px,12dvh,72px);font-size:.76rem}
  body.is-playing .connections-progress{margin:.3rem 0;font-size:.7rem}
  body.is-playing .connections-controls{margin:.1rem 0;gap:.3rem}
  body.is-playing .connections-controls button{min-height:44px;padding:.35rem .25rem;font-size:.72rem}

  body.is-playing .sudoku-game{height:100%;display:flex;flex-direction:column;justify-content:center;max-width:430px}
  body.is-playing .sudoku-progress{margin:.15rem 0;font-size:.7rem}
  body.is-playing .sudoku-board{width:min(100%,min(42dvh,300px));margin-inline:auto}
  body.is-playing .sudoku-cell{font-size:clamp(.9rem,4.8vw,1.25rem)}
  body.is-playing .sudoku-notes{font-size:clamp(.42rem,1.8vw,.62rem)}
  body.is-playing .sudoku-conflicts{min-height:1.1em;margin:.15rem 0;padding:.15rem .35rem;font-size:.65rem}
  body.is-playing .sudoku-modes{margin:.15rem 0;gap:.25rem}
  body.is-playing .sudoku-control{min-height:42px;padding:.35rem .35rem;font-size:.74rem}
  body.is-playing .sudoku-mode-text{font-size:.62rem}
  body.is-playing .sudoku-keypad{gap:.25rem;margin:.2rem 0}
  body.is-playing .sudoku-keypad .sudoku-control{min-height:42px;font-size:.92rem}
  body.is-playing .sudoku-toolbar{gap:.25rem}
  body.is-playing .sudoku-toolbar .sudoku-control{font-size:.7rem}
  body.is-playing .sudoku-status{min-height:1.2em;margin:.15rem 0;font-size:.7rem}
  body.is-playing .sudoku-hint{padding:.45rem;margin:.2rem 0;font-size:.7rem}

  body.is-playing .lb-game{height:100%;padding:.15rem .25rem;display:flex;flex-direction:column;justify-content:center}
  body.is-playing .lb-target,body.is-playing .lb-progress,body.is-playing .lb-word,body.is-playing .lb-anchor,body.is-playing .lb-feedback{margin:.12rem 0;font-size:.72rem;min-height:1.2em}
  body.is-playing .lb-word{font-size:1rem}
  body.is-playing .lb-board{width:min(100%,min(48dvh,300px))}
  body.is-playing .lb-controls{gap:.3rem}
  body.is-playing .lb-control{min-height:44px;padding:.35rem;font-size:.73rem}

  body.is-playing .crossword-game{height:100%;display:flex;flex-direction:column;justify-content:center;padding:0}
  body.is-playing .crossword-progress{font-size:.64rem;margin:.05rem 0}
  body.is-playing .crossword-clues{grid-template-columns:repeat(2,minmax(0,1fr));gap:.22rem;max-height:min(18dvh,128px);margin:.08rem auto;padding:0;width:100%;overflow:auto}
  body.is-playing .crossword-clue-list{padding:.15rem;border-radius:.3rem}
  body.is-playing .crossword-clue-heading{font-size:.58rem;padding:.18rem .2rem}
  body.is-playing .crossword-clue{grid-template-columns:1.15rem minmax(0,1fr);gap:.02rem .12rem;min-height:44px;padding:.2rem .08rem}
  body.is-playing .crossword-clue-number{font-size:.64rem}
  body.is-playing .crossword-clue-words{font-size:.62rem;line-height:1.15}
  body.is-playing .crossword-guidance{font-size:.5rem;line-height:1.1}
  body.is-playing .crossword-direction-bar{margin:.08rem auto;width:100%;font-size:.62rem}
  body.is-playing .crossword-direction-bar .crossword-control{min-height:44px;min-width:92px;padding:.2rem .35rem;font-size:.64rem}
  body.is-playing .crossword-direction-status{font-size:.62rem}
  body.is-playing .crossword-board-wrap{width:min(100%,min(31dvh,250px));margin-inline:auto;overflow:hidden}
  body.is-playing .crossword-board{max-width:none}
  body.is-playing .crossword-letter{font-size:clamp(.66rem,calc(34vw / var(--crossword-size)),1.25rem)}
  body.is-playing .crossword-number{font-size:clamp(.34rem,calc(14vw / var(--crossword-size)),.56rem)}
  body.is-playing .crossword-keypad{display:grid;gap:.14rem;max-width:100%;margin:.14rem 0}
  body.is-playing .crossword-key-row{gap:.1rem}
  body.is-playing .crossword-key-row-2{padding-inline:4%}
  body.is-playing .crossword-key{min-height:44px;max-width:none;padding:.12rem 0;font-size:.66rem}
  body.is-playing .crossword-keypad .crossword-key-action{min-height:44px;min-width:42px;padding:.12rem .08rem;font-size:.58rem}
  body.is-playing .crossword-rebus-form{padding:.25rem;gap:.2rem}
  body.is-playing .crossword-status{min-height:1em;margin:.04rem 0;font-size:.62rem}

  body.is-playing .strands-game{height:100%;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto auto minmax(0,1fr) auto auto;align-content:center;align-items:center}
  body.is-playing .strands-intro{display:none}
  body.is-playing .strands-theme{grid-column:1/-1;padding:.3rem .5rem;border-radius:10px}
  body.is-playing .strands-eyebrow{font-size:.56rem;margin:0}
  body.is-playing .strands-clue{font-size:.86rem;line-height:1.12}
  body.is-playing .strands-progress{font-size:.68rem;margin:.15rem .2rem;text-align:left}
  body.is-playing .strands-draft{min-height:1.2rem;font-size:.86rem;margin:.1rem .2rem;text-align:right}
  body.is-playing .strands-board{grid-column:1/-1;width:min(100%,min(384px,calc(75dvh - 154px)));min-width:272px;border-radius:14px}
  body.is-playing .strands-cell{width:92%;height:92%;min-width:44px;min-height:44px;max-width:48px;max-height:48px;font-size:clamp(1.05rem,5vw,1.32rem)}
  body.is-playing .strands-feedback{grid-column:1/-1;min-height:1.4em;margin:.12rem 0;font-size:.68rem}
  body.is-playing .strands-hints{grid-column:1/-1;grid-template-columns:94px 1fr;gap:.15rem .4rem;padding:.1rem 0}
  body.is-playing .strands-hint{min-height:44px;padding:.35rem .45rem;font-size:.72rem}
  body.is-playing .strands-hint-progress{font-size:.62rem;line-height:1.2}

  body.is-playing .pips-game{height:100%;display:flex;flex-direction:column;justify-content:center}
  body.is-playing .pips-status{font-size:.68rem;margin:.1rem 0}
  body.is-playing .pips-selection{min-height:42px;margin:.1rem 0;font-size:.64rem;gap:.35rem}
  body.is-playing .pips-selected-pair .pips-face{width:22px;height:22px}
  body.is-playing .pips-board{gap:2px;width:min(100%,calc(var(--pips-columns)*48px));margin:0 auto .2rem}
  body.is-playing .pips-cell,body.is-playing .pips-hole{min-height:0}
  body.is-playing .pips-cell{padding:2px}
  body.is-playing .pips-face{width:22px;height:22px}
  body.is-playing .pips-dot{width:4px;height:4px}
  body.is-playing .pips-region-mark{font-size:8px;line-height:10px}
  body.is-playing .pips-tray-heading{font-size:.68rem;margin:.1rem 0}
  body.is-playing .pips-tray{gap:4px;padding:2px 0}
  body.is-playing .pips-tray-domino{min-width:56px;min-height:44px;padding:4px;gap:2px}
  body.is-playing .pips-controls{gap:3px;margin:.1rem 0}
  body.is-playing .pips-control{min-width:0;min-height:44px;padding:.25rem .35rem;font-size:.66rem;flex:1 1 28%}
  body.is-playing .pips-feedback{min-height:1.4em;font-size:.66rem;margin:.15rem 0}

  body.is-playing .tiles-game{height:100%;padding:.2rem .3rem;display:flex;flex-direction:column;justify-content:center}
  body.is-playing .tiles-counters{padding:.2rem 0}
  body.is-playing .tiles-chain,body.is-playing .tiles-best{font-size:.86rem}
  body.is-playing .tiles-progress{font-size:.68rem}
  body.is-playing .tiles-anchor-message{min-height:1.1em;margin:.15rem 0;font-size:.7rem}
  body.is-playing .tiles-board{width:min(100%,min(48dvh,330px));gap:3px}
  body.is-playing .tiles-tile{min-width:0;min-height:0;border-radius:6px}
  body.is-playing .tiles-feedback{font-size:.68rem;min-height:1.5em;margin:.2rem 0}
  body.is-playing .tiles-controls{grid-template-columns:1fr;max-width:160px;width:100%;margin:.1rem auto 0}
  body.is-playing .tiles-control{min-height:44px;font-size:.72rem;padding:.35rem}
}
@media(min-width:0px) and (max-height:680px){
  body.is-playing #platform-view{padding-top:calc(.25rem + env(safe-area-inset-top));padding-bottom:calc(.2rem + env(safe-area-inset-bottom))}
  body.is-playing .player-heading h1{font-size:1.05rem}
  body.is-playing .game-stage{padding:.2rem}
  body.is-playing .wordle-board{width:min(100%,190px)}
  body.is-playing .wordle-key{min-height:44px}
  body.is-playing .bee-scoreboard{padding:.25rem .45rem}
  body.is-playing .bee-hive{width:205px;height:182px}
  body.is-playing .bee-cell{width:65px;height:58px}
  body.is-playing .connections-tile{min-height:47px}
  body.is-playing .sudoku-board{width:min(100%,225px)}
  body.is-playing .sudoku-control,body.is-playing .sudoku-keypad .sudoku-control{min-height:40px}
  body.is-playing .lb-board{width:min(100%,235px)}
  body.is-playing .crossword-clues{max-height:min(16dvh,92px)}
  body.is-playing .crossword-board-wrap{width:min(100%,180px)}
  body.is-playing .crossword-key,body.is-playing .crossword-keypad .crossword-key-action{min-height:44px}
  body.is-playing .strands-clue{font-size:.72rem;line-height:1.08}
  body.is-playing .strands-board{width:min(100%,272px);min-width:272px}
  body.is-playing .pips-board{width:min(100%,calc(var(--pips-columns)*44px))}
  body.is-playing .pips-selection{min-height:32px}
  body.is-playing .tiles-board{width:min(100%,235px)}
}

.premium-test-toggle{display:inline-flex;align-items:center;gap:.4rem;font-size:.75rem;white-space:nowrap;cursor:pointer}.premium-test-toggle input{appearance:none;min-height:0;width:34px;height:20px;margin:0;border-radius:20px;background:#526079;position:relative;cursor:pointer;flex-shrink:0}.premium-test-toggle input::after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:white;transition:transform .15s}.premium-test-toggle input:checked{background:#397d69}.premium-test-toggle input:checked::after{transform:translateX(14px)}.premium-test-toggle input:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media(max-width:600px){.topbar-actions{gap:.4rem;flex-wrap:wrap;justify-content:flex-end}.premium-test-toggle{font-size:.65rem}}

#profile-link[hidden]{display:none}.game-card-actions a,.game-card-actions button{display:flex;align-items:center;justify-content:center}

/* 4177 and real devices share exactly the same responsive play CSS. Tablet
   portrait and landscape use the full-viewport play surface, not a sidebar
   that subtracts width and vertical toolbar space from an active puzzle. */
@media (max-width:1200px){
  body.is-playing #platform-view{min-width:0}
  /* Overflow here is visible on purpose: a board that fails to fit must not
     be disguised as a successful layout by clipped player containers. */
  body.is-playing .game-stage,
  body.is-playing .game-stage>section{overflow:visible}
  body.is-playing .crossword-clues{overscroll-behavior:contain;scrollbar-gutter:stable}
  body.is-playing .crossword-clue-words{font-size:.75rem;line-height:1.23}
  body.is-playing .crossword-clue-heading{font-size:.7rem}
  body.is-playing .crossword-clue-number{font-size:.7rem}
  body.is-playing .crossword-guidance{font-size:.65rem}
  body.is-playing .crossword-key{font-size:.75rem}
  body.is-playing .wordle-key{font-size:clamp(.74rem,2.9vw,.9rem)}
  body.is-playing .pips-control{font-size:.74rem}
  body.is-playing .pips-board{grid-template-columns:repeat(var(--pips-columns),minmax(0,1fr))}
  body.is-playing .strands-board{min-width:min(272px,100%);max-width:100%}
}
/* The larger portrait tablet has enough real height to use comfortably sized
   boards and clues. Shorter tablet landscape retains the compact layout. */
@media not all{
  body.is-playing #platform-view{padding:calc(.7rem + env(safe-area-inset-top)) 1rem calc(.65rem + env(safe-area-inset-bottom))}
  body.is-playing .game-stage{max-width:680px;margin-inline:auto}
  body.is-playing .player-heading{max-width:680px;width:100%;margin-inline:auto}
  body.is-playing .player-heading h1{font-size:1.5rem}
  body.is-playing .wordle-board{width:min(100%,300px)}
  body.is-playing .bee-hive{width:280px;height:250px}
  body.is-playing .bee-cell{width:86px;height:76px}
  body.is-playing .connections-board{width:min(100%,560px);margin-inline:auto}
  body.is-playing .connections-tile{min-height:68px;font-size:.9rem}
  body.is-playing .sudoku-board{width:min(100%,390px)}
  body.is-playing .lb-board{width:min(100%,365px)}
  body.is-playing .crossword-clues{max-height:min(19dvh,190px);gap:.55rem}
  body.is-playing .crossword-clue-words{font-size:.76rem;line-height:1.25}
  body.is-playing .crossword-clue-heading{font-size:.78rem}
  body.is-playing .crossword-board-wrap{width:min(100%,350px)}
  body.is-playing .crossword-key{font-size:.83rem}
  body.is-playing .strands-board{width:min(100%,384px)}
  body.is-playing .pips-board{width:min(100%,calc(var(--pips-columns)*60px))}
  body.is-playing .tiles-board{width:min(100%,390px)}
}
@media not all{
  body.is-playing .crossword-clues{max-height:min(14dvh,98px)}
  body.is-playing .crossword-board-wrap{width:min(100%,min(30dvh,230px))}
  body.is-playing .strands-board{width:min(100%,min(384px,calc(66dvh - 76px)))}
  body.is-playing .bee-hive{width:min(100%,205px);height:182px}
  body.is-playing .bee-cell{width:65px;height:58px}
  body.is-playing .tiles-board{width:min(100%,min(40dvh,260px))}
}
.brand-logo{display:block;width:100%;height:auto;object-fit:contain}.brand .brand-logo{max-width:160px}.mobile-brand .brand-logo{width:78px;max-height:40px}

.brand .brand-logo,.mobile-brand .brand-logo{width:96px;max-width:96px;height:auto;max-height:none}.brand,.mobile-brand{padding-block:0;line-height:0}.topbar{padding-block:0}.logo-preview{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;background:#000d;cursor:zoom-out}.logo-preview img{width:auto;height:auto;max-width:100vw;max-height:100dvh;object-fit:contain}

/* Readable guidance on the dark application surface. Keep board/tile colors independent. */
.game-stage :is(.connections-intro,.connections-feedback,.connections-help,.connections-progress,.connections-results,.crossword-intro,.crossword-facts,.crossword-status,.crossword-direction-status,.pips-instructions,.pips-feedback,.pips-status,.pips-help,.strands-intro,.strands-feedback){color:#eef4ff;opacity:1}
.game-stage :is(.strands-feedback.strands-error,.pips-feedback.pips-error){color:#ffc8c8}
.game-stage :is(.wordle-message,.lb-feedback,.sudoku-status,.sudoku-intro p,.bee-instruction){color:#eef4ff;opacity:1}
.game-stage :is(.lb-feedback.lb-error,.bee-feedback.bee-error){color:#ffc8c8}
.game-stage :is(.tiles-description,.tiles-feedback,.tiles-anchor-message){color:#174c3f;opacity:1}
.game-stage .tiles-feedback.tiles-error{color:#852d24}

.game-stage :is(.connections-selection-count,.connections-mistakes,.lb-progress,.bee-score,.bee-rank,.bee-next-rank,.sudoku-progress,.sudoku-stats,.wordle-timer,.strands-progress,.strands-hint-progress,.crossword-progress,.pips-status){display:inline-flex;align-items:center;justify-content:center;gap:.35rem;padding:.4rem .65rem;border:1px solid #8eb5dc55;border-radius:10px;background:linear-gradient(135deg,#263c55,#142439);color:#eef6ff;font-size:.78rem;font-weight:700;line-height:1.3;box-shadow:inset 0 1px 0 #ffffff0c}
.game-stage .connections-progress{gap:.5rem;margin:.5rem 0}
.game-stage .connections-mistakes{border-color:#e8bf7755;background:linear-gradient(135deg,#493c2a,#282419);color:#ffe3ab}
.game-stage :is(.tiles-chain,.tiles-best,.tiles-progress){padding:.35rem .6rem;border-radius:9px;border:1px solid #406a5355;background:#e4ebe1;color:#174c3f}
.game-stage :is(.connections-feedback,.strands-feedback,.pips-feedback,.lb-feedback,.sudoku-status){border:1px solid #8eb5dc33;border-radius:10px;background:#182a3b;padding:.4rem .6rem}

/* Shared portrait layout for local previews and production, without device chrome. */
body{width:min(100%,393px);min-width:0;margin-inline:auto}.sidebar{width:min(100%,393px);left:50%;right:auto;transform:translateX(-50%)}body.is-playing .app-layout{width:100%}

/* Flex children must be allowed to fit the available portrait width. */
body.is-playing #platform-view{grid-template-columns:minmax(0,1fr)}
body.is-playing .game-stage{width:100%;min-width:0;max-width:100%}
body.is-playing .game-stage>*{width:100%;min-width:0;max-width:100%;flex:1 1 0}
@media(max-height:680px){
  body.is-playing .pips-board{width:min(100%,calc(var(--pips-columns)*44px + (var(--pips-columns) - 1)*2px))}
  body.is-playing .pips-feedback{flex-shrink:0}
  body.is-playing .crossword-status{flex-shrink:0;line-height:1.1}
  body.is-playing .pips-controls{flex-wrap:nowrap}
  body.is-playing .pips-control{flex:1 1 0;padding:.25rem 0;font-size:.66rem;overflow-wrap:anywhere}
}

/* Profile-only verified subscriptions. */
.account-subscription-status{display:grid;gap:.75rem;min-width:0;margin-block:1.2rem;padding:1rem;border:1px solid var(--border);border-radius:14px;background:#17213394}
.account-subscription-status>div{min-width:0;display:grid;gap:.75rem}
.account-subscription-status h3{margin:.1rem 0}
.account-subscription-status p{margin:.15rem 0;line-height:1.5;overflow-wrap:anywhere}
.account-subscription-status select{width:100%;font-size:16px;min-height:44px}
.account-subscription-status .actions{display:flex;flex-wrap:wrap;gap:.6rem}
.account-subscription-status .actions button{flex:1 1 170px}
.subscription-consent{display:flex;align-items:flex-start;gap:.65rem;line-height:1.55;font-size:.83rem;cursor:pointer}
.subscription-consent>input[type=checkbox]{display:block;flex:0 0 22px;width:22px;height:22px;min-height:22px;margin:.12rem 0 0;padding:0;accent-color:var(--accent)}
#platform-dialog .subscription-consent{padding:.75rem;border:1px solid var(--border);border-radius:10px}
#platform-dialog .error-text{color:#ffc8c8;max-width:100%;overflow-wrap:anywhere}

/* Subscription prices are provider-verified; only Profile is affected, never a game board. */
.subscription-price-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:.65rem;margin:.25rem 0}
.subscription-price-card{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;min-height:118px;min-width:0;gap:.28rem;padding:.8rem .9rem;text-align:left;border:1px solid #77959b60;border-radius:12px;background:linear-gradient(145deg,#1c2c40,#172235);color:#edf8ff;box-shadow:0 1px 6px #00000012;transition:border-color .18s ease,background .18s ease,transform .18s ease}
.subscription-price-card:hover{background:#2a3b52;transform:translateY(-1px)}
.subscription-price-card[aria-pressed=true]{border-color:#a6e3d2;background:linear-gradient(140deg,#234a46,#1a3437);box-shadow:0 0 0 1px #a6e3d240}
.subscription-price-name{font-weight:700;font-size:.84rem;line-height:1.3}
.subscription-price-amount{font-weight:800;font-size:1.35rem;line-height:1.2;letter-spacing:-.025em}
.subscription-price-period,.subscription-price-equivalent{color:#ced9e6;font-size:.75rem;line-height:1.4}
.subscription-price-save{font-size:.76rem;font-weight:700;color:#b6f3d5;line-height:1.4}
@media(max-width:500px){.subscription-price-options{grid-template-columns:1fr}.subscription-price-card{min-height:93px}}
@media(prefers-reduced-motion:reduce){.subscription-price-card{transition:none}.subscription-price-card:hover{transform:none}}

/* Profile confirmations remain reachable on short portrait screens. */
#platform-dialog{max-height:calc(100dvh - 24px);overflow:auto;overscroll-behavior:contain}
.account-subscription-status{min-width:0;overflow-wrap:anywhere}
.subscription-price-card span,.subscription-price-card strong{max-width:100%;overflow-wrap:anywhere}

/* Game navigation stays above the heading at every viewport size. */
body.is-playing .sidebar{display:none!important}
body.is-playing .player-heading{display:flex;flex-direction:column;align-items:stretch;gap:.5rem}
body.is-playing .player-heading-actions{width:100%;justify-content:space-between;order:0}
body.is-playing .player-title{order:1}
body.is-playing .player-back{white-space:nowrap}
@media(max-height:720px){body.is-playing .player-title{display:none}body.is-playing .player-heading{gap:0;padding-bottom:0}}

/* Smooth native surfaces preserve live labels and existing touch targets. */
:is(button[id="access-button"],.connections-next-puzzle,.game-card-actions a,.game-card-actions button,.primary-link,.secondary-link,.player-back,.actions button:not(.danger),.secondary-menu-action:not(.danger),.secondary-modal-close button,.connections-action,.strands-control,.tiles-control,.lb-control,.pips-control,.crossword-control,.sudoku-control:not([data-action="digit"]),.bee-button,.wordle-tools button){background:linear-gradient(180deg,#243744,#172330);border:1px solid #a6e3d278;border-radius:12px;color:#e9fff8;text-decoration:none;box-shadow:inset 0 1px 0 #ffffff12,0 2px 5px #00000020;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}
:is(button[id="access-button"],.connections-next-puzzle,.game-card-actions a,.game-card-actions button,.primary-link,.secondary-link,.player-back,.actions button:not(.danger),.secondary-menu-action:not(.danger),.secondary-modal-close button,.connections-action,.strands-control,.tiles-control,.lb-control,.pips-control,.crossword-control,.sudoku-control:not([data-action="digit"]),.bee-button,.wordle-tools button):hover:not(:disabled){background:linear-gradient(180deg,#2d4852,#1c303c);border-color:var(--accent)}
:is(.primary-link,.actions button.primary,.secondary-modal-close button.primary),body .connections-notification .connections-next-puzzle{background:linear-gradient(180deg,#b8ecdf,#90d4c3);border-color:#a6e3d2;color:#102e2c!important}
:is(button[id="access-button"],.connections-next-puzzle,.game-card-actions a,.game-card-actions button,.primary-link,.secondary-link,.player-back,.actions button:not(.danger),.secondary-menu-action:not(.danger),.secondary-modal-close button,.connections-action,.strands-control,.tiles-control,.lb-control,.pips-control,.crossword-control,.sudoku-control:not([data-action="digit"]),.bee-button,.wordle-tools button):active:not(:disabled){background:#244a48;border-color:var(--accent);color:#e9fff8!important;box-shadow:inset 0 2px 4px #00000024}
:is(button[id="access-button"],.connections-next-puzzle,.game-card-actions a,.game-card-actions button,.primary-link,.secondary-link,.player-back,.actions button:not(.danger),.secondary-menu-action:not(.danger),.secondary-modal-close button,.connections-action,.strands-control,.tiles-control,.lb-control,.pips-control,.crossword-control,.sudoku-control:not([data-action="digit"]),.bee-button,.wordle-tools button):disabled{background:#28323e;border-color:#66778870;color:#b7c2ce;opacity:.65;box-shadow:none}
button.player-menu-button,button.player-menu-button:hover{position:relative;background:#172330;border:1px solid #a6e3d278;border-radius:12px;font-size:0!important;width:44px;height:44px;min-height:44px;padding:0;flex:0 0 44px}
button.player-menu-button::before{content:'';position:absolute;width:18px;height:2px;left:12px;top:20px;border-radius:2px;background:var(--accent);box-shadow:0 -6px 0 var(--accent),0 6px 0 var(--accent);pointer-events:none}
.premium-test-toggle input{background:#344555;border:1px solid #8da3b560;width:38px;height:22px;padding:0;border-radius:22px}
.premium-test-toggle input:checked{background:#326b60;border-color:var(--accent)}
.premium-test-toggle input::after{display:block;content:'';position:absolute;top:3px;left:3px;width:14px;height:14px;background:#e9edf7;border-radius:50%;transition:transform .15s ease}
.premium-test-toggle input:checked::after{transform:translateX(16px);background:var(--accent)}
#platform-dialog{border:1px solid #a6e3d278;border-radius:19px;background:linear-gradient(145deg,#172936,#101c29);color:#e9edf7;box-shadow:inset 0 1px 0 #ffffff0d,0 24px 80px #0009}
#platform-dialog .connections-results{background:#172a35;color:#e9edf7;border-color:#a6e3d240}
#platform-dialog .connections-results h3,#platform-dialog .connections-results p{color:#e9edf7}
@media(prefers-reduced-motion:reduce){:is(button[id="access-button"],.connections-next-puzzle,.game-card-actions a,.game-card-actions button,.primary-link,.secondary-link,.player-back,.actions button:not(.danger),.secondary-menu-action:not(.danger),.secondary-modal-close button,.connections-action,.strands-control,.tiles-control,.lb-control,.pips-control,.crossword-control,.sudoku-control:not([data-action="digit"]),.bee-button,.wordle-tools button),.premium-test-toggle input::after{transition:none}}
/* Shared navigation artwork stays crisp at any screen density. */
#main-nav .nav-icon{display:grid;place-items:center;width:24px;height:24px;flex:0 0 24px;color:var(--muted)}
.nav-icon svg{display:block;width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
#main-nav a[aria-current=page] .nav-icon{color:var(--accent)}
#main-nav a[aria-current=page] .nav-icon svg{fill:#a6e3d214}
#main-nav a:hover .nav-icon{color:var(--accent)}
.game-card .game-icon-art{width:48px;height:48px;background:transparent;border-radius:0;flex:0 0 48px}
.game-icon-art img{display:block;width:100%;height:100%;object-fit:contain}
/* Account actions remain comfortably separated at narrow phone widths. */
#account-controls .account-action-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0 24px; }
#account-controls .account-action-grid button { width:100%;min-width:0;min-height:44px;white-space:normal;line-height:1.35;padding:12px; }
#account-controls .account-credentials:not([hidden]) { display:grid;gap:14px;margin:16px 0; }
#account-controls .account-credentials[hidden] { display:none; }
#account-controls .account-history { margin-top:24px; }
@media(max-width:360px) { #account-controls .account-action-grid { grid-template-columns:1fr; } }
/* Every standalone action link has the same visible touch target as a button. */
#platform-view a:not(.primary-link):not(.secondary-link):not(.player-back) {
  display:inline-flex;align-items:center;justify-content:center;gap:.35rem;
  min-height:44px;padding:.65rem .85rem;border:1px solid #a6e3d278;
  border-radius:11px;background:linear-gradient(180deg,#213740,#172a33);
  color:#d9f5ed;font-weight:650;text-align:center;text-decoration:none;
}
#platform-view a:not(.primary-link):not(.secondary-link):not(.player-back):hover { background:#29474b;border-color:#a6e3d2; }
#platform-view a:focus-visible { outline:2px solid var(--accent);outline-offset:3px; }
.section-heading { flex-wrap:wrap;gap:.6rem; }
.section-heading a { flex-shrink:0; }
/* Name-first onboarding and optional account access share the app's panel theme. */
.onboarding-content{display:grid;gap:16px;min-width:0}.onboarding-content p{margin:0;line-height:1.65}.onboarding-actions{display:grid;gap:12px;grid-template-columns:1fr}.onboarding-actions button{width:100%;min-height:44px}.onboarding-content #account-controls{margin:0;padding:0;border:0;background:transparent;box-shadow:none}.onboarding-content #account-controls>h2{display:none}.onboarding-content label{color:#c7d5e3}.onboarding-content .quiet-button{border-color:#a6e3d278;color:#d9f5ed}#profile-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;border:1px solid #a6e3d278;border-radius:11px;background:#213740;color:#d9f5ed}
/* Keep the optional account form compact on short phone screens. */
.onboarding-content{gap:12px}.onboarding-content #account-controls .account-credentials:not([hidden]){margin:0;gap:10px}.onboarding-content #account-controls .account-action-grid{margin:0;gap:10px}


/* Shape-only placeholders reserve space without displaying fabricated content. */
.skeleton-screen{width:100%;min-width:0}
.skeleton-visuals{min-width:0}
.skeleton-shape{display:block;background:#203040;border:1px solid #496a7c20;border-radius:9px;opacity:.65;position:relative;overflow:hidden}
.skeleton-shape::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(100deg,transparent 15%,#79c7bb10 50%,transparent 85%);animation:fikra-skeleton-pulse 2.4s ease-in-out infinite}
@keyframes fikra-skeleton-pulse{to{transform:translateX(100%)}}
.skeleton-line{height:13px;margin:0 0 12px}
.skeleton-eyebrow{width:25%;max-width:145px;height:10px}
.skeleton-title{width:72%;max-width:390px;height:39px;margin-bottom:16px}
.skeleton-description{width:82%;max-width:560px}
.skeleton-description.short{width:55%}
.skeleton-intro{margin-bottom:26px}
.skeleton-hero{min-height:245px}
.skeleton-hero-copy{min-width:0}
.skeleton-hero-title{width:84%;max-width:460px;height:56px;margin-bottom:22px}
.skeleton-hero .skeleton-description{width:92%}
.skeleton-hero .skeleton-description.short{width:66%}
.skeleton-button{width:110px;height:40px;margin-top:auto}
.skeleton-hero .skeleton-button{margin-top:20px}
.skeleton-hero-art{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;align-content:center;max-width:180px}
.skeleton-art-cell{aspect-ratio:1;border-radius:12px}
.skeleton-section-title{width:37%;height:23px;max-width:275px;margin:0 0 17px}
.skeleton-card{min-height:218px;pointer-events:none}
.skeleton-card-top{display:flex;align-items:center;justify-content:space-between}
.skeleton-icon{width:43px;height:43px;border-radius:13px}
.skeleton-pill{width:52px;height:21px;border-radius:6px}
.skeleton-card-title{width:73%;height:18px;margin-bottom:15px}
.skeleton-card-description{width:100%;height:11px}
.skeleton-card-description.short{width:79%;margin-bottom:24px}
.skeleton-card .skeleton-button{width:100%;height:44px;border-radius:12px}
.skeleton-search{width:min(410px,100%);height:44px;margin-bottom:20px}
.skeleton-history-row{min-height:99px;align-items:center;pointer-events:none}
.skeleton-history-copy{flex:1;min-width:0}
.skeleton-row-title{height:17px;width:54%;max-width:260px}
.skeleton-row-detail{height:11px;width:74%;max-width:390px}
.skeleton-row-detail.short{width:49%;margin-bottom:0}
.skeleton-row-action{width:111px;height:40px;flex:0 0 auto}
.skeleton-metric{min-height:113px}
.skeleton-metric-value{height:31px;width:45%;margin-bottom:16px}
.skeleton-panels{display:grid;gap:16px}
.skeleton-panel{min-height:180px}
.skeleton-panel-title{width:43%;height:20px;margin-bottom:20px}
.skeleton-panel .skeleton-field{width:64%;height:44px;margin:10px 0 14px}
.skeleton-game-panel{height:min(45dvh,380px);min-height:220px;width:100%;border-radius:18px}
.skeleton-game-preparation{width:100%;min-height:300px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:16px;padding:12px 6px}
.skeleton-preparation-board{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;width:min(100%,310px);max-height:min(43dvh,340px);aspect-ratio:5/6}
.skeleton-preparation-cell{min-width:0;min-height:0;aspect-ratio:1;border-radius:5px}
.skeleton-preparation-controls{display:flex;gap:8px;justify-content:center;width:min(100%,310px)}
.skeleton-control{height:38px;flex:1}
.skeleton-board-sudoku .skeleton-preparation-board{grid-template-columns:repeat(9,minmax(0,1fr));aspect-ratio:1;max-width:320px}
.skeleton-board-connections .skeleton-preparation-board,.skeleton-board-tiles .skeleton-preparation-board,.skeleton-board-pips .skeleton-preparation-board{grid-template-columns:repeat(4,minmax(0,1fr));aspect-ratio:1;max-width:300px}
.skeleton-board-crossword .skeleton-preparation-board{grid-template-columns:repeat(6,minmax(0,1fr));aspect-ratio:1;max-width:300px}
.skeleton-board-strands .skeleton-preparation-board{grid-template-columns:repeat(6,minmax(0,1fr));aspect-ratio:6/8;max-width:288px}
.skeleton-board-spelling-bee .skeleton-preparation-board{grid-template-columns:repeat(3,minmax(0,1fr));aspect-ratio:3/3;max-width:250px}
.skeleton-board-spelling-bee .skeleton-preparation-cell{border-radius:50%}
.skeleton-board-letter-boxed .skeleton-preparation-board{grid-template-columns:repeat(4,minmax(0,1fr));aspect-ratio:1;max-width:260px}
.skeleton-account-history{min-height:100px}
@media(max-width:700px){
 .skeleton-hero{grid-template-columns:minmax(0,1fr) 85px;min-height:195px}
 .skeleton-hero-art{max-width:85px;gap:4px}
 .skeleton-hero-title{height:42px}
 .skeleton-title{height:30px;width:90%}
 .skeleton-card{min-height:200px}
 .skeleton-icon{width:35px;height:35px}
 .skeleton-card .skeleton-button{width:100%;height:44px}
 .skeleton-history-row{flex-wrap:wrap}
 .skeleton-row-action{width:100%;height:40px}
 .skeleton-game-preparation{min-height:220px}
 .skeleton-preparation-board{width:min(100%,240px);max-height:39dvh}
}
@media(max-width:360px){.skeleton-hero-art{display:none}.skeleton-hero{grid-template-columns:1fr}.skeleton-pill{width:43px}}
@media(max-height:600px){.skeleton-game-panel{min-height:160px;height:34dvh}.skeleton-game-preparation{min-height:160px;gap:6px}.skeleton-preparation-board{max-height:32dvh}.skeleton-control{height:28px}}
@media(prefers-reduced-motion:reduce){.skeleton-shape::after{animation:none;display:none}}

/* Keep the complete placeholder grid inside its reserved height on short screens. */
.skeleton-game-preparation .skeleton-preparation-board{grid-template-columns:repeat(var(--preparation-columns),minmax(0,1fr));grid-template-rows:repeat(var(--preparation-rows),minmax(0,1fr));aspect-ratio:var(--preparation-columns)/var(--preparation-rows);width:min(100%,310px,calc(32dvh * var(--preparation-columns) / var(--preparation-rows)));max-height:none}
.skeleton-game-preparation .skeleton-preparation-cell{aspect-ratio:auto}
.skeleton-card .skeleton-icon{width:48px;height:48px;flex:0 0 48px}

.skeleton-inline{min-height:92px;min-width:0}
.skeleton-inline-visual{display:grid;gap:12px;padding:8px 0}
.skeleton-inline-row{min-height:44px}

.vip-required-badge{display:inline-grid;place-items:center;min-width:72px;min-height:40px;border:1px solid #a6e3d2;border-radius:12px;background:#a6e3d218;color:#a6e3d2;font-weight:800;letter-spacing:.12em}
.vip-required-copy{font-size:1rem;line-height:1.6;color:#eef4ff}
.vip-required-actions{display:grid;gap:12px;margin-top:20px}.vip-required-actions>a{display:flex;align-items:center;justify-content:center;min-height:48px}
.skeleton-inline-row .skeleton-row-title{width:52%;margin-bottom:9px}
.skeleton-inline-row .skeleton-row-detail{width:80%;margin-bottom:0}
.header-skeleton{position:relative;overflow:hidden;background:#29435a!important;color:transparent!important;pointer-events:none;border-color:#496a7c44!important}
#access-button.header-skeleton{width:114px}
#profile-link.header-skeleton{width:88px}
.header-skeleton::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(100deg,transparent,#79c7bb24,transparent);animation:fikra-skeleton-pulse 1.8s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.header-skeleton::after{display:none;animation:none}}
body.is-playing .bee-hive{margin-top:26px}

/* Keep Wordle open against the app background and center feedback in its gap. */
body.is-playing .wordle-game{background:transparent;border:0;border-radius:0;box-shadow:none}
body.is-playing .wordle-message:not(.wordle-announcement-only){display:flex;align-items:center;justify-content:center;flex-shrink:0;min-height:52px;font-size:clamp(.95rem,3.7vw,1.1rem);line-height:1.4;margin:.25rem 0 .65rem;padding:.25rem .5rem}
@media(max-height:650px){body.is-playing .wordle-message:not(.wordle-announcement-only){min-height:40px;margin:.15rem 0 .4rem;font-size:.95rem}}

/* The completion link uses a dark themed button, so retain a light label. */
body .connections-win-toast .connections-next-puzzle{color:#e9fff8!important}

/* Public boards, account-authoritative achievements and completion history. */
.board-find-form{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;margin:0 0 1.15rem}
.board-find-form .search-field{flex:1 1 14rem;min-width:0;margin:0}
.board-find-form .primary{min-height:44px}
.board-find-form [role=status]{flex-basis:100%;margin:0;min-height:1.2em}
.board-id-badge{border:1px solid rgba(61,197,169,.48);border-radius:999px;background:rgba(16,118,102,.12);
  color:#a6e9dc;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  display:inline-block;font:600 .7rem/1.3 ui-monospace,SFMono-Regular,Consolas,monospace;
  letter-spacing:.015em;padding:.42rem .6rem;cursor:copy;min-height:34px;text-align:left}
.board-id-badge:hover,.board-id-badge:focus-visible{border-color:#7debd6;background:rgba(16,118,102,.24)}
.player-title .board-id-badge{margin-top:.35rem;max-width:min(29rem,100%)}
.history-description{min-width:0;overflow-wrap:anywhere}
.history-description .board-id-badge{margin:.25rem 0 .45rem}
.history-filters,.achievement-filters{display:flex;gap:.65rem;flex-wrap:wrap;margin:1rem 0}
.history-filters .search-field,.achievement-filters .search-field{flex:1 1 11rem;min-width:0;margin:0}
.achievement-hero{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin:1.15rem 0}
.achievement-hero h2{font-size:clamp(1.5rem,5vw,2.25rem);margin:.15rem 0}
.achievement-summary-score{display:flex;flex-direction:column;gap:.25rem;text-align:right}
.achievement-summary-score strong{font-size:1.5rem;color:#9de9d5}
.achievement-summary-score span{color:#aeb9c6;font-size:.8rem}
.xp-meter,.achievement-meter{display:block;width:100%;height:.55rem;accent-color:#35bd9f}
.xp-meter::-webkit-progress-bar,.achievement-meter::-webkit-progress-bar{border-radius:999px;background:#253440}
.xp-meter::-webkit-progress-value,.achievement-meter::-webkit-progress-value{background:#3bc7a6;border-radius:999px}
.achievement-hero .xp-meter{max-width:29rem;margin:.75rem 0 .2rem}
.achievement-group{margin:1.6rem 0}
.achievement-group>h2{font-size:1.05rem;margin:0 0 .85rem;color:#d6ebe7}
.achievement-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:.8rem}
.achievement{background:rgba(17,26,37,.9);border:1px solid rgba(130,169,163,.19);border-radius:14px;
  padding:1rem;min-width:0;transition:border-color .2s,transform .2s}
.achievement.earned{background:linear-gradient(135deg,rgba(21,92,80,.25),rgba(17,26,37,.95));border-color:rgba(70,200,164,.45)}
.achievement.locked{opacity:.83}
.achievement-card-head{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-bottom:.5rem}
.achievement-icon{display:grid;place-items:center;width:42px;height:42px;color:#64d4ba;background:rgba(40,170,143,.12);border-radius:12px}
.achievement-icon svg{width:24px;height:24px}
.achievement-xp{font-weight:650;color:#7ce2cd;font-size:.76rem}
.achievement h3{font-size:.97rem;margin:.4rem 0}
.achievement>p{font-size:.82rem;line-height:1.43;margin:.3rem 0 .65rem}
.achievement-progress-copy{font-size:.74rem!important;color:#a2b9bb}
.achievement-meter{height:.4rem;margin-top:.65rem}
.profile-progress .profile-level-summary strong{font-size:1.4rem;color:#82e4cd}
.profile-level-summary .xp-meter{max-width:27rem;margin:.75rem 0}
.header-level{display:inline-flex;vertical-align:middle;white-space:nowrap;font-size:.65rem;font-weight:700;
  color:#a6e9dc;background:rgba(21,150,117,.17);border:1px solid rgba(66,202,159,.35);
  border-radius:999px;padding:.17rem .32rem}
.progress-toast{position:fixed;z-index:200;right:1rem;bottom:calc(5.5rem + env(safe-area-inset-bottom));
  max-width:min(23rem,calc(100vw - 2rem));padding:.8rem 1rem;
  border:1px solid rgba(70,208,172,.65);border-radius:12px;color:#dcfff5;
  background:#11282a;box-shadow:0 10px 26px rgba(0,0,0,.35);
  animation:achievement-enter .35s ease-out}
@keyframes achievement-enter{from{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}
body.is-playing .player-title .board-id-badge{font-size:.57rem;max-width:100%;padding:.18rem .45rem;
  min-height:22px;margin-top:.1rem}
@media(max-width:600px){
  .achievement-hero{align-items:flex-start}
  .achievement-summary-score{text-align:left}
  .history-filters .search-field,.achievement-filters .search-field{flex-basis:100%}
  .achievement-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}
  .achievement{padding:.75rem}
  .achievement h3{font-size:.88rem}
  .achievement-icon{width:36px;height:36px}
  .progress-toast{bottom:calc(5rem + env(safe-area-inset-bottom))}
}
@media(max-width:370px){.achievement-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.progress-toast{animation:none!important}.achievement{transition:none}}

/* Five fixed destinations must stay reachable on short narrow screens. */
@media(max-width:1200px){.sidebar nav{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media(max-width:380px){.sidebar nav a{font-size:.53rem;letter-spacing:-.01em;padding-inline:0}}

@media(max-width:1200px){
 body.is-playing .player-title{display:grid;grid-template-columns:minmax(0,1fr) minmax(68px,40%);grid-template-rows:auto auto;gap:0 .3rem;align-items:center}
 body.is-playing .player-title>.eyebrow{grid-column:1;grid-row:1;min-width:0}
 body.is-playing .player-title>h1{grid-column:1/-1;grid-row:2}
 body.is-playing .player-title>.board-id-badge{grid-column:2;grid-row:1;justify-self:end;
   min-width:0;max-width:100%;padding:.05rem .3rem;min-height:19px;font-size:.52rem}
}
.puzzle-choice-actions{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;margin-top:18px}
.puzzle-choice-actions>button,.puzzle-choice-actions>a{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;margin:0;white-space:normal;text-align:center}
@media(max-height:650px){
 body.is-playing .bee-play{display:grid;grid-template-columns:minmax(0,1fr) 78px;column-gap:4px}
 body.is-playing .bee-play>:not(.bee-controls):not(.bee-found-button){grid-column:1/-1}
 body.is-playing .bee-controls{grid-column:1;align-items:stretch}
 body.is-playing .bee-found-button{grid-column:2;margin:0;padding:.2rem;font-size:.7rem;line-height:1.2}
}
body.is-playing .crossword-status{line-height:1.5;min-height:1.5em}
/* Give surplus height to readable clues rather than blank space below the keyboard. */
body.is-playing .crossword-game{display:flex;flex-direction:column;justify-content:flex-start;height:100%;min-height:0}
body.is-playing .crossword-clues{flex:1 1 120px;min-height:70px;max-height:none;width:100%;overflow:auto}
body.is-playing .crossword-clue-list{align-self:stretch}
body.is-playing .crossword-clue-words{font-size:clamp(.85rem,2.9vw,1.05rem);line-height:1.35}
body.is-playing .crossword-clue-heading{font-size:.78rem}
body.is-playing .crossword-clue-number{font-size:.85rem}
body.is-playing .crossword-guidance{font-size:.72rem}
body.is-playing :is(.crossword-play-area,.crossword-direction-bar,.crossword-keypad,.crossword-progress){flex-shrink:0}
body.is-playing .crossword-game.is-complete .crossword-keypad{display:none}
body.is-playing .crossword-status:empty{display:none}
body.is-playing .connections-win-toast{display:none!important}
.victory-dialog{text-align:center;padding:.7rem .2rem;background:radial-gradient(ellipse at top,#a6e3d220,transparent 70%);color:#eef8f5}
.victory-emblem{font-size:4rem;line-height:1.2;color:#a6e3d2;text-shadow:0 0 30px #6fe6c888;animation:victory-arrive .4s ease-out}
.victory-dialog p{font-size:1.05rem;line-height:1.5}
.victory-actions{display:grid;gap:12px;margin-top:1.3rem}
.victory-actions button{min-height:48px;width:100%;margin:0}
@keyframes victory-arrive{from{transform:scale(.7) rotate(-15deg);opacity:0}to{transform:none;opacity:1}}
@media(prefers-reduced-motion:reduce){.victory-emblem{animation:none}}
@media(max-height:600px){
 body.is-playing .crossword-board-wrap{width:min(100%,145px)}
 body.is-playing .crossword-clue-words{font-size:.78rem;line-height:1.2}
 body.is-playing .crossword-clues{min-height:64px}
}
/* Native-feeling app chrome; editing, explicit copy surfaces and game gestures survive. */
html.native-app{overscroll-behavior-y:none}
.native-app body{overscroll-behavior-y:none}
.native-app body *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.native-app :is(input,textarea,select,[contenteditable]:not([contenteditable="false"]),[data-selectable]),
.native-app :is([contenteditable]:not([contenteditable="false"]),[data-selectable]) *{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
.native-app :is(button,a,input,select,textarea){touch-action:manipulation}
.native-app img:not([draggable="true"]){-webkit-user-drag:none}
@media(max-width:700px){.native-app :is(input,select,textarea){font-size:max(16px,1em)}}
.achievement-groups .achievement-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(6px,1.6vw,12px)}
.achievement-group-title{display:flex;align-items:center;gap:.6rem;min-height:48px;cursor:pointer;padding:.65rem .75rem;border:1px solid #a6e3d238;border-radius:12px;background:#172735;color:#e8f7f2;font-weight:700;list-style:none;margin-bottom:.65rem}
.achievement-group-title::-webkit-details-marker{display:none}
.achievement-group-title::before{content:'›';color:#a6e3d2;font-size:1.4rem;transition:transform .15s}
.achievement-group[open]>.achievement-group-title::before{transform:rotate(90deg)}
.achievement-group-count{margin-left:auto;font-size:.75rem;white-space:nowrap;color:#a6e3d2}
.achievement-grid .achievement-tile{min-width:0;width:100%;padding:clamp(.45rem,1.7vw,.85rem);text-align:center;display:flex;flex-direction:column;align-items:center;cursor:pointer;color:#edf7f4;gap:.45rem;margin:0;overflow-wrap:anywhere}
.achievement-tile .achievement-card-head{display:flex;flex-direction:column;align-items:center;gap:.3rem;width:100%}
.achievement-tile h3{font-size:clamp(.72rem,2.4vw,.95rem);line-height:1.3;margin:0;flex:1;color:#edf7f4}
.achievement-tile .achievement-xp{font-size:.65rem}
.achievement-tile .achievement-progress-copy{font-size:.62rem;line-height:1.3;margin:0}
.achievement-tile .achievement-icon{width:36px;height:36px}
.achievement-tile .achievement-meter{width:100%}
.achievement-detail-icon{width:64px;height:64px;color:#64d4ba;margin:1rem auto}
.achievement-detail-icon svg{width:100%;height:100%}
@media(prefers-reduced-motion:reduce){.achievement-group-title::before{transition:none}}
