:root{--paper:#fbf6ec;--paper-2:#f3ecdd;--ink:#1f2430;--ink-2:#5b606b;--line:#e2d8c5;--red:#e5484d;--red-ink:#b8323a;--shadow:0 1px 0 #ffffffb3 inset, 0 18px 50px -18px #3c2d1459, 0 3px 10px #3c2d1414;--serif:"Fraunces", Georgia, serif;--sans:"Instrument Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--hand:"Caveat", "Bradley Hand", cursive;--safe-b:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);font-family:var(--sans);-webkit-tap-highlight-color:transparent;background:#efe8da;margin:0;overflow:hidden}body{touch-action:none;-webkit-user-select:none;user-select:none}canvas#c{width:100%;height:100%;display:block;position:fixed;inset:0}.hidden{display:none!important}button{font:inherit;color:inherit;cursor:pointer}#hud{pointer-events:none;position:fixed;inset:0}.brand{flex-direction:column;margin-right:auto;line-height:1;display:flex}.brand .mark{font-family:var(--serif);letter-spacing:-.01em;font-size:22px;font-style:italic;font-weight:700}.brand .label{color:var(--ink-2);letter-spacing:.04em;text-transform:uppercase;margin-top:4px;font-size:12px}.chips{gap:6px;display:flex}.chip{-webkit-backdrop-filter:blur(8px);background:#fbf6ecdb;border:1px solid #e2d8c5e6;border-radius:12px;flex-direction:column;align-items:center;min-width:58px;padding:6px 10px 5px;display:flex}.chip b{font-family:var(--serif);font-variant-numeric:tabular-nums;font-size:20px;line-height:1}.chip span{color:var(--ink-2);letter-spacing:.05em;text-transform:uppercase;margin-top:2px;font-size:10.5px}.tools{pointer-events:auto;gap:6px;display:flex}.tool{-webkit-backdrop-filter:blur(8px);background:#fbf6ecdb;border:1px solid #e2d8c5e6;border-radius:12px;place-items:center;width:40px;height:40px;font-size:17px;display:grid}.tool:active{transform:scale(.94)}.tool.off{opacity:.45}.say{opacity:0;background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);font-family:var(--hand);text-align:center;pointer-events:none;border-radius:14px;max-width:min(84vw,420px);padding:8px 14px 6px;font-size:24px;line-height:1.05;transition:opacity .25s,transform .25s;position:absolute;left:50%;transform:translate(-50%,-8px)}.say.show{opacity:1;transform:translate(-50%)}.say:before{font-family:var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);margin-bottom:2px;font-size:10px;display:block}.keys{color:var(--ink-2);white-space:nowrap;background:#fbf6eccc;border:1px solid #e2d8c5e6;border-radius:99px;padding:7px 14px;font-size:13px}kbd{font-family:var(--sans);background:var(--paper);border:1px solid var(--line);color:var(--ink);border-bottom-width:2px;border-radius:6px;padding:1px 6px;font-size:12px}body.touch .desktop-only{display:none}.card-wrap{background:radial-gradient(#efe8da26,#efe8da8c);place-items:center;padding:16px;animation:.35s fade;display:grid;position:fixed;inset:0;overflow-y:auto}@keyframes fade{0%{opacity:0}}.card{background:var(--paper);width:min(100%,400px);box-shadow:var(--shadow);text-align:center;border:1px solid #e2d8c5b3;border-radius:26px;padding:26px 24px 18px;animation:.5s cubic-bezier(.2,.8,.2,1) rise}@keyframes rise{0%{opacity:0;transform:translateY(16px)scale(.98)}}.kicker{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);margin:0 0 6px;font-size:12px}.title{font-family:var(--serif);letter-spacing:-.03em;margin:0 0 12px;font-size:56px;font-weight:600;line-height:.95}.title em{color:var(--red);font-style:italic}.lede{max-width:30ch;color:var(--ink-2);margin:0 auto 16px;font-size:15px;line-height:1.45}.facts{grid-template-columns:1fr 1fr;gap:8px;margin:0 0 16px;display:grid}.facts.three{grid-template-columns:1fr 1fr 1fr}.facts div{background:var(--paper-2);border-radius:14px;flex-direction:column;padding:10px 6px 8px;display:flex}.facts b{font-family:var(--serif);font-variant-numeric:tabular-nums;font-size:24px;font-weight:600}.facts span{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);margin-top:2px;font-size:11px}.btn{border:0;border-radius:16px;width:100%;margin-top:8px;padding:15px 18px;font-size:16px;font-weight:600;transition:transform 80ms,background .2s;display:block}.btn:active{transform:scale(.98)}.btn.primary{background:var(--ink);color:var(--paper);margin-bottom:4px;box-shadow:0 5px #000}.btn.primary:active{transform:translateY(4px);box-shadow:0 1px #000}.btn.ghost{border:1px solid var(--line);color:var(--ink);background:0 0}.row{gap:8px;display:flex}.row .btn{flex:1}.fine{color:var(--ink-2);margin:14px 0 0;font-size:12.5px}.fine a{color:inherit}.verdict{font-family:var(--hand);color:var(--ink);margin:2px 0 12px;font-size:28px;line-height:1.05}.toast{left:50%;bottom:calc(190px + var(--safe-b));opacity:0;background:var(--ink);color:var(--paper);z-index:30;pointer-events:none;border-radius:12px;padding:10px 16px;font-size:14px;transition:all .25s;position:fixed;transform:translate(-50%,20px)}.toast.show{opacity:1;transform:translate(-50%)}@media (max-width:560px){.brand .mark{font-size:18px}.chip{min-width:48px;padding:5px 7px 4px}.chip b{font-size:17px}.tool{width:36px;height:36px}.title{font-size:48px}}@media (max-height:520px){.card{padding:16px 20px 12px}.title{margin-bottom:6px;font-size:38px}.lede{margin-bottom:10px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}:root{--tkt:#ffd81f;--tkt-ink:#3a3000;--due:#d9463e;--due-ink:#fff;--legal:#3f8f5a;--grey:#6b7079}#hud .top{top:calc(10px + env(safe-area-inset-top,0px));pointer-events:none;grid-template-columns:1fr auto 1fr;align-items:start;gap:10px;display:grid;position:absolute;left:14px;right:14px}.where{pointer-events:auto;-webkit-backdrop-filter:blur(8px);text-align:left;background:#fbf6ecd1;border:1px solid #e2d8c5e6;border-radius:14px;flex-direction:column;justify-self:start;align-items:flex-start;gap:3px;padding:7px 12px;display:flex}.where .mark{font-family:var(--serif);font-size:17px;font-style:italic;font-weight:700;line-height:1}.where .lvl{color:var(--ink-2);letter-spacing:.02em;font-size:12px}.where .lvl b{color:var(--ink);font-variant-numeric:tabular-nums}.where:after{content:"Map";opacity:0;position:absolute}.goal{pointer-events:none;background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);text-align:center;border-radius:16px;min-width:210px;padding:8px 18px 7px}.goal-main{font-family:var(--serif);letter-spacing:-.01em;margin:0;font-size:22px;font-weight:600;line-height:1.05}.goal-main b{color:var(--red-ink);font-weight:600}.goal-sub{color:var(--ink-2);margin:3px 0 0;font-size:12.5px}.boxes{justify-content:center;gap:7px;margin-top:6px;display:flex}.box{background:#fffdf7;border:2px dashed #c9bda6;border-radius:5px;width:26px;height:20px;position:relative}.box.done{background:var(--tkt);border:2px solid #c9a400}.box.done:after{content:"";border:solid var(--tkt-ink);border-width:0 3px 3px 0;width:7px;height:11px;position:absolute;top:1px;left:7px;transform:rotate(40deg)}.box.stamp{animation:.45s cubic-bezier(.3,1.6,.5,1) stampin}@keyframes stampin{0%{transform:scale(1.8)rotate(-12deg)}to{transform:none}}#hud .tools{pointer-events:auto;justify-self:end;align-items:center;gap:6px;display:flex}.clock{background:#fbf6ecdb;border:1px solid #e2d8c5e6;border-radius:12px;flex-direction:column;align-items:center;min-width:64px;padding:4px 10px;display:flex}.clock b{font-family:var(--serif);font-variant-numeric:tabular-nums;font-size:20px;line-height:1}.clock span{color:var(--ink-2);white-space:nowrap;font-size:10.5px}.clock.over b{color:var(--red-ink)}.clock.tick b{animation:.35s tick}@keyframes tick{40%{transform:scale(1.3)}}.tool:disabled{opacity:.4}#hud .say{top:calc(118px + env(safe-area-inset-top,0px))}#hud .say:before{content:"Supervisor · radio"}#hud .bottom{left:0;right:0;bottom:calc(12px + var(--safe-b));pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:absolute}.hint{color:var(--ink);background:#fbf6eccc;border-radius:99px;margin:0;padding:5px 12px;font-size:14px;font-weight:600}.wait{pointer-events:auto;border:1px solid var(--line);background:var(--paper);border-radius:99px;align-items:center;gap:8px;padding:10px 18px 10px 12px;font-size:15px;font-weight:600;display:inline-flex;box-shadow:0 3px #d8ccb3}.wait svg{width:22px;height:22px}.wait:active{transform:translateY(2px);box-shadow:0 1px #d8ccb3}.wait:disabled{opacity:.45}#hud .keys{margin:0;font-size:12px}.tags,.route{pointer-events:none;position:fixed;inset:0}.tag{pointer-events:auto;font-family:var(--sans);background:var(--paper);color:var(--ink);white-space:nowrap;will-change:transform;border:2px solid #0000;border-radius:12px;align-items:center;gap:4px;padding:3px 9px 3px 6px;display:inline-flex;position:absolute;top:0;left:0;box-shadow:0 6px 16px -6px #281e0a80}.tag:after{content:"";border:6px solid #0000;border-bottom:0;border-top-color:inherit;margin-left:-6px;position:absolute;bottom:-7px;left:50%}.tag b{font-family:var(--serif);font-variant-numeric:tabular-nums;font-size:22px;font-weight:700;line-height:1}.tag .ic{width:15px;height:15px;display:inline-grid}.tag .ic svg{width:100%;height:100%}.tag.red{background:var(--due);color:var(--due-ink);border-color:var(--due)}.tag.red.due{animation:.8s ease-in-out infinite throb;box-shadow:0 0 0 4px #d9463e4d,0 6px 16px -6px #281e0a80}@keyframes throb{50%{transform-origin:50% 100%;scale:1.12}}.tag.paid{box-shadow:none;background:0 0;border:0;gap:0;padding:0;overflow:visible}.tag.paid:after{border-top-color:var(--grey)}.tag .part{align-items:center;gap:3px;padding:3px 8px 3px 6px;display:inline-flex;box-shadow:0 6px 16px -6px #281e0a80}.tag .part.grey{color:#3b3f46;border:2px solid var(--grey);background:#e4e0d7;border-right:0;border-radius:12px 0 0 12px}.tag .part.red{background:var(--paper);color:var(--due);border:2px solid var(--grey);border-left:1px dashed #b9b2a3;border-radius:0 12px 12px 0}.tag .part.red b{font-size:17px}.tag.legal{color:var(--legal);background:#eaf4ec;border-color:#b7d8c1;padding:3px 9px 3px 6px}.tag.legal b{font-family:var(--sans);font-size:13px;font-weight:700}.tag.done{background:var(--tkt);color:var(--tkt-ink);border-color:#e0b800}.tag.done b{font-family:var(--sans);font-size:13px;font-weight:700}.tag.gone{display:none}.tag.pop{animation:.45s cubic-bezier(.3,1.6,.5,1) tagpop}@keyframes tagpop{0%{scale:1.5}}.tag.doomed{opacity:.55;filter:grayscale(.6)}.tag.doomed:before{content:"gone";font:700 10px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--due);background:var(--paper);border-radius:6px;padding:1px 5px;position:absolute;top:-17px;left:50%;translate:-50%}.people{pointer-events:none;position:fixed;inset:0}.people .step{border:2px solid var(--paper);background:#f08a24;border-radius:50%;width:9px;height:9px;position:absolute;top:0;left:0;box-shadow:0 1px 4px #0000004d}.people .ghost{color:#6b4a2d;width:18px;height:18px;font:700 10px/14px var(--sans);text-align:center;background:#fbf6ecd9;border:2px dashed #8a5d38;border-radius:50%;position:absolute;top:0;left:0}.people .out{color:#fff;font:700 11px var(--sans);white-space:nowrap;background:#f08a24;border-radius:8px;padding:2px 7px;position:absolute;top:0;left:0;box-shadow:0 3px 8px -3px #0006}.route .dot{background:var(--ink);border:2px solid var(--paper);border-radius:50%;width:12px;height:12px;position:absolute;top:0;left:0;box-shadow:0 2px 6px #0000004d}.route .dot.wait{background:var(--paper);border-color:var(--ink);width:10px;height:10px}.route .note{white-space:nowrap;background:var(--ink);color:var(--paper);border-radius:9px;padding:4px 9px;font-size:13px;font-weight:700;position:absolute;top:0;left:0}.route .note.no{background:var(--due)}.road{font-family:var(--serif);letter-spacing:-.02em;margin:2px 0 8px;font-size:34px;font-weight:600;line-height:1}.road em{color:var(--red);font-style:italic}.stars-list{text-align:left;gap:6px;margin:4px 0 14px;padding:0;list-style:none;display:grid}.stars-list li{background:var(--paper-2);border-radius:12px;align-items:center;gap:10px;padding:8px 12px;font-size:14.5px;display:flex}.stars-list .star{clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);background:#d4cab6;flex:none;width:24px;height:24px}.stars-list li.got .star{background:#f2b544}.stars-list li.got{animation:.5s cubic-bezier(.3,1.6,.5,1) both starin}.stars-list li.had .star{background:#ecd9a8}.stars-list li.miss{color:var(--ink-2)}@keyframes starin{0%{opacity:0;transform:scale(.7)}}.result .btn{margin-top:6px}.result .row+.row{margin-top:2px}.map-wrap{-webkit-backdrop-filter:blur(6px);padding:20px 14px calc(24px + var(--safe-b));touch-action:pan-y;background:#efe8dab8;position:fixed;inset:0;overflow-y:auto}.map{max-width:760px;margin:0 auto}.map-head{text-align:center;margin-bottom:14px}.map-head .title{margin-bottom:6px;font-size:54px}.map-head .lede{color:var(--ink);max-width:none;margin:0 auto 6px;font-size:17px}.map-total{color:var(--ink-2);letter-spacing:.04em;margin:0;font-size:13px}.streets{gap:14px;display:grid}.street{background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:22px;padding:14px 14px 12px}.street header{align-items:center;gap:12px;margin-bottom:10px;display:flex}.street header .n{background:var(--ink);width:34px;height:34px;color:var(--paper);font-family:var(--serif);border-radius:50%;flex:none;place-items:center;font-size:18px;font-weight:700;display:grid}.street header h2{font-family:var(--serif);letter-spacing:-.01em;margin:0;font-size:22px;font-weight:600}.street header p{color:var(--ink-2);margin:2px 0 0;font-size:13px;line-height:1.3}.street header .got{color:var(--ink-2);white-space:nowrap;margin-left:auto;font-size:13px}.street.locked{opacity:.6}.houses{background:linear-gradient(#6f747c,#6f747c) bottom/100% 10px no-repeat,linear-gradient(#f2c230,#f2c230) 0 calc(100% - 12px)/100% 2px no-repeat,linear-gradient(#f2c230,#f2c230) 0 calc(100% - 16px)/100% 2px no-repeat;grid-template-columns:repeat(6,1fr);gap:8px;padding-bottom:12px;display:grid}.house{background:#f1d08a;border:0;border-radius:6px 6px 3px 3px;flex-direction:column;align-items:center;gap:4px;min-height:104px;padding:18px 4px 22px;display:flex;position:relative;box-shadow:inset 0 -3px #00000014}.house:nth-child(6n+2){background:#a9c7b3}.house:nth-child(6n+3){background:#e8b8b6}.house:nth-child(6n+4){background:#9fb8d6}.house:nth-child(6n+5){background:#e9a178}.house:nth-child(6n){background:#c9b2d6}.house .roof{background:#8d5b4c;border-radius:4px 4px 0 0;height:12px;position:absolute;top:-8px;left:-3px;right:-3px}.house .door{width:30px;height:38px;color:var(--paper);background:#2f3a4a;border-radius:15px 15px 2px 2px;place-items:center;display:grid}.house .door b{font-family:var(--serif);font-size:17px}.house.clear .door{background:#b8323a}.house .nm{color:var(--ink);text-align:center;font-size:11.5px;font-weight:600;line-height:1.15}.house .st{gap:2px;display:flex;position:absolute;bottom:5px}.house .st i{clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);background:#0000002e;width:12px;height:12px}.house .st i.on{box-shadow:none;background:#fbf6ec}.house.clear .st i.on{background:#fff4c2}.house.shut{filter:grayscale(.8);opacity:.55}.house.shut .door:after{content:"";background:var(--paper);border-radius:2px;width:12px;height:10px}.house.shut .door b{display:none}.house.last{outline:3px solid var(--ink);outline-offset:2px}.house:not(:disabled):active{transform:translateY(2px)}.map .fine{text-align:center}body.portrait .tag:after{display:none}body.portrait .tag.out-r{border-top-left-radius:4px;border-bottom-left-radius:4px}body.portrait .tag.out-l{border-top-right-radius:4px;border-bottom-right-radius:4px}body.portrait .tag.paid.out-r .part.grey{border-radius:4px 0 0 4px}body.portrait .tag.paid.out-l .part.red{border-radius:0 4px 4px 0}@media (max-width:640px){#hud .top{grid-template-columns:1fr auto;grid-template-areas:"where tools""goal goal";gap:8px 6px;left:10px;right:10px}.where{grid-area:where;padding:6px 10px}.where .mark{font-size:15px}#hud .tools{grid-area:tools;gap:5px}.goal{grid-area:goal;justify-self:center;min-width:0;padding:6px 14px}.goal-main{font-size:20px}.clock{min-width:54px;padding:3px 7px}.clock b{font-size:17px}#hud .say{top:auto;bottom:calc(64px + var(--safe-b));max-width:92vw;padding:5px 12px 4px;font-size:18px}#hud .say:before{font-size:9px}body.saying .hint{visibility:hidden}body.dy .coach .coach-skip{bottom:calc(122px + var(--safe-b))}.tag b{font-size:19px}.tag{border-radius:10px;padding:2px 7px 2px 5px}.tag .part{padding:2px 6px 2px 4px}.tag .part.red b{font-size:15px}.houses{grid-template-columns:repeat(3,1fr);row-gap:16px}.map-head .title{font-size:44px}}
