:root{--paper:#f5f6e9;--ink:#283d2d;--muted:#6b7968;--green:#52734b;--line:#ced8c3;--board:#e9efdf;--tile-background:#fff;font-family:ui-rounded,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;min-width:320px}button,input{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;transition:transform .15s,background .15s,box-shadow .15s}button:disabled{cursor:default}button:focus-visible,input:focus-visible{outline:3px solid #2e69ad;outline-offset:5px}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}[hidden]{display:none!important}
.game-shell{min-height:100svh;overflow:hidden}.app-header{height:76px;max-width:1180px;padding:0 34px;margin:auto;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;position:relative;z-index:5}.header-left{justify-self:start}.header-actions{justify-self:end;grid-column:3;display:flex;gap:10px}.icon-button{border:1px solid var(--line);background:#fff9;border-radius:50%;width:42px;height:42px;display:grid;place-items:center}.back-button{display:flex;align-items:center;gap:8px;border:0;background:transparent;padding:10px 0;font-size:13px;min-height:44px}.back-button svg{width:19px}.back-button:disabled{opacity:.4}.game-brand{font-size:19px;letter-spacing:2px}.screen{animation:screen-in .25s ease-out}.title-screen{min-height:calc(100svh - 76px);display:grid;place-items:center;position:relative;padding:10px 20px 60px}.title-screen:before,.title-screen:after{content:"";width:420px;height:420px;border:1px solid #dce3cf;border-radius:50%;position:absolute;pointer-events:none;z-index:-1}.title-screen:before{left:-280px;top:8%;box-shadow:0 0 0 35px #ecf0df}.title-screen:after{right:-290px;bottom:-130px;box-shadow:0 0 0 35px #ecf0df}.title-content{text-align:center;position:relative}.title-tag{font-size:12px;letter-spacing:5px;color:var(--muted);margin-bottom:13px}.title-content h1{font-size:clamp(62px,8vw,100px);line-height:1.2;letter-spacing:7px;font-weight:900;color:#507047;margin:0;position:relative;text-shadow:0 5px 0 #cddbb8}.title-spark{position:absolute;right:-29px;top:-12px;font-size:34px;color:#d9aa49;text-shadow:none;-webkit-text-stroke:0;transform:rotate(12deg)}.title-art{position:relative;width:350px;height:180px;margin:25px auto 24px}.title-tile{position:absolute;background-color:var(--tile-background);background-image:var(--tile-image);background-size:90%;background-position:center;background-repeat:no-repeat;border:2px solid #111;border-radius:18px;box-shadow:0 7px 0 #111;height:105px;width:105px;top:30px}.tile-left{left:34px;transform:rotate(-15deg);animation:bob-left 5s ease-in-out infinite}.tile-center{z-index:2;left:115px;top:5px;width:120px;height:120px;transform:rotate(3deg);animation:bob-center 4.3s ease-in-out infinite}.tile-right{right:27px;transform:rotate(17deg);animation:bob-right 4.7s ease-in-out infinite}.art-dot{position:absolute;width:9px;height:9px;border-radius:50%;background:#d8b255}.dot-one{left:7px;top:19px}.dot-two{right:9px;bottom:22px;width:6px;height:6px;background:#8da87e}.art-plus{position:absolute;right:9px;top:0;color:#8ca67a;font-size:25px}.menu-buttons{width:290px;max-width:100%;margin:auto;display:grid;gap:14px}.start-button{height:60px;border:2px solid var(--ink);border-radius:14px;background:#638653;color:#fff;box-shadow:0 6px 0 var(--ink);font-size:21px;font-weight:700;letter-spacing:4px;display:flex;align-items:center;justify-content:center;gap:22px}.menu-secondary{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:4px}.menu-secondary button{height:45px;border:1px solid #a4b699;background:#fff9;border-radius:10px;font-size:13px;letter-spacing:2px;box-shadow:0 3px 0 #d5dfc9}.text-button{background:none;border:0;text-decoration:underline;text-underline-offset:4px;font-size:12px;color:var(--muted);padding:7px}
.play-screen{padding:6px 24px 22px;min-height:calc(100svh - 76px)}.game-card{width:560px;max-width:100%;margin:auto}.game-heading{display:flex;justify-content:flex-end;align-items:center;margin-bottom:11px}.counter{display:flex;gap:9px;align-items:center}.counter strong{font:650 31px/1 system-ui,sans-serif;letter-spacing:-1px}.counter span{font-size:10px;color:var(--muted);width:24px;line-height:1.6}.progress-track{height:5px;background:#dde6ce;border-radius:5px;overflow:hidden}.progress-track span{display:block;height:100%;width:0;background:#87a96e;transition:width .3s;border-radius:5px}.board-wrap{margin-top:12px;position:relative;isolation:isolate}.board{width:100%;max-width:520px;margin:auto;aspect-ratio:420/340;position:relative;background:var(--board);border-radius:18px}.board:before,.board:after{content:"";position:absolute;width:18px;height:18px;border-color:#bbcbaa;border-style:solid}.board:before{left:10px;top:10px;border-width:1px 0 0 1px;border-radius:4px 0 0}.board:after{right:10px;bottom:10px;border-width:0 1px 1px 0;border-radius:0 0 4px}.tile,.tray-tile,.flying-tile{background-color:var(--tile-background);background-image:var(--tile-image);background-size:cover;background-position:center;background-repeat:no-repeat;border:2px solid #000;border-radius:9px;box-shadow:0 4px 0 #acb79d,0 5px 3px #32483014;overflow:hidden;color:var(--ink);font-weight:700}.tile{position:absolute;left:calc(var(--tile-x) * 100% / 420);top:calc(var(--tile-y) * 100% / 340);width:12.380952%;height:15.294118%;padding:0;display:grid;place-items:center;transition:filter .15s,transform .15s;user-select:none}.tile:not(:disabled):hover{transform:translateY(-4px);box-shadow:0 7px 0 #acb79d,0 10px 7px #32483022}.tile:disabled{filter:grayscale(.65);box-shadow:0 3px 0 #899180;cursor:not-allowed}.color-number{display:none;position:absolute;bottom:2px;right:2px;min-width:16px;height:16px;line-height:16px;text-align:center;border-radius:4px;background:#fff;color:#263629;font-size:11px;box-shadow:0 1px 3px #0004}.tile.appear{animation:pop-in .22s ease-out backwards}.feedback{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);z-index:1000;background:var(--ink);color:#fff;padding:8px 16px;border-radius:20px;white-space:nowrap;font-size:12px;opacity:0;pointer-events:none;transition:opacity .15s}.feedback.visible{opacity:1}.tray-heading{display:flex;justify-content:space-between;align-items:center;margin:14px 1px 8px;font-size:12px;font-weight:600}.tray-heading>span:first-child{display:flex;align-items:center;gap:7px}.tray-heading i{width:6px;height:6px;background:#8aa37e;border-radius:50%}#tray-count{font:600 14px system-ui,sans-serif}#tray-count small{font-size:11px;font-weight:400;color:var(--muted)}.tray{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;border:1px solid #b9c7a7;background:#e3ebd6;border-radius:12px;padding:8px;box-shadow:inset 0 2px 0 #cbd8bc}.tray-slot{aspect-ratio:1;background:#d1ddc2;border-radius:7px;box-shadow:inset 0 2px 2px #45533109;position:relative}.tray-tile{position:absolute;inset:0;display:grid;place-items:center;animation:none}.tray.warning{border-color:#cb8c6b;background:#f0dfcf}.tray.warning .tray-slot{background:#e2c8b2}.tools{margin-top:18px;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.tool-button{display:flex;align-items:center;justify-content:center;gap:8px;height:46px;border:1px solid #a9b99c;border-radius:11px;background:#fffdf4;box-shadow:0 3px 0 #c8d5ba;font-size:13px}.tool-button svg{height:18px;width:18px}.tool-button b{font:600 11px system-ui,sans-serif;width:18px;height:18px;background:#e6eddb;border-radius:50%;display:grid;place-items:center}.tool-button:disabled{opacity:.4}.flying-tile{transform-origin:0 0;position:fixed;z-index:5000;pointer-events:none;margin:0;display:grid;place-items:center;font-size:16px;font-weight:700}.match-particle{position:fixed;width:7px;height:7px;border-radius:2px;z-index:5001;pointer-events:none}
dialog{border:2px solid var(--ink);border-radius:22px;padding:0;width:min(390px,calc(100% - 36px));background:#fffef6;color:var(--ink);box-shadow:0 7px 0 var(--ink),0 20px 90px #213b3233}dialog::backdrop{background:#263c2e66;backdrop-filter:blur(5px)}.modal-close{position:absolute;right:12px;top:12px;width:32px;height:32px;border:0;background:transparent}.modal-close svg{width:18px}.modal-content{padding:35px 28px 28px;text-align:center}.modal-badge{margin:auto auto 17px;border-radius:7px;background:#e7eede;display:table;padding:7px 13px;font-size:11px;letter-spacing:2px;color:var(--green)}dialog h2{font-size:24px;margin:0 0 15px}#modal-description{color:var(--muted);font-size:13px;line-height:1.9}#modal-description p{margin:9px 0}.modal-actions{display:grid;gap:12px;margin-top:23px}.primary-button,.secondary-button{height:46px;border-radius:10px;font-size:14px;letter-spacing:1px}.primary-button{background:var(--green);color:#fff;border:1px solid var(--ink);box-shadow:0 3px 0 var(--ink)}.secondary-button{background:#fff;color:var(--ink);border:1px solid #a8b99a}
@keyframes screen-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes pop-in{from{transform:scale(.82);opacity:.25}to{transform:scale(1);opacity:1}}@keyframes bob-left{50%{transform:translateY(-5px) rotate(-12deg)}}@keyframes bob-center{50%{transform:translateY(-7px) rotate(0)}}@keyframes bob-right{50%{transform:translateY(4px) rotate(13deg)}}
@media(min-width:1000px) and (min-height:850px){.play-screen{padding-top:24px}.game-card{width:600px}.board{max-width:560px}.title-art{margin-top:35px;margin-bottom:35px}.menu-buttons{width:310px}}
@media(max-width:600px){.app-header{height:64px;padding:0 max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left))}.header-actions{gap:8px}.icon-button{width:38px;height:38px}.game-brand{font-size:16px;letter-spacing:1px}.back-button{font-size:11px;gap:4px}.back-button svg{width:18px}.title-screen{min-height:calc(100svh - 64px);padding:5px 20px max(50px,env(safe-area-inset-bottom))}.title-tag{font-size:11px;letter-spacing:3px}.title-content h1{font-size:65px;letter-spacing:4px}.title-spark{font-size:26px;right:-13px;top:-16px}.title-art{width:310px;height:165px;margin:28px auto 24px}.title-tile{width:96px;height:96px;border-radius:15px}.tile-left{left:22px}.tile-center{left:99px;width:110px;height:110px}.tile-right{right:16px}.menu-buttons{width:272px}.play-screen{padding:10px 12px max(18px,env(safe-area-inset-bottom));min-height:calc(100svh - 64px)}.game-heading{padding:0 5px}.board{width:100%;aspect-ratio:340/420}.tile{left:calc(var(--tile-y) * 100% / 340);top:calc(var(--tile-x) * 100% / 420);width:15.294118%;height:12.380952%}.tray{gap:5px;padding:7px}.tray-tile{border-radius:7px}.tools{gap:9px}.tool-button{gap:6px;font-size:12px}.tray-heading{margin-top:15px}}
@media(max-height:700px){.title-screen{padding-bottom:32px}.title-content h1{font-size:64px}.title-art{height:135px;margin:14px auto 18px;transform:scale(.85)}.title-tag{margin-bottom:8px}.start-button{height:52px}.menu-secondary button{height:42px}}
.selection-screen{min-height:calc(100svh - 76px);display:grid;grid-template-columns:minmax(0,1fr);place-items:center;padding:24px 20px 64px}.selection-screen .selection-content{width:460px;max-width:100%;text-align:center}.selection-screen h2{font-size:34px;line-height:1.3;letter-spacing:3px;margin:0 0 28px;outline:none}.selection-screen .selection-panel:not([hidden]){animation:selection-panel-in .22s ease-out}.selection-screen .selection-card{border:2px solid #111;border-radius:20px;background:#fff;box-shadow:0 7px 0 #111;display:flex;flex-direction:column;align-items:center;margin:0 auto;padding:25px 24px 23px;max-width:100%;color:var(--ink)}.selection-screen .selection-card>.button-face>strong{font-size:26px;font-weight:800;letter-spacing:3px;line-height:1.4}.selection-screen .character-card{width:270px;min-height:290px}.selection-screen .selection-avatar{width:150px;height:150px;display:block;background-color:var(--tile-background);background-image:var(--tile-image);background-repeat:no-repeat;background-position:center;background-size:contain;margin:0 0 15px}.selection-screen .selection-choice-hint{display:flex;align-items:center;justify-content:center;gap:12px;color:#59794b;font-size:12px;letter-spacing:1px;margin-top:16px}.selection-screen .selection-choice-hint svg{width:17px;height:17px}.selection-screen .pack-card{width:338px;padding-top:29px}.selection-screen .pack-preview{height:117px;width:250px;max-width:100%;display:block;position:relative;margin-bottom:24px}.selection-screen .pack-preview>span{position:absolute;display:block;width:88px;height:88px;border:2px solid #111;border-radius:13px;box-shadow:0 5px 0 #111;background-color:var(--tile-background);background-image:var(--tile-image);background-size:90%;background-repeat:no-repeat;background-position:center;top:15px}.selection-screen .pack-preview>span:first-child{left:6px;transform:rotate(-11deg)}.selection-screen .pack-preview>span:nth-child(2){left:81px;top:0;z-index:1;transform:rotate(2deg)}.selection-screen .pack-preview>span:last-child{right:6px;transform:rotate(12deg)}.selection-screen .selection-back{margin:23px auto 0;min-height:44px;display:flex;align-items:center;justify-content:center;gap:7px;border:0;background:transparent;font-size:12px;color:var(--muted);padding:9px 12px}.selection-screen .selection-back svg{width:17px;height:17px}
@keyframes selection-panel-in{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:600px){.selection-screen{min-height:calc(100svh - 64px);padding:22px 20px max(40px,env(safe-area-inset-bottom))}.selection-screen h2{font-size:30px}.selection-screen .pack-card{width:320px}.selection-screen .pack-preview{width:238px}.selection-screen .pack-preview>span:nth-child(2){left:75px}}
@media(max-height:700px){.selection-screen{padding-top:14px;padding-bottom:30px}.selection-screen .character-card{min-height:258px;padding-top:19px;padding-bottom:19px}.selection-screen .selection-avatar{width:128px;height:128px}.selection-screen .pack-card{padding-top:22px;padding-bottom:20px}.selection-screen .pack-preview{height:103px;margin-bottom:15px}.selection-screen .selection-back{margin-top:17px}}
#settings-modal .background-settings{border:0;margin:22px 0 0;padding:0;min-width:0;text-align:left}#settings-modal .background-settings legend{padding:0;margin-bottom:16px;font-size:13px;font-weight:600;color:var(--muted)}#settings-modal .background-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}#settings-modal .background-option{display:grid;grid-template-columns:16px minmax(0,1fr);grid-template-rows:auto 28px;align-items:center;column-gap:6px;row-gap:9px;cursor:pointer;min-width:0}#settings-modal .background-option input{grid-column:1;grid-row:2;width:15px;height:15px;margin:0;accent-color:var(--green);cursor:pointer}#settings-modal .background-preview{grid-column:1/-1;grid-row:1;width:100%;aspect-ratio:1;border:2px solid #111;border-radius:11px;background-color:var(--preview-background);background-image:var(--tile-image);background-size:90%;background-repeat:no-repeat;background-position:center;box-shadow:0 3px 0 #111}#settings-modal .background-option input:checked+.background-preview{outline:3px solid var(--green);outline-offset:3px}#settings-modal .background-name{grid-column:2;grid-row:2;font-size:12px;white-space:nowrap}#settings-modal .background-option input:checked~.background-name{font-weight:700;color:var(--green)}
@media(max-width:600px){.app-header{grid-template-columns:auto minmax(0,1fr) auto;column-gap:8px}.header-actions{gap:5px}.game-brand{justify-self:center;font-size:15px;letter-spacing:.5px;white-space:nowrap}#settings-modal .modal-content{padding-left:23px;padding-right:23px}#settings-modal .background-options{gap:10px}}

.selection-screen .selection-content{width:1000px}
.selection-screen #character-panel{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:0 auto;max-width:min(900px,100%)}
.selection-screen #character-panel .character-card{width:100%;min-height:270px;padding:24px 18px}
.selection-screen #character-panel .selection-avatar{width:140px;height:140px;max-width:100%}
.selection-screen #pack-options{display:flex;flex-wrap:wrap;justify-content:center;gap:28px}
.selection-screen #pack-options .pack-card{margin:0;flex:0 1 auto}
@media(max-width:850px){.selection-screen #character-panel{width:480px;grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.selection-screen #character-panel{gap:18px 14px}.selection-screen #character-panel .character-card{min-height:210px;padding:18px 10px;border-radius:17px}.selection-screen #character-panel .selection-avatar{width:100px;height:100px;margin-bottom:12px}.selection-screen #character-panel .character-card>.button-face>strong{font-size:22px;letter-spacing:2px}.selection-screen #character-panel .selection-choice-hint{font-size:11px;letter-spacing:0;gap:6px;margin-top:12px}}

/* Larger page content, with tile coordinates still relative to the board. */
.counter strong{font-size:36px}
.counter span{font-size:12px;width:29px}
.tray-heading{font-size:14px}
#tray-count{font-size:16px}
#tray-count small{font-size:13px}
.tool-button{height:54px;font-size:15px}
.tool-button svg{width:22px;height:22px}
dialog{width:min(450px,calc(100% - 32px))}
.modal-content{padding:40px 32px 32px}
dialog h2{font-size:28px}
.modal-badge{font-size:13px}
#modal-description{font-size:15px}
.primary-button,.secondary-button{height:54px;font-size:16px}
#settings-modal .background-settings legend{font-size:15px}
#settings-modal .background-name{font-size:14px}
@media(min-width:601px){
  .app-header{height:88px;max-width:1400px;padding:0 40px}
  .header-actions{gap:12px}
  .icon-button{width:48px;height:48px}
  .icon-button svg{width:25px;height:25px}
  .back-button{font-size:15px}
  .game-brand{font-size:22px}
  .title-screen,.selection-screen,.play-screen{min-height:calc(100svh - 88px)}
  .title-content h1{font-size:clamp(72px,9vw,116px)}
  .title-tag{font-size:14px;margin-bottom:16px}
  .title-art{width:410px;height:210px;margin:30px auto}
  .title-tile{width:122px;height:122px;top:35px;border-radius:21px}
  .tile-left{left:40px}
  .tile-center{left:135px;top:6px;width:140px;height:140px}
  .tile-right{right:32px}
  .menu-buttons{width:350px;gap:17px}
  .start-button{height:70px;font-size:25px}
  .menu-secondary button{height:52px;font-size:15px}
  .text-button{font-size:14px}
  .selection-screen .selection-content{width:1160px}
  .selection-screen h2{font-size:40px;margin-bottom:34px}
  .selection-screen #character-panel{width:100%;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
  .selection-screen #character-panel .character-card{min-height:312px;padding:28px 21px}
  .selection-screen #character-panel .selection-avatar{width:164px;height:164px}
  .selection-screen .selection-card>.button-face>strong{font-size:30px}
  .selection-screen .selection-choice-hint{font-size:14px;margin-top:19px}
  .selection-screen .pack-card{width:394px;padding:34px 28px 27px}
  .selection-screen .pack-preview{width:290px;height:136px;margin-bottom:28px}
  .selection-screen .pack-preview>span{width:102px;height:102px;top:18px}
  .selection-screen .pack-preview>span:nth-child(2){left:94px;top:0}
  .selection-screen .selection-back{font-size:14px;margin-top:27px}
  .game-card{width:650px}
  .board{max-width:600px}
  .tray{gap:7px;padding:10px}
  .tools{gap:14px;margin-top:21px}
}
@media(min-width:1000px) and (min-height:850px){
  .game-card{width:700px}
  .board{max-width:650px}
}
@media(min-width:601px) and (max-width:1000px){
  .selection-screen #character-panel{width:560px;grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:600px){
  .app-header{height:76px;padding-left:12px;padding-right:12px;column-gap:6px}
  .icon-button{width:44px;height:44px}
  .title-screen,.selection-screen,.play-screen{min-height:calc(100svh - 76px)}
  .title-screen{grid-template-columns:minmax(0,1fr)}
  .title-content{width:100%;max-width:380px;min-width:0}
  .title-content h1{font-size:clamp(60px,18vw,78px)}
  .title-tag{font-size:12px}
  .title-art{width:340px;max-width:100%;height:185px;transform:none;margin:26px auto}
  .title-tile{width:33%;height:auto;aspect-ratio:1;top:35px}
  .tile-left{left:8%}
  .tile-center{left:31%;top:8px;width:38%;height:auto}
  .tile-right{right:6%}
  .menu-buttons{width:320px;gap:16px}
  .start-button{height:66px;font-size:23px}
  .menu-secondary button{height:50px;font-size:14px}
  .selection-screen{padding-left:16px;padding-right:16px}
  .selection-screen h2{font-size:34px}
  .selection-screen #character-panel .character-card{min-height:234px;padding:20px 10px}
  .selection-screen #character-panel .selection-avatar{width:116px;height:auto;aspect-ratio:1}
  .selection-screen #character-panel .character-card>.button-face>strong{font-size:25px}
  .selection-screen #character-panel .selection-choice-hint{font-size:12px}
  .selection-screen .pack-card{width:350px;padding-top:30px;padding-bottom:27px}
  .selection-screen .pack-preview{width:260px;height:126px;margin-bottom:26px}
  .selection-screen .pack-preview>span{width:94px;height:94px}
  .selection-screen .pack-preview>span:nth-child(2){left:calc(50% - 47px)}
  .selection-screen .selection-card>.button-face>strong{font-size:29px}
  .play-screen{padding-left:8px;padding-right:8px}
  .tool-button{font-size:14px}
  .modal-content{padding:36px 24px 26px}
  .modal-close{width:36px;height:36px}
}

.hidden-content{margin:24px 0 0;padding-top:22px;border-top:1px solid var(--line);text-align:left}
.hidden-content h3{font-size:16px;margin:0 0 16px}
.hidden-content label{display:block;font-size:13px;color:var(--muted);margin-bottom:8px}
.unlock-row{display:grid;grid-template-columns:minmax(0,1fr) 80px;gap:10px;align-items:center}
#hidden-password{width:100%;min-width:0;height:50px;border:1px solid #a8b99a;border-radius:10px;background:#fff;color:var(--ink);font:inherit;font-size:16px;padding:0 13px}
#hidden-password[aria-invalid="true"]{border-color:#ad473b}
#unlock-content{height:50px}
#hidden-content-status{font-size:13px;line-height:1.6;color:var(--green);margin:12px 0 0;min-height:21px}
#hidden-content-status:empty{display:none}
#hidden-content-status.error{color:#ad473b}

.mix-screen .mix-content{width:1000px;max-width:100%;text-align:center}
.mix-screen #mix-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:20px}
.mix-screen .mix-pack-card{width:100%;min-height:230px;padding:26px 18px 22px}
.mix-screen .mix-pack-card>.button-face>strong{font-size:26px;letter-spacing:2px}
.mix-pack-preview{display:block;position:relative;width:190px;max-width:100%;aspect-ratio:1.8;margin:7px 0 18px}
.mix-pack-preview>span{display:block;position:absolute;width:43%;aspect-ratio:1;border:2px solid #111;border-radius:12px;box-shadow:0 4px 0 #111;background-color:var(--tile-background);background-image:var(--tile-image);background-size:90%;background-position:center;background-repeat:no-repeat;top:16%}
.mix-pack-preview>span:first-child{left:0;transform:rotate(-10deg)}
.mix-pack-preview>span:nth-child(2){left:28.5%;top:0;z-index:1;transform:rotate(2deg)}
.mix-pack-preview>span:last-child{right:0;transform:rotate(10deg)}
.mix-pack-name{margin-top:7px;color:var(--muted);font-size:14px;letter-spacing:1px}
.mix-pack-check{position:absolute;right:-5px;top:-9px;display:grid;place-items:center;width:26px;height:26px;border:2px solid #a4b699;border-radius:50%;background:#fff;color:#fff}
.mix-pack-check svg{width:17px;height:17px;stroke-width:2.4;opacity:0}
.mix-screen .mix-pack-card[aria-pressed="true"]{--button-bg:#f0f5e9;--button-hover-bg:#e7f0dd}
.mix-screen .mix-pack-card[aria-pressed="true"]::before{outline:3px solid var(--green);outline-offset:3px}
.mix-pack-card[aria-pressed="true"] .mix-pack-check{border-color:var(--green);background:var(--green)}
.mix-pack-card[aria-pressed="true"] .mix-pack-check svg{opacity:1}
.mix-actions{display:grid;grid-template-columns:minmax(0,1fr) 180px 220px;gap:14px;align-items:center;margin-top:30px}
#mix-count{text-align:left;font-size:14px;color:var(--muted)}
#mix-level{width:100%;min-width:0;height:54px;border:1px solid #a8b99a;border-radius:10px;padding:0 12px;background:#fff;color:var(--ink);font:inherit;font-size:16px;cursor:pointer}
#mix-level:focus-visible{outline:3px solid #2e69ad;outline-offset:4px}
#mix-start{width:100%}
@media(max-width:600px){.mix-screen #mix-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 14px}.mix-screen .mix-pack-card{min-height:204px;padding:22px 12px 18px;border-radius:17px}.mix-screen .mix-pack-card>.button-face>strong{font-size:23px}.mix-pack-preview{margin-top:13px;margin-bottom:15px}.mix-pack-preview>span{border-radius:9px}.mix-pack-name{font-size:13px}.mix-pack-check{width:24px;height:24px;right:-2px;top:-9px}.mix-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:25px}#mix-count{grid-column:1/-1;text-align:center}#mix-level{padding:0 8px}}
@media(max-width:360px){.mix-screen #mix-options{grid-template-columns:minmax(0,1fr)}.mix-screen .mix-pack-card{min-height:210px}.mix-pack-preview{width:190px}.mix-pack-check{right:0}}

/* Reserve the dock's space so the game keeps its full tile size. */
:root{--music-space:140px}
.game-shell{padding-bottom:var(--music-space)}
.title-screen,.selection-screen,.play-screen{min-height:calc(100svh - 88px - var(--music-space))}
#music-player{position:fixed;z-index:20;left:50%;bottom:16px;transform:translateX(-50%);width:800px;max-width:calc(100% - 32px);display:grid;grid-template-columns:auto minmax(0,1fr) 160px;align-items:center;gap:22px;padding:13px 16px;border:2px solid #111;border-radius:17px;background:#fff;box-shadow:0 5px 0 #283d2d;color:var(--ink)}
#background-music{display:none}
.music-controls{display:flex;align-items:center;gap:7px}
.music-button{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;padding:0;border:1px solid var(--line);border-radius:11px;background:#fff}
.music-button svg{width:22px;height:22px}
.feedback-button.music-button{--button-bg:#fff;--button-hover-bg:#edf3e5;--button-border:1px;--button-line:var(--line);--button-depth:2px;--button-shadow:#d5dfc9;--button-press:2px}
#music-toggle{background:var(--green);color:#fff;--button-bg:var(--green);--button-hover-bg:#658658;--button-line:var(--ink);--button-shadow:var(--ink);--button-ring-color:#ffffffc4}
.music-track{min-width:0}
.music-track-heading{display:flex;align-items:center;gap:10px;min-width:0}
#music-title{display:block;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:700;line-height:22px;min-height:22px}
#music-mode{display:flex;align-items:center;justify-content:center;flex:0 0 auto;width:auto;gap:6px;padding:0 10px;font-size:12px;white-space:nowrap}
#music-mode svg{width:16px;height:16px}
#music-collapse{display:flex;align-items:center;justify-content:center;flex:0 0 auto;width:auto;gap:4px;padding:0 8px;font-size:12px;white-space:nowrap}
#music-collapse svg{width:16px;height:16px}
.music-timeline{display:grid;grid-template-columns:35px minmax(0,1fr) 35px;align-items:center;gap:7px;margin-top:4px}
#music-current,#music-duration,#music-volume-value{font-size:11px;font-variant-numeric:tabular-nums;color:var(--muted);white-space:nowrap}
#music-duration,#music-volume-value{text-align:right}
#music-player input[type="range"]{display:block;width:100%;min-width:0;height:24px;margin:0;padding:0;accent-color:var(--green);cursor:pointer}
#music-player input[type="range"]:disabled{cursor:default;opacity:.45}
.music-volume{display:grid;grid-template-columns:18px minmax(0,1fr) 32px;align-items:center;gap:7px}
.music-volume svg{width:18px;height:18px;color:var(--muted)}
#music-status{position:absolute;left:12px;right:12px;bottom:calc(100% + 12px);padding:8px 12px;border:1px solid #111;border-radius:10px;background:#fff;color:var(--ink);font-size:12px;line-height:1.5;text-align:center}
@media(max-width:760px){
  :root{--music-space:calc(180px + env(safe-area-inset-bottom,0px))}
  #music-player{bottom:calc(12px + env(safe-area-inset-bottom,0px));max-width:calc(100% - 24px);grid-template-columns:auto minmax(0,1fr);gap:9px 18px;padding:10px 12px 12px;border-radius:15px}
  .music-track{grid-column:1/-1;grid-row:1}
  #music-title{font-size:14px}
  .music-timeline{margin-top:1px}
  .music-volume{gap:5px;grid-template-columns:16px minmax(0,1fr) 30px}
  .music-volume svg{width:16px;height:16px}
}
@media(max-width:600px){.title-screen,.selection-screen,.play-screen{min-height:calc(100svh - 76px - var(--music-space))}}
@media(max-width:360px){#music-player{column-gap:10px;padding-left:10px;padding-right:10px}.music-controls{gap:4px}.music-volume{grid-template-columns:minmax(0,1fr) 30px}.music-volume svg{display:none}}
:root.music-collapsed{--music-space:108px}
#music-player.is-collapsed{width:420px;grid-template-columns:44px minmax(0,1fr);gap:14px}
#music-player.is-collapsed #music-prev,#music-player.is-collapsed #music-next,#music-player.is-collapsed #music-mode,#music-player.is-collapsed .music-timeline,#music-player.is-collapsed .music-volume{display:none}
#music-player.is-collapsed .music-track{grid-column:auto;grid-row:auto}
#music-player.is-collapsed .music-track-heading{gap:8px}
@media(max-width:760px){:root.music-collapsed{--music-space:calc(100px + env(safe-area-inset-bottom,0px))}#music-player.is-collapsed{gap:12px}}
body[data-screen="game"] .game-shell{min-height:0;padding-bottom:20px}
body[data-screen="game"] #music-player{position:relative;left:auto;bottom:auto;transform:none;margin:0 auto calc(20px + env(safe-area-inset-bottom,0px))}

/* The button keeps its hit area; only its skin and face move. */
.feedback-button{position:relative;isolation:isolate;background:transparent!important;border-color:transparent!important;box-shadow:none!important;transform:none!important;overflow:visible;--button-bg:transparent;--button-hover-bg:transparent;--button-line:transparent;--button-border:0px;--button-depth:0px;--button-shadow:transparent;--button-press:3px;--button-y:0px;--button-scale-x:1;--button-scale-y:1;--button-shadow-y:var(--button-depth);--button-fill:var(--button-bg)}
.feedback-button::before{content:"";position:absolute;inset:calc(-1 * var(--button-border));box-sizing:border-box;border:var(--button-border) solid var(--button-line);border-radius:inherit;background:var(--button-fill);box-shadow:0 var(--button-shadow-y) 0 var(--button-shadow);pointer-events:none;z-index:0}
.feedback-button>.button-face{position:relative;z-index:1;display:flex;flex-direction:inherit;align-items:center;justify-content:center;gap:inherit;min-width:0;width:100%;pointer-events:none}
.feedback-button>.button-face *{pointer-events:none}
.feedback-button::before,.feedback-button>.button-face{transform:translateY(var(--button-y)) scale(var(--button-scale-x),var(--button-scale-y));transform-origin:center;transition:transform .18s cubic-bezier(.2,.9,.3,1.3),background-color .1s ease-out,box-shadow .18s cubic-bezier(.2,.9,.3,1.3)}
.feedback-button:focus-visible{--button-fill:var(--button-hover-bg)}
.feedback-button:not(:disabled):active{--button-y:var(--button-press);--button-scale-x:1.025;--button-scale-y:.955;--button-shadow-y:max(0px,calc(var(--button-depth) - var(--button-press)));--button-fill:var(--button-hover-bg)}
.feedback-button:not(:disabled):active::before,.feedback-button:not(:disabled):active>.button-face{transition-duration:.055s;transition-timing-function:ease-out}
.feedback-button:disabled{opacity:.4;--button-y:0px;--button-scale-x:1;--button-scale-y:1;--button-shadow-y:var(--button-depth);--button-fill:var(--button-bg)}
.feedback-button.icon-button{--button-bg:#fff9;--button-hover-bg:#fff;--button-border:1px;--button-line:var(--line);--button-press:1.5px}
.feedback-button.modal-close{position:absolute;--button-bg:transparent;--button-hover-bg:#e8efdc;--button-border:0px}
.feedback-button.start-button{--button-bg:#638653;--button-hover-bg:#72955e;--button-border:2px;--button-line:var(--ink);--button-depth:6px;--button-shadow:var(--ink);--button-press:4px;--button-ring-color:#ffffffc4}
.menu-secondary .feedback-button{--button-bg:#fff9;--button-hover-bg:#fff;--button-border:1px;--button-line:#a4b699;--button-depth:3px;--button-shadow:#d5dfc9;--button-press:2px}
.feedback-button.tool-button{--button-bg:#fffdf4;--button-hover-bg:#eaf0e2;--button-border:1px;--button-line:#a9b99c;--button-depth:3px;--button-shadow:#c8d5ba;--button-press:2px}
.feedback-button.selection-card{--button-bg:#fff;--button-hover-bg:#fffffc;--button-border:2px;--button-line:#111;--button-depth:7px;--button-shadow:#111;--button-press:4px}
.feedback-button.primary-button{--button-bg:var(--green);--button-hover-bg:#658658;--button-border:1px;--button-line:var(--ink);--button-depth:3px;--button-shadow:var(--ink);--button-press:2px;--button-ring-color:#ffffffc4}
.feedback-button.secondary-button{--button-bg:#fff;--button-hover-bg:#f0f4e8;--button-border:1px;--button-line:#a8b99a;--button-press:1.5px}
.feedback-button.back-button,.feedback-button.text-button,.feedback-button.selection-back{--button-hover-bg:#e9efdf99;--button-press:1.5px;border-radius:8px}
.feedback-button>.button-ring{position:absolute;z-index:2;width:14px;height:14px;border:2px solid var(--button-ring-color,#6b915aba);border-radius:50%;pointer-events:none;opacity:0;transform:translate(-50%,-50%) scale(.4);animation:button-ring .24s ease-out forwards}
@keyframes button-ring{from{opacity:.8;transform:translate(-50%,-50%) scale(.4)}to{opacity:0;transform:translate(-50%,-50%) scale(4.8)}}
@media(hover:hover) and (pointer:fine){.feedback-button:not(:disabled):hover:not(:active){--button-y:-2px;--button-scale-x:1.012;--button-scale-y:1;--button-shadow-y:calc(var(--button-depth) + 2px);--button-fill:var(--button-hover-bg)}.feedback-button.back-button:hover,.feedback-button.text-button:hover,.feedback-button.selection-back:hover{color:var(--green)}#settings-modal .background-option:hover .background-preview{transform:translateY(-2px) scale(1.02)}}
#settings-modal .background-preview{transition:transform .18s cubic-bezier(.2,.9,.3,1.3),box-shadow .15s ease-out}
#settings-modal .background-option:active .background-preview{transform:translateY(2px) scale(1.02,.96);transition-duration:.055s}
#settings-modal .background-option input:focus-visible+.background-preview{outline:3px solid #2e69ad;outline-offset:3px}
@media(prefers-reduced-motion:reduce){.feedback-button::before,.feedback-button>.button-face,#settings-modal .background-preview{transform:none!important}.feedback-button>.button-ring{display:none}.feedback-button{--button-shadow-y:var(--button-depth)!important}}
#ambient-background{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:0;contain:strict}
.game-shell{position:relative;z-index:1}
.title-screen:before,.title-screen:after{display:none}
.ambient-item{--size:clamp(80px,var(--shape-width),var(--shape-size));position:absolute;left:calc(100% + 20px);top:var(--shape-top);width:var(--size);height:var(--size);margin-top:calc(var(--size) / -2);animation:ambient-slide var(--travel-time) linear var(--travel-delay) infinite;will-change:transform}
.ambient-item>span{display:block;width:100%;height:100%;background:#ecf0df;transform:rotate(var(--shape-angle));-webkit-mask:var(--silhouette) center/contain no-repeat;mask:var(--silhouette) center/contain no-repeat}
@keyframes ambient-slide{from{transform:translate3d(0,0,0)}to{transform:translate3d(calc(-100vw - var(--size) - 40px),0,0)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.ambient-item{left:var(--rest-left);transform:translateX(-50%);will-change:auto}}
