@font-face{font-family:Mitr;src:url('./fonts/mitr-thai-400-normal.woff2') format('woff2');font-weight:400;font-display:swap;unicode-range:U+0E00-0E7F}@font-face{font-family:Mitr;src:url('./fonts/mitr-latin-400-normal.woff2') format('woff2');font-weight:400;font-display:swap}@font-face{font-family:Mitr;src:url('./fonts/mitr-thai-500-normal.woff2') format('woff2');font-weight:500;font-display:swap;unicode-range:U+0E00-0E7F}@font-face{font-family:TrainNumbers;src:url('./fonts/nunito-latin-700-normal.woff2') format('woff2');font-weight:700;font-display:swap}
:root{font-family:Mitr,system-ui,sans-serif;color:#435e4e;background:#f9f5e9;color-scheme:light;font-synthesis:none}*{box-sizing:border-box}html,body{margin:0;height:100%;min-height:100%}body{height:100dvh;min-height:520px;display:flex;flex-direction:column}h1,h2,p{margin:0}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;border:0;touch-action:manipulation}a{color:inherit;text-decoration:none}button:disabled{opacity:.5;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #226bbb;outline-offset:5px}button:not(:disabled):active{translate:0 2px}.svg-library{position:absolute;width:0;height:0;overflow:hidden}.icon{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.skip-link{position:fixed;top:8px;left:8px;z-index:30;background:white;padding:14px;transform:translateY(-200%)}.skip-link:focus{transform:none}.header{height:70px;min-height:70px;display:flex;align-items:center;justify-content:space-between;padding:9px max(22px,env(safe-area-inset-right)) 9px max(22px,env(safe-area-inset-left));gap:15px}.brand{display:flex;align-items:center;gap:11px}.brand-mark{display:grid;place-items:center;width:45px;height:48px;border-radius:17px;background:#e4edda;transform:rotate(-7deg)}.brand-mark svg{width:28px;height:38px}.brand small{display:block;font-size:8px;letter-spacing:2.4px;color:#8b9879;margin-bottom:3px}.brand h1{font-size:17px;font-weight:500}.header-actions{display:flex;align-items:center;gap:10px}.game-link{display:flex;align-items:center;gap:7px;min-height:44px;padding:10px 14px;background:#eaf0de;border-radius:16px;font-size:12px;color:#6f845c}.game-link .icon{width:20px;height:20px}.star-total{display:flex;align-items:center;gap:8px;min-height:45px;border:1px solid #e8d49c;border-radius:16px;padding:0 13px;background:#fff0bd;color:#987032}.star-total .icon{fill:#eab842;stroke:#c28d29;width:21px}.star-total output{font:700 18px TrainNumbers,sans-serif}.icon-button{display:grid;place-items:center;width:48px;height:48px;flex-shrink:0;border:2px solid #8ab4d2;border-radius:16px;background:#e6f2ff;color:#39739f;box-shadow:0 3px #b7cddc}.icon-button:hover{background:#d9edff}main{flex:1;min-height:0;padding:0 max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}.farm-world{position:relative;height:100%;isolation:isolate;overflow:hidden;border:1px solid #d9e2c5;border-radius:29px;background:radial-gradient(ellipse at 50% 22%,#fffbea,#eff3dc 58%,#dbe8c8)}#scene{position:absolute;inset:0;overflow:hidden;outline:none}#scene canvas{display:block;width:100%;height:100%}.loading{height:100%;display:grid;align-content:center;justify-items:center;gap:15px;color:#78906a}.loading svg{width:80px;height:100px}.loading p{font-size:14px}.hud{position:absolute;inset:0;pointer-events:none;z-index:2}.hud button{pointer-events:auto}.round-progress{position:absolute;left:26px;top:28px;display:flex;flex-direction:column;gap:7px;align-items:flex-start}#progress{display:flex;gap:6px}.progress-star{width:22px;height:22px;fill:#9bb48b55;stroke:none}.progress-star.earned{fill:#dca735}#round{font:700 13px TrainNumbers,sans-serif;color:#7b9068}.order-card{position:absolute;top:17px;left:50%;transform:translateX(-50%);min-width:224px;padding:8px 14px 11px 18px;border:2px solid #d9bb85;border-bottom:5px solid #c9a76d;border-radius:24px;background:#fffdf3;box-shadow:0 7px 20px #63744112}.order-label{display:block;font-size:11px;letter-spacing:.4px;color:#9b8056;padding-left:2px}.order-content{display:flex;align-items:center;gap:13px}.order-egg{width:34px;height:43px}.times{font:25px TrainNumbers;color:#ae9a75}#target{font:700 53px/1.1 TrainNumbers,sans-serif;color:#76532d;min-width:55px;text-align:center;outline:none}.listen{width:48px;height:48px;border-radius:50%;border-color:#2a6fa7;background:#368bc6;color:white;box-shadow:0 3px #265f90}.listen:hover{background:#2479b5}.hint-button{position:absolute;top:27px;right:26px;background:#ffe8a4;border-color:#cda857;color:#9a702d;box-shadow:0 3px #c7a65e}.hint-button:hover{background:#ffdc7d}.bottom-note{position:absolute;bottom:25px;left:27px;display:flex;align-items:center;gap:11px;background:#fffdf2ef;border:1px solid #d8dfc2;border-bottom:3px solid #d0d9b5;border-radius:19px;padding:9px 17px 9px 12px;max-width:calc(100% - 210px);color:#70845a}.note-egg{width:23px;height:29px}.bottom-note p{font-size:13px;line-height:1.5}.bottom-note.success{background:#eafbe3;border-color:#accd98;color:#37734e}.bottom-note.retry{background:#fff0df;border-color:#e3bc8b;color:#a36538}.check-button{position:absolute;bottom:24px;right:26px;display:flex;align-items:center;justify-content:center;gap:10px;min-width:145px;height:69px;border:4px solid #fffdf0;border-radius:23px;background:#2c9d75;box-shadow:0 6px #207452,0 0 0 2px #247c5b,0 9px 17px #335c3823;color:white}.check-button .icon{width:38px;height:38px;stroke-width:3}.check-button span{font-size:15px}.check-button:hover{background:#238865}.check-button.hint{outline:4px solid #efba43;outline-offset:7px}
dialog{width:min(440px,calc(100% - 38px));max-height:calc(100dvh - 36px);overflow:auto;padding:28px 32px;border:1px solid #d2ddc0;border-radius:30px;background:#fffef3;color:#435e4e;text-align:center;box-shadow:0 25px 80px #294a3638}dialog::backdrop{background:#38533e40;backdrop-filter:blur(7px)}dialog h2{font-size:28px;font-weight:500;line-height:1.5}.welcome-mark{width:92px;height:98px;border-radius:33px;display:grid;place-items:center;background:#eaf0d8;margin:0 auto 14px;transform:rotate(-5deg)}.welcome-mark svg{width:51px;height:67px}.welcome-mark.small{width:69px;height:74px;border-radius:25px}.welcome-mark.small svg{width:38px;height:52px}.eyebrow{font-size:11px;color:#96a17e;margin:6px 0}.dialog-intro{font-size:13px;color:#8c9a76;margin:20px 0}.welcome-demo{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:19px}.demo-nest{display:flex;background:#dfb270;border-radius:50%;border-bottom:5px solid #b78249;padding:5px 8px}.demo-nest svg{width:32px;height:45px}.welcome-demo>.icon{color:#a7b88d}.demo-tray{display:grid;grid-template-columns:repeat(5,13px);gap:5px;padding:9px;border:3px solid #f7fbeb;border-radius:12px;background:#9cceb7;box-shadow:0 4px #629a80}.demo-tray i{width:13px;height:17px;border-radius:50%;background:#608d75}.primary{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;min-height:58px;border:2px solid #2e7856;border-radius:18px;background:#3e946c;color:white;font-size:18px;box-shadow:0 4px #2b6a4d}.primary:hover{background:#31845c}.small-link{display:inline-flex;min-height:44px;align-items:center;justify-content:center;color:#8b9a74;font-size:12px;margin-top:12px}.close{position:absolute;right:13px;top:12px;width:44px;height:44px;background:#edf3e1;border-radius:14px;font:30px system-ui;color:#7c8d6a}dialog ol{margin:16px 0;padding:0;list-style:none;text-align:left}dialog li{display:flex;align-items:center;gap:13px;margin:13px 0;font-size:13px;line-height:1.7}dialog li b{flex-shrink:0;display:grid;place-items:center;width:37px;height:37px;border-radius:12px;background:#edf2db;font:700 22px TrainNumbers,sans-serif;color:#6c8c58}.motion-setting{display:flex;align-items:center;justify-content:space-between;border-top:1px dashed #d8dfc3;padding:13px 0;font-size:13px}.motion-setting input{width:24px;height:24px;accent-color:#3e946c}.voice-note{font-size:10px;color:#899776;line-height:1.8;margin-bottom:18px}.complete-stars{font:700 40px TrainNumbers,sans-serif;color:#e3ac35;letter-spacing:9px;margin:20px 0 26px}
.egg-guide{position:absolute;inset:0;z-index:4;pointer-events:none;overflow:hidden}.egg-guide[hidden],.egg-guide [hidden]{display:none}.egg-guide *{pointer-events:none}.guide-route{position:absolute;inset:0;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 2px 0 #fffdf0)}.guide-route path{fill:none;stroke:#167ea1;stroke-width:4;stroke-dasharray:7 9;stroke-linecap:round}.guide-ring{position:absolute;border:4px dashed #158aa3;border-radius:50%;box-shadow:0 0 0 4px #fffdf0}.guide-egg{position:absolute;left:0;top:0;width:45px;height:59px;border:3px solid #fffef6;border-radius:50% 50% 46% 46% / 62% 62% 38% 38%;background:radial-gradient(ellipse at 30% 22%,#fffefa,#fff0c9 62%,#d5ab76);box-shadow:4px 8px 14px #67552c36;will-change:transform,opacity}.guide-hand{position:absolute;left:0;top:0;width:112px;height:112px;object-fit:contain;transform-origin:35.84px 9.52px;filter:drop-shadow(0 4px 3px #31544833);user-select:none;-webkit-user-drag:none;will-change:transform,opacity}.fallback{position:absolute;inset:25% 8% 20%;display:flex;align-items:center;justify-content:space-around;gap:20px}.fallback-source{width:100px;height:100px;border:5px solid #fffdf1;border-radius:50%;background:#e9bd77;box-shadow:0 6px #ba8a4d}.fallback-source svg{width:47px;height:63px}.fallback-tray{display:grid;grid-template-columns:repeat(5,1fr);gap:9px;padding:17px;border:5px solid #fffdf0;border-radius:24px;background:#75b89f}.fallback-tray button{width:62px;height:78px;border:2px dashed #d2ead8;border-radius:50%;background:#4f8f77}.fallback-tray svg{width:45px;height:61px}
@media(max-width:900px){.header{padding-inline:17px}.game-link span{display:none}.game-link{padding:10px}.brand h1{font-size:16px}.round-progress{left:19px;top:28px}#progress{gap:3px}.progress-star{width:18px;height:18px}.hint-button{right:20px}.bottom-note{left:21px}.check-button{right:22px}.fallback{flex-direction:column}.fallback-tray button{width:66px;height:82px}}
@media(max-width:600px){body{min-height:570px}.header{height:63px;min-height:63px;padding:8px 12px;gap:8px}.brand{gap:7px}.brand-mark{width:35px;height:40px;border-radius:13px}.brand-mark svg{width:23px;height:31px}.brand h1{font-size:12px}.brand small{font-size:6px;letter-spacing:1.4px}.header-actions{gap:6px}.header-actions .icon-button{width:39px;height:40px;border-radius:13px}.header-actions .icon{width:21px;height:21px}.game-link{display:none}.star-total{min-height:39px;padding:0 7px;gap:5px}.star-total .icon{width:17px}.star-total output{font-size:15px}main{padding:0 6px max(6px,env(safe-area-inset-bottom))}.farm-world{border-radius:23px}.round-progress{top:19px;left:14px;gap:5px}#progress{display:grid;grid-template-columns:repeat(3,16px);gap:3px}.progress-star{width:16px;height:16px}.order-card{top:14px;min-width:188px;padding:7px 9px 9px 12px;border-radius:21px}.order-content{gap:8px}.order-egg{width:28px;height:36px}.times{font-size:20px}#target{font-size:43px;min-width:47px}.listen{width:43px;height:43px}.hint-button{top:20px;right:13px;width:41px;height:43px}.order-label{font-size:10px}.check-button{right:17px;bottom:21px;min-width:96px;height:61px;gap:3px;border-radius:20px}.check-button .icon{width:34px;height:34px}.check-button span{display:none}.bottom-note{bottom:23px;left:16px;max-width:calc(100% - 140px);padding:8px 12px;gap:7px}.bottom-note p{font-size:11px}.note-egg{width:20px;height:26px}dialog{padding:26px 24px}dialog h2{font-size:25px}.fallback{inset:26% 3% 20%}.fallback-tray{padding:10px;gap:7px}.fallback-tray button{width:44px;height:60px}.fallback-tray svg{width:33px;height:47px}}
@media(max-height:650px) and (min-width:601px){.header{height:58px;min-height:58px}.order-card{top:10px;padding-block:5px}.order-label{font-size:10px}#target{font-size:43px}.order-egg{height:34px}.listen{height:42px;width:42px}.bottom-note{bottom:15px}.check-button{bottom:17px;height:59px}.round-progress{top:19px}}
.reduce-motion *{animation:none!important;transition:none!important;scroll-behavior:auto!important}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media(forced-colors:active){button,.order-card,.bottom-note{border:2px solid ButtonText!important}.icon{forced-color-adjust:auto}}
