:root{
  color-scheme:light;
  --ink:#493b58;--muted:#766a7d;--cream:#fff8e8;--paper:#fffdf4;
  --coral:#f36b4f;--coral-dark:#c94a3e;--yellow:#f7c94c;--blue:#59b9dd;
  --green:#55ba87;--purple:#8069b5;--wood:#dca867;--shadow:rgba(73,59,88,.22);
  font-family:"Arial Rounded MT Bold","Noto Sans TC",system-ui,sans-serif;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#302b40;color:var(--ink)}
button{min-height:44px;font:inherit;color:inherit;border:0;cursor:pointer;touch-action:manipulation}
button:focus-visible{outline:4px solid #fff;outline-offset:3px}
.app{position:relative;width:100%;height:100%;height:100dvh;overflow:hidden;background:radial-gradient(circle at 50% 16%,#ffe7a5,#ed9a5a 65%,#b85d4e)}
#game-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;user-select:none}
.screen{position:absolute;inset:0;display:none;z-index:4}
.screen.is-active{display:flex}
.eyebrow{display:block;font-size:.72rem;font-weight:900;letter-spacing:.18em;color:var(--coral-dark);text-transform:uppercase}
.round-btn{display:grid;place-items:center;width:48px;height:48px;border-radius:17px;background:var(--paper);box-shadow:0 6px 0 rgba(73,59,88,.18),0 9px 20px var(--shadow);font-size:1.35rem;font-weight:900;transition:.15s transform,.15s box-shadow}
.round-btn:active{transform:translateY(4px) scale(.96);box-shadow:0 2px 0 rgba(73,59,88,.18)}
.clay-btn{position:relative;width:100%;min-height:68px;padding:13px 22px;border-radius:24px;background:var(--coral);color:#fff;box-shadow:inset 0 3px 0 rgba(255,255,255,.32),inset 0 -5px 0 rgba(104,44,54,.16),0 8px 0 var(--coral-dark),0 14px 24px var(--shadow);text-shadow:0 2px 0 rgba(80,40,50,.18);transition:.15s transform,.15s box-shadow}
.clay-btn::after{content:"";position:absolute;left:9%;right:9%;top:7px;height:6px;border-radius:50%;background:rgba(255,255,255,.18)}
.clay-btn b,.clay-btn small{display:block}.clay-btn b{font-size:1.18rem}.clay-btn small{margin-top:3px;font-size:.73rem;font-weight:800;opacity:.88}
.clay-btn:active{transform:translateY(6px) scale(.985);box-shadow:inset 0 2px 0 rgba(255,255,255,.25),inset 0 -3px 0 rgba(104,44,54,.16),0 2px 0 var(--coral-dark),0 7px 13px var(--shadow)}
.clay-btn.yellow{background:var(--yellow);color:#5d473e;box-shadow:inset 0 3px 0 rgba(255,255,255,.4),inset 0 -5px 0 rgba(130,90,35,.15),0 8px 0 #d79a38,0 14px 24px var(--shadow);text-shadow:none}
.clay-btn.blue{background:var(--blue);box-shadow:inset 0 3px 0 rgba(255,255,255,.35),inset 0 -5px 0 rgba(36,85,112,.18),0 8px 0 #368cad,0 14px 24px var(--shadow)}
.text-btn{background:transparent;padding:13px 22px;font-weight:900;color:var(--muted);text-decoration:underline;text-underline-offset:4px}

/* Loading */
.loading-screen{align-items:center;justify-content:center;flex-direction:column;gap:20px;color:#fff;background:linear-gradient(160deg,#f2865d,#d95b5e);z-index:30}
.loading-screen p{font-weight:900;letter-spacing:.08em}.loader-toy{position:relative;width:116px;height:72px;border-bottom:10px solid rgba(255,255,255,.45);border-radius:50%}
.loader-toy span{position:absolute;width:46px;height:46px;left:10px;top:0;border-radius:46% 54% 50% 50%;background:radial-gradient(circle at 32% 28%,#ffd092 0 11%,#ff8d51 13% 100%);box-shadow:inset -8px -10px 0 rgba(142,50,65,.12),0 12px 16px rgba(91,40,57,.25);animation:roll 1s infinite ease-in-out}
.loader-toy i{position:absolute;width:38px;height:17px;right:4px;bottom:-4px;border-radius:50%;background:#493b58;box-shadow:inset 0 4px 0 rgba(255,255,255,.16)}
@keyframes roll{50%{transform:translateX(48px) rotate(240deg) scale(.9,1.08)}}

/* Home */
.home-screen{padding:max(30px,env(safe-area-inset-top)) 22px max(20px,env(safe-area-inset-bottom));align-items:center;flex-direction:column;background:
  radial-gradient(circle at 12% 18%,rgba(255,255,255,.28) 0 3px,transparent 4px),
  radial-gradient(circle at 85% 26%,rgba(255,255,255,.22) 0 5px,transparent 6px),
  linear-gradient(170deg,rgba(255,240,184,.9),rgba(239,155,91,.92) 62%,rgba(184,93,78,.95));
}
.sound-btn{position:absolute;right:max(18px,env(safe-area-inset-right));top:max(18px,env(safe-area-inset-top));z-index:2}
.sound-btn.is-off{opacity:.65}.factory-sign{width:min(88%,430px);margin-top:2vh;text-align:center;padding:24px 22px 28px;border-radius:31px;background:linear-gradient(145deg,#fff6d7,#efc17c);box-shadow:inset 0 0 0 4px rgba(255,255,255,.32),inset 0 -11px 0 rgba(118,70,54,.10),0 16px 0 #b86b4d,0 22px 45px rgba(82,50,61,.25);transform:rotate(-1deg)}
.factory-sign::before,.factory-sign::after{content:"";position:absolute}.factory-sign h1{margin:7px 0 8px;font-size:clamp(2.45rem,8vh,4.6rem);line-height:.88;letter-spacing:-.06em;color:#523d58;text-shadow:0 4px 0 #fff,0 8px 0 rgba(116,60,61,.12)}
.factory-sign p{margin:14px auto 0;max-width:330px;font-weight:900;font-size:.9rem;line-height:1.45;color:#7e5d5b}
.hero-toys{position:relative;width:min(420px,86vw);height:14vh;min-height:98px;max-height:145px}
.clay-ball{position:absolute;left:16%;bottom:6px;width:74px;height:74px;border-radius:48% 52% 45% 55%;background:radial-gradient(circle at 33% 27%,#ffc28b 0 8%,#f68354 10% 64%,#cd554b 68% 100%);box-shadow:inset -10px -11px 0 rgba(104,44,68,.12),0 15px 18px rgba(76,46,63,.25);transform:rotate(12deg)}
.clay-ball::after{content:"";position:absolute;inset:18px 13px;border:2px solid rgba(255,215,175,.22);border-radius:50%;transform:rotate(42deg)}
.rubber-duck{position:absolute;left:51%;bottom:12px;width:70px;height:58px;border-radius:52% 48% 45% 45%;background:#f7c943;color:transparent;box-shadow:inset -8px -8px 0 rgba(180,109,35,.12),0 13px 18px rgba(76,46,63,.22)}
.rubber-duck::before{content:"";position:absolute;width:43px;height:43px;left:5px;top:-24px;border-radius:50%;background:#ffd45d;box-shadow:inset -5px -4px 0 rgba(180,109,35,.12)}
.rubber-duck::after{content:"";position:absolute;left:-8px;top:-6px;width:24px;height:12px;border-radius:60% 20% 20% 60%;background:#f37d42;box-shadow:31px -10px 0 -9px #513b52}
.goal-hole{position:absolute;right:10%;bottom:4px;width:88px;height:35px;border-radius:50%;background:#44384d;box-shadow:inset 0 8px 0 #2e2839,0 6px 0 #f2c276,0 10px 13px rgba(70,43,54,.24)}
.menu-stack{width:min(430px,92vw);display:grid;gap:13px}.home-stats{margin-top:auto;display:flex;gap:9px}.home-stats span,.gear-pill,.date-pill{padding:8px 13px;border-radius:999px;background:rgba(255,253,244,.78);font-size:.8rem;font-weight:900;box-shadow:0 5px 14px rgba(82,50,61,.12)}
.home-hint{margin:9px 0 0;color:#7c4b4c;font-size:.69rem;font-weight:900}

/* Panels */
.panel-screen{flex-direction:column;padding:max(18px,env(safe-area-inset-top)) 16px max(18px,env(safe-area-inset-bottom));background:linear-gradient(160deg,#fff3d0,#eab673);overflow:auto}
.panel-header{display:grid;grid-template-columns:52px 1fr auto;align-items:center;gap:11px;margin:0 auto 16px;width:min(720px,100%)}
.panel-header h2{margin:2px 0 0;font-size:1.42rem}.panel-header .eyebrow{font-size:.58rem}.zone-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;width:min(720px,100%);margin:0 auto 14px;padding:5px;background:rgba(255,255,255,.45);border-radius:18px}
.zone-tab{padding:10px 5px;border-radius:14px;background:transparent;font-size:.78rem;font-weight:900}.zone-tab.is-active{background:#fffaf0;box-shadow:0 5px 12px rgba(78,56,70,.14);color:var(--coral-dark)}
.level-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;width:min(720px,100%);margin:0 auto 16px}
.level-card{position:relative;min-height:118px;padding:15px;text-align:left;border-radius:23px;background:linear-gradient(145deg,#fffdf1,#f4d9ac);box-shadow:inset 0 -6px 0 rgba(121,78,62,.10),0 7px 16px rgba(75,54,65,.15);overflow:hidden}
.level-card strong{display:block;font-size:1rem;margin-top:5px;max-width:75%}.level-card small{display:block;margin-top:5px;font-size:.65rem;color:var(--muted)}.level-card .number{font-size:.64rem;letter-spacing:.12em;color:var(--coral-dark);font-weight:900}.level-card .stars{position:absolute;right:12px;top:11px;color:#e0a631;letter-spacing:-2px}.level-card .toy-dot{position:absolute;right:-7px;bottom:-12px;width:64px;height:64px;border-radius:50%;background:var(--coral);box-shadow:inset -9px -9px 0 rgba(76,43,67,.13)}
.level-card.is-locked{filter:saturate(.45);opacity:.66}.level-card.is-locked::after{content:"🔒";position:absolute;right:18px;bottom:20px;font-size:1.25rem}.level-card.is-current{outline:4px solid rgba(243,107,79,.5)}
.clay-btn.endless{width:min(720px,100%);margin:0 auto;background:#7665ad;box-shadow:inset 0 3px 0 rgba(255,255,255,.3),inset 0 -5px 0 rgba(42,34,73,.18),0 8px 0 #55477f,0 14px 24px var(--shadow)}
.daily-card{width:min(620px,100%);margin:0 auto 16px;padding:22px;text-align:center;border-radius:30px;background:#fffaf0;box-shadow:inset 0 -7px 0 rgba(111,76,63,.08),0 13px 28px rgba(75,54,65,.17)}
.daily-card h3{margin:5px 0 7px;font-size:1.65rem}.daily-card p{font-size:.83rem;line-height:1.55}.daily-visual{position:relative;height:130px;margin:-5px 0 8px;background:radial-gradient(circle,#7770bd 0 35%,transparent 36%);overflow:hidden;border-radius:22px}
.mini-planet{position:absolute;width:116px;height:116px;border-radius:50%;left:50%;top:8px;transform:translateX(-50%);background:radial-gradient(circle at 35% 30%,#b9a9ff,#6555a7 70%);box-shadow:inset -14px -15px 0 rgba(39,32,73,.18)}
.mini-ball{position:absolute;width:28px;height:28px;border-radius:50%;background:#ff8658;left:23%;top:52px;box-shadow:0 0 0 5px rgba(255,255,255,.15),82px -38px 0 -11px #ffd14f;animation:orbit 4s linear infinite}
@keyframes orbit{to{transform:translateX(270px) rotate(720deg)}}
.tag-row{display:flex;justify-content:center;flex-wrap:wrap;gap:6px}.tag-row span{padding:6px 10px;border-radius:999px;background:#efe8ff;color:#665396;font-size:.7rem;font-weight:900}
.leaderboard{width:min(620px,100%);margin:0 auto;padding:16px 18px;border-radius:24px;background:rgba(255,253,244,.72)}.leaderboard h3{margin:0 0 8px}.leaderboard ol{margin:0;padding:0;list-style:none}.leaderboard li{display:grid;grid-template-columns:34px 1fr auto;align-items:center;padding:9px 5px;border-bottom:1px dashed rgba(83,61,79,.18);font-size:.8rem}.leaderboard li:last-child{border:0}.leaderboard li span:first-child{font-weight:900;color:var(--coral-dark)}

/* HUD */
.game-screen{pointer-events:none;flex-direction:column;padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(13px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}
.game-screen button{pointer-events:auto}.hud-top{display:flex;gap:8px;align-items:center;width:min(760px,100%);margin:0 auto}.hud-chip{min-height:48px;padding:7px 12px;border-radius:17px;background:rgba(255,253,244,.91);box-shadow:0 6px 18px rgba(60,47,69,.18);display:flex;align-items:baseline;gap:5px;backdrop-filter:blur(8px)}
.hud-chip small{font-size:.57rem;font-weight:900;color:var(--muted)}.hud-chip b{font-size:1.12rem}.hud-chip span{font-size:.58rem;font-weight:900;color:var(--muted)}.duck-chip{margin-left:auto}.level-chip{min-width:64px}.mechanic-tip{align-self:center;margin-top:12px;padding:8px 13px;border-radius:999px;background:rgba(73,59,88,.83);color:#fff;font-size:.7rem;font-weight:900;box-shadow:0 5px 13px rgba(44,35,54,.25);transition:.2s opacity,.2s transform}
.mechanic-tip.is-faded{opacity:.35;transform:translateY(-3px)}.hud-bottom{margin-top:auto;width:min(760px,100%);display:grid;grid-template-columns:1fr auto;align-items:end;gap:12px;align-self:center}.power-wrap{padding:9px 12px 12px;border-radius:18px;background:rgba(255,253,244,.91);box-shadow:0 6px 18px rgba(60,47,69,.18)}.power-wrap>span{display:block;font-size:.58rem;font-weight:900;margin-bottom:5px}.power-track{height:12px;overflow:hidden;border-radius:999px;background:#dfd6d4;box-shadow:inset 0 2px 3px rgba(70,52,67,.18)}.power-track i{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#62c88e,#f1c848 55%,#f16451);transition:width .03s}.game-actions{display:flex;gap:7px}.game-actions .round-btn{width:52px;height:52px}.game-actions .retry{background:var(--coral);color:#fff}

/* Editor */
.editor-screen{pointer-events:none;flex-direction:column;padding:max(10px,env(safe-area-inset-top)) 10px max(10px,env(safe-area-inset-bottom))}.editor-screen button,.parts-tray{pointer-events:auto}.editor-header{pointer-events:none}.editor-header button{pointer-events:auto}.editor-header .hud-chip{margin-right:auto}.clay-mini{padding:10px 13px;border-radius:14px;background:var(--yellow);box-shadow:0 4px 0 #c68c34;font-size:.72rem;font-weight:900}.clay-mini:active{transform:translateY(3px);box-shadow:0 1px 0 #c68c34}.clay-mini.green{background:var(--green);color:#fff;box-shadow:0 4px 0 #378867}.clay-mini.blue{background:var(--blue);color:#fff;box-shadow:0 4px 0 #347e9d}.clay-mini.danger{background:#e66d6b;color:#fff;box-shadow:0 4px 0 #ac474d}.parts-tray{position:absolute;left:max(8px,env(safe-area-inset-left));bottom:72px;width:72px;max-height:60vh;padding:8px;display:grid;gap:7px;overflow:auto;border-radius:22px;background:rgba(255,253,244,.92);box-shadow:0 8px 22px rgba(58,45,67,.23)}
.parts-tray button{display:grid;justify-items:center;gap:3px;padding:7px 3px;border-radius:13px;background:#f7ead2;font-size:.55rem;font-weight:900}.parts-tray button.is-selected{background:#ffd46b;outline:3px solid rgba(243,107,79,.5)}.part{position:relative;display:block;width:30px;height:24px}.part.wall{border-radius:7px;background:#bb824e;box-shadow:inset 0 -5px 0 #8f613d}.part.spring{background:repeating-linear-gradient(90deg,#efc23d 0 5px,#f3764e 5px 10px);border-radius:6px}.part.fan::before{content:"✣";font-size:28px;color:#5cb8d5}.part.magnet{border:7px solid #e55956;border-top:0;border-radius:0 0 14px 14px}.part.magnet::after{content:"";position:absolute;left:-7px;right:-7px;top:0;height:8px;background:linear-gradient(90deg,#4e9ecc 0 28%,transparent 29% 70%,#4e9ecc 71%)}.part.portal{border:6px solid #8a6ddb;border-radius:50%;box-shadow:0 0 6px #735ad2}.part.hole{border-radius:50%;background:#40364a;transform:scaleY(.5)}
.editor-actions{pointer-events:auto;position:absolute;left:88px;right:10px;bottom:max(10px,env(safe-area-inset-bottom));display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}.selection-actions{pointer-events:auto;position:absolute;right:12px;top:83px;display:flex;gap:6px}.selection-actions button{padding:8px 10px;border-radius:12px;background:#fff7e7;box-shadow:0 4px 12px var(--shadow);font-size:.66rem;font-weight:900}.is-hidden{display:none!important}

/* Modals */
.modal{position:absolute;inset:0;z-index:20;display:none;place-items:center;padding:18px;background:rgba(44,35,54,.58);backdrop-filter:blur(8px)}.modal.is-active{display:grid}.modal-card{width:min(410px,94vw);padding:25px 22px;text-align:center;border-radius:32px;background:linear-gradient(145deg,#fffdf4,#f5dfb8);box-shadow:inset 0 -8px 0 rgba(103,70,60,.09),0 22px 60px rgba(34,26,45,.4)}.modal-card h2{margin:6px 0 12px;font-size:1.75rem}.modal-card .clay-btn{margin-top:10px}.modal-toy{display:grid;place-items:center;width:74px;height:74px;margin:-5px auto 12px;border-radius:50%;background:#efb94a;font-size:2rem;box-shadow:inset -8px -9px 0 rgba(101,61,48,.12),0 9px 14px var(--shadow)}
.tutorial-icon{display:grid;place-items:center;width:92px;height:92px;margin:-3px auto 12px;border-radius:28px;background:#f47d55;color:white;font-size:3.2rem;box-shadow:inset -9px -10px 0 rgba(93,45,63,.14),0 10px 18px var(--shadow)}.tutorial-card>p:not(.eyebrow){min-height:54px;line-height:1.55;font-size:.84rem}.tutorial-dots{display:flex;justify-content:center;gap:6px;margin:10px}.tutorial-dots i{width:8px;height:8px;border-radius:50%;background:#d6b994}.tutorial-dots i.is-active{width:24px;border-radius:999px;background:var(--coral)}
.result-stars{display:flex;justify-content:center;gap:5px;margin:2px 0 14px;color:#d4bd8c;font-size:3rem;text-shadow:0 4px 0 rgba(97,62,55,.12)}.result-stars span.is-earned{color:#f1b93c;animation:starPop .55s both}.result-stars span:nth-child(2){animation-delay:.15s}.result-stars span:nth-child(3){animation-delay:.3s}@keyframes starPop{0%{transform:scale(.2) rotate(-30deg)}70%{transform:scale(1.28) rotate(7deg)}100%{transform:scale(1)}}
.result-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.result-stats div{padding:12px 5px;border-radius:18px;background:rgba(255,255,255,.55)}.result-stats small,.result-stats b{display:block}.result-stats small{font-size:.62rem;color:var(--muted);font-weight:900}.result-stats b{margin-top:3px;font-size:1.25rem}.result-card>p:not(.eyebrow){font-size:.76rem;font-weight:800;color:var(--muted)}
.toast{position:absolute;z-index:40;left:50%;bottom:90px;max-width:80vw;padding:11px 16px;border-radius:999px;background:#493b58;color:#fff;font-size:.72rem;font-weight:900;box-shadow:0 8px 22px rgba(35,26,45,.3);transform:translate(-50%,20px);opacity:0;pointer-events:none;transition:.25s}.toast.is-active{opacity:1;transform:translate(-50%,0)}

@media (min-width:760px){
  .app{width:min(100%,960px);margin:0 auto;box-shadow:0 0 90px rgba(0,0,0,.45)}
  .home-screen{justify-content:center}.factory-sign{margin-top:0}.hero-toys{height:130px}.menu-stack{grid-template-columns:1fr 1fr;width:min(710px,80vw)}.menu-stack .primary{grid-column:1/-1}.home-stats{margin-top:24px}
  .level-grid{grid-template-columns:repeat(5,1fr)}.level-card{min-height:135px}.level-card strong{max-width:100%;font-size:.9rem}.level-card .toy-dot{width:45px;height:45px}
  .parts-tray{width:92px}.editor-actions{left:112px}
}
@media (orientation:landscape) and (max-height:620px){
  .home-screen.is-active{padding:12px 18px;display:grid!important;grid-template-columns:minmax(260px,42%) 1fr;grid-template-rows:1fr auto;gap:12px 28px}.factory-sign{grid-row:1/3;margin:0;width:100%;padding:18px}.factory-sign h1{font-size:clamp(2.1rem,11vh,4rem)}.hero-toys{display:none}.menu-stack{width:100%;align-self:end}.home-stats{margin:0;justify-self:center}.home-hint{position:absolute;right:18px;bottom:5px}.sound-btn{right:12px;top:12px}
  .hud-bottom{grid-template-columns:minmax(150px,280px) auto}.parts-tray{bottom:12px;max-height:72vh}.editor-actions{left:auto;right:10px;bottom:12px;width:250px}.panel-screen{padding:10px 16px}.level-grid{grid-template-columns:repeat(5,1fr)}
}
@media (max-width:360px){.factory-sign h1{font-size:2.45rem}.factory-sign{padding:18px}.hero-toys{min-height:80px}.menu-stack{gap:10px}.clay-btn{min-height:59px;padding:10px 16px}.clay-btn b{font-size:1rem}.hud-chip{padding:6px 8px}.hud-chip span{display:none}.round-btn{width:44px;height:44px}.game-actions .round-btn{width:46px;height:46px}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}
