@font-face{font-family:Brush;src:url('assets/calligraphy.ttf');font-display:swap}*{box-sizing:border-box}body{margin:0;color:#533f2e;background:#ede1c7;background-image:linear-gradient(100deg,#faf1def2,#e6d4b6ec),url('assets/workshop.webp');background-size:cover;font:15px Georgia,'Songti SC',serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #ba713c;outline-offset:3px}main{max-width:1120px;min-height:100svh;display:grid;grid-template-columns:1fr 480px;gap:80px;margin:auto;padding:36px 40px}aside{padding-top:25px}small{font:10px Georgia;letter-spacing:2px;color:#967b5b}h1,h2,.tray-label,footer,nav,.primary{font-family:Brush,'KaiTi',serif;font-weight:400}h1{font-size:64px;margin:15px 0;text-shadow:0 2px #fff9e9,1px 3px #bba17d}.subtitle{letter-spacing:5px;color:#9a4f38}.art{margin:32px 0 25px;position:relative;transform:rotate(-2deg);border:6px ridge #a28759;box-shadow:5px 8px 0 #997c4922}.art img{width:100%;display:block;aspect-ratio:1.5;object-fit:cover}.art span{position:absolute;bottom:0;left:0;right:0;background:#eee1c4dd;text-align:center;padding:12px;font-size:13px}p{line-height:1.9}.rules{border-block:1px dashed #bba27e;padding:5px 0;margin:22px 0}.rules b{color:#944b34}a{color:#8d4832;text-underline-offset:5px}.branch{display:block;font-size:11px;color:#967b5b;margin-top:20px}.game{width:100%;max-width:480px;margin:auto}header{display:flex;justify-content:space-between;align-items:center}h2{font-size:32px;margin:8px 0;text-shadow:0 2px #fff7df}.quiet{background:none;border:1px solid #bba17a;border-radius:50%;width:50px;height:50px;font-size:12px}nav{display:flex;gap:14px;margin:13px 0 15px}nav button{background:#f9edcf;border:1px solid #baa075;border-radius:50%;width:32px;height:32px;box-shadow:0 3px #b29a75}nav button.active{background:#924832;color:#fff1cf}.status{display:flex;justify-content:space-between;font-size:12px;color:#8c6c4e}.progress{height:4px;background:#ceb891;margin:9px 0 8px}.progress i{height:100%;display:block;background:#a85136;transition:width .3s}.board{position:relative;aspect-ratio:1;width:100%;border-radius:35%;background:radial-gradient(ellipse,#bda67e33,transparent 70%);isolation:isolate}.tile{position:absolute;width:14.5%;height:16.4%;padding:5px;border:1px solid #bd9e6d;border-radius:7px;background:linear-gradient(130deg,#fffae9,#eddfc1);box-shadow:0 5px 0 #b39769,0 6px 2px #715b3e,2px 9px 8px #62472b38;transition:filter .2s,transform .16s;touch-action:manipulation}.tile img{width:100%;height:100%;object-fit:contain;display:block;pointer-events:none;mix-blend-mode:multiply}.tile:active:not(:disabled){transform:translateY(3px);box-shadow:0 2px #b39769}.tile.covered{filter:brightness(.78) saturate(.7);cursor:default}.tile.hinted{outline:3px solid #c38739;animation:breath .7s alternate infinite}.tray-label{display:flex;align-items:center;justify-content:space-between;font-size:20px;margin:1px 5px 8px}.tray{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;padding:10px 9px 14px;border:2px solid #93734b;border-radius:9px;background:#c8ad7d;box-shadow:inset 0 3px 6px #765c3f66,0 3px #8c6b43}.slot{aspect-ratio:.82;border:1px solid #9d7f53;border-radius:5px;background:#ac8b5840;box-shadow:inset 0 2px 3px #765d3a33}.slot img{width:100%;height:100%;object-fit:contain;padding:5px;background:#fff1d3;border-radius:4px;animation:settle .22s both}.tray.danger{border-color:#a34832}.tray.matched{animation:tray-glow .5s}#message{font-size:12px;text-align:center;min-height:34px;margin:9px 0}footer{display:flex;justify-content:space-around;gap:5px}footer button{display:flex;align-items:center;justify-content:center;gap:4px;border:0;background:transparent;font-size:17px;padding:4px 0}footer b{font:12px Georgia;color:#9b4f34}button:disabled{cursor:default}footer button:disabled{opacity:.35}.prop{display:block;width:36px;height:34px;background-image:url('assets/props-transparent.webp');background-size:300% 200%;filter:drop-shadow(0 2px 1px #6c4d2c55)}.back{background-position:50% 100%}.glass{background-position:100% 0}.restart{display:block;margin:9px auto 0;font-size:11px;border:0;border-bottom:1px solid #b29b79;background:none;color:#977855}.flying{position:fixed;z-index:1000;pointer-events:none;object-fit:contain;border-radius:5px;background:#fff1d3}dialog{border:2px solid #b28c51;border-radius:14px;background:#fcf0d6;color:#60442e;max-width:min(90vw,390px);text-align:center;padding:28px;box-shadow:0 0 0 5px #e2c391,0 18px 70px #352a1a66}dialog::backdrop{background:#342b20a8}dialog h2{font-size:40px}dialog .reward{width:100px;height:100px;object-fit:contain;border-radius:50%;border:2px solid #b79760;margin:12px}dialog p{font-size:14px}.primary{display:block;width:100%;background:#934930;color:#fff2d1;border:1px solid #b88756;border-radius:7px;box-shadow:0 5px #62432b;font-size:24px;padding:12px;margin:14px 0}.primary:active{translate:0 3px;box-shadow:0 2px #62432b}.secondary{font-size:18px;background:#eee0bf;color:#6d4b30}.win-flower{position:fixed;width:24px;height:24px;object-fit:contain;pointer-events:none;z-index:2000;animation:petal 1.8s ease-out forwards}@keyframes petal{to{transform:translate(var(--dx),var(--dy)) rotate(240deg);opacity:0}}@keyframes breath{to{filter:brightness(1.1);outline-color:#edc778}}@keyframes settle{from{transform:scale(.7)}to{transform:scale(1)}}@keyframes tray-glow{50%{box-shadow:0 0 25px #c18c42}}@media(max-width:850px){main{display:block;padding:12px 14px;min-height:100svh}aside{display:none}.game{max-width:430px}h2{font-size:27px}header small{font-size:9px}nav{margin:5px 0 10px}.board{max-width:var(--board-size,430px);margin:auto}footer button{font-size:16px}.tray-label{margin-top:7px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* Fixed-size tray cells: intrinsic image widths must never expand grid tracks. */
.slot{position:relative;min-width:0;min-height:0;overflow:hidden}.slot img{position:absolute;inset:0;display:block;width:100%;height:100%;max-width:100%;max-height:100%;animation:none}.tray{width:100%;min-width:0;overflow:hidden}.match-halo{position:fixed;width:160px;height:70px;border-radius:50%;pointer-events:none;z-index:1100;background:conic-gradient(from 20deg,#edc96688,#65c6ba88,#dd88bb88,#8eaee888,#edc96688);filter:blur(5px);animation:bloom-halo .8s ease-out both}.match-spark{position:fixed;width:6px;height:6px;pointer-events:none;z-index:1101;background:hsl(var(--hue) 75% 70%);box-shadow:0 0 7px hsl(var(--hue) 80% 75%);border-radius:50%;animation:bloom-spark .85s ease-out both}@keyframes bloom-halo{from{transform:translate(-50%,-50%) scale(.25);opacity:0}35%{opacity:1}to{transform:translate(-50%,-50%) scale(1.65);opacity:0}}@keyframes bloom-spark{from{transform:translate(-50%,-50%) scale(.2);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(.1);opacity:0}}

.flying{transform-origin:top left}

dialog.won{background:radial-gradient(ellipse at 50% 32%,#f1d8bb66,#fcf0d6 68%),#fcf0d6;box-shadow:0 0 0 5px #e2c391,0 0 35px #a6bfc188,0 18px 70px #352a1a66}dialog.won .reward{box-shadow:-10px 0 23px #d4a2c755,10px 0 23px #8fbdbb66,0 -8px 20px #edc36c66;animation:reward-bloom .8s ease-out both}@keyframes reward-bloom{from{transform:scale(.4);opacity:0}65%{transform:scale(1.1);opacity:1}to{transform:scale(1)}}

#levels{display:grid;grid-template-columns:repeat(10,1fr);gap:8px}#levels button{justify-self:center}#levels button:active{transform:translateY(2px);box-shadow:0 1px #b29a75}@media(max-width:450px){#levels{grid-template-columns:repeat(5,1fr);gap:7px;margin-bottom:12px}h2{font-size:25px}}
[hidden]{display:none!important}.game.preparing{visibility:hidden}.map-open{display:block;margin:0 0 7px auto;background:none;border:0;border-bottom:1px solid #b18a5d;color:#916344;font:13px Brush}.map-screen{position:fixed;inset:0;z-index:60;background:#f2e7cf;display:flex;flex-direction:column;align-items:center}.map-header{width:100%;text-align:center;background:#f7eedce8;position:relative;z-index:2;padding:15px 12px 8px;box-shadow:0 3px 12px #7a5b3022}.map-header h1{font-size:38px;margin:4px 0}.map-header p{font-size:12px;margin:4px}.tree-scroll{width:100%;overflow-y:auto;overflow-x:hidden;flex:1;min-height:0;overscroll-behavior:contain;scrollbar-width:thin}.tree-path{height:1300px;max-width:560px;width:100%;margin:auto;position:relative;background:#f2e7cf url('assets/flower-tree.webp') center/100% 100% no-repeat}.map-node{position:absolute;width:70px;height:76px;transform:translateX(-50%);border:2px solid #b69460;border-radius:45% 45% 40% 40%;padding:6px;background:#fdf3d9;box-shadow:0 5px #9d7b4c,0 8px 15px #5f432b33;z-index:1;transition:filter .2s}.map-node img{width:100%;height:100%;object-fit:contain}.map-node b{position:absolute;right:-9px;top:-8px;background:#925039;color:#fff2d1;border:1px solid #e0c28d;border-radius:50%;width:26px;height:26px;font:20px Brush}.map-node span{position:absolute;left:50%;top:80px;transform:translateX(-50%);white-space:nowrap;background:#fbefd9e8;padding:2px 7px;border-radius:4px;font:17px Brush}.map-node small{position:absolute;bottom:3px;left:0;right:0;background:#f7eddae8;font-size:9px;letter-spacing:1px}.map-node:disabled{filter:grayscale(.8);opacity:.65;cursor:default}.map-node.complete{border-color:#8b9e75}.map-node.current{outline:3px solid #c7a268;outline-offset:5px;box-shadow:0 5px #9d7b4c,0 0 30px #e5c682}.map-node:active:not(:disabled){margin-bottom:-3px;box-shadow:0 2px #9d7b4c}.map-bottom{width:100%;max-width:560px;text-align:center;padding:8px 18px 12px;background:#f7eedc;box-shadow:0 -3px 15px #7a5b3022}.map-bottom p{font-size:11px;margin:0}.map-bottom .primary{margin:6px 0 2px;padding:8px;font-size:23px}.loading-screen{position:fixed;inset:0;z-index:80;background:#f4e9d3f7;display:flex;align-items:center;justify-content:center;flex-direction:column}.loading-screen img{width:76px;height:76px;object-fit:contain;animation:breath .8s alternate infinite}.loading-screen p{font-size:14px}.loading-screen button{max-width:240px}.unlock-pair{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:16px 0}.unlock-pair article{padding:10px 8px;background:#eee0bf88;border:1px solid #c9ae7e;border-radius:9px}.unlock-pair img{width:105px;max-width:100%;height:105px;object-fit:contain}.unlock-pair h3{font:22px Brush;margin:5px 0}.unlock-pair p{font-size:11px;line-height:1.7;margin:4px 0}dialog:has(.unlock-pair){max-width:min(94vw,450px);padding:22px}dialog:has(.unlock-pair) h2{font-size:35px}.game header h2{font-size:27px}@media(max-width:450px){.map-header{padding-top:10px}.map-header h1{font-size:32px}.map-header p{font-size:11px}.unlock-pair{gap:9px}.unlock-pair img{height:85px}.unlock-pair h3{font-size:20px}dialog:has(.unlock-pair){padding:18px}.map-node{width:62px;height:68px}.map-node span{top:72px}.map-open{font-size:12px}}@media(max-height:650px){.map-header h1{font-size:27px}.map-header small{display:none}.map-bottom p{display:none}dialog:has(.unlock-pair) p{margin:6px 0}.unlock-pair img{height:65px}.unlock-pair{margin:8px 0}}

body.map-active{overflow:hidden}.map-node.complete small{color:#557047}.map-header,.map-bottom{flex-shrink:0}

.preview-qin{background:transparent;color:#8b5c3f;border:0;border-bottom:1px solid #b99969;font:14px Brush;margin:5px 0 2px;padding:3px 7px}.preview-qin:active{transform:translateY(2px)}

.unlock-pair{grid-template-columns:minmax(0,1fr);max-width:240px;margin:16px auto}.unlock-pair img{width:120px;height:120px}.unlock-pair p{max-width:190px;margin:5px auto}@media(max-height:650px){.unlock-pair img{height:75px}.unlock-pair{margin:8px auto}}

.music-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;text-align:left;margin:7px 0}.music-fields label{font-size:11px;color:#8f6e4c;min-width:0}.music-fields select{display:block;margin-top:3px;width:100%;min-width:0;font:13px Georgia,'Songti SC',serif;color:#674b30;background:#fff4da;border:1px solid #bca075;border-radius:5px;padding:7px 5px}.music-note{font-size:10px!important;margin:3px 0!important;line-height:1.4!important}.music-help{font-size:11px}#map-music{max-width:430px;margin:auto}#music-open{display:inline-block;float:left}#map-open{display:block}.map-bottom{padding-top:5px}.map-bottom>p{display:none}@media(max-height:650px){.music-fields{margin:3px 0}.music-fields select{padding:4px}.map-bottom .primary{padding:5px}.preview-qin{margin:0}}

.header-actions{display:flex;align-items:center;gap:8px}.restart-level{border:1px solid #a77f4e;border-radius:9px;padding:9px 10px;background:#f3e2bc;color:#75482e;box-shadow:0 3px #b29261;font-size:13px;white-space:nowrap}.restart-level:active{transform:translateY(2px);box-shadow:0 1px #b29261}.restart-level:disabled{opacity:.45}

.rhythm-entry{display:block;margin:7px auto;padding:7px 14px;border:1px solid #ae8855;border-radius:9px;background:#eee0b9;color:#75472d;box-shadow:0 3px #b89a69;font-size:14px}.rhythm-entry:active{transform:translateY(2px);box-shadow:0 1px #b89a69}#rhythm{width:min(94vw,460px);max-height:92svh;overflow:auto}#rhythm label{display:block;text-align:left;margin:12px 0;font-size:14px}#rhythm select{display:block;width:100%;padding:10px;margin-top:5px;background:#f5e9ce;color:#62492f;border:1px solid #b89a69;border-radius:7px;font:inherit}.rhythm-pads{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:24px 0}.rhythm-pads button{position:relative;padding:8px;border:2px solid #c3a87c;border-radius:13px;background:#f4e6c7;box-shadow:0 5px #9d8057;touch-action:manipulation}.rhythm-pads img{width:100%;height:65px;object-fit:contain;mix-blend-mode:multiply;pointer-events:none}.rhythm-pads span{display:block;font-size:13px}.rhythm-pads .lit{border-color:#f1b93c;background:#fff3ba;box-shadow:0 0 0 5px #ecc76d77,0 0 25px #dcb64e;transform:translateY(-3px)}.rhythm-pads .tapped{animation:rhythm-tap .18s}.rhythm-progress{height:5px;border-radius:9px;background:#d9c399;overflow:hidden}.rhythm-progress i{display:block;height:100%;width:0;background:#9b593e}.rhythm-score{font:60px Georgia;color:#9a563a}.rhythm-score small{font-size:18px}.rhythm-help{font-size:13px}#rhythm-status{min-height:30px;color:#9b5633}@keyframes rhythm-tap{50%{transform:translateY(4px);filter:brightness(1.15)}}

#rhythm{width:100%;max-height:none;overflow:visible;padding:10px 4px;text-align:center}#rhythm[hidden]{display:none}#rhythm h2{font-size:27px;margin:5px}#rhythm p{line-height:1.5;margin:7px 0}#rhythm label{display:inline-block;width:31%;vertical-align:top;margin:5px 1%;font-size:11px}#rhythm select{font-size:12px;padding:7px 3px}#rhythm .primary{font-size:16px;padding:9px 14px}#rhythm .restart{display:inline-block;margin:7px}.music-active>#levels,.music-active>.status,.music-active>.progress,.music-active>#message,.music-active>footer,.music-active>.rhythm-entry,.music-active>#music-open,.music-active>#map-open,.music-active>.tray-label,.music-active>#tray{display:none}.music-active>.board{margin:12px auto}.music-active>.board .tile.rhythm-lit{filter:brightness(1.18) saturate(1.2);outline:4px solid #eab642;box-shadow:0 0 0 7px #f5d27288,0 0 25px #d79b29,0 5px #aa8450;transform:translateY(-2px)}.music-active>.board .tile.tapped{animation:rhythm-tap .3s}.music-active>.board{--board-size:min(90vw,400px)}.music-active .header-actions{visibility:hidden}

/* Staggered square cards leave visible gaps and changing silhouettes. */
.tile{width:14.2%;height:14.2%;padding:3px}.tile.covered{filter:brightness(.88) saturate(.92)}#levels{display:flex;justify-content:center;gap:14px;flex-wrap:nowrap}#levels button{flex:0 0 32px}.tree-path{background-size:100% 1300px;background-repeat:repeat-y}.map-node b{font-size:23px}.map-node span{max-width:130px;line-height:1.25}

#game-hub{position:fixed;inset:0;z-index:2000;overflow:auto;background:linear-gradient(120deg,#f9f0ddeF,#e9d9bdee),url('assets/workshop.webp') center/cover;color:#60442d;text-align:center}#game-hub[hidden]{display:none}.hub-inner{max-width:850px;margin:auto;padding:36px 24px 24px}.hub-inner h1{font-size:55px;margin:12px}.hub-intro{letter-spacing:3px;margin:8px 0 24px}.hub-choices{display:grid;grid-template-columns:1fr 1fr;gap:24px}.hub-card{display:block;overflow:hidden;border:1px solid #b69665;border-radius:16px;padding:0 0 22px;background:#faf0d9;color:inherit;text-decoration:none;text-align:center;box-shadow:0 5px #b3976f,0 12px 25px #62482c1f;transition:transform .15s;font:inherit}.hub-card:active{transform:translateY(4px);box-shadow:0 1px #b3976f}.hub-picture{height:240px;position:relative;overflow:hidden;border-bottom:1px solid #c6ab80;margin-bottom:18px}.hub-scenery{width:100%;height:100%;object-fit:cover;display:block}.hub-card:nth-child(2) .hub-scenery{object-position:center 70%}.hub-flowers{position:absolute;bottom:16px;left:0;right:0;display:flex;justify-content:center;align-items:center;gap:15px}.hub-flowers img{width:67px;height:73px;object-fit:contain;padding:5px;background:#fff0ce;border:1px solid #b39461;border-radius:8px;box-shadow:0 5px #a88758,0 9px 12px #583c373f}.hub-flowers.stack{gap:0}.hub-flowers.stack img:nth-child(1){transform:rotate(-13deg) translateX(14px)}.hub-flowers.stack img:nth-child(2){transform:translateY(-15px);z-index:1}.hub-flowers.stack img:nth-child(3){transform:rotate(13deg) translateX(-14px)}.hub-card h2{font-size:32px;margin:8px}.hub-card p{font-size:14px;margin:6px 8px 16px}.hub-action{display:inline-block;background:#94543b;color:#fff0cf;border:1px solid #7c422e;border-radius:9px;box-shadow:0 3px #6d3b2b;padding:9px 28px;font-family:Brush,serif;font-size:20px}.hub-foot{font-size:12px;color:#8b7256;margin:24px 0 0}.hub-active{overflow:hidden}.choose-inline,.choose-map{border:0;background:transparent;color:#87563a;text-decoration:underline;text-underline-offset:4px;font-size:12px;padding:5px}.choose-inline{float:right}.choose-map{position:absolute;right:12px;top:10px}.map-header{position:relative}.music-active>.choose-inline{display:none}@media(max-width:600px){.hub-inner{padding:20px 15px}.hub-inner h1{font-size:39px}.hub-intro{font-size:13px;margin-bottom:16px}.hub-choices{gap:16px;grid-template-columns:1fr}.hub-card{display:grid;grid-template-columns:38% 1fr;grid-template-rows:24px 36px 36px 40px;padding:12px 10px 14px 0;align-items:center}.hub-picture{grid-row:1/5;height:144px;margin:0 12px 0 0;border:0;border-radius:0 9px 9px 0}.hub-card small{font-size:9px;letter-spacing:1px}.hub-card h2{font-size:27px;margin:0}.hub-card p{font-size:11px;margin:0;line-height:1.5}.hub-action{font-size:17px;padding:6px 20px;justify-self:center}.hub-flowers{bottom:12px;gap:7px}.hub-flowers img{width:39px;height:44px;padding:3px}.hub-foot{margin-top:19px}}

.tree-scroll{background:#e9ddc5}.tree-path{isolation:isolate;max-width:650px;background:#ede1c9 url('assets/seasons-shanshui.png') center/100% 100% no-repeat}.tree-path:before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:url('assets/flower-tree.webp') center bottom/100% 1300px repeat-y;mix-blend-mode:multiply;opacity:.48}.season-label{position:absolute;left:15px;padding:8px 12px;background:#f8efd9df;color:#6f5037;border:1px solid #bca279;border-radius:20px;font-family:Brush,serif;font-size:19px;box-shadow:0 2px 8px #533c221f;pointer-events:none}.map-header,.map-bottom{background:#f7eedcf2}.map-node{backdrop-filter:blur(1px)}

.tree-path{background-image:linear-gradient(#f5ebd870,#f5ebd870),url('assets/seasons-shanshui.png');background-size:100% 100%,100% 100%;background-repeat:no-repeat}.tree-path:before{opacity:.74}

@font-face{font-family:GardenSerif;src:url('assets/elegant-serif.otf')}body{background:#f7efdf;background-image:none}html[lang="en"] body,html[lang="en"] h1,html[lang="en"] h2,html[lang="en"] h3,html[lang="en"] button,html[lang="en"] a,html[lang="en"] select,html[lang="en"] .prop-button,html[lang="en"] .hub-action{font-family:GardenSerif,Georgia,serif!important;font-weight:400!important;font-style:normal;text-shadow:none!important;letter-spacing:.01em}html[lang="en"] h1{line-height:1.08}html[lang="en"] .hero h1{font-size:clamp(46px,7vw,74px);letter-spacing:.015em}.season-art{position:absolute;left:0;right:0;height:28%;background-position:center;background-size:cover;pointer-events:none;z-index:-2;mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent);-webkit-mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent)}.season-art.spring{bottom:0;background-image:url('assets/season-spring.png')}.season-art.summer{bottom:24%;background-image:url('assets/season-summer.png')}.season-art.autumn{bottom:48%;background-image:url('assets/season-autumn.png')}.season-art.winter{bottom:72%;background-image:url('assets/season-winter.png')}.map,.tree-path{background:#f7efdf!important;isolation:isolate}.tree-path:before,.flower-vine{display:none!important}.season-label{background:#fbf4e7ed}.level:disabled,.map-node:disabled{opacity:.78}#game-hub{background:#f7efdf!important}.hub-lang{position:absolute;right:20px;top:16px;border:1px solid #b29a75;border-radius:20px;background:#fff9ee;padding:7px 15px;font:14px GardenSerif,serif}.language-top{display:block;margin:0 0 5px auto;padding:5px 10px;border:1px solid #baa178;border-radius:15px;background:#fff6e5;font-size:12px}.map-header .language-top{position:absolute;left:12px;top:10px;margin:0}.music-active>.language-top{display:none}html[lang="en"] .map-node span{font-size:13px}html[lang="en"] .hub-card h2{font-size:30px}html[lang="en"] .map-node b{font-family:GardenSerif,serif}html[lang="en"] .prop-button{font-size:20px}@media(max-width:600px){html[lang="en"] .hub-card h2{font-size:23px}html[lang="en"] .hub-card p{font-size:12px}.hub-lang{top:12px;right:12px}}

html[lang='en'] body *{font-family:GardenSerif,Georgia,serif!important}html[lang='en'] .season-label{font-size:17px}html[lang='en'] .map-node span{font-size:14px;line-height:1.3}body{background-image:none!important}

:root{--paper:#f7efdf;--ink:#62442e;--accent:#934e36;--gold:#b29362}body{background:var(--paper)!important;color:var(--ink)}button,select{color:var(--ink)}.primary,.hub-action{background:var(--accent)!important;color:#fff4db!important;border-color:#79412e}.flower-poem{margin:14px auto 19px;text-align:center;border:0;padding:0;max-width:330px}.flower-poem p{font-family:'Songti SC',serif;font-size:18px;line-height:1.9;color:#684b32;margin:0}.flower-poem cite{display:block;font-size:11px;font-style:normal;color:#967a58;margin-top:8px;line-height:1.5}.map-node,.map .level{border:0!important;border-radius:0!important;background:transparent url('assets/level-scroll.png') center/100% 100% no-repeat!important;box-shadow:none!important;outline:0!important;filter:none!important;backdrop-filter:none!important}.map-node img,.map .level img{border-radius:0!important;background:none;object-fit:contain;mix-blend-mode:multiply}.map-node.current,.map .level.current{filter:drop-shadow(0 0 6px #a7613788)!important}.map-node:disabled,.map .level:disabled{opacity:.7}.map-node b{white-space:nowrap;color:#80533b;background:none;border:0;border-radius:0;font-size:12px;width:auto;height:auto;text-align:center}.map-node span{background:none;white-space:normal;line-height:1.3;color:#62442e;text-align:center}.music-fields select,#rhythm select{appearance:none;-webkit-appearance:none;background-color:#fff5de;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='12' viewBox='0 0 16 12'%3E%3Cpath d='m3 4 5 5 5-5' fill='none' stroke='%237a5435' stroke-width='1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding:9px 38px 9px 12px;border:1px solid #b99a68;border-radius:8px;min-width:0}html[lang=en] .flower-poem p{font-size:16px;line-height:1.6}

/* One calm play surface, shared with Bloom Match. */
main{display:block;max-width:none;min-height:100svh;height:100svh;padding:0 8px;overflow:hidden}main>aside{display:none}.game{width:100%;max-width:600px;height:100svh;margin:auto;padding:8px 0 max(8px,env(safe-area-inset-bottom));display:flex;flex-direction:column;justify-content:space-between;gap:4px}.game header{gap:10px;flex-shrink:0;min-height:46px}.game header h2{font-size:23px;line-height:1.25;margin:0}.header-actions{gap:6px;flex-shrink:0}.header-actions .language-top,.header-actions .quiet,.header-actions .restart-level{margin:0;padding:6px 9px;font-size:12px;min-height:32px;height:32px;border-radius:8px;border:1px solid #b79b72;background:#fdf4e0;box-shadow:0 2px #b99c70;width:auto}.header-actions #sound{display:none}.game>.choose-inline,.game>.rhythm-entry,.game>#music-open,.game>#map-open,.game>#levels,.game>#message,.game .status #remaining{display:none!important}.game>.status{justify-content:flex-end;font-size:12px;flex-shrink:0}.game>.progress{margin:0;height:3px;flex-shrink:0}.game>.board{flex-shrink:0;width:min(100%,var(--board-size,430px));max-width:100%;margin:auto;aspect-ratio:1}.tray-label{font-size:17px;margin:0 3px;flex-shrink:0}.tray{padding:7px 7px 10px;gap:4px;flex-shrink:0}.slot{aspect-ratio:1}.game footer{flex-shrink:0;gap:3px}.game footer button{flex:1;display:flex;flex-direction:column;gap:1px;font-size:12px;min-height:45px;padding:0}.game footer .prop{width:29px;height:27px}.map-prop{background-position:0 0}.game footer b{font-size:10px}.map-header{max-width:650px}.tree-scroll{background:var(--paper)}.map-bottom{width:100%;max-width:650px;background:var(--paper);padding:8px 16px 12px;border-top:1px solid #c8af87;box-shadow:none}.map-bottom .music-fields{margin:8px 0;gap:12px}.map-bottom .music-note{display:none}.map-bottom .primary{font-size:20px;padding:9px}.map-node{width:112px!important;height:150px!important;padding:20px 17px 32px}.map-node img{width:100%;height:70px}.map-node b{top:91px;left:8px;right:8px;font-size:12px}.map-node span{top:111px;left:13px;right:13px;transform:none;padding:0;font-size:15px;max-width:none}.map-node small{display:none}.map-node.current{outline:0}.unlock-flower{display:block;width:150px;height:150px;object-fit:contain;margin:10px auto;mix-blend-mode:multiply}dialog h2{font-size:29px;margin:10px 0}dialog .reward{display:block;width:150px;height:150px;object-fit:contain;border-radius:0!important;border:0!important;box-shadow:none!important;margin:10px auto;mix-blend-mode:multiply}dialog{max-height:92svh;overflow:auto;width:min(92vw,420px);padding:22px 25px}dialog .primary{font-size:22px;padding:10px 22px}html[lang=en] .game header h2{font-size:20px}html[lang=en] .map-node span{font-size:12px}html[lang=en] .map-node b{font-size:11px}html[lang=en] .game footer button{font-size:12px}.music-active{overflow:auto!important;justify-content:flex-start;gap:12px}.music-active header{display:none}.music-active .back-to-tree{display:none}#rhythm label{font-size:12px}.music-fields select{font-size:14px}@media(max-height:650px){.game header h2{font-size:19px}.game{padding-top:4px;gap:2px}.tray{padding-top:4px;padding-bottom:7px}.game footer .prop{width:24px;height:23px}.game footer button{min-height:40px}.map-bottom{padding:5px 12px 7px}.map-bottom .music-fields{margin:4px 0}}

.map-screen,.map-header,.map-bottom,.tree-scroll{background:var(--paper)!important}.map-node b{font-family:'Songti SC',serif}.map-node span{font-family:Brush,'KaiTi',serif}@media(min-width:851px){.game footer button{font-size:14px}.game footer .prop{width:36px;height:34px}}

/* Old textile workshop frames the app; ivory keeps the play surface legible. */
body{background:linear-gradient(#f7efdf99,#f7efdf99),url('assets/workshop.webp') center/cover fixed!important}
main{background:#f7efdfe8;box-shadow:0 0 80px #49331e33}

/* A textile cabinet, with inset illustrations rather than edge-to-edge cards. */
#game-hub{background:linear-gradient(90deg,#291d18aa,#33261955,#291d18aa),url('assets/workshop.webp') center/cover fixed!important}
.hub-inner{max-width:960px;min-height:100svh;padding:52px 32px 32px;color:#fff1d2}
.hub-inner>small,.hub-foot{color:#f2d6ab;text-shadow:0 2px 5px #241a11}.hub-inner>h1{font-size:64px;color:#fff0cd;text-shadow:0 3px 1px #503421,0 6px 20px #21160c}.hub-intro{font-size:19px;margin:10px 0 28px;text-shadow:0 2px 6px #241a11}.hub-choices{gap:26px}.hub-card{border:1px solid #cfad70;border-radius:4px;padding:20px 20px 24px;background:linear-gradient(125deg,#fff4daf7,#e9d7b4f5);color:#65452f;box-shadow:0 0 0 5px #503822,0 0 0 6px #ba955b,0 12px 30px #21170e66}.hub-picture{height:230px;margin:0 0 22px;border:1px solid #ab8553;border-radius:3px;box-shadow:0 0 0 5px #e4d0a9}.hub-card small{font-size:13px;letter-spacing:2px}.hub-card h2{font-size:36px;margin:14px 4px}.hub-card p{font-size:17px;line-height:1.7;margin:8px 6px 20px}.hub-action{font-size:24px;padding:10px 28px}.hub-foot{font-size:16px;line-height:1.9;margin-top:28px}.hub-lang{z-index:1;right:22px;top:18px}
.map-node img{display:block;width:78px;height:78px;margin:0 auto}.map-node span{top:108px;font-size:17px;line-height:1.2}.map-node b{display:none}
.music-active{justify-content:space-between;gap:3px;overflow:hidden!important}.music-active header{display:flex}.music-active .header-actions{visibility:visible}.music-active>.tray-label{display:flex}.music-active>#tray{display:grid}.music-active>footer{display:flex}.music-active .back-to-tree{display:flex}.music-active>.board{margin:auto}.music-active #rhythm{flex-shrink:0;padding:4px 8px;max-height:30svh;overflow:auto}.music-active #rhythm h2{font-size:20px;margin:2px}.music-active #rhythm p{font-size:12px;margin:3px}.music-active #rhythm small,.music-active .rhythm-help{display:none}.music-active #rhythm-status{min-height:0}.music-active #rhythm .restart{font-size:12px;margin:4px 8px}.music-active #rhythm label{margin:4px 1%}.music-active #rhythm .primary{margin:4px;padding:6px 12px}.music-active>.board{width:min(100%,calc(100svh - 370px),480px)!important}
@media(max-width:600px){.hub-inner{padding:64px 22px 24px}.hub-inner>h1{font-size:43px;margin:8px}.hub-intro{font-size:16px;letter-spacing:1px;margin-bottom:24px}.hub-card{grid-template-columns:36% 1fr;grid-template-rows:auto auto auto auto;padding:18px 15px;column-gap:17px;row-gap:6px}.hub-picture{grid-row:1/5;align-self:stretch;height:100%;min-height:156px;margin:0;border-radius:2px}.hub-card small{font-size:11px;letter-spacing:0}.hub-card h2{font-size:27px;margin:3px 0}.hub-card p{font-size:14px;margin:0 0 5px;line-height:1.5}.hub-action{font-size:20px;padding:7px 16px}.hub-flowers img{width:33px;height:39px}.hub-flowers{gap:3px}.hub-foot{font-size:14px}.hub-choices{gap:25px}html[lang=en] .hub-card h2{font-size:24px}html[lang=en] .hub-card p{font-size:14px}}

@font-face{font-family:GardenScript;src:url('assets/garden-italic.otf');font-display:swap;font-style:italic}html[lang=en] .hub-inner>h1,html[lang=en] .hero h1,html[lang=en] #brand,html[lang=en] .hero .prop-button{font-family:GardenScript,Georgia,serif!important;font-style:italic!important;font-weight:400!important;letter-spacing:0!important}html[lang=en] .hero h1{font-size:clamp(38px,7vw,64px)!important;white-space:nowrap;line-height:1.2}html[lang=en] .hero .prop-button{font-size:22px!important;white-space:nowrap}html[lang=en] .hero .actions{gap:18px}html[lang=en] #brand{font-size:26px}html[lang=en] #brand small{font-family:GardenSerif,Georgia,serif!important;font-style:normal!important}@media(max-width:450px){html[lang=en] .hero .actions{gap:14px;flex-direction:column}html[lang=en] .hero .prop-button{font-size:21px!important}}

.language-picker{display:flex;align-items:center;gap:8px;border-radius:5px!important;padding:6px 10px!important;font:13px GardenSerif,Georgia,serif!important;color:#62442e}.language-picker select{font:14px GardenSerif,Georgia,serif;background:#fff8e8;color:#62442e;border:0;padding:5px 20px 5px 5px}.language-picker span{font-style:normal!important}
html[lang=en] .hub-inner>h1{font-size:clamp(38px,5.5vw,58px);line-height:1.2;white-space:nowrap;margin:12px 0}html[lang=en] .hub-intro{font-size:17px;letter-spacing:.02em;line-height:1.6}html[lang=en] .hub-card small{font-size:12px;letter-spacing:0!important;white-space:nowrap}html[lang=en] .hub-card h2{font-size:28px;line-height:1.2;white-space:nowrap}html[lang=en] .hub-action{font-size:18px!important;line-height:1.2;padding:12px 18px;white-space:nowrap;max-width:100%}html[lang=en] .hub-card p{font-size:16px;line-height:1.65}html[lang=en] .hub-foot{font-size:14px;letter-spacing:0}html[lang=en] .hub-inner>small{font-size:11px;letter-spacing:2px}
@media(max-width:600px){html[lang=en] .hub-card{grid-template-columns:32% minmax(0,1fr);column-gap:14px;padding:16px 12px}html[lang=en] .hub-card h2{font-size:23px}html[lang=en] .hub-card small{font-size:10px}html[lang=en] .hub-card p{font-size:13px}html[lang=en] .hub-action{font-size:16px!important;padding:8px 10px}html[lang=en] .hub-intro{font-size:15px}.hub-inner{padding-top:82px}}
@media(max-width:380px){html[lang=en] .hub-card{grid-template-columns:1fr}html[lang=en] .hub-picture{grid-row:auto;height:150px;min-height:150px;margin-bottom:10px}html[lang=en] .hub-card small{font-size:12px}}

/* Scroll artwork has a fixed inner paper area, independent of title length. */
.map-node{padding:0!important}.map-node img{position:absolute;left:23px;top:26px;width:66px!important;height:66px!important;margin:0!important}.map-node span{top:100px;left:22px;right:22px;max-height:31px;display:flex;align-items:center;justify-content:center;min-height:28px;font-size:14px;line-height:1.1;overflow-wrap:normal}html[lang=en] .map-node span{font-size:10px!important;line-height:1.15!important;letter-spacing:0!important}html[lang=en] .map-header h1{font-size:27px}.map-header{padding-top:max(18px,env(safe-area-inset-top));padding-left:20px;padding-right:20px}.map-bottom{padding-bottom:max(18px,env(safe-area-inset-bottom))}html[lang=en] .map-bottom .rhythm-entry{font-size:12px;max-width:100%;padding:8px 12px}.game{padding-top:max(18px,env(safe-area-inset-top));padding-bottom:max(14px,env(safe-area-inset-bottom))}html[lang=en] .game header h2{font-size:17px}
.scenery-control{display:grid;gap:8px;margin:18px auto;text-align:left;max-width:320px}.scenery-control select{font:inherit;padding:12px 32px 12px 12px;border:1px solid #bca583;border-radius:8px;background:#fbf4e7;color:#493a2b;width:100%}body[data-scenery="spring"]{--chosen-scene:url('assets/season-spring.png')}body[data-scenery="summer"]{--chosen-scene:url('assets/season-summer.png')}body[data-scenery="autumn"]{--chosen-scene:url('assets/season-autumn.png')}body[data-scenery="winter"]{--chosen-scene:url('assets/season-winter.png')}body[data-scenery]:not([data-scenery="auto"]) .season-art{background-image:var(--chosen-scene)}body[data-scenery]:not([data-scenery="auto"]) .season-label{display:none}

.composer-entry{display:inline-block;margin:12px auto 0;padding:10px 22px;color:#586148;font-size:17px;text-decoration:underline;text-underline-offset:5px}
