@font-face{font-family:Bulo;src:url('assets/bulo.ttf') format('truetype');font-display:swap}
:root{--page:#dde1e1;--ink:#35424d;--nav:#5c6672;--board:#7795a2;--spot:#93b5c3;--paper:#fcfefd;--accent:#e74768;--mint:#cbe4df;--radius:14px;--font:Bulo,ui-rounded,system-ui,sans-serif}
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--page);font-family:system-ui,sans-serif;-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{font-family:var(--font);font-size:17px;border:0;cursor:pointer;color:inherit}button:disabled{opacity:.48;cursor:default}button:focus-visible,a:focus-visible{outline:3px solid var(--accent);outline-offset:3px}a{color:inherit}h1,h2,p{margin:0}h1,h2,.section-pill,.eyebrow{font-family:var(--font)}.masthead{height:96px;background:var(--nav);color:white;display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - 1100px)/2));box-shadow:0 5px 12px #25384320}.brand{display:flex;align-items:center;gap:18px;text-decoration:none}.brand img{width:223px;height:auto;filter:drop-shadow(0 3px 1px #26333d40)}.brand span{font:17px var(--font);letter-spacing:3px;border-left:1px solid #ffffff40;padding-left:19px}.masthead nav{display:flex;align-items:center;gap:10px}.quiet,.help{background:#ffffff20;color:white;border-radius:11px;padding:12px 15px}.help{width:43px;padding:10px;font-size:23px}main{max-width:1148px;margin:auto;padding:36px 24px 20px}.intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:27px}.eyebrow{letter-spacing:2px;font-size:12px;color:#687c82;margin-bottom:8px}h1{font-size:34px;line-height:1.15}.preview{font-size:10px;letter-spacing:1.5px;border:1px solid #cad8d8;border-radius:50px;padding:8px 12px;color:#718589}.layout{display:grid;grid-template-columns:minmax(0,650px) minmax(260px,1fr);gap:42px;align-items:start}.game{border-radius:19px;box-shadow:0 5px 0 #aebdc0,0 15px 35px #26465312;overflow:hidden;background:var(--paper)}.game-heading{display:flex;justify-content:space-between;align-items:center;padding:18px 22px 15px;gap:12px}.section-pill{display:inline-block;color:white;background:var(--accent);border:3px solid white;outline:1px solid #dbe3e2;border-radius:10px;padding:4px 10px;font-size:18px;line-height:1.15}.game-heading p{font-size:12px;color:#71818a;margin:6px 0 0 4px}.scoreboard{display:flex;gap:18px;text-align:center}.scoreboard small{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.7px;margin-bottom:3px}.scoreboard strong{font:31px var(--font)}.scoreboard .target{border-left:1px solid #dbe4e5;padding-left:18px}.target strong{color:var(--accent)}.board-surround{background:var(--board);padding:20px;box-shadow:inset 0 6px 8px #293a4640,inset 0 -2px 0 #516c76}.board{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;aspect-ratio:1}.cell{border-radius:18%;padding:0;min-width:0;position:relative;background:var(--spot);aspect-ratio:1;display:flex;align-items:center;justify-content:center;transition:background .16s;isolation:isolate}.cell.empty.center::after{content:'•';color:#7698a7;font:20px var(--font)}.tile{color:#080b0d;background:linear-gradient(#f9faf9,#eceeed);border:1px solid #fff;box-shadow:0 2px 0 #c8cccb,0 4px 0 #536874,0 6px 5px #283e4940;transform:translateY(calc(var(--height,1) * -1px));font:clamp(18px,2.4vw,31px) var(--font);line-height:1}.cell.tile::after{content:'';position:absolute;inset:-1px;border-radius:inherit;pointer-events:none}.cell.tile.stacked{box-shadow:0 2px 0 #aaaead,0 3px 0 #f0f2f0,0 5px 0 #8e9697,0 6px 0 #d3d9d7,0 8px 0 #4c6069,0 10px 5px #283e4940}.height{font:10px var(--font);position:absolute;right:4px;top:3px}.cell.draft{color:var(--accent);outline:2px solid var(--accent);outline-offset:-2px;background:#fff4f6;z-index:2}.cell.draft::before{content:'';position:absolute;width:4px;height:4px;border-radius:50%;bottom:4px;left:4px;background:var(--accent)}.board.selecting .cell:hover{outline:2px solid white;outline-offset:-2px}.cell.land{animation:land .25s ease-out}.tray{background:#6c8996;padding:16px 23px 22px;box-shadow:inset 0 4px 8px #253d4530}.tray-heading{display:flex;justify-content:space-between;font:11px var(--font);letter-spacing:1.4px;color:#f6fbfa;margin-bottom:13px}.rack{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.rack-slot{min-width:0;aspect-ratio:1.05;background:#819eaa;border-radius:15%;position:relative;box-shadow:inset 0 -3px 0 #5b7580}.rack-tile{width:100%;height:100%;border-radius:15%;font:clamp(23px,3.8vw,44px) var(--font);touch-action:none;user-select:none}.rack-tile.selected{transform:translateY(-7px);outline:3px solid var(--accent);outline-offset:0;background:#fff4f6;color:var(--accent);box-shadow:0 3px 0 #c5bebf,0 7px 0 #526b76,0 11px 10px #273e4960}.play-area{padding:12px 20px 19px}#message{font-size:13px;line-height:1.45;min-height:36px;text-align:center;display:flex;align-items:center;justify-content:center;margin-bottom:10px}#message.error{color:#b52d48}#message.success{color:#247361}.controls{display:grid;grid-template-columns:1fr 1fr 1.35fr;gap:10px}.primary,.secondary{min-height:48px;border-radius:10px;padding:10px 15px;box-shadow:0 3px 0 #b8c7c8}.secondary{background:#e7eeed}.primary{background:var(--accent);color:white;box-shadow:0 3px 0 #b22d49;display:flex;justify-content:center;align-items:center;gap:20px}.primary:not(:disabled):hover{background:#d93c5e}.primary span{font-size:24px}.secondary:not(:disabled):hover{background:#dae6e4}.wide{width:100%}aside{padding-top:4px}.brief h2{font-size:35px;line-height:1.08;margin:21px 0 15px}.brief p{font-size:15px;line-height:1.65;color:#62727b;margin-bottom:12px}.brief b{color:var(--ink)}.text-button{padding:9px 0;background:none;color:#527e87;font-size:15px;text-align:left}.text-button:hover{text-decoration:underline}.attempt-section{margin-top:30px}.section-line{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.section-line h2{font-size:22px}.section-line>span{font:14px var(--font);color:#819298}.attempt{width:100%;padding:13px 15px;min-height:64px;border-radius:12px;background:#fff;margin:0 0 10px;display:flex;align-items:center;gap:13px;text-align:left;border:1px solid #dde6e4;box-shadow:0 3px 0 #d7e0de}.attempt .number{font:16px var(--font);width:28px;height:28px;flex-shrink:0;background:#edf2f0;display:grid;place-items:center;border-radius:50%;color:#8a999d}.attempt .words{flex:1;font:16px var(--font)}.attempt small{display:block;font:11px system-ui;margin-top:3px;color:#87949a}.attempt .points{font:25px var(--font);color:#58717d}.attempt.empty{background:transparent;box-shadow:none;border:1px dashed #c8d6d4}.attempt.empty .words{color:#9aa7a8;font-size:14px}.attempt.best{border:2px solid var(--accent);padding:12px 14px}.attempt.best .points{color:var(--accent)}#finish-actions{margin-top:17px}#finish-actions .text-button{text-align:center;padding:17px 0 0}.full-game{border-top:1px solid #d5dfdd;margin-top:29px;padding-top:25px;display:flex;gap:15px}.full-game h2{font-size:21px}.full-game p{font-size:12px;line-height:1.6;margin:7px 0 12px;color:#738289}.mini-tiles{display:flex;align-items:start;gap:2px;padding-top:6px;min-width:68px}.mini-tiles span{font:23px var(--font);background:#fff;padding:3px 6px;border-radius:6px;box-shadow:0 3px 0 #b6c4c5;transform:rotate(-12deg)}.mini-tiles span:nth-child(2){margin-top:14px;margin-left:-6px;transform:rotate(10deg)}.mini-tiles span:nth-child(3){margin-top:35px;margin-left:-15px;transform:rotate(-8deg);color:var(--accent)}.store-links{display:flex;gap:14px;flex-wrap:wrap;font:13px var(--font)}footer{display:flex;justify-content:space-between;margin-top:33px;color:#7b8c91;font-size:11px;padding-bottom:12px}dialog{border:0;border-radius:22px;background:var(--paper);color:var(--ink);padding:30px;max-width:480px;width:calc(100% - 32px);max-height:85dvh;box-shadow:0 20px 80px #142c4460}dialog::backdrop{background:#223a4a80;backdrop-filter:blur(4px)}.dialog-close{display:block;margin-left:auto;background:#e3ebe9;padding:10px 15px;border-radius:10px;margin-bottom:16px}dialog h2{font-size:30px;margin-bottom:15px}dialog h3{font:20px var(--font);margin-bottom:6px}dialog p,dialog li{font-size:14px;line-height:1.7;color:#62727b}dialog li{margin:12px 0}dialog ol{padding-left:22px}dialog .example{display:flex;justify-content:center;gap:5px;margin:20px 0}.example span{background:#edf0ee;border-radius:8px;box-shadow:0 3px 0 #a1b4b9;padding:10px 14px;font:30px var(--font)}.example span.changed{background:#ffe2e8;color:var(--accent);transform:translateY(-5px)}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:25px 0}.stats-grid div{background:#e9f0ed;padding:18px 7px;text-align:center;border-radius:12px}.stats-grid strong{display:block;font:32px var(--font)}.stats-grid small{font-size:11px}textarea{width:100%;height:190px;border:1px solid #b9ccc9;border-radius:10px;padding:14px;font:14px system-ui;color:var(--ink);background:#f0f5f2;margin:15px 0}.drag-ghost{position:fixed;pointer-events:none;z-index:100;background:#fff3f4;color:var(--accent);font:40px var(--font);border:2px solid white;box-shadow:0 4px 0 #9aa8ad,0 8px 12px #2346;border-radius:12px;width:60px;height:60px;display:grid;place-items:center;transform:translate(-50%,-65%)}.drag-over{outline:3px solid var(--accent)!important}.rack-tile.hop{animation:hop .72s cubic-bezier(.4,0,.25,1)}@keyframes hop{0%,100%{transform:translateY(0) rotate(0)}45%{transform:translateY(-55px) rotate(var(--tilt,12deg)) scale(1.08)}75%{transform:translateY(-5px) rotate(-4deg)}}@keyframes land{0%{transform:translateY(-13px) scale(1.08)}65%{transform:translateY(1px) scale(.95)}100%{transform:translateY(calc(var(--height,1) * -1px))}}
@media(min-width:1100px){.board-surround{padding:21px 25px}.layout{grid-template-columns:620px 1fr;gap:55px}.rack{gap:12px}.tray{padding-left:32px;padding-right:32px}}
@media(max-width:800px){.masthead{height:75px;padding:0 18px}.brand img{width:165px}.brand{gap:10px}.brand span{font-size:12px;letter-spacing:2px;padding-left:10px}.quiet{padding:10px;font-size:14px}main{padding:25px 16px}.intro{margin-bottom:20px}.intro h1{font-size:27px}.preview{display:none}.layout{grid-template-columns:minmax(0,1fr);gap:27px;max-width:600px;margin:auto}aside{display:grid;grid-template-columns:1fr 1fr;gap:25px}.brief{grid-column:2;grid-row:1}.brief h2{font-size:28px}.attempt-section{grid-column:1;grid-row:1;margin-top:0}.full-game{grid-column:1/-1;margin-top:0}.cell.tile{font-size:clamp(20px,4.5vw,32px)}.rack-tile{font-size:clamp(28px,7vw,43px)}footer{gap:15px}.intro{max-width:600px;margin-left:auto;margin-right:auto}}
@media(max-width:480px){.masthead{padding:0 13px;height:69px}.brand img{width:138px}.brand span{font-size:10px;letter-spacing:1px;padding-left:8px}.masthead nav{gap:6px}.quiet{font-size:12px;padding:9px 8px}.help{font-size:19px;width:30px;padding:6px}#sound{font-size:0}#sound::after{content:'♪';font-size:20px}main{padding:22px 10px 12px}.intro{padding:0 8px;margin-bottom:18px}.eyebrow{font-size:10px;letter-spacing:1.4px}h1,.intro h1{font-size:26px}.game{border-radius:14px}.game-heading{padding:13px 13px 12px}.section-pill{font-size:16px;padding:3px 8px}.game-heading p{font-size:10px}.scoreboard{gap:11px}.scoreboard .target{padding-left:11px}.scoreboard strong{font-size:27px}.scoreboard small{font-size:8px}.board-surround{padding:15px 11px 19px}.board{gap:4px}.cell.tile{font-size:22px}.height{font-size:8px;right:2px;top:2px}.tray{padding:12px 14px 17px}.rack{gap:7px}.tray-heading{font-size:9px;letter-spacing:1px;margin-bottom:10px}.play-area{padding:10px 12px 15px}.controls{gap:8px}.primary,.secondary{font-size:16px;padding:9px;min-height:45px}#message{font-size:12px;min-height:34px;margin-bottom:7px}.layout{gap:25px}aside{display:flex;flex-direction:column;padding:0 9px;gap:24px}.attempt-section{order:0}.brief{order:1}.brief h2{font-size:29px;margin:16px 0 10px}.brief h2 br{display:none}.brief h2 br::after{content:' '}.brief p{font-size:14px}.full-game{order:2;padding-top:23px}.attempt{min-height:58px;margin-bottom:9px}footer{flex-direction:column;text-align:center;gap:7px}.cell.draft{outline-width:2px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Size the desktop board to the available height so the rack and Play stay in view. */
@media(min-width:801px){
 .layout{grid-template-columns:minmax(0,clamp(370px,calc(100dvh - 490px),570px)) minmax(280px,1fr);gap:40px}
 main{max-width:1080px;padding-top:25px}.intro{margin-bottom:22px}
 .board-surround{padding:18px}.tray{padding:13px 21px 19px}.rack{gap:8px}
 .rack-tile{font-size:clamp(26px,4vmin,40px)}
 .brief{max-width:380px}.brief h2{font-size:32px}
}
.attempt.empty:disabled{opacity:1}.attempt.empty .words{color:#788b91}

/* Tile faces use the same unsynthesized font and geometry on every device. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;font-synthesis:none}
@font-face{font-family:Bulo;src:url('assets/bulo.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
.tile,.rack-tile{font-weight:400;font-synthesis:none;padding:0;display:grid;place-items:center;line-height:1;color:#080b0d;user-select:none;-webkit-user-select:none}
.cell,.rack-slot{container-type:inline-size}.board{isolation:isolate}
.cell.tile{z-index:1;box-shadow:0 2px 0 #c7cccb,0 4px 0 #66777a,0 10px 6px -2px #223b4f80,0 16px 11px -5px #20394350}
.cell.tile.stacked{box-shadow:0 2px 0 #aaaead,0 3px 0 #f0f2f0,0 5px 0 #8e9697,0 6px 0 #d3d9d7,0 8px 0 #4c6069,0 16px 8px -3px #20394390,0 23px 14px -7px #20394360}
.tile .letter{font:400 65cqw/1 Bulo,ui-rounded,sans-serif;pointer-events:none;display:block}
.cell .height{font:400 19cqw/1 Bulo,ui-rounded,sans-serif;right:5%;top:5%;pointer-events:none}
.cell.draft{background:linear-gradient(#f9faf9,#eceeed);color:#080b0d;outline:2px solid var(--accent);outline-offset:-2px;z-index:3;touch-action:none}
.cell.draft::before{display:none}.rack-tile.selected{color:#080b0d;background:linear-gradient(#f9faf9,#eceeed)}
.rack-tile{touch-action:none;position:relative;box-shadow:0 2px 0 #c7cccb,0 4px 0 #536874,0 10px 7px -3px #20394380}
.airborne{position:fixed!important;z-index:10000;pointer-events:none;container-type:inline-size;border-radius:15%;margin:0;opacity:1!important;will-change:transform}
.drag-ghost{container-type:inline-size;z-index:10001;border:1px solid white;color:#080b0d;background:linear-gradient(#f9faf9,#eceeed);border-radius:15%;transform:translate(-50%,-65%) scale(1.1);box-shadow:0 3px 0 #9aa8ad,0 15px 15px #2346;padding:0}
.drag-source{opacity:.25}.rack-slot.drag-over{outline:2px solid var(--accent)}
.masthead nav button{height:44px;min-height:44px;display:grid;place-items:center;padding-top:0;padding-bottom:0}.masthead .help{line-height:1}
.controls button{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;white-space:nowrap;font:400 17px/1 Bulo;padding:10px 8px}
.controls .control-icon{font:400 21px/1 system-ui,sans-serif;display:block;flex:none}.controls button>span:not(.control-icon){font-size:inherit;line-height:1}
.store-links{align-items:center;gap:10px}.store-links a{display:inline-flex}.store-links img{display:block;height:40px;width:auto;max-width:100%}
@media(max-width:480px){.masthead nav button{height:38px;min-height:38px}.controls button{font-size:15px;gap:6px}.controls .control-icon{font-size:19px}.board{gap:5px}.store-links img{height:37px}}

.controls .control-icon{width:20px;height:20px;display:grid;place-items:center}.control-icon svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* Cast shadows belong to the receiving square, just as in native Tile/TileBase.
   The small exterior shadow only joins a tile to its base; it is not the cast. */
.cell.tile{box-shadow:0 2px 0 #c7cccb,0 4px 0 #63767c,0 5px 2px #24394365}
.cell.tile.stacked{box-shadow:0 2px 0 #aaaead,0 3px 0 #f0f2f0,0 5px 0 #8e9697,0 6px 0 #d3d9d7,0 8px 0 #4c6069,0 9px 2px #24394370}
.cast-shadow{position:absolute;inset:0;border-radius:inherit;z-index:4;pointer-events:none;background:linear-gradient(to bottom,rgba(0,0,0,var(--shadow-opacity)) 0%,transparent var(--shadow-end))}
.rack-tile{box-shadow:0 2px 0 #c7cccb,0 4px 0 #536874,0 7px 3px -1px #20394385}

.board{position:relative}
.board-shadow-layer{position:absolute;inset:0;width:100%;height:100%;z-index:6;overflow:visible;pointer-events:none}
.board .cell.draft{outline:none}

.cell .height{font-size:28cqw;top:4%;right:5%}
#finish-actions .solution-button{margin-top:12px;min-height:50px;background:var(--mint);color:var(--ink);font-size:19px;text-align:center;border:1px solid #a2c7c2}
.debug-reset{font-size:12px;background:#e1e9e6;padding:9px 12px;border-radius:8px;color:#63787e}
footer{flex-wrap:wrap;align-items:center;gap:12px}

/* 25% tighter than the previous 5px board gutters, on every screen size. */
.board{gap:3.75px}

/* A face-attached border shares the tile transform and receives the lighting above it. */
.board .cell.draft::after{inset:-1px;border:2px solid var(--accent);border-radius:inherit}
.game{--tile-gutter:1.875px;--tray-inset:20px}
.board,.rack{gap:var(--tile-gutter)}
.tray{padding-left:var(--tray-inset);padding-right:var(--tray-inset)}
.rack-slot{aspect-ratio:1;border-radius:18%}.rack-tile{border-radius:18%}
@media(min-width:801px){.game{--tray-inset:18px}}
@media(max-width:480px){
 .game{--tray-inset:11px}
 #sound{font-size:12px;width:45px;line-height:1.05;padding:3px 5px}
 #sound::after{content:none}
 #sound[aria-pressed="false"]{background:#ffffff12;color:#e2e7e9}
 #sound[aria-pressed="true"]{background:var(--mint);color:var(--ink)}
}
@media(max-width:360px){.brand span{display:none}}

/* Center each action as an icon above its label. */
.controls button{flex-direction:column;gap:6px;min-height:66px;text-align:center}
.controls .control-icon{width:23px;height:23px}

.rack-tile.drag-source{opacity:0}
.recall-flight{border-radius:18%;transform-origin:top left}
#message{position:fixed;z-index:10002;top:90px;left:12px;right:12px;max-width:440px;margin:0 auto;padding:14px 18px;min-height:0;border:2px solid white;border-radius:12px;background:var(--page);box-shadow:0 4px 0 #44596555,0 8px 18px #25384330;font:17px/1.3 var(--font);pointer-events:none}
#message[hidden]{display:none}
#message.error{border-color:var(--accent)}
@media(max-width:480px){#message{top:78px;font-size:15px}}

.game-column{min-width:0}
.layout .full-game{margin:22px 0 0;padding:18px 4px 0}
.board-surround{position:relative}
#message{position:absolute;top:28px;left:var(--tray-inset);right:var(--tray-inset);max-width:440px;z-index:20}
@media(max-width:480px){#message{top:23px}}

.layout .full-game{flex-wrap:wrap}
.layout .full-game .store-links{flex-basis:100%;justify-content:center}

.layout .full-game{flex-direction:column;align-items:center}
.full-game-heading{display:flex;align-items:center;gap:15px;max-width:100%}
.full-game-heading>div:last-child{min-width:0}
.layout .full-game .store-links{flex-basis:auto;width:100%}

#message{top:-24px}
.learn-button{margin-top:8px;padding:12px 16px}

.welcome-rules{margin-top:14px;min-height:50px;font-size:19px;background:var(--mint);color:var(--ink);border:1px solid #a2c7c2}

#welcome-play{margin-top:32px;font-size:19px;min-height:50px}

.full-game[hidden]{display:none}
.completion-card{padding:22px;background:var(--paper);border:2px solid var(--mint);border-radius:16px;box-shadow:0 4px 0 #b8c7c8}
.completion-card h2{font-size:28px;margin-bottom:10px}
.completion-card p{line-height:1.5;margin-bottom:14px}
.completion-card .store-links{justify-content:center;margin:18px 0}
.completion-card #share{margin-top:16px}
dialog{max-height:calc(100dvh - 24px);overflow:auto;overscroll-behavior:contain}
dialog.welcome-dialog[open]{display:flex;flex-direction:column;overflow:hidden}
.welcome-dialog .dialog-close{flex-shrink:0}
.welcome-dialog #dialog-body{display:flex;flex-direction:column;min-height:0;overflow:hidden}
.welcome-copy{min-height:0;overflow:auto;overscroll-behavior:contain}
.welcome-copy .section-pill{margin:2px}
.welcome-dialog #welcome-play,.welcome-dialog #welcome-rules{flex-shrink:0}
@media(max-width:800px){
 .layout>.brief{grid-column:auto;grid-row:auto}
 .layout>.brief h2{font-size:26px;margin:12px 0 8px}
 .layout>.brief h2 br{display:none}
 .layout>.brief p{font-size:14px;margin-bottom:8px;line-height:1.4}
 .layout>.brief{padding:0 8px;max-width:none}
 aside{display:block}
}
@media(max-width:480px){
 dialog{padding:18px;width:calc(100% - 24px)}
 .welcome-dialog .dialog-close{margin-bottom:10px;padding:8px 12px}
 .welcome-dialog h2{font-size:26px;margin-bottom:10px}
 .welcome-dialog li{margin:9px 0;line-height:1.45}
 .welcome-dialog #welcome-play{margin-top:18px}
 .welcome-dialog #welcome-rules{margin-top:10px}
}

.layout .full-game{align-items:flex-start;padding-right:20px;text-align:left}
.full-game-heading{justify-content:flex-start;width:100%;text-align:left}
.layout .full-game .store-links{justify-content:flex-start}
@media(max-width:800px){.layout>.brief{order:-1}}

@media(max-width:800px){
 .brief,.attempt-section{display:none}
 .layout>aside{display:none}
 .masthead .brand span{display:none}
 .masthead #help{width:82px;font-size:13px;line-height:1.05;padding:4px 7px;background:var(--accent);color:white}
}
@media(max-width:360px){.masthead .brand img{width:100px}.masthead nav{gap:5px}}

@media(max-width:800px){.game-heading .attempt .number{display:inline;white-space:nowrap}}

#result-dialog .completion-card{margin:0;padding:0;border:0;box-shadow:none}
#result-dialog .store-links{justify-content:center}

#message{white-space:pre-line}

.welcome-copy p{font-weight:600;color:var(--ink)}
.welcome-copy li{font-weight:500;color:var(--ink)}
.stack-example{margin:18px 0}
.stack-example figcaption{font:600 14px/1.4 system-ui,sans-serif;text-align:center}
.stack-example-words{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:12px}
dialog .stack-example .example{margin:0;gap:3px}
.stack-example .example span{font-size:24px;padding:8px 9px}
.stack-example .example .changed{transform:translateY(-3px);box-shadow:0 3px 0 #d4b9be,0 6px 0 #98aaaf}
.example-arrow{font-size:22px}
@media(max-width:360px){.stack-example-words{gap:7px}.stack-example .example span{font-size:22px;padding:7px}}

/* Keyboard focus follows the face, rather than extending into adjacent cells. */
.board .cell:focus-visible{outline:none!important;z-index:7}
.board .cell:focus-visible::after{content:'';position:absolute;inset:0;border:2px solid var(--accent);border-radius:inherit;pointer-events:none}
.board .cell.tile:focus-visible::after{inset:-1px}

/* One compact promo: large UP! at left, copy and badges aligned at right. */
.layout .full-game{display:grid;grid-template-columns:80px minmax(0,1fr);column-gap:14px;row-gap:10px;padding-right:14px;align-items:start}
.layout .full-game[hidden]{display:none}
.full-game-heading{display:contents}
.full-game-heading .mini-tiles{grid-column:1;grid-row:1 / 3;position:relative;align-self:stretch;min-height:130px;padding:0;min-width:0}
.full-game-heading .mini-tiles span{position:absolute;font-size:36px;line-height:1;width:48px;height:48px;padding:6px;text-align:center;margin:0;left:0;top:4px;border-radius:9px}
.full-game-heading .mini-tiles span:nth-child(2){left:20px;top:43px;transform:rotate(10deg)}
.full-game-heading .mini-tiles span:nth-child(3){left:29px;top:83px;transform:rotate(-8deg)}
.full-game-heading>div:last-child{grid-column:2;grid-row:1}
.full-game-heading p{margin-bottom:0}
.layout .full-game .store-links{grid-column:2;grid-row:2;display:flex;flex-wrap:nowrap;gap:8px;align-self:end}
.layout .full-game .store-links a{min-width:0;flex:1;max-width:135px}
.layout .full-game .store-links img{width:100%;height:auto}
@media(max-width:360px){.layout .full-game{grid-template-columns:72px minmax(0,1fr);gap:10px;padding-right:8px}}

/* Compact attempts on every screen. */
 .game-heading{flex-wrap:wrap;gap:8px}
 .game-heading #attempts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;width:100%}
 .game-heading .attempt{display:flex;justify-content:center;gap:8px;min-height:40px;margin:0;padding:6px 8px;border-radius:8px;box-shadow:none;background:#e7eeed;border:1px solid #c6d3d2}
 .game-heading .attempt .number{width:auto;height:auto;background:none;font-size:13px;color:var(--ink)}
 .game-heading .attempt .number::before{content:'Play '}
 .game-heading .attempt .words{display:none}
 .game-heading .attempt .points{font-size:20px}
 .game-heading .attempt.empty{opacity:.5;background:#e7eeed;border-style:solid}
 .game-heading .attempt.best{border:2px solid var(--accent);padding:5px 7px}
 .game-heading .attempt[aria-pressed="true"]{background:var(--mint)}

.game-heading .attempt .number{display:inline;white-space:nowrap}
.attempt-section{display:none}
.board-score-layer{position:absolute;inset:0;width:100%;height:100%;z-index:8;overflow:visible;pointer-events:none}
.game-heading{position:relative}
#message{top:8px;bottom:auto}

#message{pointer-events:auto;cursor:pointer}

/* Native-style word feedback stays attached to each tile during its landing. */
.word-glow{position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;z-index:3;opacity:0;animation:word-glow .7s linear both}
.word-glow.good{background:rgba(35,195,75,.34)}
.word-glow.bad{background:rgba(252,36,51,.5)}
@keyframes word-glow{0%{opacity:0}20%{opacity:1}100%{opacity:0}}
.tray{padding-top:24px}
.controls button{min-height:44px;padding:10px 8px;gap:0}
.controls .control-icon{display:none}
body,input,select,textarea{font-family:var(--font)}
#result-dialog{position:relative}
#result-dialog .completion-card{font-family:var(--font);font-size:19px;line-height:1.35}
#result-title{font-size:32px;line-height:1.15;margin-bottom:16px}
#result-dialog #finish-score{font-family:var(--font);font-size:29px;line-height:1.2;color:var(--ink);margin:14px 0 20px}
#result-dialog.perfect-result #result-title{color:var(--accent)}
.confetti{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none;z-index:30}
 .confetti-fall{position:absolute;top:-18px;animation:paper-fall var(--fall-time) linear var(--delay) both}
.confetti-sway,.confetti-spin,.confetti i{display:block}
.confetti-sway{animation:paper-sway var(--sway-time) ease-in-out var(--phase) infinite alternate}
.confetti-spin{animation:paper-spin var(--spin-time) linear var(--phase) infinite;animation-direction:var(--direction)}
.confetti i{border-radius:1px;animation:paper-flip-x var(--flip-time) ease-in-out var(--phase) infinite}
.confetti i.flip-y{animation-name:paper-flip-y}
@keyframes paper-fall{from{transform:translate(0,0)}to{transform:translate(var(--drift),var(--fall-distance))}}
@keyframes paper-sway{from{transform:translateX(calc(-1 * var(--sway)))}to{transform:translateX(var(--sway))}}
@keyframes paper-spin{to{transform:rotate(360deg)}}
@keyframes paper-flip-x{0%,100%{transform:scaleX(1)}50%{transform:scaleX(.08)}}
@keyframes paper-flip-y{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.08)}}
#result-dialog .result-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px}
.result-heading .mini-tiles{padding:0;min-height:65px}
.result-heading .mini-tiles span{font-size:27px}
#result-dialog .result-heading .dialog-close{margin-bottom:0}
#result-dialog #result-title{font-size:30px;color:var(--ink)}
#result-dialog.perfect-result #result-title span{color:var(--accent)}
#result-dialog .store-links{justify-content:flex-start}
@media(prefers-reduced-motion:reduce){.word-glow{animation:none!important;opacity:1}.confetti{display:none}}

/* Center the compact copy and badges together alongside the UP! tiles. */
.layout .full-game{grid-template-rows:1fr auto auto 1fr;row-gap:0}
.full-game-heading .mini-tiles{grid-row:1 / 5}
.full-game-heading>div:last-child{grid-row:2}
.layout .full-game h2{margin:0 0 4px;line-height:1.15}
.layout .full-game p{margin:0;line-height:1.3}
.layout .full-game .store-links{grid-row:3;align-self:start;margin:8px 0 0;padding:0}

@media(min-width:801px){
 .layout>aside{align-self:stretch;display:flex;flex-direction:column;gap:24px}
 .layout>aside>.full-game{margin-top:auto;padding-top:18px;max-width:380px;width:100%;flex-shrink:0}
}

@media(min-width:801px){
 .layout>aside>.full-game{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto}
 .layout>aside>.full-game .mini-tiles{display:none}
 .layout>aside>.full-game .full-game-heading>div:last-child{grid-column:1;grid-row:1}
 .layout>aside>.full-game .store-links{grid-column:1;grid-row:2}
}

@media(min-width:801px){.layout>aside>.full-game{padding-bottom:12px}}

@media(min-width:801px){.layout>aside>.full-game{border-top:0}}

/* Give the celebration logo three distinct tile faces against the page color. */
#result-dialog{background:#eef3f2}
#result-dialog .completion-card{background:transparent}
.result-heading .mini-tiles{position:relative;width:102px;min-width:102px;height:68px}
.result-heading .mini-tiles span{position:absolute;display:grid;place-items:center;width:36px;height:36px;padding:0;margin:0;left:0;top:2px;line-height:1}
.result-heading .mini-tiles span:nth-child(2){left:31px;top:14px;margin:0}
.result-heading .mini-tiles span:nth-child(3){left:62px;top:27px;margin:0}

#share-board{margin-top:10px}
#reveal[hidden]{display:none}

.share-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}
#result-dialog .share-actions button{margin:0;min-width:0;font-family:var(--font);font-size:17px;line-height:1.15}

#result-dialog.perfect-result #result-title{color:var(--ink)}
#result-dialog.perfect-result #result-title span{color:var(--accent)}

@media(max-width:800px){
 .masthead #help{display:none}
 .masthead #sound{width:auto;min-width:70px;white-space:nowrap;padding:8px 10px;font-size:13px;line-height:1}
 .game-heading>div:first-child>.section-pill{height:34px;display:inline-flex;align-items:center;white-space:nowrap}
 .game-heading #show-best-play{margin:0 0 0 auto;height:34px;min-height:34px;padding:0 10px;font-size:14px;line-height:1;white-space:nowrap;align-self:flex-start}
}

/* Center results in the visible viewport at every screen size. */
#result-dialog{position:fixed;inset:auto;top:var(--result-center-y,50dvh);left:var(--result-center-x,50vw);transform:translate(-50%,-50%);margin:0;max-height:var(--result-max-height,calc(100dvh - 24px));max-width:min(480px,var(--result-max-width,calc(100vw - 24px)));overflow:auto}

/* Shared controls retain their icon when their text changes during image preparation. */
.share-actions button{gap:7px;padding-left:9px;padding-right:9px}
.share-actions button::before{content:"";width:19px;height:21px;flex:0 0 19px;background:currentColor;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 15V2m-4 4 4-4 4 4M6 10H4v12h16V10h-2' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
.masthead #help{display:none}
.board .cell.empty{background:transparent}
.board .cell.empty::before{content:"";position:absolute;inset:3%;border-radius:18%;background:var(--spot);pointer-events:none}
@media(min-width:801px){.layout>aside>.full-game{padding-bottom:19px}}

.board .cell.empty:focus-visible::after{inset:3%}

.share-actions button::before{transform:translateY(-2px)}

#result-dialog.perfect-result #finish-score{color:var(--accent)}

/* Compact wordmark and the playful Up! mark. */
.masthead .brand{gap:12px;flex-shrink:0}
.masthead .brand strong{font:34px/1 Bulo;color:white}
.masthead .brand span{display:block;font:21px/1 Bulo;letter-spacing:1px;padding-left:12px}
.masthead nav{margin-left:auto;margin-right:26px}
.masthead .nav-up{position:relative;width:76px;height:58px;min-width:76px;padding:0}
.masthead .nav-up span{position:absolute;width:32px;height:32px;padding:3px 0;text-align:center;font:25px/1 Bulo;color:var(--ink);margin:0;left:0;top:1px}
.masthead .nav-up span:nth-child(2){left:24px;top:11px}
.masthead .nav-up span:nth-child(3){left:48px;top:23px;color:var(--accent)}
@media(max-width:800px){
 .masthead{padding-left:12px;padding-right:12px;gap:8px}
 .masthead .brand{gap:7px}.masthead .brand strong{font-size:23px}
 .masthead .brand span{font-size:14px;padding-left:7px}
 .masthead nav{margin-right:3px;gap:5px}
 .masthead .nav-up{width:48px;min-width:48px;height:40px}
 .masthead .nav-up span{width:22px;height:22px;font-size:18px;padding:2px 0;border-radius:5px}
 .masthead .nav-up span:nth-child(2){left:15px;top:8px}
 .masthead .nav-up span:nth-child(3){left:30px;top:17px}
 .masthead #sound{min-width:56px;padding:6px 5px;font-size:11px}
 .masthead #stats{padding:6px;font-size:11px}
}
@media(max-width:360px){
 .masthead{padding-left:8px;padding-right:8px;gap:5px}
 .masthead .brand strong{font-size:20px}.masthead .brand span{font-size:12px;padding-left:5px}
 .masthead .brand{gap:5px}.masthead nav{gap:3px}
}

.masthead{justify-content:flex-start;gap:16px}
.masthead nav{margin-right:0}
@media(max-width:800px){.masthead{gap:8px}}
@media(max-width:360px){.masthead{gap:5px}}

/* Let one centered content row determine the bar height, with symmetric edges. */
.masthead{height:auto;min-height:96px;padding-top:19px;padding-bottom:19px;align-items:center}
.masthead>nav,.masthead>.brand,.masthead>.nav-up{align-self:center;margin-top:0;margin-bottom:0}
@media(max-width:800px){.masthead{min-height:75px;padding-top:17px;padding-bottom:17px}}
@media(max-width:480px){.masthead{min-height:69px;padding-top:14px;padding-bottom:14px}}

/* Opaque tile faces remain visible when mobile browsers repaint transformed tiles. */
.board .cell.tile,.rack .rack-tile,.rack-tile.airborne,.drag-ghost{background:#f3f5f4}

/* The Play badge is wider: give each badge its natural aspect ratio at equal height. */
.layout .full-game .store-links,#result-dialog .store-links{display:grid;grid-template-columns:2.9916fr 3.3913fr;gap:10px;width:100%;max-width:290px;align-items:center}
.layout .full-game .store-links a,#result-dialog .store-links a{min-width:0;max-width:none;width:100%}
.layout .full-game .store-links img,#result-dialog .store-links img{display:block;width:100%;height:auto;max-width:none}

.generator-panel{background:var(--paper);border-radius:14px;padding:16px;margin-bottom:24px;font-family:var(--font)}
.generator-panel summary{cursor:pointer;font-size:22px}.generator-panel p{margin:12px 0;line-height:1.4}
.generator-panel form{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.generator-panel label{display:flex;flex-direction:column;gap:6px}.generator-panel input{font:18px var(--font);padding:8px;border:1px solid #b8c7c8;border-radius:8px;width:100%}

.share-actions[hidden]{display:none}

.generator-status{white-space:pre-line}

/* Resting faces sort by physical height, including drafts and keyboard focus.
   Equal heights retain row order, so the nearer (lower) row paints last. */
.board .cell.tile,.board .cell.tile:focus-visible{z-index:var(--height,1)}

.controls button[hidden]{display:none}
.controls.finished{grid-template-columns:1fr}

/* Reviewed rack tiles keep their appearance while remaining disabled. */
.rack-tile:disabled{opacity:1;cursor:default}

.share-actions.score-only{grid-template-columns:1fr}
#share-board[hidden]{display:none}

.trademark-notice{font:inherit;color:inherit}

footer .trademark-notice,footer #next-puzzle{flex:1;min-width:0}
footer .trademark-notice{text-align:left}
footer #next-puzzle{text-align:right}
#debug-reset[hidden]{display:none}
@media(max-width:480px){footer .trademark-notice,footer #next-puzzle{text-align:center;flex:auto}}

@media(max-width:480px){footer .trademark-notice{order:2}}

#message .message-title{display:block;font:22px/1.15 var(--font);margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid #35424d18;color:var(--ink)}
#message .message-description{display:block;font:16px/1.35 var(--font);color:#62727b}
@media(max-width:480px){#message .message-title{font-size:20px}#message .message-description{font-size:15px}}

#message{display:block;text-align:left;background:#eef3f2}
#message .message-title,#message .message-description{text-align:left}

#message .message-total{color:var(--accent)}

#close-result{background:var(--page);color:var(--ink)}

.dialog-heading{display:flex;justify-content:flex-end;align-items:flex-start;gap:20px;margin-bottom:18px}
.welcome-logo{display:none}
.intro-dialog .dialog-heading,.welcome-dialog .dialog-heading{justify-content:space-between}
.intro-dialog .welcome-logo,.welcome-dialog .welcome-logo{display:block}
.dialog-heading .dialog-close{margin-bottom:0;background:var(--page);color:var(--ink)}
#dialog.intro-dialog{background:#eef3f2;border-radius:22px;padding:30px;max-width:480px;width:calc(100% - 24px);max-height:calc(100dvh - 24px);overflow:auto}
.intro-dialog h2{font:30px/1.15 var(--font);margin-bottom:15px}
.intro-dialog p{font:17px/1.45 var(--font);color:#62727b;margin-bottom:24px}
.intro-dialog #intro-play{margin-top:10px}
@media(max-width:480px){#dialog.intro-dialog{padding:22px}.intro-dialog h2{font-size:27px}.intro-dialog p{font-size:16px}}

#intro-learn{background:var(--nav);color:white}
#intro-learn:hover{background:#505b67}

#welcome-rules{background:var(--nav);color:white;margin-top:0}
#welcome-rules:hover{background:#505b67}
#welcome-play{margin-top:10px}

.welcome-dialog .dialog-heading{flex-shrink:0}
.welcome-dialog #dialog-body{padding-bottom:7px}
.welcome-dialog #welcome-play{margin-top:10px}
.welcome-dialog #welcome-rules{margin-top:12px}

dialog,.welcome-copy{overscroll-behavior:contain}


#expand-game[hidden]{display:none}
#expand-game{font:13px var(--font);padding:0 9px;min-height:34px;height:34px;white-space:nowrap;margin-left:6px;align-self:flex-start;background:var(--nav);color:white;box-shadow:none;border-radius:8px}
.expanded-game{position:fixed;z-index:5000;margin:0!important;max-width:none!important;border-radius:0!important;display:flex;flex-direction:column;overflow:hidden;box-shadow:none;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);background:var(--board);touch-action:none}
.expanded-game .game-heading,.expanded-game .tray,.expanded-game .play-area{flex-shrink:0}
.expanded-game .game-heading{background:var(--paper)}
.expanded-game .board-surround{flex:1;min-height:0;display:flex;justify-content:center;align-items:center;padding:8px 12px}
.expanded-game .board,.expanded-game .rack{width:var(--expanded-board-size);max-width:100%;margin:auto}
.expanded-game .tray{padding:12px}
.expanded-game .play-area{padding:10px 12px 14px;background:var(--paper)}
@media(max-width:480px){.game-heading #show-best-play{font-size:12px;padding:0 8px}.game-heading #expand-game{font-size:12px;padding:0 7px}}
.expanded-game .cell.tile,.expanded-game .rack-tile{font-size:calc(var(--expanded-board-size) * .085)}
.expanded-game .height{font-size:clamp(7px,calc(var(--expanded-board-size) * .025),13px)}
@media(max-height:480px) and (orientation:landscape){
 .expanded-game .game-heading{padding:6px 12px}
 .expanded-game .game-heading #attempts{margin-top:5px;gap:6px}
 .expanded-game .game-heading .attempt{min-height:30px;padding:4px 8px}
 .expanded-game .game-heading #date{margin-top:3px;margin-bottom:0}
 .expanded-game .tray{padding:7px 12px}
 .expanded-game .play-area{padding:6px 12px 9px}
}

.game-heading #expand-game{width:34px;min-width:34px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-left:6px}
#expand-game svg{width:21px;height:21px;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}

@media(max-width:800px){.game-heading #show-best-play{font-family:var(--font);font-size:18px}}
@media(max-width:480px){.game-heading #show-best-play{font-size:16px}}

.expanded-game{border-radius:14px!important}

.expanded-backdrop{position:fixed;inset:0;background:var(--page);z-index:4999}
.expanded-backdrop[hidden]{display:none}

@media(min-width:801px){.game-heading #expand-game{margin-left:auto}.expanded-game .game-heading #show-best-play{margin-left:auto;height:34px;min-height:34px;padding:0 10px;font-size:16px}.expanded-game .game-heading #expand-game{margin-left:6px}}

@media(min-width:801px){.game-heading #expand-game,.expanded-game .game-heading #expand-game{margin-left:auto;align-self:flex-start}.game-heading>div:first-child>.section-pill{height:34px;display:inline-flex;align-items:center;white-space:nowrap}}


.game-heading #date{font-size:13px;line-height:1.4}
.today-puzzle-link{color:var(--accent);text-decoration:underline;text-underline-offset:2px;white-space:nowrap}
@media(max-width:480px){.game-heading #date{font-size:12px}}
@media(max-width:800px){
 .game-heading{display:grid;grid-template-columns:minmax(0,1fr) auto 34px;gap:8px;align-items:start}
 .game-heading>div:first-child{display:contents}
 .game-heading>div:first-child>.section-pill{grid-column:1;grid-row:1;justify-self:start}
 .game-heading #show-best-play{grid-column:2;grid-row:1;margin:0}
 .game-heading #expand-game{grid-column:3;grid-row:1;margin:0}
 .game-heading #date{grid-column:1/-1;grid-row:2;margin:0 0 0 4px}
 .game-heading #attempts{grid-column:1/-1;grid-row:2}
}
.game-heading #date{padding-top:5px;padding-bottom:5px}
.game-heading .attempt{min-height:26px;padding-top:0;padding-bottom:0}
.game-heading .attempt.best{padding-top:0;padding-bottom:0}
.today-puzzle-link{display:inline-block;padding:5px 0;margin:-5px 0}
.game-heading #expand-game[hidden]{display:none}
/* Explicit dimensions avoid flex/grid aspect-ratio stretching in mobile browsers. */
.expanded-game .board{width:var(--expanded-board-size);height:var(--expanded-board-size);flex:none;grid-template-rows:repeat(7,minmax(0,1fr));align-self:center}

.scaled-game{position:fixed;z-index:5000;margin:0!important;max-width:none!important;transform-origin:top left;overflow:hidden;touch-action:none}
.game-heading #expand-game{border-radius:10px;box-shadow:0 3px 0 #414b56}

#feedback{color:inherit;text-underline-offset:3px;padding:5px 0}

.masthead #sound{width:38px;min-width:38px;height:38px;padding:7px;display:inline-flex;align-items:center;justify-content:center}
#sound::after{content:none!important}
#sound svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.masthead #feedback{font:17px var(--font);text-decoration:none;padding:12px 15px;color:white;white-space:nowrap}
@media(max-width:800px){.masthead #sound{width:32px;min-width:32px;height:32px;padding:5px}.masthead #feedback{font-size:11px;padding:6px}.masthead #stats,.masthead #feedback{height:32px;display:inline-flex;align-items:center}.masthead{gap:8px}.masthead .brand strong{font-size:20px}}
@media(max-width:360px){.masthead{gap:4px}.masthead .nav-up{width:36px;min-width:36px;transform:scale(.75);transform-origin:left center}.masthead .brand strong{font-size:18px}.masthead .brand span{font-size:11px;padding-left:4px}.masthead .brand{gap:4px}}
.masthead #sound,.masthead #stats,.masthead #feedback{height:44px;display:inline-flex;align-items:center;justify-content:center}
.masthead #sound{width:44px;min-width:44px}
@media(max-width:800px){.masthead #sound,.masthead #stats,.masthead #feedback{height:32px}.masthead #sound{width:32px;min-width:32px}}
@media(max-width:800px){.masthead #sound,.masthead #stats,.masthead #feedback{height:32px;min-height:32px;max-height:32px}}

/* Five-high stacks have reached the stacking limit. */
.board .cell.tile.max-stack::before{content:"";display:block;position:absolute;width:12%;height:12%;left:8%;bottom:8%;border-radius:50%;background:#b32108;pointer-events:none}

.forfeit-actions{display:grid;gap:12px;margin-top:22px}

.game-heading #show-best-play{margin:0 0 0 auto;height:34px;min-height:34px;padding:0 10px;font:16px/1 var(--font);white-space:nowrap;align-self:flex-start;background:var(--accent);color:white;box-shadow:0 3px 0 #b22d49}
@media(max-width:800px){.intro #learn{margin-top:12px;min-height:36px;padding:8px 12px;font-size:16px}.game-heading #show-best-play{grid-column:2;grid-row:1;margin:0;font-size:14px;padding:0 8px}}
@media(max-width:360px){.game-heading #show-best-play{font-size:12px;padding:0 6px}}

.game-heading .attempt .number,.game-heading .attempt .points{line-height:1}

.game-heading .attempt .number{font-size:13px}

@media(max-width:800px){.intro #date{margin:10px 0 0;font-size:16px;line-height:1.4}}

.game-heading #show-best-play{font-size:18px}
.game-heading #attempts{margin-top:5px}
@media(max-width:800px){.game-heading #show-best-play{font-size:16px}}
@media(max-width:360px){.game-heading #show-best-play{font-size:14px}}

/* The regular view has breathing room; expansion measures the compact layout. */
.game:not(.compact-game) .game-heading .attempt{min-height:34px;padding-top:4px;padding-bottom:4px}
.game:not(.compact-game) .game-heading .attempt.best{padding-top:3px;padding-bottom:3px}
.game:not(.compact-game) .game-heading #attempts{margin-top:10px}
.game:not(.compact-game) .game-heading{padding-bottom:20px}
