@font-face{font-family:TailoHan;src:url(https://cdn.jsdelivr.net/gh/max32002/pop-gothic@2.143/webfont/CJK%20TC/PopGothicCjkTc-Regular.woff2) format("woff2");font-style:normal;font-weight:400;font-display:block}@font-face{font-family:TailoHanWide;src:url(https://cdn.jsdelivr.net/gh/max32002/naikaifont@1.89/webfont/NaikaiFont-Regular.woff2) format("woff2");font-style:normal;font-weight:400;font-display:block}*{box-sizing:border-box}:root{font-family:Noto Sans TC,sans-serif;color:#172033;background:#fff8e8;color-scheme:only light;font-synthesis:none}html,body,#root{width:100%;height:100%;min-width:320px;min-height:0;margin:0;overflow:hidden;overscroll-behavior:none}body{position:fixed;inset:0;background:#fff8e8;touch-action:manipulation}button{font:inherit;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:3px solid #172033;outline-offset:3px}.game-shell{width:100%;height:100dvh;min-height:0;max-height:100dvh;margin:0 auto;overflow:hidden;padding:max(10px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));background:radial-gradient(circle at 18% 8%,rgba(47,165,111,.13),transparent 30%),radial-gradient(circle at 90% 20%,rgba(240,139,50,.12),transparent 28%),#fff8e8}.intro{position:relative;display:grid;place-items:center;padding-top:max(42px,env(safe-area-inset-top));padding-bottom:max(42px,env(safe-area-inset-bottom))}.intro-panel{width:min(100%,520px);height:min(78dvh,680px);min-height:500px;padding:clamp(18px,4vh,34px) 18px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.police-tape{position:absolute;left:-5vw;width:110vw;height:30px;display:flex;align-items:center;justify-content:space-around;gap:20px;overflow:hidden;background:repeating-linear-gradient(135deg,#ffd638 0 18px,#172033 18px 36px);color:#fff;font-size:.58rem;font-weight:950;letter-spacing:.12em;text-shadow:0 1px 0 rgba(0,0,0,.35);transform:rotate(-1.5deg);box-shadow:0 3px #1720331f}.police-tape span{padding:2px 8px;background:#172033;white-space:nowrap}.tape-top{top:max(12px,env(safe-area-inset-top))}.tape-bottom{bottom:max(12px,env(safe-area-inset-bottom));transform:rotate(1.5deg)}.intro-badge{position:relative;width:clamp(92px,24vw,126px);aspect-ratio:1;margin-bottom:clamp(12px,2vh,20px);display:grid;place-items:center;border:5px solid #172033;border-radius:30px;background:#fff;box-shadow:8px 8px #172033;transform:rotate(-4deg);overflow:hidden}.intro-badge b{position:relative;z-index:2;display:grid;place-items:center;width:56%;aspect-ratio:1;border:4px solid #172033;border-radius:50%;background:#ffd638;font-family:TailoHan,TailoHanWide;font-size:clamp(2.1rem,8vw,3.1rem);font-weight:400}.badge-green,.badge-orange{position:absolute;top:0;bottom:0;width:50%}.intro-kicker{margin-bottom:6px;color:#68758d;font-size:.66rem;font-weight:950;letter-spacing:.2em}.intro h1{margin:0;display:flex;align-items:baseline;justify-content:center;gap:.08em;color:#172033;font-size:clamp(3.5rem,16vw,6.3rem);line-height:.95;letter-spacing:-.085em}.intro h1 span:first-child{color:#208b61}.intro h1 span:last-child{color:#df7624}.intro-copy{margin:clamp(12px,2vh,18px) 0 0;color:#667085;font-size:clamp(.85rem,3.7vw,1rem);font-weight:750}.rule-strip{width:min(100%,420px);margin:clamp(18px,3vh,28px) 0 clamp(18px,3vh,28px);display:grid;grid-template-columns:repeat(3,1fr);border:3px solid #172033;border-radius:18px;background:#fff;box-shadow:5px 5px #172033;overflow:hidden}.rule-strip div{min-height:70px;padding:9px 6px;display:grid;place-items:center;align-content:center}.rule-strip div+div{border-left:2px solid #172033}.rule-strip b{color:#172033;font-size:clamp(1.25rem,5vw,1.7rem);line-height:1}.rule-strip span{margin-top:5px;color:#788399;font-size:clamp(.58rem,2.6vw,.72rem);font-weight:800;white-space:nowrap}.start-button{width:min(100%,420px);min-height:62px;padding:0 18px 0 22px;display:flex;align-items:center;justify-content:space-between;border:3px solid #172033;border-radius:18px;background:#ffd638;color:#172033;font-size:1.05rem;font-weight:950;cursor:pointer;box-shadow:6px 6px #172033;transition:transform .08s ease,box-shadow .08s ease}.start-button b{font-size:1.55rem;line-height:1}.start-button:active{transform:translate(4px,4px);box-shadow:2px 2px #172033}.best-record,.result-best{margin-top:15px;color:#8b94a5;font-size:.68rem;font-weight:900;letter-spacing:.08em}.play{display:flex;flex-direction:column;gap:8px;color:#172033}.game-hud{flex:0 0 auto;height:48px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;padding:0 4px}.timer,.score-box{display:flex;flex-direction:column}.score-box{align-items:flex-end}.timer span,.score-box span{color:#8791a3;font-size:.52rem;font-weight:950;letter-spacing:.14em}.timer strong,.score-box strong{margin-top:1px;color:#172033;font-size:clamp(1rem,4.8vw,1.22rem);font-weight:950;font-variant-numeric:tabular-nums}.timer.danger strong{color:#df7624;animation:dangerPulse .65s ease-in-out infinite alternate}.hud-title{text-align:center}.hud-title span{display:block;color:#172033;font-size:.9rem;font-weight:950}.hud-title small{display:block;margin-top:1px;color:#929bad;font-size:.5rem;font-weight:900;letter-spacing:.1em}.status-bar{flex:0 0 auto;min-height:42px;padding:8px 11px;display:flex;justify-content:space-between;align-items:center;border:2px solid #172033;border-radius:13px;background:#fff;box-shadow:3px 3px #172033}.reputation{display:flex;align-items:center;gap:8px}.reputation-copy{display:grid;line-height:1.05}.reputation-copy>span{color:#677388;font-size:.64rem;font-weight:900}.reputation-copy small{margin-top:2px;color:#9aa3b1;font-size:.46rem;font-weight:850}.rep-dots{display:flex;gap:5px}.rep-dots i{width:12px;height:12px;border:2px solid #b5bdca;border-radius:50%;background:#fff}.rep-dots i.alive{border-color:#e1ad00;background:#ffd638}.reputation-boost{flex:0 0 auto;align-self:center;margin-top:-2px;padding:5px 10px;border:2px solid #172033;border-radius:999px;background:#2fa56f;color:#fff;font-size:.66rem;font-weight:950;box-shadow:2px 2px #172033;animation:reputationBoost 1.1s ease both}.combo{color:#7e899b;font-size:.62rem;font-weight:900}.combo b{margin-left:3px;color:#172033;font-size:.9rem}.combo.hot b{color:#df7624}.checkpoint-scene{position:relative;flex:0 0 112px;min-height:112px;overflow:hidden;border:3px solid #172033;border-radius:16px;background:linear-gradient(to bottom,#cfe8d7 0 24%,#666d78 24% 78%,#4c535d 78% 100%);box-shadow:4px 4px #172033}.escape-route{position:absolute;z-index:1;left:0;right:0;top:34px;height:24px;border-top:2px dashed rgba(255,255,255,.7);border-bottom:2px dashed rgba(255,255,255,.7);opacity:0}.traffic-alerting .escape-route{opacity:1;animation:escapeRouteFlash .25s linear 5 alternate}.road-shoulder{position:absolute;left:0;right:0;top:20px;height:8px;background:#d8c89e;border-bottom:2px solid #172033}.road-markings{position:absolute;left:39%;right:0;bottom:20px;height:3px;background:repeating-linear-gradient(90deg,transparent 0 16px,rgba(255,255,255,.76) 16px 32px,transparent 32px 48px)}.watch-board{position:absolute;z-index:8;top:5px;right:6px;min-width:104px;padding:4px 8px 5px;border:2px solid #172033;border-radius:8px;background:#ffd638;box-shadow:2px 2px #172033;line-height:1.05}.watch-board span{display:block;font-size:.46rem;font-weight:950;letter-spacing:.1em}.watch-board strong{display:block;margin-top:2px;font-size:.72rem;font-weight:950}.roadside-cop{position:absolute;z-index:7;left:20%;bottom:9px;width:34px;height:58px}.cop-head{position:absolute;left:9px;top:7px;width:16px;height:16px;border:2px solid #172033;border-radius:50%;background:#e9c7a6}.cop-cap{position:absolute;z-index:2;left:6px;top:2px;width:22px;height:9px;border:2px solid #172033;border-radius:8px 8px 2px 2px;background:#172033}.cop-cap:after{content:"";position:absolute;left:12px;top:5px;width:11px;height:3px;border-radius:3px;background:#ffd638}.cop-body{position:absolute;left:6px;top:23px;width:22px;height:28px;border:2px solid #172033;border-radius:5px 5px 3px 3px;background:linear-gradient(to bottom,#2fa56f 0 45%,#172033 45% 100%)}.cop-body:before,.cop-body:after{content:"";position:absolute;bottom:-11px;width:6px;height:14px;border:2px solid #172033;border-top:0;background:#172033}.cop-body:before{left:1px}.cop-body:after{right:1px}.cop-arm{position:absolute;z-index:1;left:25px;top:27px;width:24px;height:6px;border:2px solid #172033;border-radius:6px;background:#e9c7a6;transform:rotate(-18deg);transform-origin:left center}.roadside-cop b{position:absolute;z-index:4;left:43px;top:17px;width:23px;height:23px;display:grid;place-items:center;border:2px solid #172033;border-radius:50%;background:#f08b32;color:#fff;font-family:TailoHan,TailoHanWide;font-size:.62rem;font-weight:400;box-shadow:1px 2px #172033}.traffic-cone{position:absolute;z-index:5;bottom:7px;width:0;height:0;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:25px solid #f08b32;filter:drop-shadow(1px 1px 0 #172033)}.traffic-cone:after{content:"";position:absolute;left:-9px;top:22px;width:18px;height:4px;background:#172033}.cone-one{left:34%}.cone-two{left:39%;transform:scale(.82);transform-origin:bottom center}.checkpoint-car{--car-color: #d6d9df;position:absolute;z-index:3;bottom:13px;width:46px;height:19px;border:2px solid #172033;border-radius:8px 11px 5px 5px;background:var(--car-color);box-shadow:1px 2px #17203359}.checkpoint-car:before{content:"";position:absolute;left:10px;top:-10px;width:24px;height:11px;border:2px solid #172033;border-bottom:0;border-radius:7px 7px 0 0;background:linear-gradient(90deg,#d9f1e6 0 46%,#172033 46% 53%,#d9f1e6 53%)}.checkpoint-car i{position:absolute;bottom:-6px;width:9px;height:9px;border:2px solid #172033;border-radius:50%;background:#343943}.checkpoint-car i:first-child{left:7px}.checkpoint-car i:last-child{right:7px}.checkpoint-car.car-0{--car-color: #f5d978}.checkpoint-car.car-1{--car-color: #a9d8c2}.checkpoint-car.car-2{--car-color: #d9d6cf}.current-car{left:44%;z-index:5;transform:translate(-50%);animation:carArrive .2s cubic-bezier(.2,.8,.3,1) both}.queued-car{opacity:0;transform:scale(.82);transform-origin:center bottom;transition:opacity .16s ease,left .18s ease,transform .16s ease}.queued-car.visible{opacity:.92}.queued-car.q0{left:56%;z-index:4;transform:scale(.88)}.queued-car.q1{left:64%;z-index:3;transform:scale(.85)}.queued-car.q2{left:72%;z-index:3;transform:scale(.82)}.queued-car.q3{left:80%;z-index:2;transform:scale(.79)}.queued-car.q4{left:88%;z-index:2;transform:scale(.76)}.queued-car.q5{left:96%;z-index:1;transform:scale(.73)}.queue-5 .queued-car,.queue-6 .queued-car{filter:saturate(1.12)}.queue-full-warning{position:absolute;z-index:13;left:50%;top:34px;transform:translate(-50%);min-width:174px;padding:5px 10px 6px;border:3px solid #172033;border-radius:10px;background:#ffd638;color:#172033;text-align:center;box-shadow:3px 3px #172033;animation:fullQueuePulse .55s ease-in-out infinite alternate}.queue-full-warning b{display:block;font-size:.82rem;font-weight:950;letter-spacing:.04em}.queue-full-warning span{display:block;margin-top:1px;font-size:.58rem;font-weight:900}.escape-car{z-index:11;top:39px;bottom:auto;left:108%;--car-color: #f08b32;transform:scale(1.08);filter:drop-shadow(0 0 3px rgba(255,214,56,.9));animation:escapeCar 1.05s cubic-bezier(.15,.75,.25,1) both}.escape-car:after{content:"未檢";position:absolute;left:11px;top:-26px;padding:2px 5px;border:2px solid #172033;border-radius:5px;background:#ffd638;color:#172033;font-size:.48rem;font-weight:950;white-space:nowrap}.traffic-alert{position:absolute;z-index:15;left:50%;bottom:5px;width:min(92%,330px);transform:translate(-50%);padding:7px 10px 8px;border:3px solid #172033;border-radius:10px;background:#f08b32;color:#fff;text-align:center;box-shadow:4px 4px #172033;animation:trafficAlert 1.35s ease both}.traffic-alert strong{display:block;color:#ffd638;font-size:1rem;font-weight:950;letter-spacing:.08em}.traffic-alert span{display:block;margin-top:1px;font-size:.65rem;font-weight:900}.traffic-alert b{display:block;margin-top:2px;font-size:.68rem;font-weight:950}.traffic-alerting .checkpoint-scene{animation:checkpointDangerFlash .18s linear 5 alternate}.traffic-alerting .status-bar{animation:reputationHit .24s ease 3}.flash-pass .current-car{animation:carPass .7s cubic-bezier(.3,.7,.3,1) both}.flash-ticket .current-car{animation:carPullOver .55s ease both}.flash-wrong .current-car{animation:carWrong .16s linear 2}.case-board{position:relative;flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden;border:3px solid #172033;border-radius:22px;background:#fff;box-shadow:5px 5px #172033;animation:boardIn .16s ease both}.case-number{flex:0 0 auto;padding:12px 14px 0;color:#8c95a6;font-size:.58rem;font-weight:950;letter-spacing:.12em}.word-zone{flex:1 1 auto;min-height:0;display:grid;place-items:center;padding:8px 14px 2px;background:radial-gradient(circle at center,rgba(255,214,56,.2),transparent 45%)}.hanji{font-family:TailoHan,TailoHanWide;text-align:center;color:#172033;font-size:clamp(4rem,19vw,7.4rem);font-weight:400;line-height:.95;letter-spacing:.01em}.tailo-zone{flex:0 0 auto;min-height:82px;padding:6px 12px 8px;display:flex;align-items:center;justify-content:center;gap:7px;flex-wrap:wrap;border-top:2px solid #eef0f3;background:#fffdf6}.tailo-syllable{position:relative;padding:5px 2px;border:0;background:transparent;color:#172033;font-size:clamp(1.55rem,7vw,2.45rem);font-weight:950;line-height:1.1}.tailo-syllable+.tailo-syllable:before{content:"-";position:absolute;left:-7px;color:#a6aebb;font-weight:500}.tailo-syllable.pickable{padding:8px 10px;border:2px solid #172033;border-radius:12px;background:#ffd638;color:#172033;cursor:pointer;box-shadow:3px 3px #172033;animation:pickPulse .7s ease-in-out infinite alternate}.tailo-syllable.pickable+.tailo-syllable:before{left:-8px}.phase-copy{flex:0 0 auto;min-height:34px;display:grid;place-items:center;padding:4px 12px 8px;color:#7d8798;font-size:.72rem;font-weight:850}.phase-copy.locate{color:#c57b00}.decision-dock{flex:0 0 auto;height:clamp(92px,14dvh,116px);display:grid;grid-template-columns:1fr 1fr;border-top:3px solid #172033}.game-action{min-height:0;display:flex;justify-content:center;align-items:center;gap:9px;border:0;cursor:pointer;font-size:clamp(1.1rem,5vw,1.35rem);font-weight:950}.game-action+.game-action{border-left:3px solid #172033}.game-action.pass{background:#2fa56f;color:#fff}.game-action.ticket{background:#f08b32;color:#fff}.game-action:active{filter:brightness(.92)}.action-symbol{width:38px;height:38px;display:grid;place-items:center;border:3px solid currentColor;border-radius:12px}.cancel-ticket{flex:0 0 auto;width:calc(100% - 24px);margin:0 12px 12px;min-height:50px;border:2px solid #172033;border-radius:14px;background:#fff;color:#172033;font-weight:900;cursor:pointer;box-shadow:3px 3px #172033}.stamp-layer{position:absolute;inset:0;z-index:5;display:grid;place-items:center;align-content:center;gap:11px;pointer-events:none;animation:flashIn .1s ease both}.stamp-layer.pass{background:#2fa56ff0;color:#fff}.stamp-layer.ticket{background:#f08b32f0;color:#fff}.stamp-layer.wrong{background:#172033ed;color:#ffd638}.stamp{padding:8px 17px 10px;border:6px solid currentColor;border-radius:10px;font-size:clamp(2.5rem,14vw,4.8rem);font-weight:950;letter-spacing:.07em;transform:rotate(-7deg) scale(1.04);animation:stampSlam .16s cubic-bezier(.2,.9,.3,1.25) both}.official-answer{color:#fff;font-size:clamp(1.1rem,5vw,1.4rem);font-weight:950}.wanted-pop{padding:5px 9px;border:2px solid currentColor;border-radius:999px;color:#ffd638;font-size:.72rem;font-weight:950;letter-spacing:.04em}.score-pop{color:#ffd638;font-size:1rem;font-weight:950}.results{display:grid;place-items:center}.result-panel{width:min(100%,520px);max-height:100%;padding:16px 14px;text-align:center}.result-reason{width:fit-content;margin:0 auto 12px;padding:7px 12px;border:2px solid #172033;border-radius:999px;background:#fff;color:#172033;font-size:.65rem;font-weight:950;letter-spacing:.08em}.result-reason.suspended{background:#f08b32;color:#fff}.result-rank{color:#172033;font-size:clamp(2rem,9vw,3.4rem);font-weight:950;letter-spacing:-.06em}.result-score{margin-top:4px;color:#208b61;font-size:clamp(3.8rem,17vw,6.5rem);font-weight:950;line-height:1}.result-mission{width:fit-content;margin:12px auto 0;padding:7px 10px;border:2px solid #172033;border-radius:999px;background:#ffd638;font-size:.66rem;font-weight:850}.result-mission b{margin:0 4px;font-weight:950}.result-mission span{color:#6e5a00}.report-grid{margin:14px 0 18px;display:grid;grid-template-columns:repeat(2,1fr);border:3px solid #172033;border-radius:16px;overflow:hidden;background:#fff;box-shadow:4px 4px #172033}.report-grid div{min-height:68px;padding:10px;display:grid;place-items:center;align-content:center;border-bottom:2px solid #172033}.report-grid div:nth-child(odd){border-right:2px solid #172033}.report-grid div:nth-last-child(-n+2){border-bottom:0}.report-grid span{color:#7a8497;font-size:.6rem;font-weight:850}.report-grid strong{margin-top:3px;color:#172033;font-size:1.15rem;font-weight:950}@keyframes carArrive{0%{opacity:0;left:60%}to{opacity:1;left:44%}}@keyframes carPass{0%{left:44%;transform:translate(-50%)}to{left:-18%;transform:translate(-50%)}}@keyframes carPullOver{0%{left:44%;bottom:13px;transform:translate(-50%)}to{left:28%;bottom:5px;transform:translate(-50%) rotate(-5deg)}}@keyframes escapeCar{0%{opacity:0;left:108%;transform:scale(1.02) rotate(0)}12%{opacity:1}45%{left:52%;transform:scale(1.1) rotate(-2deg)}72%{left:27%;transform:scale(1.12) rotate(3deg)}to{opacity:1;left:-20%;transform:scale(1.08) rotate(0)}}@keyframes trafficAlert{0%{opacity:0;transform:translate(-50%) translateY(10px) scale(.9)}14%,76%{opacity:1;transform:translate(-50%) translateY(0) scale(1)}to{opacity:0;transform:translate(-50%) translateY(-4px) scale(.98)}}@keyframes fullQueuePulse{0%{transform:translate(-50%) scale(.98)}to{transform:translate(-50%) scale(1.04)}}@keyframes escapeRouteFlash{0%{border-color:#ffffff59}to{border-color:#ffd638}}@keyframes checkpointDangerFlash{0%{box-shadow:4px 4px #172033}to{box-shadow:4px 4px #172033,inset 0 0 0 6px #f08b32d9}}@keyframes reputationHit{0%,to{transform:translate(0)}33%{transform:translate(-5px)}66%{transform:translate(5px)}}@keyframes reputationBoost{0%{opacity:0;transform:translateY(-6px) scale(.92)}18%,72%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-4px) scale(.98)}}@keyframes carWrong{0%,to{transform:translate(-50%)}50%{transform:translate(calc(-50% + 6px))}}@keyframes jamPulse{0%{transform:rotate(-1deg) scale(1)}to{transform:rotate(1deg) scale(1.04)}}@keyframes boardIn{0%{opacity:0;transform:translateY(6px) scale(.995)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes flashIn{0%{opacity:0}to{opacity:1}}@keyframes stampSlam{0%{opacity:0;transform:rotate(-7deg) scale(1.55)}to{opacity:1;transform:rotate(-7deg) scale(1.04)}}@keyframes pickPulse{0%{transform:translateY(0)}to{transform:translateY(-3px)}}@keyframes dangerPulse{0%{opacity:.68}to{opacity:1}}@media(min-width:700px){.game-shell{max-width:620px}}@media(max-height:700px){.intro-panel{height:86dvh;min-height:0;padding-top:8px;padding-bottom:8px}.intro-badge{width:82px;margin-bottom:9px}.intro h1{font-size:clamp(3rem,13vh,4.5rem)}.rule-strip{margin-top:14px;margin-bottom:14px}.rule-strip div{min-height:58px}.start-button{min-height:54px}.checkpoint-scene{flex-basis:96px;min-height:96px}.roadside-cop{transform:scale(.86);transform-origin:left bottom}.queued-car.q4,.queued-car.q5{opacity:.8}.watch-board{transform:scale(.9);transform-origin:top left}.checkpoint-car{bottom:8px}.decision-dock{height:84px}.tailo-zone{min-height:70px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.intro-meta{margin-top:12px;color:#7a8494;font-size:.66rem;font-weight:850}.sound-toggle{border:2px solid #172033;background:#fffdf6;color:#172033;font-weight:900;cursor:pointer}.intro-sound{margin-top:9px;min-height:34px;padding:4px 11px;border-radius:999px;font-size:.68rem}.status-right{display:flex;align-items:center;gap:8px}.hud-sound{width:29px;height:29px;padding:0;display:grid;place-items:center;border-radius:9px;font-size:.78rem;line-height:1}.badge-green{left:0;background:#2fa56f}.badge-orange{right:0;background:#f08b32}
