
:root{color-scheme:light;--paper:#f4eddc;--ink:#292f28;--red:#9c3c2f;--muted:#807764;--line:#d5cbb4;--serif:'Noto Serif SC','Songti SC','SimSun',serif}*{box-sizing:border-box}body{margin:0;background:#e9e4d7;color:var(--ink);font-family:var(--serif);font-size:16px;background-image:radial-gradient(#75634b12 .7px,transparent .7px);background-size:5px 5px}button{font-family:inherit;cursor:pointer;color:inherit;touch-action:manipulation}button:focus-visible{outline:3px solid #a73f31;outline-offset:4px}button:disabled{cursor:default}button:hover:not(:disabled){filter:brightness(1.035)}.shell{max-width:1260px;min-height:100svh;margin:auto;display:grid;grid-template-columns:1fr 470px 150px;align-items:center;gap:46px;padding:28px 35px}.intro{align-self:stretch;position:relative;padding-top:32px}.brand{display:flex;align-items:center;gap:12px;font-size:16px;letter-spacing:2px}.seal{background:var(--red);color:var(--paper);font-size:25px;padding:3px 10px;border-radius:3px}.edition{font:11px sans-serif;letter-spacing:2px;color:var(--muted);margin-left:10px}.vertical{position:absolute;right:0;top:158px;writing-mode:vertical-rl;line-height:2;letter-spacing:8px;color:#8f866f;font-size:14px}h1{font-size:65px;letter-spacing:3px;line-height:1.3;font-weight:900;margin:135px 0 27px;position:relative;white-space:nowrap}h1>span:not(.title-seal){font-size:48px}.title-seal{display:inline-block;font-size:12px;line-height:1.3;letter-spacing:2px;color:var(--red);border:1px solid var(--red);padding:5px;transform:rotate(-8deg);vertical-align:top;margin-top:10px}.lead{font-size:25px;line-height:1.9;letter-spacing:2px}.intro-rule{width:46px;height:2px;background:var(--red);margin:32px 0}.caption{color:var(--muted);line-height:2;font-size:14px}.side-bottom{display:flex;gap:25px;margin-top:90px;font-size:12px;color:var(--muted);letter-spacing:2px}.game{background:var(--paper);width:100%;padding:25px 28px 18px;border:1px solid #fcf7eb;border-radius:9px;box-shadow:0 20px 70px #443e2518,0 0 0 1px #c7bda533;position:relative}.top{display:flex;align-items:center;justify-content:space-between}.eyebrow{font-size:12px;letter-spacing:3px;color:var(--muted)}h2{font-size:27px;letter-spacing:4px;margin:6px 0 16px}.top-actions{display:flex;gap:8px}.icon-btn{border:1px solid var(--line);border-radius:50%;height:32px;width:32px;background:transparent;font:18px Georgia}.progress-row{display:flex;justify-content:space-between;font-size:12px;letter-spacing:1px;color:var(--muted)}.progress{height:3px;background:#dfd6c2;margin:10px 0 0}.progress>div{height:100%;background:var(--red);transition:width .35s}.board-wrap{position:relative;min-height:357px;padding-top:7px}.board-label{text-align:center;font-size:12px;letter-spacing:2px;color:var(--muted);margin:14px 0 0}.board{width:360px;height:320px;position:relative;margin:auto;isolation:isolate}.tile{position:absolute;width:72px;height:56px;border:1px solid #8a7658;border-bottom:4px solid #a18c65;border-radius:6px;background:#fff8e5;box-shadow:0 3px 5px #49341620;font-size:23px;font-weight:700;letter-spacing:2px;padding:0;transition:background .15s,transform .15s,filter .15s}.tile:not(:disabled):hover{transform:translateY(-3px);background:#fffdf2}.tile:disabled{background:#c5bca2;color:#686653;border-color:#8f866b;box-shadow:0 2px 2px #49341612}.tile.hinted{background:#fce2a9;outline:3px solid #ae4933;outline-offset:2px;animation:pulse 1s infinite}.board-mark{position:absolute;bottom:0;left:0;right:0;text-align:center;font-size:11px;letter-spacing:8px;color:#a2967b;opacity:.55}.message{min-height:37px;text-align:center;color:var(--red);font-size:13px;display:flex;align-items:center;justify-content:center;letter-spacing:1px}.tray-section{border-top:1px solid var(--line);padding-top:12px}.tray-heading{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);letter-spacing:2px;margin-bottom:10px}.tray{display:flex;gap:7px;padding:10px;border:1px solid #cec0a3;border-radius:7px;background:#dfd4bc66;min-height:72px;justify-content:center}.slot{width:51px;height:49px;flex:1;max-width:72px;border-radius:4px;border:1px dashed #bfb196;display:flex;align-items:center;justify-content:center;color:#aba087}.slot.filled{border:1px solid #9e8561;border-bottom:3px solid #9e8561;background:#fff7df;font-size:18px;font-weight:700;letter-spacing:1px;animation:pop .2s}.tray.danger{border-color:var(--red);background:#9c3c2f0b}.shelf-row{display:flex;align-items:center;gap:12px;margin-top:8px;font-size:12px;color:var(--muted)}[hidden]{display:none!important}#shelf{display:flex;gap:7px}.shelf-row .slot{min-width:51px}.tools{display:flex;justify-content:space-around;padding:19px 0 14px}.tools button{display:flex;flex-direction:column;align-items:center;gap:4px;border:0;background:transparent;min-width:82px}.tools button:disabled{opacity:.4}.tool-icon{display:flex;justify-content:center;align-items:center;border:1px solid #c9bca1;border-radius:50%;width:40px;height:40px;font:27px Georgia;margin-bottom:4px}.tools strong{font-size:13px;letter-spacing:1px;font-weight:500}.tools small{font-size:11px;color:var(--muted)}footer{border-top:1px solid var(--line);padding-top:14px;display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#8b816b}footer button{border:0;background:transparent;font-size:12px;padding:4px 0;color:#655d4d}footer button:last-child{color:var(--red)}.right-note{display:flex;flex-direction:column;align-items:center;gap:24px;color:#807662}.small-seal{color:var(--red);border:1px solid var(--red);padding:5px;font-size:17px}.right-note p{writing-mode:vertical-rl;letter-spacing:8px;line-height:2.2;font-size:21px}.right-line{width:1px;height:70px;background:#b8ac93}.right-note small{font-size:12px;letter-spacing:3px;line-height:2.2;text-align:center}dialog{padding:0;border:1px solid #d2c0a2;border-radius:10px;background:var(--paper);color:var(--ink);width:min(360px,calc(100vw - 40px));box-shadow:0 20px 70px #17180e55}dialog::backdrop{background:#252d2866;backdrop-filter:blur(4px)}.modal-inner{padding:32px 25px;text-align:center}.modal-stamp{display:block;margin:0 auto 20px;border:2px solid var(--red);color:var(--red);width:64px;height:64px;line-height:57px;font-size:32px;transform:rotate(-8deg);border-radius:5px}.modal-inner h2{font-size:28px;margin:12px 0 18px}.modal-inner p{font-size:14px;line-height:1.9;color:#70654f}.primary{display:block;width:100%;padding:13px;border:1px solid #813023;background:var(--red);color:#fff1d7;border-radius:5px;font-size:16px;letter-spacing:2px;margin-top:23px}.secondary{border:0;background:none;color:var(--muted);font-size:13px;margin-top:18px}.rules-copy{text-align:left} @keyframes pulse{50%{outline-color:#d69b47}}@keyframes pop{from{transform:scale(.82);opacity:.4}to{transform:scale(1);opacity:1}}@media(min-width:1500px){.shell{gap:65px}}@media(max-width:1120px){.shell{grid-template-columns:1fr 440px;gap:28px}.right-note{display:none}h1{font-size:53px}.game{padding-left:24px;padding-right:24px}.edition{display:none}}@media(max-width:850px){.shell{display:block;padding:0;max-width:470px}.intro,.right-note{display:none}.game{border:0;border-radius:0;min-height:100svh;box-shadow:none;padding:22px 25px 16px}.board-wrap{margin-top:10px}.tools{padding-top:23px}body{background:var(--paper)}}@media(max-width:400px){.game{padding:18px 12px 12px}.board{transform:scale(.92);transform-origin:top center;width:360px;margin-left:calc((100% - 360px)/2)}.board-wrap{min-height:332px}.board-label{font-size:11px}.tile{font-size:23px}.tray{gap:5px;padding:8px}.tools{padding-top:17px}footer{font-size:10px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

@media(max-width:360px){.board{transform:scale(.80)}.board-wrap{min-height:300px}.game{padding-left:10px;padding-right:10px}.slot.filled{font-size:16px}}

.tile.vertical-tile{writing-mode:vertical-rl;text-orientation:upright;letter-spacing:4px;line-height:1;display:flex;align-items:center;justify-content:center;padding-top:3px}.tile:disabled{color:#555846;background:#beb79d}.tile:not(:disabled){box-shadow:0 3px 0 #8c7851,0 4px 7px #39291030}

/* Expanded play surface with a broad, readable top layer. */
.shell{max-width:1330px;grid-template-columns:240px minmax(0,900px);gap:40px;padding:20px 32px}.right-note{display:none}.intro{padding-top:20px}.vertical,.edition,.title-seal{display:none}h1{font-size:40px;margin-top:110px}h1>span:not(.title-seal){font-size:32px}.lead{font-size:20px}.side-bottom{flex-direction:column;gap:12px;margin-top:50px}.game{padding:23px 30px 18px}.board-wrap{min-height:0;padding-top:0;margin-top:0;padding-bottom:14px}.board{width:100%;height:auto;aspect-ratio:600/450;transform:none;margin:8px auto 0;container-type:inline-size}.tile{font-size:clamp(14px,4.4cqw,30px);letter-spacing:1px}.board-mark{bottom:0}.board-label{font-size:14px;margin-top:15px}.message{font-size:14px;min-height:32px}.tray-section{max-width:620px;margin:auto}.tray{min-height:65px;padding:7px}.slot{max-width:80px}.tools{max-width:620px;margin:auto;padding:12px 0}.tools button{flex-direction:row;gap:10px}.tools small{font-size:12px}.tool-icon{width:34px;height:34px;margin:0}.tools strong{font-size:14px}.top h2{margin-bottom:10px}footer{padding-top:10px}
@media(max-width:1050px){.shell{display:block;max-width:860px;padding:12px}.intro{display:none}.game{padding:20px 24px}.board{width:100%;margin:8px auto 0;transform:none}.board-wrap{min-height:0}}
@media(max-width:600px){.shell{padding:0;max-width:none}.game{padding:16px 10px 12px;min-height:100svh}.board{aspect-ratio:600/520}.board-label{font-size:12px;letter-spacing:1px}.tile{border-bottom-width:3px;border-radius:4px}.tile.vertical-tile{letter-spacing:2px;padding-top:2px}.board-wrap{margin-top:10px;padding-bottom:16px}.message{font-size:12px;letter-spacing:0}.tools button{flex-direction:column;gap:4px}.tools strong{font-size:13px}.tray-section{margin-top:5px}.tools{padding:16px 0}.top{padding:0 5px}.progress-row{padding:0 5px}}

.shell{display:block;max-width:1540px;padding:12px 20px}.intro{display:none}.game{padding:18px 24px}.board{max-width:1100px}.board.dense{max-width:none;aspect-ratio:1200/900}.board.dense .tile{font-size:clamp(14px,2.5cqw,30px);letter-spacing:1px}.board-label{margin-top:8px}.board-wrap{padding-bottom:9px}.top{max-width:1100px;margin:auto}.tools{padding:9px 0}.board.dense .vertical-tile{letter-spacing:3px}@media(max-width:750px){.board.dense{min-width:720px}.board-wrap{overflow-x:auto}.shell{padding:0}.game{padding:12px 8px}.board.dense .tile{font-size:19px}}

@media(min-width:751px){.board.dense{aspect-ratio:1200/660}.board.dense .tile{font-size:clamp(16px,2.1cqw,27px)}}

/* Fixed 720 × 1080 portrait game canvas. */
html{min-width:0}body{margin:0;min-width:0}.shell{width:720px;height:1080px;min-height:1080px;max-width:none;display:block;padding:0;margin:0 auto}.game{width:720px;height:1080px;min-height:0;border-radius:0;padding:20px 18px 14px;display:flex;flex-direction:column;box-shadow:none;overflow:hidden}.intro,.right-note{display:none}.top{width:100%;max-width:none;flex-shrink:0;padding:0 6px}.top h2{font-size:26px;line-height:1.3;margin:5px 0 9px}.top .eyebrow{font-size:12px}.progress-row{font-size:12px;flex-shrink:0}.progress{margin-top:7px;flex-shrink:0}.board-wrap{width:100%;padding:0 0 10px;margin:0;min-height:0;overflow:visible;flex:1;display:flex;flex-direction:column}.board-label{font-size:12px;line-height:18px;letter-spacing:1px;margin:10px 0 5px;flex-shrink:0}.board,.board.dense{width:100%;min-width:0;max-width:none;height:auto;aspect-ratio:auto;flex:1;margin:0;transform:none}.board .tile{font-size:25px}.board.dense .tile{font-size:18px;letter-spacing:0;border-radius:4px;border-bottom-width:3px}.board.dense .vertical-tile{font-size:18px;letter-spacing:2px;padding:0}.board-mark{display:none}.message{min-height:28px;font-size:13px;flex-shrink:0;letter-spacing:0}.tray-section{width:100%;max-width:none;margin:0;padding-top:8px;flex-shrink:0}.tray-heading{margin-bottom:7px;font-size:12px}.tray{min-height:56px;padding:6px;gap:8px}.slot{height:43px;max-width:none}.slot.filled{font-size:19px}.tools{width:100%;max-width:none;margin:0;padding:10px 0;flex-shrink:0;justify-content:space-around}.tools button{flex-direction:row;gap:8px;min-width:0}.tools strong{font-size:13px}.tools small{font-size:11px}.tool-icon{width:30px;height:30px;font-size:23px}.shelf-row{margin-top:5px}.shelf-row .slot{height:32px;font-size:16px}footer{width:100%;padding-top:8px;font-size:11px;flex-shrink:0}footer button{font-size:12px}
@media(max-width:719px){.shell{margin:0;zoom:calc(100vw / 720px)}}

.board.dense .tile{font-size:27px;font-weight:700;letter-spacing:2px;border-radius:5px}.board.dense .vertical-tile{font-size:27px;letter-spacing:5px}.board.dense .tile:disabled{background:#c5bea6;color:#62614f;border-color:#998b70}

.tile-badge{position:absolute;top:3px;left:4px;font:14px/1 sans-serif;writing-mode:horizontal-tb;pointer-events:none;opacity:.85}.tile:disabled .tile-badge{opacity:.3}.tile.ready:not(:disabled){border-color:#bd872f;background:#fff4ca;box-shadow:0 3px 0 #ab7b30,0 0 0 2px #d7ab5355}.tile.revealed{animation:reveal-card .16s ease-out}.game-fx{position:fixed;pointer-events:none;z-index:9000}.flying-tile{display:flex;align-items:center;justify-content:center;background:#fff4d4;border:1px solid #aa8050;border-radius:5px;font:700 23px var(--serif);box-shadow:0 5px 15px #46351930}.match-stamp{color:#a83c25;background:#fff3dbeF;padding:7px 18px;border:2px solid #a83c25;font:700 23px var(--serif);white-space:nowrap;border-radius:3px;animation:stamp-pop .65s both}.combo-pop{color:#a83c25;font-weight:700;animation:combo-pop .25s}.tray .slot{min-width:0}.tray .slot.filled{font-size:21px}.tools .tool-icon{color:#675a42}
@keyframes reveal-card{from{filter:brightness(1.25);opacity:.75}to{filter:brightness(1);opacity:1}}@keyframes stamp-pop{0%{transform:translate(-50%,10px) scale(1.18) rotate(-5deg);opacity:0}20%{transform:translate(-50%,0) scale(1) rotate(-3deg);opacity:1}75%{opacity:1}100%{transform:translate(-50%,-28px) scale(.95);opacity:0}}@keyframes combo-pop{50%{transform:scale(1.06)}}



@media(max-width:719px){
html,body{width:100%;overflow-x:hidden;background:var(--paper)}.shell{zoom:1;width:100%;height:100svh;min-height:620px;margin:0}.game{width:100%;height:100%;min-height:620px;padding:calc(10px + env(safe-area-inset-top,0px)) 10px calc(8px + env(safe-area-inset-bottom,0px));border:0;overflow:hidden}.top{padding:0;max-width:none}.top h2{font-size:23px;margin:3px 0 7px}.top .eyebrow{font-size:11px;letter-spacing:1px}.progress-row{font-size:11px;padding:0}.board-label{font-size:11px;letter-spacing:0;margin:7px 0 4px}.board-wrap{margin:0;padding-bottom:4px;overflow:visible}.board,.board.dense{width:100%;min-width:0;aspect-ratio:auto}.board .tile,.board.dense .tile,.board.dense .vertical-tile{font-size:clamp(14px,3.9vw,26px);letter-spacing:0;border-bottom-width:2px}.board.dense .vertical-tile{letter-spacing:2px}.tile-badge{font-size:10px;top:2px;left:2px}.message{font-size:11px;min-height:26px}.tray{gap:4px;padding:5px;min-height:48px}.tray .slot{height:35px}.tray .slot.filled{font-size:14px;letter-spacing:0}.tray-heading{font-size:11px;margin-bottom:5px}.tools{padding:8px 0;gap:5px}.tools button{flex:1;flex-direction:column;gap:2px;padding:0}.tools strong{font-size:12px}.tools small{font-size:11px}.tool-icon{height:26px;width:26px;font-size:21px}.shelf-row{font-size:11px;gap:8px}.shelf-row .slot{height:28px;font-size:14px;min-width:40px}footer{font-size:10px;padding-top:6px}footer button{font-size:12px;padding:4px 0}.match-stamp{font-size:18px;padding:5px 10px}.icon-btn{width:34px;height:34px}}

/* Preserve a common coordinate scale so every tile remains square on any phone. */
.board,.board.dense{flex:0 0 auto;width:100%;height:auto;aspect-ratio:4/3;margin:auto 0}.board-wrap{justify-content:center}.board-label{position:absolute;top:4px;left:0;right:0}.board-wrap{padding-top:28px;padding-bottom:8px}.tile,.tile.vertical-tile{writing-mode:horizontal-tb;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.board.dense .tile{letter-spacing:0}

.board-wrap{container-type:size;padding:28px 0 3px;align-items:center;justify-content:center}.board{max-width:100%}.board.dense{width:min(100cqw,calc((100cqh - 32px) * .76923077));aspect-ratio:10/13;margin:auto;flex:0 0 auto}.board.dense .tile{font-size:clamp(18px,4.1cqw,30px)}.game{padding-left:8px;padding-right:8px}.top,.progress-row,footer{padding-left:7px;padding-right:7px}@media(max-width:719px){.game{padding-left:5px;padding-right:5px}.board.dense .tile{font-size:clamp(15px,4.6cqw,23px)}.board-label{font-size:10px}}

/* Shuffle suggestions stay highlighted without pulsing. */
.tile.hinted{animation:none}

/* Countdown updates independently of the tile board. */
#remaining{font-variant-numeric:tabular-nums}#remaining.time-warning{color:var(--red,#9a3c2e);font-weight:700}.board-wrap{padding-top:4px}.board.dense{width:min(100cqw,calc((100cqh - 8px) * .76923077))}

/* Native portrait start screen. */
.home-screen{height:100%;min-height:620px;width:100%;position:relative;overflow:hidden;display:flex;flex-direction:column;padding:28px 32px 22px;background:radial-gradient(ellipse at 85% 40%,#d0b57625,transparent 60%),var(--paper);border:1px solid var(--line);border-radius:9px;isolation:isolate}
.home-screen:before{content:"";position:absolute;inset:12px;border:1px solid #b39a6f40;pointer-events:none;z-index:-1}.home-top{display:flex;align-items:center;justify-content:space-between}.home-seal{font-size:12px;letter-spacing:3px;color:var(--red);border:1px solid #a3453570;padding:7px 10px}.home-heading{text-align:center;margin-top:clamp(18px,4vh,50px)}.home-heading p{font-size:13px;letter-spacing:5px;color:var(--muted);margin:0 0 16px}.home-heading h2{font-size:clamp(42px,8vw,66px);line-height:1.1;margin:0;font-weight:900;letter-spacing:5px}.home-heading h2 span{display:block;color:var(--red);margin-top:8px;font-size:1.12em}.home-subtitle{font-size:13px;color:var(--muted);margin-top:20px;letter-spacing:1px}.home-pile{width:min(100%,380px);flex:1;min-height:185px;max-height:370px;position:relative;margin:10px auto;container-type:inline-size}.home-card{position:absolute;width:28%;aspect-ratio:1;display:flex;align-items:center;justify-content:center;background:#fff8e5;border:1px solid #9f8a63;border-bottom:5px solid #a18c65;border-radius:9px;font-size:7cqw;font-weight:700;box-shadow:0 6px 12px #49341618}.home-card.back{background:#e0d6bc;color:#79705a}.home-card.one{left:17%;top:20%;transform:rotate(-13deg)}.home-card.two{left:48%;top:15%;transform:rotate(10deg)}.home-card.three{left:7%;top:44%;transform:rotate(-7deg)}.home-card.four{left:66%;top:38%;transform:rotate(13deg)}.home-card.five{left:25%;top:36%;transform:rotate(-9deg)}.home-card.six{left:51%;top:53%;transform:rotate(8deg)}.home-card.front{background:#fff9e8;border-color:#b78736;box-shadow:0 5px 0 #ad8b49,0 10px 20px #76501e20;z-index:2}.home-card i{position:absolute;font:12px sans-serif;top:7px;left:9px;color:#a37442}.home-spark{position:absolute;left:49%;top:43%;font-size:32px;color:#ba883a;z-index:3}.home-bottom{text-align:center;margin-top:auto;position:relative}.home-start{display:flex;align-items:center;justify-content:center;gap:25px;width:100%;border:1px solid #823729;border-bottom:5px solid #743326;background:var(--red);color:#fff4d9;font-size:24px;letter-spacing:5px;padding:17px 12px;border-radius:9px;box-shadow:0 9px 22px #9c3c2f20}.home-start:active{transform:translateY(2px)}.home-start span{font-family:serif;letter-spacing:0}.home-time{font-size:12px;color:var(--muted);margin:14px 0 20px}.home-rules{border:1px solid var(--line);background:transparent;padding:9px 20px;border-radius:30px;font-size:13px}.home-footnote{border-top:1px solid var(--line);padding-top:15px;margin-top:24px;display:flex;justify-content:space-between;font-size:11px;color:#93846b;letter-spacing:2px}
@media(max-width:719px){.home-screen{padding:calc(18px + env(safe-area-inset-top,0px)) 27px calc(16px + env(safe-area-inset-bottom,0px));border:0;border-radius:0;min-height:620px;height:100%}.home-heading{margin-top:20px}.home-heading h2{font-size:48px}.home-heading p{font-size:11px;margin-bottom:13px}.home-subtitle{font-size:12px;margin-top:15px}.home-start{font-size:22px;padding:14px 10px}.home-time{font-size:11px;margin:12px 0 16px}.home-footnote{margin-top:19px;padding-top:12px;font-size:10px}.top-actions{gap:5px}.top-actions .icon-btn{width:29px;height:29px}.home-pile{max-height:320px}}

