*{box-sizing:border-box}html{background:#fff5df;color:#503b30;font-family:system-ui,-apple-system,'Malgun Gothic',sans-serif;touch-action:manipulation}body{margin:0;background:radial-gradient(circle at 10% 20%,#ffe8ad66,transparent 40%),#fff8e9;min-height:100dvh}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:disabled{cursor:default;opacity:.48}button:focus-visible{outline:3px solid #306f64;outline-offset:3px}button:active:not(:disabled){transform:translateY(2px)}h1,h2,p{margin:0}h1,h2{letter-spacing:-.055em}button svg{pointer-events:none}#app{max-width:480px;margin:auto;padding:calc(env(safe-area-inset-top) + 14px) 14px calc(env(safe-area-inset-bottom) + 24px)}.loading{padding:100px 20px;text-align:center}.loading span{font-size:64px}.loading h1{font-size:46px}.loading p{margin-top:14px}.topbar{display:flex;justify-content:space-between;align-items:center;margin:0 2px 18px}.brand{font-weight:900;font-size:19px;letter-spacing:-.8px}.tag{font-size:11px;color:#7a8370;background:#eeeacb;border-radius:12px;padding:5px 9px}.icon-button{border:1px solid #e0cfae;background:#fffaf0;min-width:44px;min-height:44px;border-radius:16px;font-size:19px;box-shadow:0 3px 0 #e8d9bb}.hero{text-align:center;background:linear-gradient(160deg,#fffef5,#ffedbd);border:1px solid #e6cea5;border-radius:30px;overflow:hidden;box-shadow:0 6px 0 #ecddbe}.hero .eyebrow{font-size:11px;letter-spacing:3px;font-weight:800;color:#6c8465;padding-top:23px}.hero h1{font-size:41px;line-height:1.1;margin:10px 0}.hero .subtitle{font-size:13px;color:#86705a}.scene{line-height:0;margin-top:4px;overflow:hidden}.scene svg{width:100%;max-height:220px}.stats{display:flex;justify-content:center;gap:22px;margin:17px 0 20px;font-weight:800;font-size:13px}.stats span{background:#fffaf0;border:1px solid #eeddbc;padding:7px 13px;border-radius:30px}.primary,.secondary,.quiet{display:flex;align-items:center;justify-content:center;width:100%;border:0;min-height:50px;padding:12px 15px;border-radius:17px;font-weight:850}.primary{color:#fffaf0;background:linear-gradient(#ed9557,#cb6334);box-shadow:0 5px 0 #a84e29;font-size:17px}.secondary{background:#82a370;color:white;box-shadow:0 4px 0 #5d7b51}.quiet{background:#f1e6cf;border:1px solid #e6d5b6;font-size:13px;color:#806955}.home-actions{padding:0 19px 23px;display:grid;gap:13px}.small-note{font-size:11px;color:#94826b;text-align:center;line-height:1.65;margin:15px 12px}.section-head{display:flex;justify-content:space-between;align-items:center;margin:25px 4px 11px}.section-head h2{font-size:20px}.section-head span{font-size:12px;color:#8b795f}.chapter{background:#fffaf0;border:1px solid #e9d8b8;padding:15px;border-radius:24px;margin-bottom:14px}.chapter h3{font-size:16px;margin:0}.chapter p{font-size:12px;color:#8a785f;margin-top:5px}.level-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:11px;margin-top:16px}.level-button{position:relative;min-height:64px;border:2px solid #e0cca4;border-radius:20px;background:#f4e7cb;box-shadow:0 4px 0 #d7be94;font-weight:900;font-size:20px}.level-button.complete{background:#e9f0cd;border-color:#aabc7e;box-shadow:0 4px 0 #84935d}.level-button.current{background:#ffe2a3;border-color:#cc8844;box-shadow:0 4px 0 #b7753b}.level-stars{display:block;font-size:10px;letter-spacing:1px;color:#be7e2c}.level-button:disabled{background:#f0eadb;box-shadow:0 3px 0 #e4dac5;color:#a79a83}.decor-grid{display:flex;gap:8px;margin-top:10px}.decor-grid button{flex:1;border:1px solid #dfcba5;border-radius:14px;min-height:52px;background:#fff2d1;padding:7px;font-size:11px;font-weight:800}.decor-grid button.selected{background:#e4efcf;border-color:#94ab75}.game-header{display:flex;align-items:center;gap:10px;margin-bottom:15px}.game-title{flex:1;min-width:0}.game-title h1{font-size:20px;line-height:1.3}.game-title p{font-size:11px;color:#8b765e;margin-top:4px}.objective-row{display:flex;gap:9px}.moves{width:75px;flex-shrink:0;background:linear-gradient(#ffe7ad,#edc884);border:1px solid #d7b676;box-shadow:0 4px 0 #ceb078;border-radius:21px;text-align:center;padding:10px 4px}.moves span{font-size:10px;font-weight:800;color:#927440}.moves strong{display:block;font-size:35px;line-height:1.25;color:#83572c}.moves.low{background:linear-gradient(#ffe2bf,#ecb07f)}.goals{display:flex;flex:1;justify-content:space-around;align-items:center;border:1px solid #e4d0ae;border-radius:22px;background:#fffaf0;padding:9px 5px;gap:3px;box-shadow:0 4px 0 #eddec3}.goal{text-align:center;font-size:10px;color:#8a775e;min-width:40px}.goal-icon{width:37px;height:37px;display:block;margin:auto}.goal-icon svg{width:100%;height:100%}.goal strong{display:block;font-size:19px;color:#69563c}.goal.done strong{color:#397f69}.mission{min-height:40px;padding:13px 5px 8px;text-align:center;font-size:12px;font-weight:750;color:#92703b;line-height:1.4}.board-shell{position:relative;margin-top:9px;border:4px solid #a8815b;padding:6px;background:linear-gradient(135deg,#d7b68c,#b68c64);border-radius:25px;box-shadow:0 7px 0 #916d4f,inset 0 0 0 2px #f2dbb4}.board{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px}.tile{position:relative;aspect-ratio:1;min-width:0;border:1.5px solid #fff8e6;border-radius:14px;background:linear-gradient(#fff5df,#f4e4c6);padding:2px;box-shadow:0 2px 0 #aa8561;overflow:visible}.tile>svg{width:100%;height:100%;display:block}.tile.special{background:linear-gradient(#fff0b6,#f8d996);border-color:#ecb959}.tile.selected{outline:3px solid #ec9c3e;outline-offset:-1px;background:#fff1ae}.tile.preview{background:#e3f0c8;outline:2px solid #7ca66e;outline-offset:-2px}.tile.destination{outline:3px solid #d89444;outline-offset:-2px}.color-badge{position:absolute;top:3px;right:3px;width:12px;height:12px;line-height:11px;text-align:center;font-size:8px;font-weight:900;border-radius:4px;color:#4e3a30;border:1px solid #fff;background:#ffc955}.color-badge.c1{background:#67cda7}.color-badge.c2{background:#f39a95}.color-badge.c3{background:#bca0e0}.gift-badge{position:absolute;bottom:1px;right:3px;font-size:10px}.exit-row{display:grid;grid-template-columns:repeat(6,1fr);text-align:center;color:#417e68;font-weight:900;font-size:14px;margin-top:4px}.help-row{display:flex;gap:8px;margin-top:14px}.help-row .quiet{min-height:38px;padding:7px;border-radius:13px;font-size:11px}.preview-panel{min-height:55px;background:#fffbec;border:1px solid #e4d0ac;border-radius:16px;margin-top:12px;padding:10px 13px;display:flex;gap:10px;align-items:center}.preview-copy{flex:1;font-size:12px;line-height:1.5;color:#7c654a}.preview-panel .primary{width:auto;min-width:68px;min-height:37px;font-size:12px;padding:7px 10px;border-radius:11px;box-shadow:0 3px 0 #a84e29}.gift-panel{display:flex;align-items:center;gap:10px;margin-top:13px;background:#eaf0d7;border:1px solid #cad5ad;border-radius:18px;padding:10px 12px}.gift-info{flex:1;min-width:0;font-size:11px;color:#5c7851}.gift-info strong{display:block;font-size:13px;margin-bottom:5px}.gift-meter{height:7px;background:#d2ddbb;border-radius:10px;overflow:hidden}.gift-meter i{display:block;height:100%;background:#8daa64;transition:width .2s}.gift-panel button{width:44px;height:44px;border:1px solid #bac995;background:#fffae3;border-radius:13px;padding:3px}.gift-panel button svg{width:100%;height:100%}.gift-panel button.selected{outline:3px solid #648545}.save-note{min-height:18px;margin-top:11px;text-align:center;font-size:10px;color:#938575}.save-note.error{color:#a05235}.backdrop{position:fixed;inset:0;z-index:20;background:#4c3e32aa;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:20px;overflow:auto}.modal{width:100%;max-width:390px;border:1px solid #ebd8b4;border-radius:30px;background:#fffaf0;padding:25px 23px;box-shadow:0 15px 60px #3c291e44;max-height:calc(100dvh - 40px);overflow:auto;text-align:center}.modal h2{font-size:26px;margin:5px 0 9px}.modal p{font-size:12px;line-height:1.7;color:#8b7359}.modal .result-art{width:94px;height:94px;margin:0 auto}.modal .result-art svg{width:100%;height:100%}.result-stars{font-size:36px;color:#e0a748;letter-spacing:5px;margin:5px 0 12px;filter:drop-shadow(0 2px #b8772c)}.result-score{background:#f6eccf;border-radius:18px;padding:14px;margin:12px 0;font-size:12px;color:#947e61;display:flex;justify-content:space-around}.result-score strong{display:block;font-size:22px;color:#735637}.modal-actions{display:grid;gap:13px;margin-top:18px}.toggle-row{display:flex;justify-content:space-between;align-items:center;margin:14px 0;padding:12px 0;border-bottom:1px solid #ebdcc1;text-align:left;font-size:13px}.toggle-row button{border:0;background:#e8ddc7;color:#8c7860;border-radius:20px;min-width:70px;min-height:34px;font-weight:800;font-size:12px}.toggle-row button.on{background:#82a370;color:#fff}.modal .legal{font-size:10px;margin-top:13px}.reward{background:#82946b}.reward-note{min-height:16px;font-size:11px!important;margin-top:12px}.tooltip{background:#fff0cd;padding:12px;border-radius:14px;margin-top:14px;text-align:left}#toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 24px);transform:translate(-50%,16px);width:max-content;max-width:calc(100% - 40px);background:#514738ee;color:#fff9e7;border-radius:16px;padding:12px 16px;font-size:12px;line-height:1.5;z-index:40;opacity:0;transition:opacity .15s,transform .15s;pointer-events:none}#toast.show{opacity:1;transform:translate(-50%,0)}#effects{position:fixed;inset:0;z-index:15;pointer-events:none;overflow:hidden}.burst{position:absolute;width:12px;height:12px;border-radius:4px;background:var(--color);box-shadow:0 0 5px #fff8bf;animation:burst .5s ease-out forwards}.combo-callout{position:absolute;left:50%;top:38%;transform:translateX(-50%);white-space:nowrap;font-size:24px;font-weight:950;color:#fff4ac;text-shadow:0 3px #a65637,2px 0 #a65637,-2px 0 #a65637;animation:callout .7s ease-out forwards}.tile.pop{animation:tilepop .16s ease-out forwards}.tile.fresh{animation:drop .24s cubic-bezier(.2,.7,.3,1)}.board-shell.impact{animation:impact .18s ease-out}.celebrate .modal{animation:rise .32s ease-out}.session-pill{background:#eaf0d7;border:1px solid #c7d3ac;border-radius:15px;font-size:12px;padding:11px;margin:14px 0;text-align:center}.close{float:right;background:transparent;border:0;min-width:36px;min-height:36px;color:#94816a}.about{font-size:10px;color:#927e61;text-align:center;margin-top:20px}.choice-note{font-size:11px;line-height:1.6;margin-top:10px;color:#847154}.chapter-progress{height:5px;border-radius:5px;background:#eae2ca;margin-top:11px;overflow:hidden}.chapter-progress i{display:block;height:100%;background:#9aaa75}@keyframes burst{to{transform:translate(var(--dx),var(--dy)) rotate(160deg);opacity:0}}@keyframes tilepop{to{transform:scale(.25) rotate(9deg);opacity:0}}@keyframes drop{from{transform:translateY(-14px) scale(.8);opacity:.25}to{transform:none;opacity:1}}@keyframes impact{25%{transform:translateX(-2px)}75%{transform:translateX(2px)}}@keyframes callout{0%{opacity:0;transform:translate(-50%,12px) scale(.8)}25%{opacity:1;transform:translate(-50%,0) scale(1.03)}80%{opacity:1}100%{opacity:0;transform:translate(-50%,-24px)}}@keyframes rise{from{opacity:0;transform:translateY(16px) scale(.96)}to{opacity:1;transform:none}}@media(min-width:600px){#app{padding-top:25px}.tile{border-radius:18px}}@media(max-width:360px){#app{padding-left:10px;padding-right:10px}.game-title h1{font-size:18px}.tile{border-radius:11px}.goals{padding:7px 3px}.goal-icon{width:32px;height:32px}.moves{width:65px}.mission{font-size:11px}.modal{padding:23px 19px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
.combo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:13px}.combo-card{border:1px solid #e4d6ba;border-radius:14px;padding:10px 4px;text-align:center;background:#f4edde}.combo-card.discovered{background:#eff4da;border-color:#adbd8d}.combo-pair{display:flex;justify-content:center;align-items:center;gap:1px}.combo-pair svg{width:28px;height:28px}.combo-pair span{font-size:11px;color:#a18a69}.combo-card strong{display:block;font-size:10px;margin-top:7px}.combo-card>span{display:block;font-size:9px;color:#8b816c;margin-top:3px}.combo-card.discovered>span{color:#628052}
.help-row .quiet{min-height:44px}.toggle-row button{min-height:44px}
.tile-piece{position:relative;display:block;width:100%;height:100%;transform-origin:50% 65%;pointer-events:none}
.tile-piece>svg{display:block;width:100%;height:100%}
.tile.popped{background:#c49f78;box-shadow:inset 0 2px 6px #7b56352b;border-color:#d1ad85}
.tile.popped.honey{background:#e9b947}
.board{overflow:hidden;isolation:isolate}
.board .tile.fresh{animation:none}
.preview-copy.guide-copy-hidden{display:none}
.preview-panel .mechanic-guide{margin:0;padding:0;border:0;background:none;font-size:11px;line-height:1.45}
.preview-panel .mechanic-guide strong{font-size:12px}
.tile.honey{background:linear-gradient(145deg,#ffeab0,#e9b947);box-shadow:inset 0 0 0 3px #e6ae35,inset 0 -5px 0 #c79236}
.decor-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.decor-grid button{min-width:0;line-height:1.5}
.honey-mark{position:absolute;left:4px;bottom:3px;color:#a87523;font-size:14px;line-height:1;pointer-events:none}
.tile.harvest-bin{background:#f1dfbe;box-shadow:inset 0 0 0 2px #bc9763}
.bin-count{position:absolute;bottom:4px;left:50%;transform:translateX(-50%);border-radius:8px;padding:1px 6px;font-size:12px;font-weight:900;line-height:1.35;background:#fffaf0;color:#6c543b;white-space:nowrap;border:1px solid #ba9d76}
.bin-count.c0{color:#926318}.bin-count.c1{color:#326e59}.bin-count.c2{color:#a05258}.bin-count.c3{color:#72559a}
.goal-icon.bin-icons{display:flex;width:52px;align-items:center;justify-content:center}.goal-icon.bin-icons svg{width:28px;height:38px;flex-shrink:0}
.tile.honey-preview{outline:3px solid #e8a22b;outline-offset:-3px}.tile.bin-preview{outline:3px solid #579b7c;outline-offset:-3px}
.mechanic-guide{background:#fff0ca;border:1px solid #e5c58b;border-radius:14px;padding:10px 12px;margin:0 0 12px;font-size:12px;line-height:1.55;color:#795c36}.mechanic-guide strong{display:block;color:#92662c;margin-bottom:3px;font-size:13px}
.mechanic-help>div{display:flex;align-items:center;gap:8px;text-align:left;margin:8px 0}.mechanic-help svg{width:48px;min-width:48px;height:48px}.mechanic-help p{font-size:12px}
.goal.progress{animation:goal-gain .45s ease-out}.honey-wipe{animation:honey-wipe .3s ease-out}.bin-fill{animation:bin-fill .3s ease-out}
.harvest-float{position:fixed;z-index:50;pointer-events:none;color:#3f7458;background:#f1ffde;border:1px solid #8fae74;border-radius:12px;padding:4px 8px;font-size:14px;font-weight:900;animation:harvest-float .8s ease-out forwards}
@keyframes goal-gain{40%{transform:scale(1.12);background:#f5dfa2}100%{transform:scale(1)}}
@keyframes honey-wipe{to{filter:brightness(1.5);box-shadow:inset 0 0 0 8px #fff3c9}}
@keyframes bin-fill{50%{transform:scale(1.08);filter:brightness(1.15)}}
@keyframes harvest-float{from{opacity:1;transform:translate(-50%,0)}to{opacity:0;transform:translate(-50%,-50px)}}
@media(prefers-reduced-motion:reduce){.goal.progress,.honey-wipe,.bin-fill{animation:none}.harvest-float{animation:none;opacity:1}}
.tile.gift-suggestion{animation:giftHintGlow 1.2s ease-in-out infinite;box-shadow:inset 0 0 0 3px #c66232,0 0 12px #efbc58}
@keyframes giftHintGlow{50%{box-shadow:inset 0 0 0 3px #c66232,0 0 20px #efbc58}}
@media(prefers-reduced-motion:reduce){.tile.gift-suggestion{animation:none}}
