:root{color-scheme:dark;font-family:Georgia,'Times New Roman',serif;color:#f1e4d1;background:#17171d;--brass:#dca47a;--mint:#8bd0b0;--muted:#b8aca2;--ink:#17171d;--copper:#bf815c;--panel:#242127;--ivory:#fff0d9;--emerald:#69b995}
*{box-sizing:border-box}body{margin:0;overflow:hidden}button,input{font:inherit}button{cursor:pointer;color:inherit}button:focus-visible,input:focus-visible,canvas:focus-visible{outline:3px solid #dbe9be;outline-offset:4px}button:hover{filter:brightness(1.15)}button:active{transform:translateY(2px)}button:disabled{cursor:default;opacity:.5}.hidden{display:none!important}.app,.game-shell{width:100%;height:100svh}.game-shell{position:relative;isolation:isolate;overflow:hidden}#game{display:block;width:100%;height:100%;outline:0;touch-action:none}.cabinet-frame{position:fixed;inset:0;z-index:25;pointer-events:none;border:8px solid #372e24;box-shadow:inset 0 0 0 1px #b58b4f,inset 0 0 0 4px #12252d,inset 0 0 0 5px #806b43,0 0 0 1px #ad8547;background:radial-gradient(circle at 10px 10px,#ecd79d 0 2px,#4c3d25 3px 5px,transparent 6px),radial-gradient(circle at calc(100% - 10px) 10px,#ecd79d 0 2px,#4c3d25 3px 5px,transparent 6px),radial-gradient(circle at 10px calc(100% - 10px),#ecd79d 0 2px,#4c3d25 3px 5px,transparent 6px),radial-gradient(circle at calc(100% - 10px) calc(100% - 10px),#ecd79d 0 2px,#4c3d25 3px 5px,transparent 6px)}
.topbar{position:absolute;z-index:12;inset:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:25px 32px;pointer-events:none;background:linear-gradient(#08181ec9,transparent)}.topbar>*{pointer-events:auto}.brand{display:flex;align-items:center;gap:9px;font-weight:bold;letter-spacing:2px;font-size:19px;text-shadow:0 2px 2px #000}.brand-icon{font-size:33px;color:var(--brass)}.brand small{display:block;font:8px monospace;letter-spacing:3px;margin-top:4px}.night-label{display:flex;align-items:center;gap:12px;font:10px monospace;letter-spacing:1.5px;color:#d0c7ae}.moon{font-size:24px}.divider{opacity:.4}.toolbar{display:flex;gap:9px}.icon-button,.mobile-pause{width:36px;height:36px;border-radius:50%;border:2px solid #a48954;background:radial-gradient(circle at 35% 20%,#52706e,#142a31 65%);box-shadow:0 2px 0 #060e13,inset 0 0 0 2px #1a2c30;color:#e3c88c;font:20px Georgia}.muted{opacity:.55}
.hud{position:absolute;inset:95px 32px auto;z-index:2;display:flex;justify-content:space-between;pointer-events:none}.chapter>span{display:block;color:#d2c194;font:9px monospace;letter-spacing:2px}.chapter h1{font-weight:normal;font-size:22px;color:#f5e5c1;margin:6px 0;text-shadow:0 2px 12px #061922}.stats{display:flex;gap:4px}.stats>div{background:radial-gradient(ellipse at 50% 0,#314b4b,#14272c 80%);border:1px solid #aa8c535e;border-radius:2px;padding:8px 13px;text-align:center;box-shadow:inset 0 0 0 3px #14252cb0;min-width:69px}.stats small{font:8px monospace;letter-spacing:1.5px;color:#bea981}.stats strong{display:block;font:22px Georgia;color:#f0d4a0;margin-top:4px}.stats strong span{font-size:15px}.menu-open .hud,.menu-open .quest-guide,.menu-open .mobile-controls,.menu-open .mobile-pause,.menu-open #world-labels,.menu-open .combo,.menu-open .alarm-meter{visibility:hidden}.menu-open .brand,.menu-open .night-label{visibility:hidden}
.overlay{position:absolute;z-index:8;inset:0;padding:95px 7vw 60px;display:flex;align-items:center;background:linear-gradient(90deg,#0a1b23e8,#10262b9c 35%,#152a2800 69%);overflow:auto}.menu{width:100%;position:relative}.menu-copy{width:min(510px,46vw);text-align:center;padding:25px 15px;position:relative}.menu-copy:before,.menu-copy:after{content:'';position:absolute;left:12%;right:12%;height:4px;border-top:1px solid #d6b67899;border-bottom:1px solid #d6b67844}.menu-copy:before{top:0}.menu-copy:after{bottom:0}.makers-seal{margin:0 auto 14px;display:grid;place-items:center;width:76px;height:76px;background:repeating-conic-gradient(#ad8951 0 8deg,#22363d 8deg 15deg);border-radius:50%;box-shadow:0 0 0 2px #b2965c,0 0 0 5px #132831}.makers-seal span{display:grid;place-items:center;width:59px;height:59px;border-radius:50%;border:2px solid #c4a669;background:radial-gradient(#4f6962,#1a343c);font:bold italic 40px Georgia;text-shadow:0 2px #07171b}.eyebrow{font:9px monospace;letter-spacing:2.4px;color:#c1a772}h2{font:normal clamp(40px,5.9vw,84px)/1.04 Georgia;color:#eed6a2;letter-spacing:-2.5px;margin:19px 0;text-shadow:0 2px #35291b,0 3px 0 #af8e53,0 8px 30px #00161e}.menu-copy>p{font:italic 16px/1.65 Georgia;color:#c7cfbf;margin:0 auto 20px;max-width:375px}.tonight-docket{margin:20px auto;max-width:410px}.tonight-docket>small{font:8px monospace;letter-spacing:2px;color:#9fa996}#tonight-jobs{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin-top:10px}#tonight-jobs span{font:12px Georgia;letter-spacing:.3px;padding:8px 12px;border-top:1px solid #ad8c525c;border-bottom:1px solid #ad8c525c;color:#ddc59c;background:#152c3161}.primary{display:flex;align-items:center;justify-content:space-between;gap:20px;width:100%;max-width:335px;margin:auto;padding:17px 21px;border:2px solid #ba985b;border-radius:2px;background:linear-gradient(#edd49b 0,#c5a469 48%,#b18a4e 49%,#d1b074 100%);box-shadow:inset 0 0 0 2px #ecd7a14d,0 5px 0 #53432e,0 7px 0 #131f22,0 10px 23px #06131999;color:#203135;font:bold 17px Georgia;text-shadow:0 1px #efd8a0}.primary>span{font-size:23px;border-left:1px solid #89673588;padding-left:16px}.secondary,.ledger-trigger{display:block;margin:18px auto 0;border:0;background:none;padding:6px;color:#d3c098;font:12px Georgia;letter-spacing:.5px}.secondary{border-bottom:1px solid #bb986b66}.ledger-trigger{color:#b9b798;font-style:italic}.menu-controls{font:10px/1.9 monospace;letter-spacing:.1px;color:#96aaa4;margin-top:22px}.run-recap{font:12px/1.8 monospace;color:#d1d3b2;margin:15px 0}
.generator{position:absolute;right:0;top:50%;transform:translateY(-50%);width:350px;padding:23px;background:linear-gradient(105deg,#213c40f5,#10272efc);border:2px solid #ae8d53;box-shadow:0 0 0 4px #13252c,0 0 0 5px #7c633b,0 25px 60px #000a,inset 0 0 0 5px #112930;max-height:calc(100svh - 85px);overflow:auto}.generator-heading{display:flex;align-items:center;justify-content:space-between;font:bold 13px Georgia;letter-spacing:1px;gap:15px}.generator button:not(.primary){background:#29403f;border:1px solid #a18c5c;padding:7px 9px;color:#e0c48c;font:10px monospace}.generator .primary{font-size:14px;padding:11px 15px;margin-top:18px}.generator .primary span{font-size:19px}.ledger-open .menu-copy{opacity:.55}.generator label{font:9px monospace;letter-spacing:1px;color:#b3c0ad}#map{width:100%;height:100px;margin:15px 0;border:1px solid #9b906259}.seed-row{display:grid;grid-template-columns:1fr 59px;gap:10px}input{width:100%;margin-top:6px;background:#0b2027;border:1px solid #6d7657;padding:9px;border-radius:0;color:#e3d9b9;font:12px monospace;letter-spacing:1px}.difficulty-heading{display:flex;align-items:center;gap:6px;margin-top:17px}.difficulty-heading span{margin-left:auto;color:#d1b879;font:10px Georgia}.difficulty-heading strong{font:25px Georgia;color:#efd498}input[type=range]{padding:0;height:15px;accent-color:#d8b36d;cursor:pointer;margin-top:7px}.range-labels{display:flex;justify-content:space-between;font:9px Georgia;color:#a5b29d;margin:4px 0}.difficulty-details,.seed-help,.generator-note,.replay-message{font:10px/1.5 monospace;color:#adbbab;margin:8px 0}.challenge-row{display:grid;grid-template-columns:1fr 36px;gap:8px;align-items:end}.challenge-row button{height:34px}.replay-row{margin-top:17px}.replay-row>div{display:flex;gap:6px;margin-top:8px}.replay-message{color:#e1cd8d;min-height:14px}.seed-help{font-size:9px;color:#8fa49a}
.objective{display:flex;gap:11px;align-items:center}.objective-icon{color:#ddbc7c;font-size:22px}.objective small{font:8px monospace;letter-spacing:2px;color:#b8a477}.objective p{font:13px/1.4 Georgia;color:#e6d7b2;margin:3px 0;max-width:470px}.heists{display:flex;gap:12px;white-space:nowrap;font-size:13px;color:#859c8f}.heists span span{display:none}.heists .done{color:#c4dca5}#new-night{background:none;border:0;border-left:1px solid #8e80565c;color:#d5bb88;font:11px Georgia;padding:10px 0 10px 15px;white-space:nowrap}.below{display:none}.context-prompt{position:absolute;z-index:3;bottom:108px;left:50%;transform:translateX(-50%);padding:8px 14px;border:1px solid #a98a515c;background:#122c32d9;color:#e4cb9b;font:12px monospace;pointer-events:none}.world-label{position:absolute;transform:translate(-50%,-100%);display:grid;place-items:center;width:26px;height:26px;background:radial-gradient(#476960,#163139);border:1px solid #c7ab70;box-shadow:0 0 0 3px #18343b77;border-radius:50%;font:bold 14px Georgia;color:#f5db9b}.world-label[hidden]{display:none}#world-labels,#score-popups{position:absolute;inset:0;pointer-events:none;z-index:2}.floating-score{position:absolute;transform:translate(-50%,-100%);font:bold 18px Georgia;color:#f5d494;white-space:nowrap;text-shadow:0 2px 6px #08262c}.floating-score.streak{color:#c9e2a4}.combo>strong{font:26px Georgia;color:#f0d296}.combo>span{display:block;font:8px monospace;color:#bfd2b0;letter-spacing:1px}.combo>div,.alarm-meter>div{height:3px;background:#102831;margin-top:8px}.combo i,.alarm-meter i{display:block;height:100%;background:#d6c590}.alarm-meter{position:absolute;z-index:3;left:34px;top:162px;width:135px;background:#18333ad9;padding:7px 9px;border:1px solid #a4864b6b}.alarm-meter small{font:8px monospace;letter-spacing:2px;color:#dfba82}.alarm-meter i{background:#e5a277}
.goal-intro{position:absolute;inset:0;z-index:9;display:flex;align-items:center;padding:7vw;background:linear-gradient(90deg,#0b2129ed,#102b35b5 37%,transparent 65%);pointer-events:none}.goal-card{width:43%;max-width:540px}.goal-card>small{font:10px monospace;letter-spacing:2px;color:#c6a96e}.goal-card h2{font-size:clamp(32px,4vw,60px);margin:18px 0;letter-spacing:-1.3px}.goal-card>p{font:16px/1.7 Georgia;color:#d0d8bc;max-width:430px}.surface-key{display:flex;gap:10px;align-items:center;font:11px monospace;color:#b4c8ae;margin-top:22px}.surface-key i{width:26px;height:4px;background:#f3ce8a;box-shadow:0 0 10px #ebc56388}#goal-count{display:flex;align-items:center;justify-content:center;width:112px;height:112px;border-radius:50%;border:3px double #c6a15f;box-shadow:0 0 0 5px #19343b,inset 0 0 0 4px #17313b;background:radial-gradient(#45625a,#18353e);margin-top:28px;font:70px/1 Georgia;color:#f5d79c}.count-pop{animation:count-beat .4s ease-out}.intro-open .hud,.intro-open .quest-guide,.intro-open .mobile-controls,.intro-open .combo,.intro-open #world-labels,.intro-open .alarm-meter{visibility:hidden}.intro-open .topbar{opacity:.35}.menu-open .goal-intro{display:none}.interaction-nudge{position:absolute;z-index:7;display:flex;gap:7px;align-items:center;transform:translate(-50%,-100%);background:#14313bdf;border:1px solid #bba16b;color:#e7d5ae;padding:5px 10px;font:12px Georgia;pointer-events:none;white-space:nowrap}.interaction-nudge kbd{font:bold 11px monospace;background:#cdb072;color:#20343b;padding:3px 5px}.nudge-in{animation:interaction-arrive 1.6s ease both}.interaction-open #world-labels{visibility:hidden}
.milestone{position:absolute;z-index:7;left:50%;top:25%;transform:translateX(-50%);max-width:85%;width:max-content;text-align:center;background:linear-gradient(120deg,#1d3c44ed,#112a34fa);border:2px solid #b4955d;box-shadow:0 0 0 5px #132b33,0 15px 40px #00131c77;padding:22px 35px;pointer-events:none}.milestone small{display:block;font:9px monospace;letter-spacing:2.5px;color:#b69e6a}.milestone strong{display:block;font:34px Georgia;color:#f0d79e;margin:10px 0}.milestone>span{font:12px/1.6 monospace;color:#bfceb7;display:block;max-width:580px}.arrive{animation:milestone-in .4s ease-out}.reward-screen{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;padding:30px;background:linear-gradient(90deg,transparent 15%,#132e3355 43%,#0d242ced 74%)}.reward-card{width:460px;max-width:46%;margin-left:47%;animation:card-in .6s ease-out}.reward-card h2{font-size:47px;letter-spacing:-1.5px;margin:15px 0}.reward-flavor{font:italic 15px Georgia;color:#b4cbae;margin:20px 0 8px}.reward-count{font:80px/1.2 Georgia;color:#edca85}.reward-card>p{font:14px/1.6 Georgia;color:#c4d2b9;max-width:440px;margin:15px 0 20px}.reward-badges{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}.reward-badges span{font:10px monospace;padding:7px 9px;border-top:1px solid #ab91545c;border-bottom:1px solid #ab91545c;color:#d3c8a4}.reward-card .primary{margin-left:0}.reward-open .hud,.reward-open .quest-guide,.reward-open .mobile-controls,.reward-open .mobile-pause,.reward-open #world-labels,.reward-open .context-prompt,.reward-open .combo,.reward-open .alarm-meter{visibility:hidden}.graphics-error{position:absolute;inset:0;z-index:30;background:#142b34;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:30px;text-align:center}.graphics-error h2{font-size:40px}.graphics-error p{max-width:550px;line-height:1.7}.circuit-hud{display:none!important}
.mobile-controls{position:absolute;z-index:5;bottom:22px;left:25px;right:25px;display:none;justify-content:space-between;pointer-events:none}.mobile-controls>div{display:flex;align-items:end;gap:8px}.mobile-controls button{width:57px;height:57px;border:2px solid #b09157;border-radius:50%;background:radial-gradient(circle at 40% 20%,#456261df,#17323cef 70%);box-shadow:inset 0 0 0 3px #15313b,0 3px 0 #11212b;pointer-events:auto;touch-action:none;user-select:none;color:#edd4a0;font:bold 23px Georgia}.mobile-controls .actions button{font:10px Georgia}.mobile-controls .actions small{font:7px monospace}.mobile-controls .jump{width:69px;height:69px;background:radial-gradient(circle at 40% 20%,#dec893,#967b49);color:#203839;box-shadow:inset 0 0 0 3px #b2965e,0 4px 0 #463e2a;font-weight:bold}.mobile-controls .sneak{font:8px monospace;width:45px;height:45px}.mobile-controls .slash{background:radial-gradient(#755e49,#342c2a);border-color:#d6ae71}.mobile-controls .held{filter:brightness(1.4);transform:translateY(2px)}.mobile-pause{display:none;position:absolute;right:18px;top:17px;z-index:7}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
@keyframes count-beat{from{transform:scale(1.2);opacity:.4}to{transform:scale(1);opacity:1}}@keyframes interaction-arrive{0%{opacity:0;transform:translate(-50%,-75%)}15%,70%{opacity:1;transform:translate(-50%,-100%)}100%{opacity:0;transform:translate(-50%,-120%)}}@keyframes milestone-in{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%,0)}}@keyframes card-in{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@media(pointer:coarse){.mobile-controls{display:flex}.context-prompt{bottom:188px}.menu-controls{font:9px/1.7 monospace}.topbar{padding:20px 25px}.hud{inset:87px 25px auto}}
@media(max-width:1000px){.night-label{display:none}.menu-copy{width:47vw;padding:20px 0}.overlay{padding:85px 5vw 40px}.makers-seal{width:62px;height:62px}.makers-seal span{width:49px;height:49px;font-size:33px}h2{font-size:53px}.menu-copy>p{font-size:14px}.generator{width:315px;padding:18px}.chapter h1{font-size:18px}.stats strong{font-size:19px}.stats>div{padding:8px 10px}.tonight-docket{margin:16px auto}.menu-controls{font-size:9px}}
@media(max-width:650px){.cabinet-frame{border-width:5px}.topbar{padding:18px}.brand{font-size:14px;letter-spacing:1px}.brand small{font-size:7px;letter-spacing:1px}.brand-icon{font-size:23px}.toolbar{gap:6px}.icon-button{width:30px;height:30px;font-size:17px}.hud{inset:78px 18px auto}.chapter h1{font-size:14px;max-width:155px}.chapter>span{font-size:7px;letter-spacing:1px;max-width:150px}.stats>div{min-width:45px;padding:6px}.stats strong{font-size:16px}.stats small{font-size:7px;letter-spacing:.5px}.overlay{padding:40vh 23px 24px;align-items:start;background:linear-gradient(transparent 18%,#11293077 36%,#0e252ff2 59%)}.menu-copy{width:100%;padding:17px 0}.makers-seal{display:none}h2{font-size:48px;margin:12px 0;letter-spacing:-2px}.eyebrow{font-size:8px;letter-spacing:1.5px}.menu-copy>p{font-size:13px;line-height:1.5;max-width:290px;margin-bottom:13px}.tonight-docket{margin:12px auto}.tonight-docket>small{font-size:7px}.tonight-docket span{font-size:11px!important;padding:6px 9px!important}.primary{padding:12px 17px;font-size:15px}.primary>span{font-size:20px}.ledger-trigger,.secondary{font-size:11px;margin-top:12px}.menu-controls{margin-top:14px;font-size:8px}.menu-copy:before,.menu-copy:after{left:8%;right:8%}.ledger-open .menu-copy{visibility:hidden}.generator{position:fixed;left:20px;right:20px;top:50%;transform:translateY(-50%);width:auto;max-height:calc(100svh - 45px);z-index:12;padding:18px}.objective{gap:7px;flex:1}.objective p{font-size:11px;margin:2px 0}.objective small{font-size:7px}.objective-icon{font-size:18px}.heists{gap:6px;font-size:11px}#new-night{font-size:10px;padding:7px 0 7px 9px}.context-prompt{bottom:182px;font-size:10px;max-width:90%;width:max-content;text-align:center}.mobile-controls{bottom:25px;left:16px;right:16px}.mobile-controls>div{gap:6px}.mobile-controls button{width:44px;height:44px;font-size:22px}.mobile-controls .jump{width:56px;height:56px}.mobile-controls .sneak{width:36px;height:36px;font-size:7px}.mobile-controls .actions button{font-size:8px}.mobile-controls .actions small{font-size:6px}.combo>strong{font-size:21px}.combo>span{font-size:7px}.alarm-meter{left:18px;top:129px;width:110px}.goal-intro{align-items:end;padding:25px;background:linear-gradient(transparent 25%,#112a3377 43%,#0c2531ef 67%)}.goal-card{width:100%;max-width:none}.goal-card h2{font-size:33px;margin:13px 0}.goal-card>p{font-size:13px;line-height:1.5;max-width:330px}.goal-card>small{font-size:8px;letter-spacing:1px}.surface-key{font-size:9px;margin-top:13px}#goal-count{font-size:49px;width:76px;height:76px;margin-top:17px}.reward-screen{align-items:end;padding:25px;background:linear-gradient(transparent 20%,#10293277 45%,#0c232fed 69%)}.reward-card{width:100%;max-width:100%;margin:0;text-align:center}.reward-card h2{font-size:33px}.reward-flavor{font-size:12px;margin-top:10px}.reward-count{font-size:57px}.reward-card>p{font-size:12px;line-height:1.4;margin:10px auto 16px}.reward-badges{justify-content:center;margin-bottom:19px}.reward-badges span{font-size:9px}.reward-card .primary{margin:auto}.milestone{top:24%;padding:18px;max-width:91%}.milestone strong{font-size:27px}.milestone>span{font-size:11px;max-width:300px}}
@media(max-height:660px) and (min-width:651px){.overlay{padding:45px 5vw 24px}.menu-copy{padding:16px 0}.makers-seal{width:45px;height:45px;margin-bottom:10px}.makers-seal span{width:35px;height:35px;font-size:24px}.menu h2{font-size:50px;margin:10px 0}.menu-copy>p{font-size:13px;line-height:1.4;margin-bottom:12px}.tonight-docket{margin:10px auto}.menu-controls{margin-top:13px;font-size:8px}.ledger-trigger{margin-top:12px}.generator{max-height:calc(100svh - 45px)}.goal-card h2{font-size:36px}.goal-card>p{font-size:13px;line-height:1.5}#goal-count{width:80px;height:80px;font-size:55px;margin-top:18px}.surface-key{font-size:10px;margin-top:12px}}
@media(max-height:520px) and (orientation:landscape){.topbar{display:none}.mobile-pause{display:block}.hud{inset:18px 20px auto}.chapter h1{font-size:16px}.objective p{font-size:10px}.objective small,.objective-icon,.heists,#new-night{display:none}.context-prompt{bottom:77px;font-size:10px}.overlay{padding:20px 5vw;align-items:center}.menu-copy{width:48vw;padding:12px 0}.menu h2{font-size:41px}.menu-copy>p{font-size:12px;line-height:1.4;margin-bottom:8px}.makers-seal,.menu-controls{display:none}.tonight-docket{margin:10px auto}.primary{font-size:14px;padding:11px 15px;max-width:280px}.ledger-trigger,.secondary{margin-top:10px}.goal-intro{padding:22px 5vw}.goal-card{width:45%}.goal-card h2{font-size:30px}.goal-card>p{font-size:12px;line-height:1.4}.goal-card>small{font-size:8px}#goal-count{font-size:44px;width:65px;height:65px;margin-top:12px}.surface-key{font-size:9px}.reward-screen{padding:20px 4vw;align-items:center}.reward-card{max-width:43%;margin-left:47%;text-align:left}.reward-card h2{font-size:30px}.reward-flavor{font-size:11px;margin:6px 0}.reward-count{font-size:49px}.reward-card>p{font-size:11px;margin:8px 0}.reward-badges{gap:6px;margin:10px 0 16px;justify-content:start}.reward-badges span{font-size:8px;padding:5px}.reward-card .primary{margin-left:0}.alarm-meter{top:72px;left:20px}.mobile-controls{bottom:22px;left:20px;right:20px}.mobile-controls button{width:48px;height:48px}.mobile-controls .jump{width:60px;height:60px}.milestone{top:20%;padding:15px 25px}.milestone strong{font-size:27px;margin:8px 0}.milestone>span{font-size:11px;max-width:450px}}
@media(prefers-reduced-motion:reduce){.count-pop,.nudge-in,.arrive,.reward-card{animation:none}*{scroll-behavior:auto}}

@media(max-width:360px){.mobile-controls{left:10px;right:10px}.overlay{padding-left:17px;padding-right:17px}.menu h2{font-size:43px}}

/* The quest lives beside the action; the ground route stays unobstructed. */
.quest-rail{position:absolute;z-index:3;top:174px;right:32px;width:250px;display:flex;flex-direction:column;align-items:flex-end;gap:10px;pointer-events:none}
.quest-guide{width:100%;display:grid;grid-template-columns:1fr auto;align-items:center;gap:5px 12px;padding:11px 13px;background:linear-gradient(#1c373bec,#11282df2);border:1px solid #a58b53;box-shadow:inset 0 0 0 3px #183033,0 5px 15px #09181c66}
.quest-guide .objective{grid-column:1/-1;align-items:flex-start;gap:8px;min-width:0}
.quest-guide .objective-icon{font-size:17px;padding-top:9px}
.quest-guide .objective p{max-width:none;overflow-wrap:anywhere;font-size:13px;line-height:1.45}
.quest-guide .heists{padding-left:25px}
.quest-guide #new-night{pointer-events:auto;padding:6px 0 6px 12px}
.quest-rail .combo{position:static;width:97px;padding:8px;text-align:center;background:#163139a6;border-top:1px solid #b08c50;border-bottom:1px solid #b08c50}
@media(pointer:coarse){.quest-rail{top:165px;right:25px}}
@media(max-width:650px){.quest-rail{top:136px;right:18px;width:min(190px,48vw);gap:7px}.quest-guide{padding:8px 10px;gap:3px 8px}.quest-guide .objective-icon{display:none}.quest-guide .objective p{font-size:12px;line-height:1.4}.quest-guide .heists{padding-left:0}.quest-guide #new-night{font-size:10px}.quest-rail .combo{width:75px;padding:6px}}
@media(max-height:520px) and (orientation:landscape){.quest-rail{top:94px;right:20px;width:210px;gap:6px}.quest-guide{padding:8px 11px}.quest-guide .objective p{font-size:12px}.quest-rail .combo{width:75px;padding:6px}}

/* Thumb controls stay clear of notches and the home gesture; portrait uses
   two compact clusters so every action still has a full-sized hit target. */
.touch-help{display:none}
.roadster-route{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding-top:5px}
.roadster-route>span{min-width:0;border-top:1px solid #aa945d4d;padding-top:6px;opacity:.68}
.roadster-route>span.current-road{opacity:1;border-color:#edd092}
.roadster-route small{display:block;font:7px monospace;letter-spacing:1px;color:#c3b790}
.roadster-route b{display:block;font:14px Georgia;margin:3px 0 5px;color:#ead4a1}
.roadster-route i{display:block;height:3px;background:#0e2328}.roadster-route em{display:block;height:100%;background:#cfb374;transition:width .3s}
.roadster-route p{grid-column:1/-1;font:10px/1.4 Georgia;color:#c1d1b5;margin:4px 0 1px;min-height:14px}
@media(max-width:650px){.roadster-route{gap:6px}.roadster-route small{font-size:6px;letter-spacing:.5px}.roadster-route b{font-size:12px}.roadster-route p{font-size:10px}}
.controls-help{pointer-events:auto;background:#173138e8;border:1px solid #957d50;box-shadow:inset 0 0 0 2px #203e40;padding:8px 12px;color:#dfc58e;font:12px Georgia;min-height:36px}
.controls-help kbd{margin-left:9px;font:10px monospace;color:#b8c5ab}
.menu-open .controls-help,.reward-open .controls-help,.intro-open .controls-help{visibility:hidden}
#controls-dialog{width:min(520px,calc(100vw - 32px));max-height:calc(100svh - 32px);padding:28px;background:linear-gradient(135deg,#244344,#112b31);border:3px double #ccaa65;color:#e9d3a5;box-shadow:0 0 0 5px #142b30,0 25px 90px #0009;overflow:auto}
#controls-dialog::backdrop{background:#061b22b8;backdrop-filter:blur(5px)}
#controls-dialog h2{font-size:33px;letter-spacing:-1px;margin:14px 0 6px}
.guide-paused{font:italic 12px Georgia;color:#adc5af;margin:0 0 22px}
.key-guide{display:grid;grid-template-columns:auto 1fr;gap:14px 18px;font:13px/1.45 Georgia}
.key-guide dt{white-space:nowrap}.key-guide dd{margin:0;color:#cbd5bc}
.key-guide kbd{font:10px monospace;padding:4px 6px;border:1px solid #a88b55;border-radius:3px;box-shadow:0 2px 0 #0d252a;color:#f1d69e}
.guide-context{border-top:1px solid #8c79534d;padding-top:16px;font:13px/1.6 Georgia;color:#d7caa6}
#controls-dialog .primary{margin:22px 0 0;width:100%;min-height:44px}
.bonbon-hud{position:absolute;z-index:3;left:50%;bottom:20px;transform:translateX(-50%);width:min(420px,calc(100% - 40px));text-align:center;pointer-events:none;color:#eed6a7;text-shadow:0 2px 6px #071c24}
.bonbon-hud strong{display:block;font:16px Georgia}.bonbon-hud span{display:block;margin:6px 0 9px;font:12px Georgia;color:#bed8bb}
.sweet-meter{height:5px;background:#183638;border:1px solid #8f7c51}.sweet-meter i{display:block;height:100%;background:#e6bd70;transition:width .25s}
.match-three .quest-guide,.match-three .combo{display:none!important}.match-three .quest-rail{top:auto;bottom:20px;width:auto}
@media(pointer:coarse){.key-guide.keyboard-help{display:none}.controls-help{min-height:44px}.controls-help kbd{display:none}}
@media(max-width:650px){.key-guide{gap:12px;font-size:12px}#controls-dialog{padding:22px}#controls-dialog h2{font-size:28px}.bonbon-hud{bottom:calc(64px + env(safe-area-inset-bottom))}.bonbon-hud strong{font-size:14px}.bonbon-hud span{font-size:11px}.match-three .quest-rail{top:auto;bottom:calc(14px + env(safe-area-inset-bottom))}}
@media(max-height:520px) and (orientation:landscape){.bonbon-hud{bottom:12px}.bonbon-hud strong{font-size:13px}.bonbon-hud span{display:none}.bonbon-hud .sweet-meter{margin-top:6px}.match-three .quest-rail{top:auto;bottom:12px}}
@media(pointer:coarse){
  body{overscroll-behavior:none}
  button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
  .keyboard-help{display:none}.touch-help{display:inline}
  .mobile-controls{left:calc(20px + env(safe-area-inset-left));right:calc(20px + env(safe-area-inset-right));bottom:calc(20px + env(safe-area-inset-bottom))}
  .mobile-controls button{width:52px;height:52px;touch-action:none;-webkit-touch-callout:none}
  .mobile-controls .sneak{width:48px;height:48px;font-size:8px}
  .mobile-controls .jump{width:64px;height:64px}
  .icon-button,.mobile-pause{width:44px;height:44px}
  .topbar{padding-top:calc(16px + env(safe-area-inset-top));padding-left:calc(20px + env(safe-area-inset-left));padding-right:calc(20px + env(safe-area-inset-right))}
  .hud{top:calc(87px + env(safe-area-inset-top))}
  .quest-rail{top:calc(165px + env(safe-area-inset-top));right:calc(25px + env(safe-area-inset-right))}
  .mobile-pause{top:calc(16px + env(safe-area-inset-top));right:calc(18px + env(safe-area-inset-right))}
  .goal-intro,.reward-screen,.overlay{padding-bottom:calc(24px + env(safe-area-inset-bottom))}
  .ledger-trigger,.secondary,#new-night,.generator button{min-height:44px}
  .generator input:not([type=range]){font-size:16px;min-height:44px}
  .generator input[type=range]{height:30px}
}
@media(pointer:coarse) and (max-width:650px){
  .topbar{gap:8px;padding-left:calc(16px + env(safe-area-inset-left));padding-right:calc(16px + env(safe-area-inset-right))}
  .brand-icon{display:none}.toolbar{gap:4px}
  .hud{top:calc(80px + env(safe-area-inset-top))}
  .quest-rail{top:calc(140px + env(safe-area-inset-top));right:calc(18px + env(safe-area-inset-right))}
  .alarm-meter{top:calc(135px + env(safe-area-inset-top))}
  .mobile-controls{left:calc(16px + env(safe-area-inset-left));right:calc(16px + env(safe-area-inset-right));align-items:end}
  .mobile-controls>div{display:grid;grid-template-columns:repeat(2,48px);gap:8px}
  .mobile-controls button,.mobile-controls .sneak{width:48px;height:48px}
  .mobile-controls .movement [data-control=left]{grid-area:2 / 1}
  .mobile-controls .movement [data-control=right]{grid-area:2 / 2}
  .mobile-controls .sneak{grid-area:1 / 1 / 2 / 3;justify-self:center}
  .mobile-controls .jump{grid-column:1 / 3;justify-self:center;width:64px;height:64px}
  .mobile-controls .actions button{font-size:10px}.mobile-controls .actions small{font-size:7px}
  .context-prompt{bottom:calc(163px + env(safe-area-inset-bottom))}
  .goal-card{padding-bottom:4px}
}
@media(pointer:coarse) and (max-height:520px) and (orientation:landscape){
  .hud{top:calc(18px + env(safe-area-inset-top));left:calc(20px + env(safe-area-inset-left));right:calc(76px + env(safe-area-inset-right))}
  .quest-rail{top:calc(94px + env(safe-area-inset-top));right:calc(20px + env(safe-area-inset-right));width:190px}
  .alarm-meter{top:calc(72px + env(safe-area-inset-top));left:calc(20px + env(safe-area-inset-left))}
  .mobile-controls>div{display:flex;gap:8px}
  .context-prompt{bottom:calc(96px + env(safe-area-inset-bottom))}
  .overlay,.goal-intro{padding-left:calc(24px + env(safe-area-inset-left));padding-right:calc(24px + env(safe-area-inset-right))}
}

/* A single changing field note appears only while the action is stopped. */
.field-tip,.surface-key.field-tip{display:block;text-align:left;border-top:1px solid #b59a614d;padding-top:12px;margin-top:16px;color:#c9d5b7}
.field-tip small{display:block;font:8px monospace;letter-spacing:1.8px;color:#c7a867;margin-bottom:6px}
.field-tip>span{display:block;font:italic 13px/1.55 Georgia;letter-spacing:0;color:#c9d5b7;overflow-wrap:anywhere}
.menu-controls.field-tip{max-width:365px;margin:20px auto 0;text-align:center}
.milestone .field-tip{max-width:540px;text-align:center;margin-top:14px;padding-top:12px}
.milestone .field-tip>span{font-size:12px}
@media(max-width:650px){.field-tip,.surface-key.field-tip{margin-top:13px;padding-top:10px}.field-tip>span{font-size:12px}.field-tip small{font-size:7px}.menu-controls.field-tip{margin-top:14px}.milestone .field-tip>span{font-size:11px}}
@media(max-height:520px) and (orientation:landscape){.menu-controls.field-tip{display:block;margin-top:10px;padding-top:8px}.field-tip>span,.milestone .field-tip>span{font-size:10px}.field-tip small{margin-bottom:4px;font-size:7px}.surface-key.field-tip{margin-top:10px;padding-top:8px}}

.roadster-driving .mobile-controls .sneak{width:64px;height:64px;font-size:11px}.roadster-route>span:nth-child(1) em{background:#55ded1}.roadster-route>span:nth-child(2) em{background:#ef82ad}.roadster-route>span:nth-child(3) em{background:#ffd16b}
.driving-guide .key-guide,.driving-guide .touch-help{display:none}.driving-guide .guide-context{font-size:16px;line-height:1.7}

/* Handheld edition: playfield, thumb deck and instruments occupy separate space. */
.phone-only{display:none}
.phone{--phone-top:calc(60px + env(safe-area-inset-top));--phone-bottom:calc(92px + env(safe-area-inset-bottom));--phone-side:calc(12px + env(safe-area-inset-left));background:#122a30;overscroll-behavior:none}
.phone .app,.phone .game-shell{height:var(--phone-height,100svh)}
.phone .phone-only{display:block}
.phone .topbar,.phone .hud,.phone .quest-rail,.phone .mobile-pause,.phone .alarm-meter,.phone .context-prompt,.phone .bonbon-hud{display:none!important}
.phone .cabinet-frame{border-width:4px;background:none}
.phone #game{position:absolute;left:env(safe-area-inset-left);top:var(--phone-top);width:calc(100% - env(safe-area-inset-left) - env(safe-area-inset-right));height:calc(100% - var(--phone-top) - var(--phone-bottom));border-top:1px solid #a08a58;border-bottom:1px solid #a08a58}
.phone #world-labels,.phone #score-popups,.phone #phone-world-hud{position:absolute;left:env(safe-area-inset-left);right:env(safe-area-inset-right);top:var(--phone-top);bottom:var(--phone-bottom);pointer-events:none;z-index:3}
.phone #phone-hud{position:absolute;z-index:5;top:env(safe-area-inset-top);left:var(--phone-side);right:calc(12px + env(safe-area-inset-right));height:60px;display:flex;align-items:center;gap:12px;background:#122b30}
.phone-vitals{display:flex;align-items:center;gap:12px;min-width:114px;font:16px Georgia;color:#f0d29a}.phone-vitals strong{white-space:nowrap}.phone-vitals span{font:14px monospace;color:#d3cfb6}
.phone-mission{flex:1;min-width:0}.phone-mission small{font:12px Georgia;color:#c8ad77;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.phone-mission p{font:15px/1.2 Georgia;margin:3px 0;color:#f0e1bd;max-height:36px;overflow:hidden}
.phone #phone-hud button{flex:none;width:48px;height:48px;border:2px solid #ab905c;border-radius:50%;background:radial-gradient(#3c5c58,#193138);font:bold 13px Georgia;color:#f2d495;touch-action:manipulation}
.phone #phone-pause{font-size:23px!important}
.phone #phone-waypoint{position:absolute;display:flex;align-items:center;gap:5px;transform:translate(-50%,-50%);padding:6px 8px;border:1px solid #cba76a;background:#173438ed;border-radius:3px;color:#f6d48b;font:bold 14px Georgia;white-space:nowrap}
.phone #phone-waypoint i{display:block;font:17px Georgia}.phone #phone-waypoint span{max-width:86px;overflow:hidden;text-overflow:ellipsis}
.phone .world-label{width:32px;height:32px;font-size:17px}
.phone .mobile-controls{position:absolute;display:flex;left:calc(14px + env(safe-area-inset-left));right:calc(14px + env(safe-area-inset-right));height:84px;bottom:env(safe-area-inset-bottom);align-items:center;gap:18px}
.phone .mobile-controls>div{display:flex;align-items:center;gap:12px}
.phone .mobile-controls button,.phone .mobile-controls .sneak{width:58px;height:58px;flex:none;font:13px Georgia;touch-action:none}
.phone .mobile-controls .movement [data-control=left],.phone .mobile-controls .movement [data-control=right]{font-size:28px;width:64px;height:64px}
.phone .mobile-controls .jump{width:74px;height:74px;font:bold 14px Georgia}.phone .mobile-controls .actions button{font-size:13px}.phone .mobile-controls small{display:none}
.phone .mobile-controls [data-control=action].nearby{border-color:#f3d189;box-shadow:0 0 0 3px #ebc56a42,inset 0 0 0 3px #183e3e}
.phone .interaction-nudge{font-size:14px;padding:7px 10px;max-width:240px;white-space:normal}.phone .interaction-nudge kbd{font-size:12px}
.phone.phone-direct{--phone-bottom:calc(48px + env(safe-area-inset-bottom))}
.phone.phone-direct .mobile-controls{display:none!important}
.phone #phone-pad{display:none;position:absolute;left:calc(18px + env(safe-area-inset-left));right:calc(18px + env(safe-area-inset-right));bottom:env(safe-area-inset-bottom);height:48px;border:1px solid #9e865052;background:#1c393a;touch-action:none;text-align:center;color:#e5cf9f;user-select:none;font:14px Georgia}
.phone #phone-pad span{display:block;margin-top:5px}.phone #phone-pad i{display:block;width:80px;height:5px;margin:8px auto;border-radius:6px;background:#caaa70}
.phone.phone-pad-game #phone-pad{display:block}
.phone #phone-touch-note{position:absolute;left:20px;right:20px;bottom:calc(12px + env(safe-area-inset-bottom));text-align:center;font:14px Georgia;color:#d5c99f;pointer-events:none}
.phone:not(.phone-direct) #phone-touch-note,.phone.phone-pad-game #phone-touch-note{display:none}
.phone.menu-open #game,.phone.reward-open #game,.phone.intro-open #game{top:0;height:100%;border:0}
.phone.menu-open #phone-hud,.phone.reward-open #phone-hud,.phone.intro-open #phone-hud,.phone.menu-open #phone-world-hud,.phone.reward-open #phone-world-hud,.phone.intro-open #phone-world-hud,.phone.menu-open #phone-pad,.phone.reward-open #phone-pad,.phone.intro-open #phone-pad,.phone.menu-open #phone-touch-note,.phone.reward-open #phone-touch-note,.phone.intro-open #phone-touch-note{visibility:hidden}
.phone .overlay{padding:20px 26px;align-items:flex-start;background:linear-gradient(90deg,#112930fa,#112930c7 47%,#11293000 74%)}
.phone .menu-copy{width:48%;padding:12px 0}.phone .menu h2{font-size:40px}.phone .menu-copy>p{font-size:16px;line-height:1.4;max-width:390px}.phone .tonight-docket>small{font-size:12px;letter-spacing:.8px}.phone #tonight-jobs span{font-size:14px!important}.phone .primary{min-height:52px;font-size:17px;max-width:360px;padding:12px 18px}.phone .ledger-trigger,.phone .secondary{font-size:15px;min-height:46px;margin-top:8px}
.phone .menu-controls.field-tip{display:block}.phone .field-tip small{font-size:12px;letter-spacing:.7px}.phone .field-tip>span,.phone .milestone .field-tip>span{font-size:15px;line-height:1.45}
.phone .phone-options{display:flex;justify-content:center;gap:10px;margin-top:10px}.phone-options button{font:14px Georgia;min-height:46px;padding:10px 14px;border:1px solid #a88f5d;background:#284540;color:#e3ca95}
.phone .generator{position:fixed;left:50%;right:auto;top:50%;width:min(560px,calc(100% - 48px));max-height:calc(var(--phone-height) - 30px);transform:translate(-50%,-50%);padding:20px;z-index:12}
.phone .generator label,.phone .generator-note,.phone .difficulty-details,.phone .seed-help,.phone .replay-message{font-size:14px;line-height:1.4;letter-spacing:0}.phone .generator input{font-size:16px}.phone .generator button:not(.primary){font-size:14px;min-height:46px}.phone .seed-row{grid-template-columns:1fr 80px}
.phone .goal-intro{padding:18px 5%;align-items:flex-start;overflow:auto;background:#112c32ed;pointer-events:auto}.phone .goal-card{width:100%;max-width:760px;margin:auto;position:relative;padding-right:145px}.phone .goal-card h2{font-size:30px;margin:12px 0}.phone .goal-card>small{font-size:13px;letter-spacing:.4px}.phone .goal-card>p{font-size:16px;line-height:1.5;max-width:none}.phone #goal-count{position:absolute;right:0;top:55px;width:100px;height:100px;font-size:64px;margin:0}.phone #goal-count:empty{display:none}.phone #goal-ready{margin:16px 0}.phone .goal-card .field-tip{max-width:560px}
.phone .milestone{position:absolute;inset:14px 5%;max-width:none;width:auto;transform:none;padding:18px 24px;overflow:auto;pointer-events:auto;display:flex;flex-direction:column;align-items:center;justify-content:center}.phone .milestone strong{font-size:30px;margin:10px 0}.phone .milestone>span{font:16px/1.5 Georgia;max-width:760px}.phone .milestone small{font-size:12px;letter-spacing:.7px}.phone #bonus-ready{margin-top:16px;width:280px}.phone #bonus-count:empty{display:none}.phone #bonus-count{font:68px Georgia;margin:5px}
.phone .milestone.counting .field-tip,.phone .milestone.counting #milestone-detail{display:none}
.phone .reward-screen{padding:20px 5%;overflow:auto;align-items:flex-start;background:linear-gradient(90deg,#112b3210,#112b32eb 60%)}.phone .reward-card{margin-left:47%;max-width:50%;width:50%;text-align:left}.phone .reward-card h2{font-size:32px}.phone .reward-count{font-size:55px}.phone .reward-card>p,.phone .reward-flavor{font-size:16px;line-height:1.4}.phone .reward-badges span{font-size:14px}.phone .reward-badges{justify-content:flex-start}
.phone #controls-dialog{width:min(660px,calc(100% - 36px));max-height:calc(var(--phone-height) - 24px);padding:20px}.phone #controls-dialog h2{font-size:28px}.phone #controls-dialog p{font-size:16px;line-height:1.5}.phone .key-guide{display:none}.phone .touch-help{display:block}
#route-dialog{width:min(860px,calc(100% - 36px));max-height:calc(100svh - 24px);overflow:auto;padding:16px 22px;background:#19363b;border:3px double #c4a368;color:#e9d3a5}#route-dialog::backdrop{background:#0a202bd9}#route-dialog h2{font-size:28px;margin:8px 0}#route-dialog p{font-size:15px;margin:8px 0}#route-canvas{display:block;width:100%;height:min(43vh,280px);object-fit:contain;background:#102b30}.route-legend{color:#87ddc9}.route-legend span{color:#ebcb88;margin-left:16px}#route-close{margin:12px 0 0}
@media(max-width:700px){.phone-vitals{min-width:65px;display:block}.phone-vitals span{display:block;margin-top:2px}.phone #phone-hud{gap:8px}.phone .phone-mission small{display:none}.phone .phone-mission p{font-size:14px}.phone .mobile-controls>div{gap:8px}.phone .mobile-controls button,.phone .mobile-controls .sneak{width:54px;height:54px;font-size:12px}.phone .mobile-controls .movement [data-control=left],.phone .mobile-controls .movement [data-control=right]{width:58px;height:58px}.phone .mobile-controls .jump{width:68px;height:68px}.phone .goal-card{padding-right:115px}.phone .menu-copy{width:52%}.phone .menu-copy>p{font-size:15px}}

.phone .milestone.arrive{animation:none}
.phone .milestone{justify-content:flex-start}
.phone .milestone>*{flex-shrink:0}
.phone .milestone.counting{justify-content:center}
.phone .menu-copy{display:flex;flex-direction:column}
.phone .makers-seal{display:none}
.phone #menu-eyebrow{order:-5}
.phone #menu-title{order:-4}
.phone #menu-text{order:-3}
.phone #play{order:-2;margin-top:8px}

/* The complete 6 × 6 confectionery board gets the full height below one slim instrument bar. */
.phone.match-three{--phone-top:calc(48px + env(safe-area-inset-top));--phone-bottom:calc(4px + env(safe-area-inset-bottom))}
.phone.match-three #phone-hud{height:48px}
.phone.match-three #phone-hud button{width:44px;height:44px}
.phone.match-three #phone-touch-note{display:none}
.phone.match-three .phone-mission small{display:none}

/* Portrait is a separate city journey, sharing the cat and the arcade engines. */
#portrait-ui{display:none}
.portrait-mode .game-shell>:not(#game):not(#portrait-ui):not(#graphics-error):not(#screen-notice):not(#install-dialog){display:none!important}
.portrait-mode .quest-rail,.portrait-mode .below{display:none!important}
.phone.portrait-mode #game{left:env(safe-area-inset-left);top:calc(86px + env(safe-area-inset-top));width:calc(100% - env(safe-area-inset-left) - env(safe-area-inset-right));height:calc(100% - 198px - env(safe-area-inset-top) - env(safe-area-inset-bottom));border:0}
.phone.portrait-mode.portrait-board #game{top:calc(86px + env(safe-area-inset-top));height:calc(100% - 152px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}
.portrait-mode #portrait-ui{display:block;position:absolute;inset:0;z-index:10;pointer-events:none;color:#f2dba9}
#portrait-ui button,#portrait-ui input,#portrait-ui summary{touch-action:manipulation}
.portrait-head{position:absolute;top:env(safe-area-inset-top);left:12px;right:12px;height:80px;display:flex;gap:10px;align-items:center;pointer-events:auto;background:#17353b}
.portrait-head>div:first-child{flex:1;min-width:0}.portrait-head b{display:block;font:bold 16px Georgia;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.portrait-head span{display:block;font:14px/1.3 Georgia;color:#c2d1b4;margin-top:5px}
.portrait-tally{text-align:right}.portrait-tally strong{font:18px Georgia}.portrait-tally span{white-space:nowrap}
#portrait-pause{width:48px;height:48px;flex:none;border:2px solid #b49c66;border-radius:50%;background:radial-gradient(#42655d,#19383c);font:24px Georgia}
.portrait-progress{position:absolute;bottom:0;left:0;right:0;height:4px;background:#2d4846}.portrait-progress i{display:block;height:100%;background:#e4c482;box-shadow:0 0 8px #d0b98466}
#portrait-prompt{position:absolute;top:calc(95px + env(safe-area-inset-top));left:50%;transform:translateX(-50%);font:bold 20px Georgia;border:1px solid #d4b477;background:#193c3df0;padding:8px 16px;border-radius:4px;color:#ffe2a1}
#portrait-controls{position:absolute;bottom:calc(8px + env(safe-area-inset-bottom));left:12px;right:12px;height:94px;pointer-events:auto;text-align:center}
#portrait-controls small{display:block;font:12px/1.3 Georgia;color:#bed0b3;margin:4px 0 10px}
#portrait-controls>div{display:flex;justify-content:space-between;align-items:center;gap:8px}
#portrait-controls button{width:60px;height:60px;border:2px solid #b89b60;border-radius:50%;font:bold 14px Georgia;background:radial-gradient(circle at 35% 20%,#4e7365,#173639 74%);box-shadow:inset 0 0 0 3px #203b38,0 4px #071c25;touch-action:none}
#portrait-controls [data-dash=left],#portrait-controls [data-dash=right]{font-size:28px}
#portrait-controls [data-dash=jump]{width:76px;height:70px;border-radius:22px;background:linear-gradient(#e6cf99,#b08a4e);color:#16323b;text-shadow:0 1px #ead5a3}
#portrait-pad{position:absolute;bottom:calc(5px + env(safe-area-inset-bottom));left:16px;right:16px;height:56px;border:1px solid #b99a60;background:#254642;text-align:center;padding:10px;color:#f0dba6;pointer-events:auto;touch-action:none;font:16px Georgia}
#portrait-pad i{display:block;width:100px;height:5px;background:#c5a366;border-radius:4px;margin:9px auto}
#portrait-board-help{position:absolute;bottom:calc(5px + env(safe-area-inset-bottom));left:14px;right:14px;min-height:56px;display:flex;align-items:center;justify-content:center;gap:10px;font:14px/1.3 Georgia;color:#c4d7b9;text-align:center}
#portrait-swap{pointer-events:auto;flex:none;width:64px;height:48px;font:bold 14px Georgia;background:#294b45;border:1px solid #c5a365;border-radius:8px}
#portrait-card{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:calc(16px + env(safe-area-inset-top)) 18px calc(16px + env(safe-area-inset-bottom));background:#0a263097;pointer-events:auto;overflow:auto}
.portrait-panel{width:100%;max-width:450px;max-height:100%;overflow:auto;padding:23px;background:linear-gradient(140deg,#294d4cf7,#102e38fc);border:3px double #c9ac70;box-shadow:0 0 0 5px #17373c,0 16px 70px #071925b0;text-align:center}
.portrait-panel>small{font:12px Georgia;letter-spacing:1px;color:#d3b676}.portrait-panel h2{font:32px/1.1 Georgia;letter-spacing:-.8px;margin:13px 0;color:#f3d8a1}
.portrait-panel>p{font:16px/1.5 Georgia;color:#d1ddc1;margin:14px 0}.portrait-panel .portrait-tip{font-size:14px;font-style:italic;padding-top:12px;border-top:1px solid #a993604a;color:#bfccb0}
#portrait-ui .primary{font-size:17px;min-height:52px;width:100%;margin-top:16px;justify-content:center}
#portrait-ui .secondary{font-size:15px;min-height:44px;margin-top:10px;padding:8px}
#portrait-count{display:block;font:82px/1 Georgia;margin:24px auto;color:#ffe4ab;text-shadow:0 4px #715b36}
#portrait-card.counting .portrait-tip,#portrait-card.counting #portrait-detail,#portrait-card.counting .portrait-audio,#portrait-card.counting .portrait-orientation{display:none}
.portrait-panel .portrait-orientation,.portrait-orientation{font:13px/1.4 Georgia!important;color:#aabdac!important;margin:14px 0 0!important}
.portrait-audio{display:flex;justify-content:center;gap:10px;margin-top:16px}.portrait-audio button{border:1px solid #ad945c;background:#25453f;min-height:44px;font:14px Georgia;padding:8px 13px}
#portrait-reward{font-size:32px;letter-spacing:8px;color:#e7c17f;margin:12px 0}#portrait-reward:empty{display:none}
#portrait-map-screen{position:absolute;inset:0;overflow:auto;pointer-events:auto;padding:calc(26px + env(safe-area-inset-top)) 18px calc(28px + env(safe-area-inset-bottom));background:linear-gradient(#102b33ef,#143437e8),url('./assets/clockwork-city.webp') center/cover}
.journey-heading{max-width:460px;margin:auto;text-align:center}.journey-heading>small{font:12px Georgia;letter-spacing:1.4px;color:#cbae70}.journey-heading h2{font-size:35px;letter-spacing:-1px;margin:16px 0}.journey-heading>p{font:16px/1.5 Georgia;color:#c7d5b9;margin:12px 0}
#portrait-save-status{display:block;font:12px/1.4 Georgia;color:#a4c5b1;margin:14px 0 8px}
#journey-map{position:relative;width:100%;max-width:420px;height:960px;margin:32px auto 10px}
#journey-map>svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}#journey-map path{fill:none;stroke:#cbb177;stroke-width:5;stroke-dasharray:5 6;stroke-linecap:round;opacity:.65}
.journey-stop{position:absolute;transform:translate(-50%,-30px);width:168px;min-height:78px;display:flex;align-items:center;flex-direction:column;border:0;background:transparent;padding:0;color:#dfceaa;gap:4px}
.journey-stop:active{transform:translate(-50%,-28px)}.journey-stop>b{display:grid;place-items:center;width:53px;height:53px;border:3px double #bea16b;border-radius:50%;background:radial-gradient(#4b7165,#17323a);font:bold 23px Georgia;box-shadow:0 4px 0 #0d252a}
.journey-stop.next>b{background:linear-gradient(#f3d694,#b58d4f);color:#173638;box-shadow:0 0 0 5px #d7b46830,0 4px 0 #4a3d28}
.journey-stop.complete>b{background:radial-gradient(#67a98a,#1e5a4d);color:#ffe3a2}.journey-stop>span{font:14px/1.2 Georgia;text-shadow:0 2px 4px #00161d;padding:3px 6px;background:#173738f0;border-radius:3px}
.journey-stop>small{font:12px Georgia;max-width:165px;text-align:center;background:#173738dd;padding:2px 4px}.journey-stop:disabled{opacity:.52}
.journey-settings{max-width:420px;margin:15px auto 0;padding:16px;background:#112f37e8;border:1px solid #a88e5c;color:#d8c69c;font:15px Georgia}.journey-settings summary{min-height:32px;font-size:16px;cursor:pointer}.journey-settings label{display:block;font-size:14px;margin:15px 0}.journey-settings input{font-size:16px;min-height:44px}.journey-settings input[type=range]{height:32px}.journey-settings p{font:14px/1.45 Georgia;color:#bdcdb2}
@media(max-width:350px){.portrait-panel{padding:18px}.portrait-panel h2{font-size:29px}#portrait-controls button{width:56px;height:56px}#portrait-controls [data-dash=jump]{width:68px;height:65px}.portrait-head{gap:7px}.portrait-head b{font-size:15px}.portrait-head span{font-size:13px}}

/* Copper, leather and porcelain: shared finish for every game instrument. */
html,body{overscroll-behavior:none}
.game-shell{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:var(--ink)}
.game-shell input,.game-shell textarea{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
#game,.mobile-controls,#thumbstick,#phone-pad,#portrait-controls,#portrait-pad{touch-action:none}
#portrait-map-screen,.portrait-panel,.generator,#controls-dialog,#route-dialog{overscroll-behavior:contain}
button{transition:background .15s,box-shadow .15s,filter .15s,transform .12s;-webkit-tap-highlight-color:transparent}
button:focus-visible,input:focus-visible,#thumbstick:focus-visible{outline-color:var(--emerald)}
.cabinet-frame{border-color:#332827;border-radius:18px;box-shadow:inset 0 0 0 1px #b57e5d,inset 0 0 0 4px #17171d,inset 0 0 0 5px #6f5143}
.topbar{background:linear-gradient(#17171de6,transparent)}
.overlay{background:linear-gradient(90deg,#17171dfa,#211b25b0 38%,#17171d00 72%)}
.phone .overlay{background:linear-gradient(90deg,#17171dfc,#211b25e3 47%,#17171d00 78%)}
h2,.menu h2,.portrait-panel h2{color:var(--ivory);text-shadow:0 2px 0 #61402f,0 6px 25px #08070bb0}
.menu-copy>p,.portrait-panel>p,.goal-card>p,.reward-card>p,.journey-heading>p{color:#d5c9be}
.menu-copy:before,.menu-copy:after{border-color:#c48b6270}
.makers-seal{background:repeating-conic-gradient(#b87f57 0 8deg,#242127 8deg 15deg);box-shadow:0 0 0 2px #b98059,0 0 0 5px #17171d}
.makers-seal span{background:radial-gradient(#56403a,#242127);border-color:#d29b71;color:var(--ivory)}
#tonight-jobs span{background:#262127bc;border:1px solid #a671504d;border-radius:30px;color:#e6c4a6}
.primary,#portrait-ui .primary{border:1px solid #f0c39c;border-radius:999px;background:linear-gradient(170deg,#f1c7a3,#dca078 62%,#c18a63);color:#2a1d18;text-shadow:0 1px #ffe0bd;box-shadow:inset 0 2px 0 #ffe7c8a0,inset 0 -2px 0 #ad704f,0 4px 0 #684630,0 7px 18px #08070b70}
.primary>span{border-left:0;padding-left:8px;color:#67452e}
.primary:hover{filter:brightness(1.07)}
.primary:active,#portrait-ui .primary:active{transform:translateY(3px);box-shadow:inset 0 2px 5px #75442945,0 1px 0 #684630}
.secondary,.ledger-trigger,.controls-help,.generator button:not(.primary),.phone-options button,.portrait-audio button,#portrait-ui .secondary{border:1px solid #ad775350;border-radius:999px;background:#2b252bd9;color:#ecd0b7;padding:10px 16px;box-shadow:inset 0 1px 0 #d3a78320,0 2px 5px #08070b33}
.secondary,.ledger-trigger{font-size:14px;letter-spacing:0}
.secondary:hover,.ledger-trigger:hover,.controls-help:hover{background:#3b2e32;border-color:#d89a6b}
.generator,#controls-dialog,#route-dialog,.portrait-panel,.journey-settings{border:1px solid #bb805a90;border-radius:22px;background:linear-gradient(145deg,#32292ff7,#1b191ffc);box-shadow:inset 0 1px 0 #edb68730,0 18px 55px #08070bb0;color:var(--ivory)}
.generator input,.journey-settings input,input:not([type=range]){border:1px solid #98755e7a;border-radius:12px;background:#15151c;color:#f4dfc9}
input[type=range]{accent-color:var(--copper)}
.stats{gap:8px}.stats>div{border:1px solid #ad77537a;border-radius:15px;background:linear-gradient(#342a30e8,#1d1b22f5);box-shadow:inset 0 1px 0 #e9b28622,0 4px 10px #08070b40}
.stats strong,.stats small{color:var(--ivory)}
.quest-guide,.roadster-route,.milestone,.alarm-meter,.quest-rail .combo{border-color:#b9825c80;border-radius:18px;background:linear-gradient(145deg,#30272feb,#19191ff2);box-shadow:inset 0 1px 0 #e0ad7e22,0 5px 20px #08070b50}
.quest-guide .objective p{color:var(--ivory)}
.context-prompt,.interaction-nudge,#portrait-prompt,.phone #phone-waypoint{border-color:#bd875f;border-radius:999px;background:#262028f0;color:#ffe4c7}
.interaction-nudge kbd{border-radius:7px;background:#d7a078;color:#231a19}
.goal-intro{background:linear-gradient(90deg,#17171df0,#241b29c2 40%,transparent 70%)}
.phone .goal-intro{background:#1b181ff2}
#goal-count{border-color:#d59f75;background:radial-gradient(#5d423b,#282029);box-shadow:0 0 0 5px #1b1920,inset 0 0 0 4px #35282b;color:#ffe7cd}
.reward-screen{background:linear-gradient(90deg,#17171d00,#211a26df 55%,#17171df2)}
.phone .reward-screen{background:linear-gradient(90deg,#17171d00,#211a26ed 60%)}
.reward-badges span{border-radius:999px;border-color:#be8a6370;background:#32272d;color:#e6c8ae}
.phone,.phone .game-shell{background:#17171d}
.phone #game{border-color:#765443}
.phone #phone-hud,.portrait-head{background:#1d1b22;color:var(--ivory);border-radius:0 0 16px 16px}
.phone .phone-mission p,.portrait-head b{color:var(--ivory)}
.phone .phone-mission small,.phone-vitals span,.portrait-head span{color:#c9b9ab}
.icon-button,.mobile-pause,.phone #phone-hud button,#portrait-pause{border:1px solid #c3946d;border-radius:50%;background:radial-gradient(circle at 35% 15%,#59413b,#282129 73%);box-shadow:inset 0 1px 0 #e9bb903e,0 3px 0 #0f0e14;color:#f3dbc4}
.phone #phone-fullscreen{font-size:25px}
.phone-options,.portrait-audio{flex-wrap:wrap}
.home-screen-note,.portrait-panel .home-screen-note{font:13px/1.45 Georgia;color:#ac9e95;margin:14px auto;max-width:340px}
#portrait-card{background:#121017a8}
#portrait-card.counting .home-screen-note{display:none}
#portrait-ui{color:var(--ivory)}
#portrait-count{color:var(--ivory);text-shadow:0 4px #6e4535}
.portrait-progress{background:#352b32;border-radius:8px}.portrait-progress i{background:var(--emerald);box-shadow:0 0 10px #69b99555;border-radius:8px}
#portrait-map-screen{background:linear-gradient(#19151fe8,#211c27e8),url('./assets/clockwork-city.webp') center/cover}
.journey-heading>small,.journey-heading h2,.portrait-panel>small{color:#edc5a4}
#journey-map path{stroke:#c78e66}
.journey-stop>b{border-color:#c99770;background:radial-gradient(#554039,#252029);color:#f5dcc4;box-shadow:inset 0 1px 0 #efc39f40,0 4px 0 #100e15}
.journey-stop.next>b{background:linear-gradient(#edc6a1,#bf8057);color:#291c18;box-shadow:0 0 0 5px #d59e7027,0 5px 0 #62412c}
.journey-stop.complete>b{background:radial-gradient(#488c72,#244f42);border-color:#88caaa;color:#e6f4da}
.journey-stop>span,.journey-stop>small{background:#221d28ed;color:#d6c0ae;border-radius:9px}
#phone-pad,#portrait-pad{border-radius:18px;border-color:#b3805d8a;background:linear-gradient(#3b2e33,#242028);color:#e7c6aa}
.phone #phone-pad{border-radius:14px;background:linear-gradient(#3b2e33,#242028);border-color:#a8795680;color:#e7c6aa}
#phone-pad i,#portrait-pad i{background:#d6a27c}
#portrait-swap{border-radius:999px;border-color:#bf8a64;background:#3b2c32;color:#f3d5b9}
#portrait-board-help{color:#d0bfb1}
.mobile-controls button,.phone .mobile-controls button,#portrait-controls button{border:1px solid #c08c65;border-radius:50%;background:radial-gradient(circle at 35% 15%,#59413b,#282129 73%);color:#f4dcc4;box-shadow:inset 0 1px 0 #edc29c50,0 4px 0 #100e14}
.mobile-controls .jump,.phone .mobile-controls .jump,#portrait-controls [data-dash=jump]{border-radius:50%;background:linear-gradient(150deg,#f0c8a3,#c38960);color:#281b17;border-color:#f1c8a0;box-shadow:inset 0 2px 0 #ffe5c180,0 4px 0 #62412c;text-shadow:0 1px #f6d7b2}
.mobile-controls .slash,.phone .mobile-controls .slash{background:radial-gradient(circle at 35% 15%,#774652,#3c2530 75%);border-color:#b57876;color:#ffddd4}
.mobile-controls [data-control=action],.phone .mobile-controls [data-control=action]{background:radial-gradient(circle at 35% 15%,#477763,#233d36 75%);border-color:#79b093;color:#e3ecd7}
.mobile-controls button.held,.phone .mobile-controls button.held,#portrait-controls button:active{transform:translateY(3px);filter:brightness(1.15);box-shadow:inset 0 2px 5px #0006,0 1px #100e14}
.mobile-controls [data-control=left],.mobile-controls [data-control=right]{display:none}
/* The deck passes touches through its empty space; the stick must opt in,
   just like the action buttons. Its decorative pieces are never hit targets. */
#thumbstick{position:relative;width:126px;height:78px;flex:none;border-radius:40px;cursor:grab;background:linear-gradient(#30252c,#1c1921);border:1px solid #815b4599;box-shadow:inset 0 2px 9px #0b090f80,0 1px 0 #c69b6a26;pointer-events:auto;touch-action:none;outline-offset:3px}
#thumbstick *{pointer-events:none}
.stick-track{position:absolute;inset:8px 28px;border-radius:50%;border:1px solid #b4875f7a;background:radial-gradient(#19161c,#3b2b2b);box-shadow:inset 0 2px 7px #0007}
.stick-track:before,.stick-track:after{content:'';position:absolute;top:25px;width:7px;height:7px;border-top:1px solid #c19875;border-right:1px solid #c19875}
.stick-track:before{left:-18px;transform:rotate(-135deg)}.stick-track:after{right:-18px;transform:rotate(45deg)}
.stick-knob{position:absolute;left:calc(50% - 25px);top:13px;width:50px;height:50px;display:grid;place-items:center;border-radius:50%;border:2px solid #dbad81;background:radial-gradient(circle at 35% 20%,#e4bb8f,#a96f4b 68%,#704933);box-shadow:inset 0 2px 0 #fce2bf65,0 4px 7px #0009;transform:translateX(var(--stick-x,0px));transition:transform .12s}
.stick-knob i{width:25px;height:25px;border:1px solid #875537;border-radius:50%;background:radial-gradient(#604332,#32272a);box-shadow:inset 0 1px 4px #08070b66}
#thumbstick.held{cursor:grabbing;border-color:#d1a27b}#thumbstick.held .stick-knob{transition:none;filter:brightness(1.08)}
.roadster-driving #thumbstick{display:none}
#screen-notice{position:absolute;z-index:40;left:50%;top:calc(12px + env(safe-area-inset-top));transform:translateX(-50%);width:min(430px,calc(100% - 40px));padding:14px 20px;border:1px solid #c88b63;border-radius:18px;background:#29212bf7;color:#f4dec9;font:15px/1.5 Georgia;box-shadow:0 6px 25px #0007;pointer-events:none;text-align:center}
@media(max-width:350px){#portrait-controls [data-dash=jump]{border-radius:50%}.portrait-audio button{padding:8px 11px}}
@media(display-mode:fullscreen),(display-mode:standalone){.home-screen-note{display:none!important}}
@media(prefers-reduced-motion:reduce){button,.stick-knob{transition:none}}

/* Home-screen installation is only offered in paused menus and the city map. */
.install-button,#portrait-ui .install-button{min-height:46px;margin:14px auto 0;padding:10px 18px;font:15px/1.3 Georgia;touch-action:manipulation;pointer-events:auto}
.install-button>span{color:var(--copper);margin-right:5px}
#portrait-card.counting .install-button{display:none}
#install-dialog{width:min(430px,calc(100vw - 32px));max-height:calc(100svh - 24px);padding:26px;border:1px solid #bb805a90;border-radius:24px;background:linear-gradient(145deg,#32292ffc,#1b191f);color:var(--ivory);box-shadow:inset 0 1px 0 #edb68730,0 18px 55px #08070bb0;overflow:auto;overscroll-behavior:contain;pointer-events:auto}
#install-dialog::backdrop{background:#100c14c4;backdrop-filter:blur(6px)}
#install-dialog h2{font:30px/1.1 Georgia;margin:14px 0}
#install-dialog p,#install-dialog li{font:16px/1.5 Georgia;color:#e0ccc0}
#install-dialog ol{padding-left:24px;margin:18px 0}
#install-dialog li{padding-left:5px;margin:12px 0}
#install-dialog li::marker{color:#dda27a;font-weight:bold}
#install-dialog .install-note{font-size:13px;color:#b8a8a1}
#install-dialog .primary{width:100%;min-height:46px;justify-content:center;margin:18px 0 0}

/* Arcade cabinet levers: shared by touch and keyboard play. */
.cabinet-tools{position:absolute;z-index:24;left:50%;bottom:max(16px,env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;gap:9px;padding:9px;border:1px solid var(--gold,#bca079);border-radius:24px;background:color-mix(in srgb,var(--panel,#26312e) 92%,transparent);box-shadow:0 5px 20px #0005;touch-action:none;user-select:none}
.cabinet-tools button{min-width:88px;min-height:48px;padding:9px 13px;border:1px solid #c6a27380;border-radius:16px;background:#314e42;color:#f6dfb9;font:bold 14px Georgia;touch-action:none}
.cabinet-tools button[aria-pressed=true]{background:#dcc193;color:#242d28;box-shadow:0 0 0 2px #fbe6bd55}
.cabinet-tools button:disabled{opacity:.5}.cabinet-tools button:focus-visible{outline:3px solid #fff4c9;outline-offset:3px}
.portrait-mode .cabinet-tools{position:fixed;bottom:max(14px,env(safe-area-inset-bottom));gap:6px;padding:7px;max-width:96vw}
.portrait-mode .cabinet-tools button{min-width:82px;padding:10px 9px}
.startup-seal{letter-spacing:-.08em}.makers-seal>span{letter-spacing:-.07em}
