:root{--paper: #fffaf0;--paper-2: #f7e9d4;--ink: #3f2c1d;--ink-soft: #7c6350;--line: #e7d6bb;--wood: #a9764e;--wood-dark: #7e5433;--accent: #cf5f3f;--accent-dark: #a94a2f;--gold: #d9a13f;--green: #4f7f45;--focus: #1f6f9c;--radius: 18px;font-family:Noto Sans SC,PingFang SC,Hiragino Sans GB,Microsoft YaHei,system-ui,sans-serif;line-height:1.55;color:var(--ink);background-color:var(--paper-2)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 12% 8%,rgba(217,161,63,.16),transparent 46%),radial-gradient(circle at 88% 4%,rgba(207,95,63,.14),transparent 42%),linear-gradient(180deg,#fbf0dd,#f4e4cc 60%,#efdcc0);background-attachment:fixed}h1,h2,h3,p,ul,ol,li,figure{margin:0}ul,ol{padding:0;list-style:none}button,input{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.shop{min-height:100vh;display:flex;flex-direction:column;padding-bottom:24px}.awning{height:20px;background:repeating-linear-gradient(90deg,var(--accent) 0 34px,#fdf3e2 34px 68px);box-shadow:0 3px 10px #7e54332e}.shop-header{width:min(1120px,100% - 32px);margin:22px auto 0;display:flex;flex-wrap:wrap;gap:16px 24px;align-items:flex-end;justify-content:space-between}.brand-kicker{font-size:13px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft)}.brand h1{font-family:"Noto Serif SC",Songti SC,"Source Han Serif SC",Georgia,serif;font-size:clamp(30px,5vw,44px);line-height:1.15;letter-spacing:.04em;color:var(--wood-dark);text-shadow:0 1px 0 #fff8eb}.brand-tagline{color:var(--ink-soft);font-size:15px}.player-box{display:grid;gap:4px;min-width:220px}.player-box label{font-size:13px;font-weight:600;color:var(--ink-soft)}.player-box input{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:var(--paper);box-shadow:inset 0 1px 2px #7e543314}.player-box input:focus-visible{border-color:var(--focus)}.hint{font-size:12px;color:var(--ink-soft)}.shop-main{width:min(1120px,100% - 32px);margin:18px auto 0;display:grid;gap:18px;grid-template-columns:minmax(0,1fr) 320px;align-items:start}.shop-footer{width:min(1120px,100% - 32px);margin:26px auto 0;color:var(--ink-soft);font-size:13px;text-align:center}.counter{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:0 18px 34px #7e54331f;display:grid;gap:14px}.level-head{display:flex;gap:16px;align-items:flex-start;justify-content:space-between}.eyebrow{font-size:12px;font-weight:700;letter-spacing:.12em;color:var(--accent-dark);text-transform:uppercase}.level-head h2{font-family:"Noto Serif SC",Songti SC,Georgia,serif;font-size:clamp(22px,3vw,28px);color:var(--wood-dark);line-height:1.25;margin-top:2px}.blurb{color:var(--ink-soft);font-size:14px;max-width:46ch}.moves{flex:0 0 auto;display:grid;justify-items:center;gap:2px;padding:8px 14px;border-radius:14px;background:#fdf1dd;border:1px solid var(--line);min-width:92px}.moves-label{font-size:12px;color:var(--ink-soft)}.moves-num{font-size:30px;line-height:1.1;font-variant-numeric:tabular-nums;color:var(--wood-dark)}.moves-num--low{color:var(--accent-dark)}.hud{display:grid;gap:8px}.progress-head{display:flex;justify-content:space-between;align-items:baseline;font-size:14px;color:var(--ink-soft)}.progress-numbers strong{font-size:20px;color:var(--ink);font-variant-numeric:tabular-nums}.progress{height:14px;border-radius:999px;background:#f1e2c9;border:1px solid var(--line);overflow:hidden}.progress-fill{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--gold),var(--accent));transition:width .26s ease}.progress-meta{font-size:12px;color:var(--ink-soft)}.board-wrap{position:relative;display:grid;justify-items:center}.board{position:relative;width:100%;max-width:540px;aspect-ratio:var(--cols) / var(--rows);padding:8px;border-radius:20px;background:linear-gradient(180deg,#c1916a,#a9764e 55%,#96633f);box-shadow:inset 0 2px #fff6e673,inset 0 -3px 8px #3f2c1d47,0 14px 26px #7e543338;container-type:inline-size;touch-action:manipulation;-webkit-user-select:none;user-select:none}.tile{position:absolute;top:0;left:0;width:calc(100% / var(--cols));height:calc(100% / var(--rows));padding:0;border:0;background:transparent;cursor:pointer;transition:transform .19s cubic-bezier(.2,.8,.3,1);will-change:transform}.board--busy .tile{cursor:default}.tile-face{position:absolute;inset:5px;display:grid;place-items:center;border-radius:16px;background:var(--item-soft, #fff);box-shadow:inset 0 -2px #3f2c1d14,0 2px 4px #3f2c1d24;transition:transform .14s ease,box-shadow .14s ease,background .14s ease}.tile-emoji{font-size:24px;font-size:clamp(14px,calc(44cqw / var(--cols)),38px);line-height:1}.tile:hover .tile-face{transform:translateY(-2px)}.tile:focus-visible{outline:none}.tile:focus-visible .tile-face{outline:3px solid var(--focus);outline-offset:1px}.tile--selected .tile-face{background:#fffdf7;transform:translateY(-3px) scale(1.05);box-shadow:0 0 0 3px var(--item-color, var(--accent)),0 8px 14px #3f2c1d3d}.tile--hint .tile-face{animation:hint-pulse 1.1s ease-in-out infinite}.tile--invalid .tile-face{animation:tile-shake .28s ease}.tile--clearing .tile-face{animation:tile-pop .23s ease forwards}.tile--spawned .tile-face{animation:tile-drop .2s ease-out}@keyframes hint-pulse{0%,to{box-shadow:0 0 #cf5f3f8c}50%{box-shadow:0 0 0 4px #cf5f3f59}}@keyframes tile-shake{0%,to{transform:translate(0)}25%{transform:translate(-12%) rotate(-3deg)}75%{transform:translate(12%) rotate(3deg)}}@keyframes tile-pop{to{transform:scale(.25) rotate(10deg);opacity:0}}@keyframes tile-drop{0%{transform:translateY(-55%);opacity:.25}}.combo-badge{position:absolute;top:12px;left:50%;transform:translate(-50%);padding:5px 14px;border-radius:999px;background:#3f2c1dd1;color:#fff5e3;font-size:13px;font-weight:700;letter-spacing:.04em;pointer-events:none;animation:combo-rise .22s ease-out}.combo-badge strong{color:#ffd88a}@keyframes combo-rise{0%{transform:translate(-50%,8px);opacity:0}}.result{position:absolute;inset:0;display:grid;align-content:center;justify-items:center;gap:10px;padding:18px;border-radius:20px;background:#fffaf0f2;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);text-align:center;overflow:auto;animation:result-in .2s ease-out}.result h2{font-family:"Noto Serif SC",Songti SC,Georgia,serif;font-size:clamp(22px,4vw,30px);color:var(--wood-dark)}.result--won h2{color:var(--green)}.result-score{font-size:16px;font-variant-numeric:tabular-nums;color:var(--ink)}.result-note{font-size:13px;color:var(--ink-soft)}.result-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:4px}.name-form{display:grid;gap:6px;justify-items:center;font-size:13px;color:var(--ink-soft)}.name-form-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.name-form input{padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;min-width:150px}@keyframes result-in{0%{opacity:0;transform:scale(.98)}}.controls{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}.btn{padding:9px 16px;min-height:40px;border-radius:12px;border:1px solid var(--line);background:#fdf3e2;color:var(--ink);font-weight:600;cursor:pointer;box-shadow:0 2px #7e543324;transition:background .14s ease,transform .12s ease}.btn:hover:not(:disabled){background:#f8e7cd}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{cursor:not-allowed;opacity:.55}.btn--primary{background:var(--accent);border-color:var(--accent-dark);color:#fff8ee;box-shadow:0 2px 0 var(--accent-dark)}.btn--primary:hover:not(:disabled){background:#c15434}.btn--ghost{background:transparent;box-shadow:none}.btn--small{padding:5px 10px;min-height:32px;font-size:13px;border-radius:9px}.legend{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:12px;color:var(--ink-soft)}.notice{padding:8px 12px;border-radius:10px;background:#fdf1dd;border:1px dashed var(--gold);font-size:13px;color:#7a5316}.notice--soft{background:#f8efdf;border-style:solid;border-color:var(--line);color:var(--ink-soft)}.sidebar{display:grid;gap:16px}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:0 14px 26px #7e54331a;display:grid;gap:10px;align-content:start}.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.card-head h2{font-family:"Noto Serif SC",Songti SC,Georgia,serif;font-size:18px;color:var(--wood-dark)}.muted{font-size:13px;color:var(--ink-soft)}.level-list{display:grid;gap:8px}.level-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border-radius:12px;border:1px solid transparent;background:#fdf6e9;text-align:left;cursor:pointer}.level-item:hover:not(:disabled){background:#f9edd8}.level-item--active{border-color:var(--accent);background:#fdeee5;box-shadow:inset 0 0 0 1px #cf5f3f40}.level-item:disabled{cursor:not-allowed;opacity:.62}.level-id{flex:0 0 auto;width:26px;height:26px;display:grid;place-items:center;border-radius:999px;background:var(--paper);border:1px solid var(--line);font-size:13px;font-weight:700;color:var(--ink-soft)}.level-main{display:grid;gap:1px;min-width:0}.level-name{font-size:14px;font-weight:600;display:flex;align-items:center;gap:6px}.level-meta{font-size:12px;color:var(--ink-soft)}.lock{font-size:11px;font-weight:500;padding:0 6px;border-radius:999px;background:#efe2cd;color:var(--ink-soft)}.how-to{border-top:1px dashed var(--line);padding-top:8px;font-size:13px;color:var(--ink-soft)}.how-to summary{cursor:pointer;font-weight:600;color:var(--wood-dark)}.how-to ul{display:grid;gap:4px;margin-top:6px;padding-left:18px;list-style:disc}.rank-list{display:grid;gap:6px}.rank-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px 8px;border-radius:10px;background:#fdf6e9;font-size:14px}.rank-row--me{background:#fdeee5;box-shadow:inset 0 0 0 1px #cf5f3f4d}.rank-no{display:grid;place-items:center;width:24px;height:24px;border-radius:999px;font-size:12px;font-weight:700;background:#efe2cd;color:var(--ink-soft);font-variant-numeric:tabular-nums}.rank-no--1{background:#f4d68a;color:#6b4708}.rank-no--2{background:#e3e0da;color:#4d4a45}.rank-no--3{background:#e6c8a5;color:#6b4523}.rank-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.me-tag{margin-left:6px;padding:0 6px;border-radius:999px;background:var(--accent);color:#fff8ee;font-size:11px}.rank-score{font-weight:700;font-variant-numeric:tabular-nums}.personal-best{font-size:13px;color:var(--ink-soft)}.error-box{display:grid;gap:8px;justify-items:start;padding:10px 12px;border-radius:12px;border:1px solid #e0a793;background:#fdece6;font-size:13px;color:#8a3620}@media(max-width:940px){.shop-main{grid-template-columns:minmax(0,1fr)}.sidebar{order:2}}@media(max-width:620px){.shop-header{align-items:stretch}.player-box{min-width:0;width:100%}.counter{padding:14px}.level-head{flex-wrap:wrap}.moves{padding:6px 12px}.moves-num{font-size:26px}.tile-face{inset:3px;border-radius:11px}.board{padding:6px;border-radius:16px}.result{padding:12px;border-radius:16px}.controls{justify-content:flex-start}.legend{flex-basis:100%}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.loading{min-height:62vh;display:grid;place-content:center;justify-items:center;gap:6px;text-align:center;padding:24px}.loading-title{font-family:"Noto Serif SC",Songti SC,Georgia,serif;font-size:clamp(20px,4vw,26px);color:var(--wood-dark)}
