:root{font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:#79502b;background:#faf8f0;font-synthesis:none;--ink:#79502b;--line:#ae7b3738}*{box-sizing:border-box}body{margin:0;min-height:100dvh;display:grid;place-items:center;overscroll-behavior:none;background:#faf8f0}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{cursor:wait;opacity:.55}button:focus-visible,a:focus-visible,canvas:focus-visible,input:focus-visible{outline:3px solid #dd8737;outline-offset:3px}[hidden]{display:none!important}.game-shell{width:min(100vw,56.25dvh);height:auto;aspect-ratio:9/16;position:relative;isolation:isolate;container-type:inline-size;overflow:hidden}.field-wrap{position:absolute;inset:0;background:#faf8f0}.field-wrap canvas{display:block;width:100%;height:100%;touch-action:none;user-select:none}.header{position:absolute;z-index:2;left:5%;right:5%;bottom:12.2%;display:flex;align-items:center;justify-content:space-between;gap:8px;pointer-events:none}.brand h1{font-size:clamp(13px,4cqw,22px);line-height:1.3;margin:0;letter-spacing:1px;color:#8a5c2c}.player-tag{pointer-events:auto;max-width:42%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border:0;background:none;font-size:clamp(9px,2.6cqw,13px);padding:4px 0;color:#9a753f}.scorebar{position:absolute;z-index:2;top:3.5%;left:6%;pointer-events:none;display:grid;gap:9px}.scorebar span{font-size:clamp(9px,2.5cqw,13px);color:#ba7c33;display:block}.scorebar strong{font-family:Arial,sans-serif;line-height:1;display:block;margin-top:3px;letter-spacing:-1px}.current-score strong{font-size:clamp(32px,9cqw,54px);font-weight:900;color:#d58a31;-webkit-text-stroke:2px #fffdf7;paint-order:stroke fill;text-shadow:0 2px #d68732}.best-score{display:flex;align-items:center;gap:7px}.best-score strong{font-size:clamp(12px,3.4cqw,18px);color:#c0873d}.next-piece{display:none}.start-cover{position:absolute;inset:0 0 15.625%;display:flex;flex-direction:column;align-items:center;text-align:center;justify-content:flex-start;padding-top:38%;background:linear-gradient(#faf8f000,#faf8f099 35%,#faf8f000 80%)}.start-cover h2{font-size:clamp(30px,10cqw,54px);line-height:1.2;letter-spacing:1px;margin:0;font-weight:900;color:#f8fff0;-webkit-text-stroke:1.8px #5e993b;paint-order:stroke fill;text-shadow:2px 4px #487d2c55;transform:rotate(-5deg)}.start-cover>p{font-size:clamp(12px,3.2cqw,17px);color:#ad782f;margin:17px 0 30px;letter-spacing:3px}.primary{background:#f6a83f;color:#fffef2;border:2px solid #cf872b;border-radius:999px;box-shadow:0 4px 0 #bc7625;min-height:46px;display:flex;align-items:center;justify-content:center;gap:20px;padding:11px 22px;font-size:15px;font-weight:700;text-decoration:none;text-shadow:0 1px #a66b26}.primary:active{transform:translateY(2px);box-shadow:0 2px 0 #bc7625}.start-button{min-width:53%;font-size:clamp(14px,4cqw,21px);min-height:clamp(42px,12cqw,62px)}.cover-note{font-size:clamp(10px,2.65cqw,14px);color:#a9803f;line-height:1.9;margin-top:23px}.field-flash{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 55px #e3925a;opacity:0}.field-flash.pop{animation:flash .35s ease-out}@keyframes flash{0%{opacity:.6}100%{opacity:0}}.game-status{position:absolute;z-index:2;left:3%;right:3%;bottom:9.4%;display:flex;align-items:center;justify-content:center;gap:6px;pointer-events:none}.game-status p{font-size:clamp(8px,2.25cqw,12px);color:#a17c45;margin:0;text-align:center;line-height:1.3}.game-status p.error{color:#b04429}.retry-link{pointer-events:auto;border:0;border-bottom:1px solid;background:none;padding:0;font-size:10px;white-space:nowrap}.toolbar{position:absolute;z-index:2;left:4%;right:4%;bottom:3.7%;display:grid;grid-template-columns:1.25fr 1fr .8fr .8fr;gap:5px}.toolbar button{display:flex;justify-content:center;align-items:center;gap:4px;border:1px solid #bf8e4580;background:#ffedb7;border-radius:8px;min-height:clamp(29px,8cqw,42px);font-size:clamp(9px,2.6cqw,14px);font-weight:600;padding:4px;box-shadow:0 2px #c49b4e44}.toolbar button>span{font-size:1.3em;font-weight:400}.toolbar button:hover{background:#fff6d5}footer{position:absolute;z-index:2;bottom:1.1%;left:5%;right:5%;display:flex;justify-content:space-between;gap:5px;font-size:clamp(7px,1.9cqw,10px);color:#ad8c53;line-height:1.4}footer a{color:inherit;text-decoration:none}.sheet{color:var(--ink);background:#fffaf0;width:min(calc(100% - 28px),430px);max-height:85dvh;overflow-y:auto;overscroll-behavior:contain;border:2px solid #d1a15a;border-radius:20px;padding:32px 25px 25px;box-shadow:0 15px 70px #624b3240}.sheet::backdrop{background:#65502765;backdrop-filter:blur(3px)}.close-dialog{position:absolute;right:13px;top:12px;display:grid;place-items:center;width:29px;height:29px;border-radius:50%;border:1px solid var(--line);background:#f5dfad;font-size:23px;line-height:1}.dialog-eyebrow{font-size:10px;color:#af8a50;letter-spacing:1.8px}.sheet h2{font-size:27px;line-height:1.3;letter-spacing:-.7px;margin:9px 0 21px}.result-sheet{text-align:center}.result-sheet h2{margin-bottom:10px}.result-total{display:flex;align-items:baseline;justify-content:center;gap:7px}.result-total strong{font:800 70px/1.1 Arial,sans-serif;letter-spacing:-4px;color:#cf862d}.result-total>span{font-size:13px;color:#aa834d}.result-detail{font-size:12px;color:#a08050;margin:10px 0 24px}.result-sheet form{text-align:left}.result-sheet label{font-size:13px;font-weight:700;display:block;margin-bottom:10px}.result-sheet input{width:100%;border:1.5px solid #c7a36f;border-radius:10px;background:#fff9e7;padding:14px;font-size:15px;color:var(--ink);outline-offset:2px}.fine-print{font-size:11px;line-height:1.8;color:#a08760}.result-sheet .fine-print{margin:9px 0 18px;font-size:10px}.wide{width:100%}.secondary{background:transparent;border:1px solid var(--line);border-radius:999px;min-height:43px;margin-top:13px;font-size:13px}.name-status{font-size:12px;line-height:1.7;color:#927343;overflow-wrap:anywhere}.name-status.error{color:#b04429}.week-row{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#a08760;margin-top:-10px;margin-bottom:18px;gap:5px}.week-row button{font-size:10px;background:transparent;border:0;padding:4px;color:#9b722f}.my-rank{background:#ffe6a4;border:1px solid #d9ae62;border-radius:10px;padding:10px 12px;font-size:12px;margin-bottom:12px}.leader-row{display:grid;grid-template-columns:32px 1fr auto;align-items:center;gap:8px;padding:14px 3px;border-bottom:1px solid #e7d5ad;font-size:13px}.rank-number{font:700 17px Arial,sans-serif;color:#b09b76}.leader-row:nth-child(-n+3) .rank-number{color:#c4872a}.leader-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leader-score{font:700 18px Arial,sans-serif}.is-me .leader-name{font-weight:700}.me-label{font-size:9px;background:#f4dca9;margin-left:5px;border-radius:4px;padding:2px 3px}.list-empty{text-align:center;color:#aa9372;padding:30px 0;font-size:12px;line-height:2}.list-empty strong{display:block;color:#9a733d;font-size:16px}.info-tabs{display:flex;width:fit-content;border:1px solid var(--line);border-radius:20px;background:#f5e4ba;padding:3px;margin-bottom:25px}.info-tabs button{border:0;background:none;border-radius:17px;padding:7px 16px;font-size:11px;color:#9d8156}.info-tabs button[aria-pressed=true]{background:#d29a44;color:#fffbea}.rules{list-style:none;padding:0;margin:0;display:grid;gap:20px}.rules li{display:flex;gap:13px}.rules b{font:700 12px/1.8 Arial,sans-serif;color:#c5a366}.rules strong{font-size:13px}.rules p{font-size:11px;line-height:1.9;color:#9b815a;margin:5px 0 0}.evolution{display:flex;justify-content:center;align-items:center;margin-top:22px;gap:8px;padding-top:18px;border-top:1px dashed var(--line)}.evolution canvas{width:49px;height:49px}.evolution>span{font-size:13px;color:#b49c72}.practice-note{font-size:11px;color:#a08754;display:flex;align-items:center;gap:7px}.practice-note>span{width:6px;height:6px;background:#d0a151;border-radius:50%}.prize-podium{display:flex;align-items:end;gap:8px;margin:30px 0 23px}.prize-podium>div{background:#f3e2ba;flex:1;padding:19px 7px;text-align:center;border-radius:17px 17px 7px 7px}.prize-podium .winner{padding-top:30px;padding-bottom:26px;background:#f3cf69;transform:translateY(-4px)}.prize-podium span{font-size:10px;display:block}.prize-podium strong{display:block;font:800 40px Arial,sans-serif;margin-top:8px;letter-spacing:-2px}.prize-podium small{font-size:11px;font-weight:400;letter-spacing:0;margin-left:3px}.prize-copy{font-size:12px;line-height:1.9}.prize-details{border-top:1px solid var(--line);margin:17px 0 20px;padding-top:10px;font-size:11px;line-height:1.9;color:#9b815a}.organizer-button{font-size:12px}.toast{position:fixed;bottom:12%;left:50%;transform:translateX(-50%);background:#76592aeb;color:#fff6d8;border-radius:13px;max-width:calc(100% - 32px);padding:12px 18px;font-size:12px;box-shadow:0 5px 25px #5b41282a;z-index:10}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important}}

/* Reliability controls fit inside the existing single-screen mobile layout. */
.toolbar{grid-template-columns:1.15fr 1fr .75fr .75fr 1.05fr;gap:4px}.toolbar button{font-size:clamp(8px,2.4cqw,13px)}
.toolbar button[data-pending]:not([data-pending="0"]){background:#f8d790;border-color:#b97e2a}
.storage-warning{position:absolute;z-index:3;left:7%;right:7%;top:17%;margin:0;padding:7px 9px;border:1px solid #c9924e;border-radius:8px;background:#fff2cfed;color:#9b5e25;font-size:clamp(8px,2.5cqw,12px);line-height:1.6;pointer-events:none}
.result-links{display:grid;grid-template-columns:1fr 1fr;gap:10px}.result-links .secondary{width:100%}.text-button{border:0;background:none;text-decoration:underline;font-size:12px;color:#956622;padding:7px 10px;margin-bottom:10px}
.outbox-card{padding:16px 0;border-bottom:1px solid #dfc99d}.outbox-card>strong{font-size:15px}.outbox-card>p{font-size:12px;line-height:1.7;margin:7px 0;color:#9b815a}.outbox-card .secondary{padding:7px 20px;margin-top:3px}.outbox-card p.error{color:#b04429}
#profile-form label{display:block;font-size:13px;font-weight:700;margin-bottom:10px}#profile-input{width:100%;border:1.5px solid #c7a36f;border-radius:10px;background:#fff9e7;padding:14px;font-size:15px;color:var(--ink)}
#name-status{overflow-wrap:anywhere}.game-status{gap:5px}.game-status p{min-width:0}.retry-link{flex-shrink:0}
.sound-toggle{position:absolute;z-index:3;top:4%;right:6%;display:grid;place-items:center;width:clamp(34px,9cqw,42px);height:clamp(34px,9cqw,42px);padding:6px;border:1px solid #bf8e4570;border-radius:50%;background:#fff9e8e8;color:#a0793f;box-shadow:0 2px 0 #c49b4e22}.sound-toggle:hover{background:#fff1c5}.sound-muted{display:none}.sound-toggle[aria-pressed=false] .sound-waves{display:none}.sound-toggle[aria-pressed=false] .sound-muted{display:block}
/* Transparent sprites stay above the HUD while input reaches the controls below. */
.piece-layer{position:absolute;inset:0;display:block;width:100%;height:100%;z-index:4;pointer-events:none}
