:root{--paper:#fff;--ink:#111;--muted:#7a817f;--teal:#347e76;--success:#20864f;--line:#e5e9e6;--viewport-height:100vh;--game-height:var(--viewport-height);--game-width:100%;--unit:1px;color-scheme:light}
@supports(height:100dvh){:root{--game-height:100dvh}}
*{box-sizing:border-box}[hidden]{display:none!important}
body{margin:0;background:#fff;color:var(--ink);font-family:"PingFang SC","Microsoft YaHei",sans-serif;-webkit-tap-highlight-color:transparent}
button{font:inherit;cursor:pointer;touch-action:manipulation}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--teal);outline-offset:3px}
h1,h2,p{margin:0}.game{position:relative;width:var(--game-width);height:var(--game-height);margin:auto;background:#fff;padding:max(4px,env(safe-area-inset-top)) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);display:flex;flex-direction:column;overflow:hidden}
.round-view{display:flex;flex-direction:column;flex:1;min-height:0}.topbar{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:calc(var(--unit)*10);min-height:calc(var(--unit)*44);padding:0 calc(var(--unit)*12);flex-shrink:0;white-space:nowrap;background:white}
.wordmark{display:flex;align-items:center;justify-self:start;min-height:calc(var(--unit)*44);font-size:calc(var(--unit)*22);font-weight:800;letter-spacing:-.9px;color:#000;text-decoration:none;background:none;border:0;padding:0}
.discovery{justify-self:center;min-width:0}.progress{display:flex;align-items:center;gap:calc(var(--unit)*4)}.progress-dot{width:calc(var(--unit)*24);height:calc(var(--unit)*24);border:1px solid #d5d5d5;border-radius:50%;color:#aaa;display:grid;place-items:center;font-size:calc(var(--unit)*14);flex-shrink:0}.progress-dot.found{background:#111;border-color:#111;color:white;animation:pop .2s ease-out}
.timer{display:flex;align-items:center;justify-self:end;gap:calc(var(--unit)*4);font-family:ui-monospace,"SFMono-Regular",monospace;font-size:calc(var(--unit)*14);font-weight:700;color:#555;font-variant-numeric:tabular-nums}.timer svg{width:calc(var(--unit)*15);height:calc(var(--unit)*15);fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.timer.urgent{color:#c74b40;animation:timer-pulse 1s ease-in-out infinite}
.playfield{display:grid;grid-template-columns:repeat(2,var(--scene-width,minmax(0,1fr)));grid-template-rows:var(--scene-height,minmax(0,1fr));align-content:center;justify-content:center;min-width:0;min-height:0;flex:1;gap:1px;background:#fff}.playfield.stacked{grid-template-columns:var(--scene-width,minmax(0,1fr));grid-template-rows:repeat(2,var(--scene-height,minmax(0,1fr)))}
.photo-stage{position:relative;overflow:hidden;background:#f1f4f1;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:crosshair;min-width:0;min-height:0}.image-layer{position:absolute}.image-layer>.scene{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.image-layer img{pointer-events:none;user-select:none;-webkit-user-drag:none}
.photo-status{position:absolute;inset:0;display:grid;place-items:center;padding:12px;text-align:center;font-size:12px;color:#65746a;pointer-events:none;background:#f1f4f1;z-index:10}.photo-stage.load-error{cursor:pointer}.complete .photo-stage{cursor:default}
.marker{position:absolute;border:2px solid var(--teal);border-radius:50%;box-shadow:0 0 0 1px #fffb;pointer-events:none;transform:translate(-50%,-50%);background:#ffffff05;z-index:5}.marker b{position:absolute;top:-5px;right:-4px;font-size:9px;color:white;background:var(--teal);width:14px;height:14px;display:grid;place-items:center;border-radius:50%;box-shadow:0 0 0 1px white}.marker.hint{border:3px solid #e4ac2a;background:#fff5b336;animation:hint-pulse .6s ease-in-out infinite;z-index:6}.marker.hint b{display:none}
.tap-feedback{position:absolute;z-index:8;pointer-events:none;font-size:19px;font-weight:750;text-shadow:0 1px 3px white,0 -1px 3px white;transform:translate(-50%,-50%);animation:score-rise .7s ease-out forwards}.score-pop{color:var(--teal)}.penalty-pop{color:#c83636;font-size:15px}.mistake .photo-stage::before{content:"";position:absolute;inset:0;z-index:7;background:#e53838;pointer-events:none;animation:red-flash .45s ease-out forwards}.input-locked .photo-stage{cursor:wait}
.round-tools{flex-shrink:0;background:white;padding:5px 10px 7px}.tool-buttons{display:grid;grid-template-columns:1.1fr 1.15fr 1fr .85fr;gap:5px}.tool-buttons>button,.tool-buttons>.language-picker>.language-button{background:transparent;border:0;border-radius:0;color:#555;min-height:36px;font-size:11px;white-space:nowrap;padding:4px}.hint-button b{font:inherit}
.home{overflow-y:auto;flex:1;min-height:0;overscroll-behavior:contain}.home-top{display:flex;align-items:center;justify-content:space-between;padding:0 18px}.quiet-button{border:0;background:transparent;color:#777;padding:10px 0;font-size:11px}.home-intro{padding:18px 20px 0}.eyebrow{font-size:9px;letter-spacing:2px;color:var(--teal)}.home-intro h1{font-size:32px;line-height:1.3;letter-spacing:2px;margin:7px 0}.home-intro>p:last-child{font-size:12px;color:#7b837e}.journey-preview{position:relative;height:190px;margin:14px 18px 16px;background:#edf3ec;overflow:hidden;border-radius:9px}.journey-preview .scene{position:absolute;width:100%;height:100%}.preview-background{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.preview-character{position:absolute;top:5%;height:93%;width:55%;left:43%;object-fit:contain}.preview-city{position:absolute;left:16px;bottom:15px;color:white;text-shadow:0 1px 8px #203e36;font-size:22px;font-weight:700}.preview-city small{display:block;font-size:10px;font-weight:400;margin-bottom:4px;letter-spacing:1px}.home-content{padding:0 18px 22px}.button-primary,.button-secondary{min-height:46px;padding:11px 16px;border-radius:9px;font-size:14px;font-weight:600;line-height:1.4}.button-primary{background:#111;color:white;border:1px solid #111}.button-secondary{background:white;color:#444;border:1px solid #ddd}.continue-button{width:100%}.home-status{margin-top:9px;line-height:1.6;text-align:center;color:#7c8580;font-size:10px}.journey-heading{display:flex;justify-content:space-between;align-items:center;margin-top:24px}.journey-heading h2{font-size:15px;font-weight:650}.journey-heading>span{font-size:12px;color:var(--teal);font-variant-numeric:tabular-nums}.journey-progress{height:3px;margin:10px 0 15px;background:#edf0ed;border-radius:2px;overflow:hidden}.journey-progress i{display:block;height:100%;background:var(--teal);width:0}.level-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.level-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:79px;padding:9px 2px;background:white;border:1px solid #e0e6e0;border-radius:9px}.level-card .level-number{font:700 17px/1 ui-monospace,monospace;color:#2d493f}.level-card .level-city{font-size:9px;color:#65776e}.level-card .level-stars{font-size:10px;letter-spacing:1px;color:var(--teal);height:13px;white-space:nowrap}.level-card.current{border-color:var(--teal);background:#eef5f0}.level-card:disabled{opacity:1;background:#f7f8f6;border-color:#f0f2ee}.level-card:disabled .level-number,.level-card:disabled .level-city{color:#b2b9b3}.level-card:disabled .level-stars{color:#b8bfb9}.level-card.skipped .level-stars{letter-spacing:0;color:#a2885d}.rules-help{font-size:11px;color:#718077;margin-top:22px;border-top:1px solid var(--line);padding-top:14px}.rules-help summary{cursor:pointer;color:#43574c}.rules-help p{margin-top:10px;line-height:1.9}.save-note{text-align:center;font-size:9px;color:#9da69f;margin-top:16px;line-height:1.7}.toast{position:absolute;bottom:93px;left:50%;transform:translateX(-50%);padding:9px 15px;max-width:90%;width:max-content;background:#17271ee8;color:white;border-radius:20px;font-size:11px;pointer-events:none;z-index:15}
.result{position:fixed;inset:0;z-index:20;display:grid;place-items:center;overflow:auto;background:#fffffff5;padding:max(20px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.result-card{width:min(100%,340px);text-align:center;color:#111;padding:16px 0}.result-brand{display:block;font-size:22px;font-weight:800;letter-spacing:-.9px;margin-bottom:27px}.result-location{font-size:11px;color:#8a938e;margin-bottom:12px}.result-heading{display:flex;align-items:center;justify-content:center;gap:14px;margin-bottom:14px}.result-symbol{display:grid;place-items:center;width:56px;height:56px;flex-shrink:0;border:1px solid;border-radius:50%;font-size:28px}.result[data-outcome=won] .result-symbol{color:#20864f;background:#e8f6ed;border-color:#bce2ca}.result[data-outcome=won] .result-symbol::before{content:'✓'}.result[data-outcome=lost] .result-symbol{color:#ad7019;background:#fff4df;border-color:#efd5a9}.result[data-outcome=lost] .result-symbol::before{content:'!';font-weight:700}.result h1{font-size:29px;line-height:1.2;letter-spacing:-1px;font-weight:700;outline:none}.result-stars{color:#c9a14e;font-size:30px;letter-spacing:8px;margin:10px 0 26px;line-height:1.2}.result-stats{display:grid;grid-template-columns:max-content max-content;align-items:center;justify-content:center;gap:18px 12px;margin:0 0 18px}.result #result-summary,.result-score{display:contents}.result-stats span{text-align:right;justify-self:end;font-size:12px;color:#777}.result-stats strong{text-align:left;justify-self:start;font-variant-numeric:tabular-nums;font-size:32px;line-height:1;font-weight:700}.reward-details{font-size:10px;line-height:1.9;color:#7b857e;border-top:1px solid #eef0ec;padding-top:10px;margin-bottom:12px}.reward-details div{display:flex;justify-content:space-between;gap:12px}.result-note{font-size:11px;line-height:1.8;color:var(--teal);margin:10px 0 20px}.result-actions{display:grid;gap:8px}.result-actions button{width:100%;min-height:45px;font-size:13px}.result-actions #result-home{background:transparent;border-color:transparent;color:#889189;font-weight:400}
@media(max-width:359px){.topbar{gap:6px;padding:0 9px}.progress{gap:2px}.progress-dot{width:22px;height:22px;font-size:12px}.wordmark{font-size:21px}.timer{font-size:13px;gap:3px}.home-intro h1{font-size:28px}.home-content{padding:0 13px 20px}.level-grid{gap:5px}.tool-buttons>button,.tool-buttons>.language-picker>.language-button{font-size:10px}}
@media(min-width:600px){:root{--game-height:min(var(--viewport-height),calc(100vw * 844 / 390));--game-width:calc(var(--game-height) * 390 / 844);--unit:calc(var(--game-width) / 390)}body{min-height:var(--viewport-height);display:grid;place-items:center}.game{margin:0;padding:calc(var(--unit)*4) 0 0}.result{width:var(--game-width);height:var(--game-height);margin:auto;place-items:safe center;padding:clamp(12px,calc(var(--unit)*24),24px)}.home-intro h1{font-size:clamp(22px,calc(var(--unit)*32),36px)}.level-grid{gap:5px}.level-card .level-city{font-size:clamp(7px,calc(var(--unit)*9),10px)}.tool-buttons>button,.tool-buttons>.language-picker>.language-button{font-size:clamp(8px,calc(var(--unit)*11),12px)}.round-tools{padding:4px max(4px,calc(var(--unit)*10)) 6px}}
@media(max-height:620px){.result-brand{margin-bottom:10px}.result-card{padding:0}.result-location{margin-bottom:8px}.result-symbol{width:40px;height:40px;font-size:22px}.result-heading{margin-bottom:8px}.result h1{font-size:24px}.result-stars{font-size:24px;margin:8px 0 14px}.result-stats{row-gap:10px;margin-bottom:12px}.result-stats strong{font-size:28px}.result-note{margin:6px 0 12px}.result-actions button{min-height:39px;padding:8px}.result-actions{gap:6px}.reward-details{font-size:9px;line-height:1.6}.journey-preview{height:150px}}
.home-settings{display:flex;align-items:center;gap:16px}.sound-toggle{display:inline-grid;place-items:center;min-width:36px}.home-settings .sound-toggle{min-height:44px;padding:6px}.sound-toggle svg{display:block;width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.sound-toggle .sound-muted{display:none}.sound-toggle[aria-pressed=true] .sound-waves{display:none}.sound-toggle[aria-pressed=true] .sound-muted{display:block}.language-button{min-width:32px;min-height:32px;font-weight:600;color:#3b5146}.result-top{position:relative}.result-top .language-button{position:absolute;right:0;top:-4px}.level-card .level-city{max-width:100%;min-height:22px;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.2;overflow-wrap:anywhere}.level-card .level-stars{letter-spacing:0}.home-intro h1:lang(en){letter-spacing:0}.result-stats:lang(en){grid-template-columns:minmax(0,max-content) max-content}.result-stats span:lang(en){max-width:130px}.home-intro>p:last-child:lang(en){line-height:1.6}
.language-picker{position:relative;display:inline-flex;flex-shrink:0}.language-button{display:inline-grid;place-items:center;color:#777;padding:6px;min-width:36px;min-height:44px}.language-button svg{display:block;width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.language-button[aria-expanded=true]{color:var(--ink)}.language-menu{position:absolute;right:0;top:calc(100% + 4px);z-index:30;display:grid;min-width:142px;padding:5px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 6px 22px #17342820;text-align:left}.language-menu button{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:42px;width:100%;padding:9px 12px;background:transparent;border:0;border-radius:6px;color:#555;font-size:13px;line-height:1.4;white-space:nowrap}.language-menu button::after{content:'✓';visibility:hidden;font-size:14px}.language-menu button[aria-checked=true]{background:#f1f5f1;color:#111;font-weight:600}.language-menu button[aria-checked=true]::after{visibility:visible}.language-menu button:hover{background:#f1f5f1}.tool-buttons>.language-picker .language-menu{top:auto;bottom:calc(100% + 6px)}.tool-buttons>.language-picker{min-width:0;display:flex}.tool-buttons>.language-picker>.language-button{width:100%;height:100%;min-height:36px}.result-top .language-picker{position:absolute;right:0;top:-4px}.result-top .language-button{position:static}.result-top .language-menu{top:100%}
.tool-buttons{--toolbar-icon-size:clamp(22px,calc(var(--unit)*28),28px);--toolbar-count-size:clamp(12px,calc(var(--unit)*16),16px);grid-template-columns:repeat(5,minmax(0,1fr))}.tool-buttons>button,.tool-buttons>.language-picker>.language-button{display:flex;align-items:center;justify-content:center;gap:7px}.tool-buttons svg{display:block;width:var(--toolbar-icon-size);height:var(--toolbar-icon-size);fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.tool-buttons .hint-button{position:relative}.tool-buttons .hint-button b{position:absolute;left:calc(50% + var(--toolbar-icon-size)/2 + 3px);top:50%;transform:translateY(-50%);font-size:var(--toolbar-count-size);font-weight:600;line-height:1;margin:0;padding:0}.layout-rows{display:none}#layout-button[data-layout=stacked] .layout-columns{display:none}#layout-button[data-layout=stacked] .layout-rows{display:block}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.mistake .photo-stage::before{opacity:.13}.tap-feedback{opacity:1}.marker.hint{box-shadow:0 0 0 5px #e4ac2a55}}
@keyframes pop{50%{transform:scale(1.22)}}@keyframes score-rise{0%{opacity:1;transform:translate(-50%,-20%) scale(.85)}25%{opacity:1;transform:translate(-50%,-70%) scale(1.1)}100%{opacity:0;transform:translate(-50%,-150%) scale(1)}}@keyframes red-flash{0%{opacity:.2}100%{opacity:0}}@keyframes hint-pulse{50%{box-shadow:0 0 0 6px #facc1560}}@keyframes timer-pulse{50%{opacity:.55}}
