@font-face{font-family:'DM Sans';font-style:normal;font-weight:400 700;font-display:swap;src:url('./fonts/dm-sans.woff2') format('woff2')}@font-face{font-family:'Fraunces';font-style:normal;font-weight:600 800;font-display:swap;src:url('./fonts/fraunces.woff2') format('woff2')}
:root{--ink:#273b36;--green:#254d3d;--paper:#f5eddf;--coral:#ec7858;--muted:#7e8070}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid #e56c4e;outline-offset:3px}button:disabled{opacity:.48;cursor:default}[hidden]{display:none!important}.masthead{max-width:1400px;margin:auto;height:86px;display:flex;align-items:center;gap:12px;padding:0 44px}.studio{font-size:12px;letter-spacing:2px;font-weight:700;color:var(--ink);text-decoration:none;display:flex;gap:10px;align-items:center}.footprint{font-size:24px;transform:rotate(-25deg)}.edition{font-size:9px;letter-spacing:2px;margin-left:auto;margin-right:20px;color:#778072}.icon-button{border:1px solid #d8d8c8;background:transparent;width:36px;height:36px;border-radius:50%;color:var(--green);font-size:18px}.layout{display:flex;align-items:center;justify-content:center;gap:56px;max-width:1280px;margin:auto;padding:8px 32px 22px}.editorial{width:260px;flex:none}.eyebrow{font-size:9px;font-weight:700;letter-spacing:2px;line-height:1.6}h1{font-family:Fraunces,Georgia,serif;font-size:62px;line-height:.98;letter-spacing:-3px;margin:24px 0 20px}h1 span{color:var(--coral);font-size:90px;font-weight:800}.tagline{font-size:15px;line-height:1.65;color:#737d6e}.paper-note{position:relative;background:#efe3c7;border:1px solid #e4d5b6;padding:24px 25px;margin:32px 20px 35px 0;transform:rotate(-4deg);box-shadow:2px 4px 0 #e4ddce}.paper-note b{font-family:Fraunces,serif;font-size:20px}.paper-note p{font-size:13px;line-height:1.5;margin-bottom:0}.note-pin{position:absolute;width:11px;height:11px;border-radius:50%;background:var(--coral);top:8px;left:45%;box-shadow:1px 2px 0 #aab094}.scribble{position:absolute;right:16px;bottom:14px;font-size:40px;transform:rotate(20deg);color:#7e8c71}.desktop-instructions{display:grid;grid-template-columns:30px 1fr;gap:0 8px}.desktop-instructions>span{font-size:10px;color:var(--coral);padding-top:12px;font-weight:700}.desktop-instructions p{font-size:11px;line-height:1.65;margin:8px 0;color:#7c8376}.desktop-instructions b{color:var(--ink);font-size:12px}.made-by{font-size:9px;color:#929783;margin-top:24px}#game-shell{position:relative;width:min(480px,calc((100svh - 132px)*2/3));aspect-ratio:2/3;flex:none;border-radius:25px;overflow:hidden;background:#dce9d6;border:5px solid #fffaf0;box-shadow:0 0 0 1px #d9dfce,0 18px 60px #354e3618;touch-action:none;user-select:none}canvas{width:100%;height:100%;display:block;outline:none}.side-note{width:130px;align-self:stretch;display:flex;flex-direction:column;align-items:center;padding:32px 0 20px}.vertical-word{writing-mode:vertical-rl;font-size:10px;letter-spacing:4px;font-weight:600;color:#9ba18d;height:215px}.daily-note{margin-top:auto;text-align:center}.sun-doodle{font-size:42px;line-height:1;color:#cfa86a}.daily-note b{display:block;font-family:Fraunces,serif;font-size:16px;margin-top:14px;line-height:1.3}.daily-note p{font-size:10px;line-height:1.6;color:#909480}.stamp{border:2px solid #a5ae92;border-radius:50%;height:85px;width:85px;margin-top:30px;display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(12deg);color:#889b7d;outline:1px solid #a5ae92;outline-offset:-6px}.stamp span{font-size:9px;letter-spacing:2px}.stamp b{font-size:12px;text-align:center;line-height:1.2}footer{display:flex;justify-content:space-between;max-width:1310px;margin:0 auto;padding:10px 44px 18px;font-size:9px;color:#939783;gap:12px}footer button{border:0;background:none;color:inherit;font-size:9px;padding:0}.footer-center{letter-spacing:2px}.screen{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.start-screen{display:flex;flex-direction:column;justify-content:space-between;padding:6% 8% 6%;pointer-events:none}.start-screen button{pointer-events:auto}.seal{border:1px solid #7e9982;border-radius:20px;padding:7px 15px;color:#62826c;font-size:8px;letter-spacing:2px}.mobile-title{font-family:Fraunces,Georgia,serif;font-size:48px;line-height:.9;letter-spacing:-2px;text-align:center;align-self:center;position:absolute;top:13%;color:#294936}.mobile-title em{font-size:68px;color:#dd7957;font-style:normal}.start-card{margin-top:auto;text-align:center;width:100%;background:#fff9ecf5;border:1px solid #e4dfc9;border-radius:18px;padding:20px 22px 17px;box-shadow:0 5px 0 #3047340a}.start-card .eyebrow{font-size:6.5px;letter-spacing:1.7px}.start-card h2{font-family:Fraunces,serif;font-size:26px;letter-spacing:-1px;margin:8px 0}.start-card p{font-size:11px;line-height:1.55;color:#798271;margin:8px 0 15px}.button{border:0;border-radius:11px;font-weight:700;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:14px 17px;font-size:13px;transition:transform .1s,background .12s;touch-action:manipulation}.button:not(:disabled):active{transform:translateY(2px)}.primary{background:var(--green);color:#fff9e9;box-shadow:0 3px 0 #193a2d}.primary:not(:disabled):hover{background:#34634b}.secondary{background:#f4ead4;color:#3f614c;box-shadow:inset 0 0 0 1px #d8d8be}.large{width:100%;margin-top:10px}.daily{background:transparent;color:#718469;border:1px solid #d9decb;margin-top:12px;width:100%;padding:12px 9px;gap:6px;font-size:10px}.daily small{font-size:5.5px;letter-spacing:.6px;max-width:55px;line-height:1.4}.start-tip{display:block;font-size:7px;margin-top:12px;color:#9a9e8d}.personal-best{font-size:9px;color:#a46c49;margin-top:9px}.hud-top{position:absolute;left:5%;right:5%;top:4%;display:flex;justify-content:space-between;pointer-events:none}.score-ticket,.bag-ticket{background:#fff9eee8;padding:10px 14px;border:1px solid #dddfc9;border-radius:10px;box-shadow:0 3px 0 #31492b08}.score-ticket span{display:block;font-size:7px;font-weight:700;letter-spacing:1px;color:#7d8e71}.score-ticket strong{font-family:Fraunces,serif;font-size:30px;font-weight:700;line-height:1.15}.bag-ticket{text-align:center}.bag-ticket strong{font-family:Fraunces,serif;font-size:23px;display:block}.bag-ticket span{font-size:6px;letter-spacing:.8px}.hud-bottom{position:absolute;left:5%;right:5%;bottom:3.2%}#hint{color:#61745c;font-size:10px;text-align:center;min-height:20px;font-weight:500;text-shadow:0 1px #ffffff70}.action-row{display:flex;gap:10px}.action-row .button{flex:1;padding:13px;font-size:12px}.result-screen,.pause-screen{background:#dce8d35e;backdrop-filter:blur(5px);padding:7%}.result-card,.pause-card{background:#fff9eb;border-radius:20px;padding:26px;width:100%;box-shadow:0 9px 40px #35493125;border:1px solid #e4dec7;text-align:center}.result-card h2,.pause-card h2{font-family:Fraunces,serif;font-size:30px;line-height:1.05;letter-spacing:-1px;margin:12px 0}.result-card p,.pause-card p{font-size:12px;color:#89917d;line-height:1.5}.receipt{background:#f4efdf;margin:18px 0 20px;padding:16px;border:1px dashed #d4d5bf;text-align:left;position:relative}.receipt-heading{font-size:7px;letter-spacing:2px;text-align:center;padding-bottom:14px}.receipt>div:not(.receipt-heading):not(.record){display:flex;justify-content:space-between;font-size:11px;margin:7px 0}.receipt-total{padding-top:14px;border-top:1px dashed #bbc7ac;align-items:center}.receipt-total span{font-size:8px!important;letter-spacing:1px;font-weight:700}.receipt-total strong{font:700 39px Fraunces,serif;color:#dc7956}.record{font-size:9px;letter-spacing:.5px;color:#a77347;text-align:center;min-height:12px;margin-top:8px}.result-links{display:flex;justify-content:space-around;margin-top:18px}.result-links button,.text-button{border:0;background:none;font-size:10px;color:#7c8c71;text-decoration:underline;text-underline-offset:3px;padding:4px}.share-status{font-size:9px!important;min-height:14px;margin:8px 0 0!important}#ride-controls{display:flex;align-items:center;justify-content:space-between;gap:12px}#ride-controls div{text-align:center;font-size:13px;color:#365540}#ride-controls small{display:block;font-size:8px;margin-top:6px}.steer{border:1px solid #bec9ae;background:#fff9e9e8;border-radius:13px;width:62px;height:53px;color:var(--green);font-size:23px;touch-action:none}.steer:active,.steer[aria-pressed="true"]{background:#254d3d;color:#fff9e9;box-shadow:inset 0 0 0 2px #8ca17a}#toast{position:absolute;top:21%;left:50%;transform:translateX(-50%);background:#fff9eeed;padding:9px 16px;border-radius:20px;color:#ba7448;font-weight:700;font-size:12px;white-space:nowrap;pointer-events:none}dialog{border:1px solid #d6dcc6;border-radius:18px;background:#fff9ec;color:var(--ink);max-width:460px;width:90%;padding:32px;box-shadow:0 20px 100px #283b3b50}dialog::backdrop{background:#23372d80}dialog h2{font-family:Fraunces,serif;font-size:28px}dialog p{font-size:13px;line-height:1.6;color:#73816d}.dialog-close{position:absolute;right:12px;top:8px;border:0;background:none;font-size:25px;color:#77876e}
@media(min-height:950px){#game-shell{width:480px}.layout{padding-top:24px}}
@media(max-width:1120px){.layout{gap:28px}.editorial{width:210px}h1{font-size:53px}h1 span{font-size:80px}.side-note{width:95px}.masthead{height:70px}#game-shell{width:min(480px,calc((100svh - 116px)*2/3))}}
@media(max-width:850px){.editorial,.side-note{display:none}.layout{padding:0 10px 12px}.masthead{height:54px;padding:0 18px;max-width:520px}.edition{display:none}.studio{margin-right:auto;font-size:10px}#game-shell{width:min(480px,calc((100svh - 94px)*2/3))}footer{max-width:520px;padding:0 18px 12px}.footer-center{display:none}}
@media(max-width:480px){body{background:#dce9d6}.masthead{height:48px}.layout{padding:0}#game-shell{width:min(100vw,calc((100svh - 48px)*2/3));border:0;border-radius:0;box-shadow:none}footer{display:none}.icon-button{width:30px;height:30px}.mobile-title{top:12%;font-size:44px}.mobile-title em{font-size:63px}.start-card{padding:17px 20px}.start-screen{padding-bottom:5%}.result-card{padding:22px}.result-card h2{font-size:27px}.result-card .eyebrow{font-size:8px}.start-card .eyebrow{font-size:6px}}
@media(max-height:600px) and (min-width:600px){.masthead{height:40px}.layout{padding:0 12px}.editorial,.side-note{display:none}#game-shell{width:calc((100svh - 50px)*2/3)}footer{display:none}.start-card{padding:10px}.mobile-title{font-size:27px;top:10%}.mobile-title em{font-size:37px}.start-card h2{font-size:18px}.start-card p{font-size:8px;margin:4px}.button{font-size:9px;padding:8px}.start-card .eyebrow,.start-tip{display:none}.daily{margin-top:6px;padding:6px}.result-card{padding:12px}.result-card h2{font-size:21px}.result-card p{font-size:9px}.receipt{padding:10px;margin:8px 0}.receipt-total strong{font-size:25px}.result-links{margin-top:8px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
#game-shell{container-type:inline-size}.layout{align-items:flex-start}.editorial{padding-top:8px}h1{font-size:54px;white-space:nowrap}.start-card{padding:4cqw 5cqw 3.5cqw}.start-card h2{font-size:6cqw}.start-card p{font-size:2.65cqw;margin:2cqw 0 3cqw}.start-card .eyebrow{font-size:1.55cqw}.start-card .button{font-size:3cqw;padding:3.3cqw 4cqw}.start-card .daily{font-size:2.3cqw;padding:2.7cqw 2cqw;margin-top:2.5cqw}.start-card .daily small{font-size:1.4cqw}.start-tip{font-size:1.7cqw;margin-top:2.5cqw}.personal-best{font-size:2.1cqw;margin-top:2cqw}.mobile-title{font-size:11cqw;top:12%}.mobile-title em{font-size:16cqw}.start-screen{padding-top:5%;padding-bottom:5%}.seal{font-size:1.8cqw;padding:1.8cqw 3.5cqw}.desktop-instructions p{margin:5px 0}.paper-note{margin-top:26px;margin-bottom:25px}

#finish-delivery{padding:10px 13px;font-size:12px;margin-top:8px}#ride-controls .steer{height:44px}#ride-controls small{margin-top:3px}.receipt>div:not(.receipt-heading):not(.record){gap:8px}

#ride-controls{gap:8px}#ride-controls #finish-delivery{margin:0;flex:1;justify-content:center;min-height:44px;font-size:12px;padding:9px}#ride-controls .steer{height:44px;width:50px;flex:none}.result-screen{overflow-y:auto;touch-action:pan-y}.result-card{max-height:100%;overflow-y:auto}#game-shell:has(.result-screen:not([hidden])){touch-action:pan-y}
@container(max-width:360px){.result-screen{padding:4%}.result-card{padding:12px}.result-card h2{font-size:22px;margin:8px 0}.result-card>p:not(.share-status){display:none}.receipt{padding:10px;margin:10px 0}.receipt-heading{display:none}.receipt>div:not(.receipt-heading):not(.record){font-size:10px;margin:4px 0}.receipt-total{padding-top:8px}.receipt-total strong{font-size:29px}.record{font-size:8px;margin-top:6px}.result-card .button{font-size:11px;padding:11px 13px;margin-top:8px}.result-links{margin-top:10px}.share-status{font-size:8px!important;min-height:12px;margin-top:4px!important}#hint{font-size:8px;min-height:16px}#ride-controls #finish-delivery{font-size:10px;gap:5px}}
/* The journey stays readable in every climate without covering the controls. */
#route-total{display:block;font-size:clamp(6px,1.85cqw,9px);font-weight:500;color:#7a805b;margin-top:3px;line-height:1.3}
#journey-info{display:flex;justify-content:space-between;align-items:center;gap:5px;background:#fff9eae8;border:1px solid #bec9ae99;border-radius:8px;padding:4px 7px;margin-bottom:4px;color:#385944;font-size:clamp(7px,2cqw,10px);pointer-events:none}
#journey-region{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#journey-distance,#journey-next{white-space:nowrap;flex:none}
#game-shell:has(#ride-controls:not([hidden])) #hint{background:#fff9eacf;border-radius:6px;margin-bottom:4px;padding:3px 4px;min-height:0;line-height:1.3;color:#456247}
#toast{max-width:92%;white-space:normal;text-align:center;line-height:1.4;width:max-content;font-size:clamp(8px,2.6cqw,12px)}
#toast[data-kind="journey"]{top:33%;border:1px solid #d7bd86;border-radius:12px;background:#fff8e8f5;color:#815a3c;box-shadow:0 3px 0 #294b3712;padding:8px 12px}
.receipt>.journey-summary{display:block!important;text-align:center;font-size:clamp(7px,2.1cqw,10px)!important;line-height:1.4;color:#74816c;margin-top:8px!important}
@container(max-width:360px){#journey-info{padding:3px 5px;gap:4px}#journey-next{font-size:7px}.receipt>.journey-summary{font-size:8px!important}}
#result-screen[data-failed="true"] #result-line{display:block;font-size:clamp(8px,2.5cqw,12px);line-height:1.4;margin:8px 0}
#journey-info{position:absolute;top:1.1%;left:5%;right:5%;padding:2px 7px;margin:0;line-height:1.2;border-radius:5px}
.score-ticket,.bag-ticket{padding:2.1cqw 3cqw}.score-ticket strong{font-size:7cqw}.score-ticket span{font-size:1.55cqw}.bag-ticket strong{font-size:6cqw}.bag-ticket span{font-size:1.35cqw}
#game-shell:has(#pause-screen:not([hidden])) #toast{visibility:hidden}
@container(max-width:360px){#game-shell:has(#ride-controls:not([hidden])) #hint{padding:1px 3px;margin-bottom:2px}}

/* Route tickets travel with a challenge even when a storefront embeds the game. */
.start-screen a{pointer-events:auto}.seal{text-decoration:none}#review-link{background:#fff9ecd9;font-weight:700}.start-card .friend-route{font-size:clamp(11px,2.6cqw,13px);min-height:32px;margin-top:1cqw;padding:6px 2px}.start-card .personal-best{margin-top:1cqw}
dialog{max-height:90svh;overflow-y:auto;touch-action:pan-y}dialog h2{margin:12px 0}dialog label{display:block;font-size:11px;font-weight:700;margin-bottom:7px}dialog textarea{display:block;resize:vertical;width:100%;min-height:96px;max-height:30svh;border:1px solid #bac8ad;border-radius:9px;background:#fffdf6;padding:12px;color:var(--ink);font:13px/1.5 'DM Sans',sans-serif;user-select:text;touch-action:auto}dialog textarea:focus-visible{outline:3px solid #e56c4e;outline-offset:2px}dialog textarea[aria-invalid="true"]{border-color:#b84a36}.form-status{font-size:11px;min-height:18px;margin:10px 0 0;line-height:1.4}#route-error{color:#9c492f}.share-actions{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}.share-actions .primary{flex:1}#share-message{font-size:12px}
@media(max-width:380px){dialog{padding:22px;width:94%}dialog h2{font-size:25px}dialog p{font-size:12px}.share-actions .button{font-size:12px;padding:12px}}
