:root{color:#24322e;font-synthesis:none;text-rendering:optimizelegibility;--ink:#24322e;--muted:#73817a;--cream:#fffaf2;--paper:#fffcf6e8;--green:#336657;--green-dark:#214d40;--coral:#dc795e;--gold:#d49d49;--line:#2a41371f;--shadow:0 18px 44px #4036241c;font-optical-sizing:auto;background:#f5efe5;font-family:DM Sans,Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif}*{box-sizing:border-box}html{background:#f5efe5;min-width:320px;min-height:100%}body{overscroll-behavior:none;background:linear-gradient(155deg,#f6f0e8 0%,#f7e8d3 56%,#ecdfcf 100%);min-width:320px;min-height:100svh;margin:0}button,input{font:inherit}button{color:inherit;-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus-visible,input:focus-visible{outline-offset:3px;outline:3px solid #dc795e}.scene-backdrop{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}#scene-canvas{width:100%;height:100%;display:block}.scene-backdrop:after{content:"";background:linear-gradient(#fffaf39e,#fffaf31f 44%,#f8eedd91);position:absolute;inset:0}.grain{z-index:1;pointer-events:none;opacity:.09;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.18'/%3E%3C/svg%3E");position:fixed;inset:0}.app-shell{z-index:2;width:min(100%,560px);min-height:100svh;padding:max(12px, env(safe-area-inset-top)) 20px max(22px, env(safe-area-inset-bottom));isolation:isolate;margin:0 auto;position:relative}.topbar{z-index:6;justify-content:space-between;align-items:center;height:55px;display:flex;position:relative}.brand{text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:0;display:flex}.brand small{letter-spacing:.13em;color:#73817a;font-size:10px;font-weight:800;display:block}.brand strong{color:var(--green-dark);letter-spacing:-.03em;font-size:15px;line-height:1.2;display:block}.brand em{color:var(--coral);padding:0 2px;font-style:normal}.brand-mark{background:#356858;border-radius:12px;justify-content:center;align-items:center;width:34px;height:34px;display:inline-flex;position:relative;transform:rotate(-5deg);box-shadow:0 6px 12px #35685835}.brand-mark i{border:2px solid #fff6df;border-radius:80% 20% 70% 30%;width:9px;height:12px;display:block;position:absolute;transform:rotate(24deg)}.brand-mark i:first-child{margin-left:-7px}.brand-mark i:last-child{margin-left:7px;transform:rotate(66deg)}.top-actions{align-items:center;gap:8px;display:flex}.help-button,.sound-button,.pause-button,.modal-close{cursor:pointer;background:#fffcf6cc;border:1px solid #34534621;box-shadow:0 4px 12px #4036240f}.help-button{min-height:38px;color:var(--green);white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:0 11px;font-size:11px;font-weight:900;display:inline-flex}.help-button span:first-child{font-size:18px;line-height:1}.sound-button{min-height:38px;color:var(--green-dark);border-radius:999px;align-items:center;gap:7px;padding:0 12px;font-size:11px;font-weight:800;display:inline-flex}.sound-icon{color:var(--coral);font-size:17px}.exit-button{color:#a65d49;cursor:pointer;background:#fff6ee;border:1px solid #ead7ca;border-radius:999px;min-height:34px;padding:0 10px;font-size:10px;font-weight:900;display:none}.exit-button.visible{justify-content:center;align-items:center;display:inline-flex}.view{z-index:3;animation:.35s both rise;display:none;position:relative}.view.active{display:block}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.home-view{padding-top:26px;padding-bottom:24px}.home-copy{z-index:2;position:relative}.eyebrow{color:#a67543;text-transform:uppercase;letter-spacing:.14em;font-size:10px;font-weight:900}.sparkle{color:#dca45a;margin-right:5px;font-size:14px}h1,h2,p{margin-top:0}.home-copy h1{color:var(--green-dark);letter-spacing:-.055em;margin:11px 0 9px;font-size:clamp(30px,8vw,42px);font-weight:900;line-height:1.16}.home-copy h1 span{color:var(--coral)}.lede{color:#6d7a71;max-width:360px;margin:0 0 18px;font-size:13px;line-height:1.6}.panel{background:var(--paper);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(16px);border:1px solid #ffffffbf;border-radius:23px}.setup-card{z-index:3;padding:18px;position:relative}.field-label{color:#66736b;margin-bottom:7px;font-size:12px;font-weight:800;display:block}.alias-wrap{background:#f5f0e6;border:1px solid #e9e1d4;border-radius:13px;align-items:center;gap:9px;height:45px;padding:0 13px;display:flex}.alias-icon{color:#ac7950;font-size:17px}.alias-wrap input{width:100%;color:var(--ink);background:0 0;border:0;outline:0;font-size:14px;font-weight:700}.alias-wrap:focus-within{border-color:#d49d49;box-shadow:0 0 0 3px #d49d4924}.role-label{margin-top:15px}.role-options{grid-template-columns:1fr 1fr .8fr;gap:8px;display:grid}.role-card,.random-card{cursor:pointer;background:#faf7f0;border:1px solid #e7e0d3;border-radius:15px;justify-content:center;align-items:center;height:79px;display:flex;position:relative;overflow:hidden}.role-card{padding:4px 7px 5px}.role-card img{object-fit:contain;opacity:.84;max-width:66px;height:77px;position:absolute;bottom:-3px}.role-card span:last-child{color:#304f43;text-shadow:0 1px 4px #fff;font-size:10px;font-weight:900;position:absolute;bottom:6px;left:0;right:0}.role-card.selected{background:#eaf2e9;border:2px solid #43816b;box-shadow:0 0 0 3px #43816b1a}.role-card.selected img{opacity:1}.role-check{z-index:1;color:#fff;background:#43816b;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:11px;font-weight:900;display:none;position:absolute;top:5px;right:6px}.role-card.selected .role-check{display:flex}.random-card{color:#80684a;flex-direction:column;gap:5px;font-size:10px;font-weight:900}.random-card.selected{background:#fcf0d9;border:2px solid #d49d49}.random-dice{color:#d49d49;font-size:22px}.primary-button{color:#fffaf1;cursor:pointer;background:linear-gradient(110deg,#356858,#46806a);border:0;border-radius:16px;justify-content:space-between;align-items:center;width:100%;min-height:52px;margin-top:14px;padding:0 18px 0 22px;font-size:15px;font-weight:900;transition:transform .16s,filter .16s,box-shadow .16s;display:flex;box-shadow:0 9px 18px #35685831}.primary-button b{background:#ffffff23;border-radius:10px;place-items:center;width:30px;height:30px;font-size:19px;display:grid}.primary-button:active{filter:brightness(.96);transform:translateY(1px)scale(.99)}.microcopy{text-align:center;color:#849087;margin:10px 0 0;font-size:9px}.leaderboard{z-index:3;margin-top:14px;padding:16px 17px 12px;position:relative}.section-heading{justify-content:space-between;align-items:center;margin-bottom:9px;display:flex}.leaderboard-tools{align-items:center;gap:8px;display:flex}.clear-board-button{color:#a55d4c;cursor:pointer;background:0 0;border:0;padding:6px 3px;font-size:9px;font-weight:800}.clear-board-button:hover:not(:disabled){color:#7f3c32;text-decoration:underline}.clear-board-button:disabled{color:#bcb8ae;cursor:default}.section-heading h2{color:var(--green-dark);letter-spacing:-.03em;margin:3px 0 0;font-size:17px}.trophy{color:#bd8c43;background:#f6e9ce;border-radius:12px;place-items:center;width:34px;height:34px;font-size:21px;display:grid}.leaderboard-list{gap:5px;display:grid}.leaderboard-row{background:#f4efe4b3;border-radius:10px;grid-template-columns:25px minmax(0,1fr) auto;align-items:center;gap:5px 6px;min-height:35px;padding:5px 8px;display:grid}.rank-number{color:#a17b4a;font-size:11px;font-weight:900}.rank-player{color:#43584c;align-items:center;gap:3px;min-width:0;font-size:11px;font-weight:800;display:flex}.rank-name{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.rank-player small{color:#88938c;font-size:9px;font-weight:600}.rank-score{font-variant-numeric:tabular-nums;color:var(--green-dark);font-size:12px;font-weight:900}.rank-level,.rank-date{color:#9a8b74;grid-column:2/4;font-size:9px}.rank-level{margin-top:-3px}.rank-date{color:#9a9b91;font-variant-numeric:tabular-nums;margin-top:-4px}.completion-badge{vertical-align:-2px;color:#fff9dd;background:linear-gradient(145deg,#f7d978,#be8428);border:1px solid #e6c36d;border-radius:50%;place-items:center;width:17px;height:17px;margin-left:2px;font-size:10px;line-height:1;animation:1.8s ease-in-out infinite badge-glow;display:inline-grid;box-shadow:0 0 6px #e6b443a8,inset 0 0 3px #fff4bd}@keyframes badge-glow{0%,to{transform:scale(1);box-shadow:0 0 5px #e6b44380,inset 0 0 3px #fff4bd}50%{transform:scale(1.12);box-shadow:0 0 11px #edc04be6,0 0 17px #edc04b70,inset 0 0 4px #fff8d7}}.empty-board{text-align:center;color:#98a098;padding:14px 4px 8px;font-size:11px}.leaderboard-note{color:#99a198;text-align:center;margin:8px 0 0;font-size:9px}.character-stage{z-index:1;pointer-events:none;width:min(100vw,560px);height:34svh;max-height:305px;left:50%;bottom:max(0px, env(safe-area-inset-bottom));opacity:.42;justify-content:center;align-items:flex-end;gap:2%;transition:opacity .25s;display:flex;position:fixed;transform:translate(-50%)}.character-wrap{z-index:0;justify-content:center;align-items:flex-end;width:43%;max-width:205px;height:100%;display:flex;position:relative}.character-stage img{z-index:1;object-fit:contain;object-position:bottom;filter:drop-shadow(0 8px 7px #423a2c1a);width:100%;max-width:none;height:100%;animation:4.2s ease-in-out infinite float;display:block;position:relative}.character-stage .character-kathy{animation-delay:-1.5s}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.view:not(.home-view).active~.character-stage{opacity:.62}.character-aura{z-index:0;opacity:0;pointer-events:none;background:radial-gradient(#ffbe2ea3 0%,#ffdb6566 43%,#ffdb6500 72%);border-radius:50%;position:absolute;inset:10% -19% 4%}.character-aura:before{content:"";border:3px solid #16523fcc;border-radius:50%;position:absolute;inset:6% 5%;box-shadow:0 0 13px #16523f8c}.character-wrap.chosen .character-aura{opacity:.92;animation:2.4s ease-in-out infinite aura-pulse}@keyframes aura-pulse{0%,to{opacity:.78;transform:scale(.91)}50%{opacity:1;transform:scale(1.04)}}.intro-view,.result-view,.final-view{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:calc(100svh - 75px);padding:30px 2px 24px;display:none}.intro-view.active,.result-view.active,.final-view.active{display:flex}.level-mark{color:#376856;background:#e4eee2;border-radius:18px;place-items:center;width:56px;height:56px;margin:0 auto 9px;font-size:20px;font-weight:900;display:grid;box-shadow:0 8px 18px #395f4c15}.intro-view h1,.result-view h1,.final-view h1{color:var(--green-dark);letter-spacing:-.055em;margin:7px 0;font-size:clamp(30px,8vw,40px);line-height:1.1}.intro-goal{color:#728077;max-width:330px;margin:0 auto 16px;font-size:13px;line-height:1.6}.instruction-card{text-align:left;align-items:center;gap:14px;width:100%;padding:16px 18px;display:flex}.instruction-icon{background:#f7ebd5;border-radius:15px;flex:0 0 44px;place-items:center;width:44px;height:44px;font-size:24px;display:grid}.instruction-card p{color:#52655a;margin:0;font-size:13px;font-weight:700;line-height:1.6}.intro-meta{color:#8d897c;justify-content:space-between;gap:6px;width:100%;margin-top:13px;font-size:10px;font-weight:700;display:flex}.intro-view .primary-button{margin-top:22px}.text-button{color:#607c6f;cursor:pointer;background:0 0;border:0;margin-top:10px;padding:9px 12px;font-size:12px;font-weight:800}.play-view{min-height:calc(100svh - 76px);padding-top:16px;padding-bottom:20px}.play-heading{justify-content:space-between;align-items:center;padding:13px 15px;display:flex}.play-heading .eyebrow{font-size:9px}.play-heading h1{color:var(--green-dark);letter-spacing:-.04em;margin:3px 0 0;font-size:20px}.pause-button{color:#597365;border-radius:13px;width:38px;height:38px;font-size:15px;font-weight:900}.stats-row{grid-template-columns:1fr 1fr 1fr;gap:7px;margin:10px 0;display:grid}.stat-chip{text-align:center;background:#fffbf1cf;border:1px solid #ffffffae;border-radius:13px;padding:9px 7px 8px;box-shadow:0 5px 15px #5e553611}.stat-chip small{color:#8b938a;font-size:9px;font-weight:700;display:block}.stat-chip strong{color:#355c4b;font-variant-numeric:tabular-nums;margin-top:3px;font-size:16px;display:block}.timer-chip strong{color:#c56e50}.challenge{z-index:4;min-height:275px;padding:18px;position:relative;overflow:hidden}.challenge-kicker{color:#a37543;text-align:center;letter-spacing:.1em;font-size:10px;font-weight:900}.challenge h2{text-align:center;color:#294f42;letter-spacing:-.03em;margin:7px 0 4px;font-size:20px}.challenge-copy{text-align:center;color:#8a9187;margin:0 0 14px;font-size:11px;line-height:1.55}.prompt-card{text-align:center;color:#476554;background:#edf2e8;border:1px solid #e1e9dc;border-radius:15px;margin:11px 0 12px;padding:12px 14px;font-size:13px;font-weight:900}.prompt-card .prompt-emoji{margin-bottom:4px;font-size:27px;display:block}.choice-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.choice-button{color:#50685a;cursor:pointer;background:#fbf7ee;border:1px solid #e8e2d5;border-radius:15px;min-height:64px;font-size:12px;font-weight:800;transition:transform .14s,background .14s,border .14s}.choice-button:active{transform:scale(.96)}.choice-button .choice-emoji{margin-bottom:2px;font-size:24px;display:block}.choice-button.selected{background:#fff1d3;border:2px solid #d49d49;box-shadow:0 0 0 3px #d49d491e}.choice-button.correct{background:#e4f1e5;border-color:#78a389;animation:.24s pop}.choice-button.wrong{background:#fbebe5;border-color:#dd9a81;animation:.25s nudge}@keyframes pop{50%{transform:scale(1.06)}}@keyframes nudge{25%{transform:translate(-3px)}75%{transform:translate(3px)}}.wide-choice{grid-column:1/-1;min-height:48px}.table-buttons{grid-template-columns:repeat(3,1fr);gap:7px;margin-top:9px;display:grid}.table-button{color:#627466;cursor:pointer;background:#f7f1e6;border:1px solid #e6dfd1;border-radius:12px;min-height:42px;font-size:11px;font-weight:900}.table-button:active{background:#e4eee2;transform:scale(.96)}.progress-dots{justify-content:center;gap:6px;margin:12px 0;display:flex}.progress-dots span{background:#ded9ce;border-radius:50%;width:8px;height:8px}.progress-dots span.done{background:#5e9474;box-shadow:0 0 0 3px #5e947426}.search-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.search-location{color:#587062;cursor:pointer;background:#faf6ed;border:1px solid #e8e2d5;border-radius:14px;min-height:61px;font-weight:800}.search-location span{margin-bottom:1px;font-size:21px;display:block}.search-location.found{background:#e7f1e5;border-color:#88ad91}.prop-row{justify-content:center;gap:8px;margin:8px 0 11px;display:flex}.prop-button{cursor:pointer;background:#faf6ed;border:1px solid #e8e2d5;border-radius:13px;flex:1;min-height:54px;font-size:20px}.prop-button.selected{background:#fff1d3;border:2px solid #d49d49;box-shadow:0 0 0 3px #d49d491e}.meter-wrap{padding:5px 3px 10px}.meter-track{background:linear-gradient(90deg,#f0b8a3,#e7d58b 66%,#8dbb8c);border:2px solid #fff;border-radius:99px;height:17px;position:relative;overflow:hidden;box-shadow:inset 0 1px 3px #43564028}.meter-needle{background:#fff;border-radius:4px;width:5px;height:23px;position:absolute;top:-4px;left:0;transform:translate(-50%);box-shadow:0 0 5px #2e3d32}.meter-labels{color:#999789;justify-content:space-between;margin-top:5px;font-size:9px;display:flex}.play-bottom{z-index:4;justify-content:space-between;align-items:center;margin-top:10px;display:flex;position:relative}.role-pill,.help-pill{color:#547061;border-radius:999px;padding:8px 12px;font-size:10px;font-weight:800}.role-pill{background:#e7efe4}.result-view{gap:4px}.result-symbol{color:#c99441;background:#f6e5be;border-radius:23px;place-items:center;width:66px;height:66px;margin-bottom:9px;font-size:33px;display:grid;box-shadow:0 9px 22px #bf934322}.result-message{color:#778178;max-width:320px;font-size:13px;line-height:1.65}.result-score,.final-score{flex-direction:column;align-items:center;width:100%;margin:12px 0 5px;padding:18px;display:flex}.result-score span,.final-score span{color:#829087;font-size:11px;font-weight:800}.result-score strong,.final-score strong{color:var(--green-dark);font-variant-numeric:tabular-nums;letter-spacing:-.04em;font-size:37px}.result-score small,.final-score small{color:#b58a4e;font-size:10px;font-weight:800}.result-view .primary-button,.final-view .primary-button{margin-top:16px}.final-view{justify-content:flex-start;padding-top:17px}.final-view h1{margin:0 0 4px}.final-view .result-message{margin-bottom:4px}.crown{width:52px;height:52px;margin-bottom:8px;font-size:28px}.final-score{margin:6px 0 8px;padding:10px}.final-score strong{font-size:30px}.final-leaderboard{width:100%;margin:0;padding:12px 14px}.final-leaderboard .section-heading{margin-bottom:6px}.final-leaderboard .leaderboard-row{min-height:30px}.final-view .primary-button{margin-top:10px}.final-view .text-button{margin-top:4px}.modal-backdrop{z-index:20;-webkit-backdrop-filter:blur(8px);background:#1f2d2766;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-backdrop.hidden{display:none}.modal-card{background:#fffcf6f7;border-radius:24px;width:min(100%,430px);max-height:min(84svh,760px);padding:24px 20px 20px;animation:.22s both rise;position:relative;overflow-y:auto}.modal-close{float:right;color:#6e7c72;border-radius:50%;width:34px;height:34px;margin:-10px -7px 4px 8px;font-size:21px;position:sticky;top:0}.modal-title{color:var(--green-dark);letter-spacing:-.04em;margin:0 0 5px;font-size:24px}.modal-subtitle{color:#8b948a;margin:0 0 13px;font-size:11px}.manual-section{border-top:1px solid #eee8dd;padding:10px 0}.manual-section h3{color:#426a58;margin:0 0 5px;font-size:13px}.manual-section p{color:#65746b;margin:0;font-size:11px;line-height:1.65}.modal-actions{grid-template-columns:1fr 1fr;gap:8px;margin-top:14px;display:grid}.secondary-button{color:#597263;cursor:pointer;background:#f7f3ea;border:1px solid #e2ddcf;border-radius:14px;min-height:46px;font-size:12px;font-weight:900}.danger-button{color:#b35f4d;background:#fff2eb;border-color:#f0d8cd}.modal-card .primary-button{margin-top:12px}.pause-heading{color:var(--green-dark);margin:0 0 6px;font-size:24px}.pause-copy{color:#7c887f;font-size:12px;line-height:1.6}.confetti-layer{z-index:31;pointer-events:none;position:fixed;inset:0;overflow:hidden}.confetti-piece{opacity:0;width:9px;height:15px;animation:confetti-fall var(--fall-duration,4s) linear var(--fall-delay,0s) forwards;position:absolute;top:-18px}.confetti-piece.round{border-radius:50%;width:10px;height:10px}.confetti-piece.strip{width:5px;height:23px}@keyframes confetti-fall{0%{opacity:0;transform:translateY(-4vh)rotate(0)}8%{opacity:1}to{opacity:.95;transform:translate3d(var(--drift,0), 110svh, 0) rotate(var(--spin,720deg))}}.toast{z-index:32;left:50%;bottom:max(23px, env(safe-area-inset-bottom));opacity:0;pointer-events:none;color:#fff9ec;white-space:nowrap;background:#284f41;border-radius:999px;padding:10px 16px;font-size:12px;font-weight:800;transition:opacity .2s,transform .2s;position:fixed;transform:translate(-50%,16px);box-shadow:0 7px 24px #263c3445}.toast.show{opacity:1;transform:translate(-50%)}@media (width>=700px){body{place-items:center;padding:22px 0;display:grid}.app-shell{background:#fff9ee57;border-radius:32px;min-height:min(920px,100svh - 44px);overflow:hidden;box-shadow:0 25px 90px #44382222}.home-view{padding-top:25px}.home-copy h1{font-size:39px}.character-stage{bottom:22px}}@media (height<=730px){.home-view{padding-top:10px}.home-copy h1{margin:6px 0;font-size:30px}.lede{margin-bottom:10px}.setup-card{padding:13px}.leaderboard{margin-top:9px;padding-top:11px}.character-stage{height:29svh}}@media (width<=420px){.app-shell{padding-left:14px;padding-right:14px}.top-actions{gap:4px}.brand{gap:7px;width:34px;overflow:hidden}.brand>span:last-child{display:none}.help-button{gap:3px;min-height:34px;padding:0 8px;font-size:9px}.help-button span:first-child{font-size:16px}.brand strong{font-size:13px}.sound-button{padding:0 8px;font-size:10px}.exit-button{min-height:32px;padding:0 8px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
