:root{color-scheme:dark;--ink:#f6ebd2;--muted:#b6bea9;--gold:#ecc381;--green:#203b35;--cream:#fff3dc;--serif:Georgia,'Times New Roman',serif;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}*{box-sizing:border-box}body{margin:0;background:#172a2b;color:var(--ink);min-height:100svh;background-image:radial-gradient(ellipse at 20% 38%,#2b4740 0,transparent 52%),radial-gradient(ellipse at 95% 10%,#243a3b 0,transparent 47%)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,.board:focus-visible{outline:3px solid var(--gold);outline-offset:4px}button:disabled{opacity:.35;cursor:default}.svg-library{position:absolute;width:0;height:0;overflow:hidden}.sky-grain{pointer-events:none;position:fixed;inset:0;opacity:.06;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath filter='url(%23n)' opacity='.7' d='M0 0h140v140H0z'/%3E%3C/svg%3E")}.site-header{max-width:1180px;margin:auto;padding:26px 35px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid #a5b19c26}.club{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font-size:9px;line-height:1.6;letter-spacing:1.8px}.club b{font-size:10px}.club-mark{display:grid;place-items:center;width:36px;height:42px;border:1px solid #c5a66e66;border-radius:20px 20px 14px 14px;color:var(--gold)}.club-mark svg{width:23px;height:23px}.edition{font-size:9px;letter-spacing:2px;color:#bdc4af}nav{display:flex;align-items:center;gap:9px}.icon-button,.language{border:1px solid #bcc4af30;background:#ffffff05;color:var(--ink);height:35px;min-width:35px;border-radius:50%;font-size:17px}.language{border-radius:18px;font-size:11px;padding:0 13px}.icon-button:hover,.language:hover{background:#ffffff12}.sound.off{text-decoration:line-through;color:#8b9b91}main{max-width:1090px;margin:auto;padding:0 35px}.intro{text-align:center;padding:30px 0 26px}.eyebrow{display:flex;justify-content:center;align-items:center;gap:10px;font-size:9px;letter-spacing:2.2px;color:#b6c3ad}.eyebrow>span:first-child{width:5px;height:5px;background:#d7aa68;border-radius:50%}h1{font-family:var(--serif);font-weight:normal;font-size:clamp(38px,5vw,57px);letter-spacing:-2.5px;line-height:1.1;margin:11px 0}h1 em{color:var(--gold);font-weight:normal}p{line-height:1.7}.intro>p{font-size:13px;color:var(--muted);margin:10px 0 0}.play-layout{display:grid;grid-template-columns:minmax(220px,1fr) minmax(320px,450px);gap:68px;max-width:880px;margin:auto;align-items:center}.story-panel{padding:0 15px 25px;text-align:center}.garden-art{width:265px;max-width:100%;margin:-20px auto -14px}.garden-art svg{width:100%;display:block}.chapter{font-size:9px;letter-spacing:2px;color:#d3af76;margin:12px 0}.story-panel h2{font:normal 31px/1.16 var(--serif);margin:11px 0 15px;color:#f7ead1}.story-panel>p:not(.chapter):not(.small-note){color:#b6c2b0;font-size:12px;max-width:250px;margin:0 auto}.milestones{display:flex;max-width:240px;justify-content:space-around;margin:25px auto 0;border-top:1px solid #bbc5ac25;padding-top:19px}.milestones>div{color:#667c70;display:flex;flex-direction:column;align-items:center;transition:color .5s,filter .5s}.milestones svg{height:35px;width:27px}.milestones span{font-size:9px;letter-spacing:.5px;margin-top:8px}.milestones .lit{color:var(--gold);filter:drop-shadow(0 0 10px #edb85a55)}.small-note{font-size:10px;color:#8fa28f}.game-panel{position:relative}.mode-switch{display:flex;background:#0d20228c;padding:5px;border-radius:10px;border:1px solid #a8b49b22;margin-bottom:15px;gap:4px}.mode-switch button{flex:1;background:transparent;border:0;color:#9bae9b;padding:10px 6px;font-size:11px;font-weight:600;border-radius:6px;transition:.2s}.mode-switch button.active{background:#ebd7af;color:#293c34;box-shadow:0 2px 6px #0002}.tiny-star{color:inherit}.score-row{display:flex;align-items:center;gap:26px;padding:4px 1px 15px}.score-row>div{min-width:66px}.score-row>div>span{font-size:9px;letter-spacing:1.5px;color:#9eaf9b;display:block}.score-row strong{display:block;margin-top:3px;font-family:var(--serif);font-size:29px;font-weight:400;line-height:1.1}.restart{margin-left:auto;display:flex;align-items:center;gap:7px;background:#e9d8b214;border:1px solid #d3bd8c44;border-radius:7px;color:#dfc99c;font-size:10px;padding:9px 12px}.restart>span:first-child{font-size:21px;line-height:1}.restart:hover{background:#dfc59625}.board-shell{position:relative;padding:12px;border:1px solid #e0c59155;border-radius:17px;background:linear-gradient(145deg,#5d675366,#47544633);box-shadow:0 16px 45px #07131538,inset 0 0 0 4px #15282544}.board{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;aspect-ratio:1;touch-action:none;user-select:none;outline-offset:8px;border-radius:8px}.tile{min-width:0;position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:1;border:0;border-radius:9px;background:#11262b70;color:#354234;overflow:hidden;padding:0;box-shadow:inset 0 1px 3px #030e1222;transition:background .13s}.tile-number{font:600 32px/1 var(--serif);position:relative;z-index:1;letter-spacing:-1.5px;text-shadow:0 1px #fff2}.tile svg{position:absolute;width:83%;height:83%;bottom:-15%;right:-13%;opacity:.13;transform:rotate(-16deg);pointer-events:none}.tile[data-value="2"]{background:#ede2c8}.tile[data-value="4"]{background:#e4d4a7}.tile[data-value="8"]{background:#dabc7d}.tile[data-value="16"]{background:#e3b77a}.tile[data-value="32"]{background:#e09b5c}.tile[data-value="64"]{background:#d58049;color:#fff0d7}.tile[data-value="128"]{background:#a8ae73;color:#203b35}.tile[data-value="256"]{background:#7e9b73;color:#f6f0dc}.tile[data-value="512"]{background:#598474;color:#fff4dc}.tile[data-value="1024"]{background:#ba964b;color:#fff2ce}.tile[data-value="2048"],.tile.high{background:linear-gradient(140deg,#f0c967,#bd7f39);color:#fff7dd;box-shadow:0 0 25px #f4bd4b55,inset 0 0 0 2px #f8e2a3aa}.tile[data-value="128"] .tile-number,.tile[data-value="256"] .tile-number,.tile[data-value="512"] .tile-number{font-size:29px}.tile[data-value="1024"] .tile-number,.tile[data-value="2048"] .tile-number,.tile.high .tile-number{font-size:25px}.tile.goal:after{content:'';position:absolute;inset:4px;border:1px dashed #f7d286;border-radius:6px;pointer-events:none}.tile.goal[data-value="0"]{background:#b09a5030}.tile.selected{outline:3px solid #f5d785;outline-offset:-3px;filter:brightness(1.12)}.board.spell-mode .tile:not([data-value="0"]){cursor:crosshair}.tile.merged{animation:bloom .19s ease-out}.tile.spawned{animation:appear .17s ease-out}.board.bump{animation:shake .15s}.under-board{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 1px}.subtle{background:transparent;border:0;color:#b5c2ad;font-size:11px;padding:7px 4px}.subtle:hover{color:var(--gold)}.subtle>span[aria-hidden]{font-size:17px;vertical-align:-1px;margin-right:4px}.spell{display:flex;align-items:center;gap:6px;border:1px solid #b3a27a66;border-radius:20px;background:#e6c78515;color:#eccd92;font-size:10px;padding:7px 9px}.spell svg{width:14px;height:14px}.spell b{font-size:9px;padding:1px 4px;border:1px solid #e6c78555;border-radius:4px}.spell.active{background:#ddbd83;color:#263b33}.direction-pad{display:flex;gap:7px;justify-content:center;margin:0 auto 10px}.direction-pad button{width:36px;height:29px;border:1px solid #a8bca32c;border-radius:5px;color:#acbda7;background:#ffffff04;font-size:16px}.direction-pad button:hover{background:#ffffff12;color:#edd2a1}.control-note{text-align:center;color:#8fa38e;font-size:10px;margin:0;line-height:1.5;min-height:30px}.trial-picker{display:flex;gap:6px;margin-bottom:12px}.trial-picker button{flex:1;border:1px solid #9fac932e;border-radius:6px;background:transparent;color:#a8bba3;padding:8px 3px;font-size:10px}.trial-picker button.active{color:#f1d59c;border-color:#d4b87588;background:#c8ac7910}.trial-picker .complete:after{content:' ✓';color:#d6c68e}.goal-strip{background:#bfa86b18;border:1px solid #c8ad6c37;border-radius:7px;padding:9px 12px;font-size:10px;color:#e2cfab;margin:0 0 12px;line-height:1.6}.goal-strip b{color:#ffe2a9}.toast{position:absolute;left:50%;bottom:61px;transform:translateX(-50%) translateY(8px);width:max-content;max-width:100%;text-align:center;padding:11px 17px;background:#f2e5c9;color:#263a33;border-radius:8px;box-shadow:0 5px 22px #08171b55;font-size:11px;opacity:0;pointer-events:none;transition:.2s;z-index:5}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.result{position:absolute;inset:9px;border-radius:10px;background:#1d3731ed;backdrop-filter:blur(7px);display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:24px;z-index:4}.result-emblem{color:#f0c780;display:grid;place-items:center;width:63px;height:77px;background:#f0c78012;border:1px solid #f0c78044;border-radius:34px 34px 15px 15px}.result-emblem svg{width:31px;height:48px}.result>p:first-of-type{font-size:9px;letter-spacing:2px;color:#dbc397;margin:18px 0 8px}.result h2{font:normal 31px/1.1 var(--serif);margin:0 0 9px}.result>p{font-size:11px;max-width:270px;color:#b8c5b0;margin-bottom:18px}.primary{border:1px solid #eacf9f;background:#e8d2a9;color:#243b32;padding:12px 24px;border-radius:7px;font-size:11px;font-weight:650;box-shadow:0 3px 10px #0002}.primary:hover{background:#f5e1bc}.result .subtle{margin-top:5px}footer{display:flex;justify-content:space-between;gap:20px;max-width:880px;margin:34px auto 0;padding:20px 0 25px;border-top:1px solid #b6c2ab20;font-size:9px;color:#829789}footer>span:last-child{letter-spacing:1px;font-size:8px}.footer-star{margin:0 9px;color:#b69d6b}dialog{max-width:480px;width:calc(100% - 32px);padding:35px;border-radius:15px;border:1px solid #c1b08466;background:#213b35;color:var(--ink);box-shadow:0 20px 100px #0006}dialog::backdrop{background:#061416b8;backdrop-filter:blur(6px)}dialog h2{font:normal 32px/1.15 var(--serif);margin:14px 0 25px}.help-section{border-top:1px solid #c1b08433;padding-top:15px;margin-top:19px}.help-section h3{font-size:12px;color:#eed2a0}.help-section p{font-size:12px;color:#c0cab6}.dialog-close{position:absolute;right:12px;top:8px;font-size:26px;background:none;border:0;color:#c1c9b2}dialog .primary{margin-top:12px;width:100%}[hidden]{display:none!important}@keyframes bloom{50%{transform:scale(1.08);filter:brightness(1.15)}}@keyframes appear{from{transform:scale(.5);opacity:.1}to{transform:scale(1);opacity:1}}@keyframes shake{33%{transform:translateX(-3px)}66%{transform:translateX(3px)}}@media(min-width:1100px) and (min-height:850px){.intro{padding-top:42px;padding-bottom:37px}.play-layout{gap:80px}.garden-art{width:290px}footer{margin-top:45px}}@media(max-width:760px){.site-header{padding:18px 20px}.edition{display:none}main{padding:0 18px}.intro{padding:23px 0 20px}.intro h1{font-size:43px}.eyebrow{font-size:8px;letter-spacing:1.7px}.play-layout{display:block;max-width:430px}.story-panel{display:none}.score-row{padding-bottom:13px}.score-row strong{font-size:27px}.board-shell{padding:10px;border-radius:14px}.board{gap:8px}.tile-number{font-size:clamp(25px,7.7vw,32px)}footer{margin-top:22px;max-width:430px;display:block;text-align:center;line-height:2}footer>span{display:block}.mode-switch button{font-size:11px}.direction-pad{margin-top:0}.control-note{font-size:10px}.intro>p{font-size:12px}}@media(max-width:360px){main{padding:0 12px}.site-header{padding:14px}.board-shell{padding:8px}.board{gap:6px}.score-row{gap:17px}.restart{font-size:9px;padding:8px}.under-board{gap:4px}.subtle{font-size:10px}.spell{font-size:9px;padding:6px}.tile[data-value="1024"] .tile-number,.tile[data-value="2048"] .tile-number{font-size:21px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

@media (min-width:761px) and (max-height:950px){.site-header{padding-top:17px;padding-bottom:17px}.intro{padding-top:18px;padding-bottom:17px}.intro h1{font-size:46px}.play-layout{grid-template-columns:minmax(220px,1fr) minmax(320px,410px);gap:62px}.garden-art{width:245px}.score-row{padding-bottom:11px}.mode-switch{margin-bottom:11px}.under-board{padding-top:10px;padding-bottom:10px}footer{margin-top:24px;padding-top:16px;padding-bottom:20px}}
@media (min-width:761px) and (max-height:810px){.intro{padding-top:14px;padding-bottom:13px}.intro h1{font-size:41px}.play-layout{grid-template-columns:minmax(220px,1fr) minmax(320px,370px)}.garden-art{width:220px}.story-panel h2{font-size:28px}.score-row strong{font-size:25px}.tile-number{font-size:28px}.tile[data-value="128"] .tile-number,.tile[data-value="256"] .tile-number,.tile[data-value="512"] .tile-number{font-size:25px}.tile[data-value="1024"] .tile-number,.tile[data-value="2048"] .tile-number{font-size:23px}.direction-pad{margin-bottom:6px}.control-note{min-height:22px}}

/* An embedded game is a bounded play surface, not a scrolling landing page. */
.compact-game-title{display:none}
html.compact{height:100vh;height:100dvh;overflow:hidden}
.compact body{height:100%;min-height:0;max-height:100%;overflow:hidden;display:flex;flex-direction:column}
.compact .site-header{width:100%;max-width:none;height:42px;min-height:42px;flex:0 0 42px;padding:5px 13px;gap:10px}
.compact .club,.compact .edition,.compact .intro,.compact .story-panel,.compact footer{display:none}
.compact .compact-game-title{display:block;font:normal 19px/1 var(--serif);color:var(--gold);white-space:nowrap;letter-spacing:-.4px}
.compact nav{gap:6px}.compact .icon-button,.compact .language{height:30px;min-width:30px}.compact .language{font-size:10px;padding:0 10px}
.compact main{width:100%;max-width:none;min-height:0;flex:1;margin:0 auto;padding:8px 14px;display:flex;flex-direction:column}
.compact .play-layout{width:100%;max-width:none;min-height:0;flex:1;display:flex;justify-content:center;align-items:center;margin:0;gap:0}
.compact .game-panel{width:min(100%,430px);min-width:0;display:flex;flex-direction:column;--board-size:300px}
.compact .mode-switch{margin:0 0 7px;padding:3px;min-height:34px;flex-shrink:0}.compact .mode-switch button{padding:7px 6px;font-size:11px}
.compact .score-row{padding:0 1px 8px;min-height:42px;gap:24px;flex-shrink:0}.compact .score-row strong{font-size:25px}.compact .score-row>div>span{font-size:8px}.compact .restart{padding:7px 10px;font-size:10px}
.compact .trial-picker{margin:0 0 7px;gap:5px;flex-shrink:0}.compact .trial-picker button{font-size:9px;padding:7px 3px}
.compact .goal-strip{margin:0 0 7px;padding:6px 9px;font-size:10px;line-height:1.4;flex-shrink:0}
.compact .board-shell{width:var(--board-size);height:var(--board-size);padding:9px;border-radius:13px;align-self:center;flex-shrink:0}
.compact .board{height:100%;aspect-ratio:auto;grid-template-rows:repeat(4,minmax(0,1fr));gap:clamp(5px,calc(var(--board-size)*.018),8px)}
.compact .tile{aspect-ratio:auto;border-radius:7px}.compact .tile-number{font-size:clamp(22px,calc(var(--board-size)*.075),32px)}
.compact .tile[data-value="128"] .tile-number,.compact .tile[data-value="256"] .tile-number,.compact .tile[data-value="512"] .tile-number{font-size:clamp(20px,calc(var(--board-size)*.068),29px)}
.compact .tile[data-value="1024"] .tile-number,.compact .tile[data-value="2048"] .tile-number,.compact .tile.high .tile-number{font-size:clamp(17px,calc(var(--board-size)*.057),25px)}
.compact .under-board{padding:6px 1px;gap:8px;min-height:37px;flex-shrink:0}.compact .subtle{padding:6px 3px;font-size:10px}.compact .spell{font-size:9px;padding:6px 8px}
.compact .direction-pad{margin:0 auto 5px;gap:7px;flex-shrink:0}.compact .direction-pad button{height:28px;width:36px}
.compact .control-note{font-size:9px;line-height:1.35;min-height:24px;flex-shrink:0;margin:0}
.compact .result{inset:7px;padding:15px;overflow:auto}.compact .result-emblem{height:48px;width:39px;flex-shrink:0}.compact .result-emblem svg{height:31px;width:23px}
.compact .result>p:first-of-type{margin:10px 0 5px;font-size:8px}.compact .result h2{font-size:24px;margin-bottom:5px}.compact .result>p{margin-top:4px;margin-bottom:10px;font-size:10px;line-height:1.5}.compact .result .primary{font-size:10px;padding:9px 15px}.compact .result .subtle{margin-top:3px}
.compact-wide .site-header{height:36px;min-height:36px;flex-basis:36px;padding-top:3px;padding-bottom:3px}
.compact-wide main{padding:6px 12px}
.compact-wide .game-panel{display:grid;width:calc(var(--board-size) + 236px);max-width:100%;height:100%;grid-template-columns:minmax(0,220px) var(--board-size);grid-template-rows:auto auto auto auto auto auto minmax(0,1fr);grid-template-areas:"mode board" "picker board" "score board" "goal board" "actions board" "arrows board" "note board";column-gap:16px;row-gap:6px;align-content:start}
.compact-wide .mode-switch{grid-area:mode;margin:0}.compact-wide .trial-picker{grid-area:picker;margin:0;gap:3px}.compact-wide .trial-picker button{font-size:8px;padding:7px 2px}
.compact-wide .score-row{grid-area:score;gap:15px;padding:0;min-height:42px;flex-wrap:wrap}.compact-wide .score-row>div{min-width:45px}.compact-wide .score-row strong{font-size:24px}.compact-wide .restart{padding:7px 8px;font-size:9px}
.compact-wide .goal-strip{grid-area:goal;margin:0;font-size:9px;padding:6px 8px}
.compact-wide .board-shell{grid-area:board;align-self:center}.compact-wide .under-board{grid-area:actions;flex-wrap:wrap;justify-content:flex-start;gap:3px;padding:0;min-height:29px}.compact-wide .under-board #share{margin-left:auto}.compact-wide .under-board .subtle{font-size:9px}.compact-wide .spell{font-size:8px;padding:5px}.compact-wide .spell b{font-size:8px}
.compact-wide .direction-pad{grid-area:arrows;margin:0;justify-content:flex-start}.compact-wide .control-note{grid-area:note;text-align:left;min-height:0;font-size:9px;align-self:start;padding-top:1px}
.compact-wide .toast{bottom:8px;max-width:220px;left:110px;font-size:10px}
dialog{max-height:calc(100dvh - 16px);overflow:auto;overscroll-behavior:contain}
