@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(./nunito-latin-wght-normal-BzFMHfZw.woff2)format("woff2")}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:600;src:url(./fraunces-latin-600-normal-BFCDtZfi.woff2)format("woff2")}:root{--cream-50:#fffaf0;--cream-100:#f6f1e5;--cream-200:#ede5d3;--cream-300:#d9cfba;--sage-100:#e4e9d9;--sage-600:#5c6f50;--sage-800:#3e5038;--terra-100:#f5e3d6;--terra-500:#b86e50;--terra-700:#925037;--ink-600:#736650;--ink-800:#514633;--ink-900:#3e382b;--amber-500:#cf9c47;--color-page:var(--cream-100);--color-surface:var(--cream-50);--color-text:var(--ink-900);--color-muted:var(--ink-600);--color-border:var(--cream-300);--color-accent:var(--sage-800);--color-accent-hover:#536548;--color-selected:var(--terra-700);--color-error:#8d3e2f;--color-focus:#70442c;--color-energy:var(--amber-500);--text-small:.8125rem;--text-body:.9375rem;--text-base:1rem;--text-title:1.25rem;--text-heading:2rem;--text-display:2.75rem;color:var(--color-text);background:var(--color-page);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-family:Nunito Variable,Nunito,ui-rounded,system-ui,sans-serif;font-size:16px;font-weight:400;line-height:1.5}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button,a{touch-action:manipulation}button{color:inherit;cursor:pointer;background:0 0;border:0}button:disabled{cursor:not-allowed}button,a,summary,input{outline-offset:4px}:focus-visible{outline:3px solid var(--color-focus)}button:active:not(:disabled){transform:scale(.96)}a{color:var(--color-accent);text-underline-offset:3px;text-decoration-thickness:from-font}a:hover{color:var(--color-selected)}p,h1,h2,h3{margin:0}h1,h2,h3{text-wrap:balance;font-weight:600}h1,h2,h3,.brand{font-family:Fraunces,Georgia,serif}svg{vertical-align:middle;flex-shrink:0}.small{font-size:var(--text-small)}.muted{color:var(--color-muted)}.site-header{justify-content:space-between;align-items:center;gap:20px;max-width:1340px;margin:auto;padding:24px 36px 16px;display:flex}.brand{color:var(--color-text);font-size:var(--text-heading);align-items:center;gap:10px;font-weight:600;line-height:1.1;text-decoration:none;display:flex}.brand-note{font:400 var(--text-small)/1.5 "Nunito Variable", sans-serif;color:var(--color-muted);margin-top:4px;display:block}.header-actions{align-items:center;gap:16px;display:flex}.icon-button{border-radius:50%;justify-content:center;align-items:center;min-width:44px;min-height:44px;display:inline-flex}.icon-button:hover{background:var(--cream-200)}.wallet-button{min-height:44px;font-size:var(--text-body);color:var(--color-accent);border:1px solid #b4b99e;border-radius:12px;align-items:center;gap:9px;padding:11px 18px;font-weight:700;display:flex}.wallet-button:hover{background:var(--sage-100)}main{max-width:1340px;margin:auto;padding:16px 36px 0}.intro{text-align:center;padding:24px 0 28px}h1{font-size:var(--text-display);letter-spacing:-.035em;line-height:1.15}.intro p{color:var(--color-muted);font-size:var(--text-base);margin-top:10px}.play-layout{grid-template-columns:minmax(0,1fr) 330px;align-items:start;gap:28px;display:grid}.world{min-width:0;position:relative}.mode-row{justify-content:space-between;align-items:center;gap:12px;padding-inline:12px;display:flex}.mode-switch{background:var(--cream-200);border-radius:12px;gap:3px;padding:4px;display:flex}.mode-switch button{min-height:40px;font-size:var(--text-small);white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;gap:7px;padding:6px 15px;font-weight:700;display:flex}.mode-switch button[aria-pressed=true]{background:var(--color-surface);box-shadow:0 2px 3px #51463312}.mode-switch button:hover{color:var(--color-accent)}.network-dot{background:var(--sage-600);border-radius:50%;width:7px;height:7px}.world-note{color:var(--color-muted);font-size:var(--text-small)}.practice-banner{text-align:center;font-weight:700;font-size:var(--text-small);color:var(--color-selected);background:var(--terra-100);border-radius:6px;margin:12px 12px 0;padding:5px 8px}.town-scene{isolation:isolate;padding-bottom:24px;position:relative}.scene-canvas{position:relative}.town-art{width:100%;height:auto;display:block;overflow:visible}.scene-caption{font-size:var(--text-small);color:var(--color-muted);align-items:center;gap:7px;display:flex;position:absolute;top:2%;left:5%}.sun-dot{background:#c69348;border-radius:50%;width:9px;height:9px;box-shadow:0 0 0 4px #d6b57b26}.scene-message{text-align:center;min-height:24px;font-size:var(--text-body);color:var(--color-muted);margin-top:10px}.scene-message.is-event{color:var(--color-accent);font-weight:700}.scene-pin{min-width:44px;min-height:44px;font-size:var(--text-small);border-radius:9px;padding:0 11px;font-weight:700;transition:background-color .15s,color .15s;position:absolute;transform:translate(-50%)}.scene-pin span{background:var(--color-surface);border-radius:6px;padding:5px 9px;box-shadow:0 3px 8px #53492c18}.scene-pin.chosen span{color:var(--cream-50);background:#925037}.scene-pin:hover span{outline:2px solid var(--color-selected);outline-offset:2px}.scene-pin:active:not(:disabled){transform:translate(-50%)scale(.96)}.pin-bakery{top:83%;left:23.5%}.pin-park{top:76%;left:78%}.pin-square{top:91%;left:54%}.selection-halo{fill:none;stroke:#f8edc6;stroke-width:3px;stroke-dasharray:6 5;opacity:0}.is-selected .selection-halo{opacity:.9}.wheel-spokes{transform-origin:480px 291px;animation:24s linear infinite wheel-turn}.wheel-runner{animation:.65s ease-in-out infinite alternate hamster-run}.fireflies{animation:4s ease-in-out infinite alternate twinkle}.fountain-water,.oven-flames,.bulb-glow{opacity:0}.park-gathering,.square-gathering{opacity:0;transition:opacity .6s}.bread-delivery{opacity:.9}[data-event=bakery] .oven-opening{fill:url(#ovenFire)}[data-event=bakery] .oven-flames{opacity:1;animation:1.3s ease-in-out infinite alternate flicker}[data-event=bakery] .chimney-smoke{opacity:.7;animation:3s ease-out infinite smoke}[data-event=bakery] .bread-delivery{animation:10s ease-in-out both bread-walk}[data-event=park] .fountain-water{opacity:1;stroke-dasharray:8 8;animation:1s linear infinite flow}[data-event=park] .pool-ripples{transform-origin:747px 439px;animation:1.5s ease-in-out infinite alternate ripple}[data-event=park] .park-gathering,[data-event=square] .square-gathering{opacity:1}[data-event=square] .light-bulb{fill:#ffe5a2}[data-event=square] .bulb-glow{opacity:1}[data-event=square] .square-gathering{animation:1.4s ease-in-out infinite alternate celebrate}.mayor-desk{border-inline-start:1px solid var(--color-border);margin-top:2px;padding:21px 0 8px 24px}.energy-block{margin-bottom:25px}.energy-label{font-size:var(--text-body);justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.energy-label>span{align-items:center;gap:6px;font-weight:700;display:flex}.energy-label svg{color:#936a25}.energy-label strong{font-weight:700;font-size:var(--text-title);font-variant-numeric:tabular-nums}.energy-label strong span{font-size:var(--text-body);font-weight:400}.energy-meter{grid-template-columns:repeat(12,1fr);gap:5px;display:grid}.energy-meter>span{background:#e2dbc8;border-radius:3px;height:12px}.energy-meter>span.filled{background:var(--color-energy)}.choice-heading{margin-bottom:15px}h2{font-size:var(--text-title);letter-spacing:-.015em;line-height:1.3}.choice-heading>span{color:var(--color-muted);font-size:var(--text-small);margin-top:4px;display:block}.location-choices{gap:10px;display:grid}.location-choice{text-align:start;border:1px solid var(--color-border);border-radius:12px;align-items:center;gap:13px;min-width:0;padding:12px;transition:background-color .15s,border-color .15s;display:flex}.location-choice:hover:not(:disabled){background:#f0e9d9;border-color:#ac9677}.location-choice.selected{background:#f6e9da;border-color:#a86649}.location-symbol{color:#925b3d;background:#ebd8ba;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:45px;height:45px;display:flex}.symbol-park{color:#526d61;background:#dae4d8}.symbol-square{color:#896a30;background:#eee0b6}.choice-copy{flex:1;min-width:0}.location-name{font-size:var(--text-small);color:var(--color-muted);display:block}.location-title{font-weight:700;font-size:var(--text-body);margin-top:1px;line-height:1.4;display:block}.choice-check{width:18px;height:18px;color:var(--color-selected);flex-shrink:0;justify-content:center;align-items:center;display:flex}.order-area{margin-top:15px}.location-description{font-size:var(--text-small);color:var(--color-muted);margin-bottom:13px}.primary{background:var(--color-accent);color:var(--cream-50);width:100%;min-height:48px;font-size:var(--text-body);border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:13px 18px;font-weight:700;transition:background-color .15s,transform .15s;display:flex}.primary:hover:not(:disabled){background:var(--color-accent-hover)}.primary:disabled{color:#5c5543;background:#ddd8c7}.sign-disclosure{font-size:var(--text-small);color:var(--color-muted);margin-bottom:14px;line-height:1.6}.order-footnote{text-align:center;color:var(--color-muted);margin-top:10px;line-height:1.5}.order-area>.small{margin-bottom:10px}.chain-status{font-size:var(--text-small);color:var(--color-muted);align-items:center;gap:7px;min-height:44px;margin-top:17px;display:flex}.chain-status>span:nth-child(2){flex:1}.chain-status .icon-button{margin-inline-end:-10px}.status-dot{background:var(--sage-600);border-radius:50%;flex-shrink:0;width:7px;height:7px}.unavailable .status-dot{background:var(--color-error)}.connection-error,.error-note{font-size:var(--text-small);color:var(--color-error);overflow-wrap:anywhere;background:#f4e4d9;border-radius:8px;margin-top:12px;padding:12px}.text-button{color:var(--color-accent);text-underline-offset:3px;min-height:44px;font-size:var(--text-small);padding:8px 0;font-weight:700;text-decoration:underline}.pending-order{background:var(--sage-100);font-size:var(--text-body);border-radius:10px;padding:14px}.pending-title{align-items:center;gap:8px;margin-bottom:5px;display:flex}.pending-order p{margin-top:7px}.pending-order .text-button{padding-bottom:0}.practice-controls{border-top:1px solid var(--color-border);margin-top:18px;padding-top:18px}.secondary{width:100%;min-height:44px;font-size:var(--text-body);color:var(--color-accent);border:1px solid #a6af92;border-radius:9px;justify-content:center;align-items:center;gap:8px;padding:9px 12px;font-weight:700;display:flex}.secondary:hover{background:var(--sage-100)}.check-label{min-height:44px;font-size:var(--text-small);cursor:pointer;align-items:center;gap:10px;display:flex}.check-label input{accent-color:var(--color-accent);flex-shrink:0;width:18px;height:18px;margin:0}.town-records{grid-template-columns:1fr 1fr;gap:40px;margin-top:24px;padding-top:6px;display:grid}details{border-top:1px solid var(--color-border);min-width:0;scroll-margin-top:20px}summary{cursor:pointer;min-height:68px;font-size:var(--text-body);justify-content:space-between;align-items:center;gap:16px;font-weight:700;list-style:none;display:flex}summary::-webkit-details-marker{display:none}summary>span{align-items:center;gap:9px;display:flex}.summary-detail{color:var(--color-muted);font-weight:400;font-size:var(--text-small)}.disclosure-chevron{font-size:var(--text-title);margin-inline-start:6px;transition:transform .15s}details[open] .disclosure-chevron{transform:rotate(180deg)}.details-body{font-size:var(--text-body);max-width:70ch;padding:0 0 24px;line-height:1.6}.details-body>p{margin-bottom:14px}.details-body h3{font-size:var(--text-base);margin:22px 0 8px}.details-body h3:first-child{margin-top:0}.chain-facts{font-size:var(--text-small);font-variant-numeric:tabular-nums;margin:20px 0}.chain-facts>div{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:8px;display:grid}.chain-facts dt{color:var(--color-muted)}.chain-facts dd{text-align:end;margin:0}.contract-address{overflow-wrap:anywhere}.journal-list{margin:18px 0 0;padding:0;list-style:none}.journal-list li{border-top:1px solid #e4dcc9;padding:14px 0}.journal-list li>div{font-size:var(--text-small);justify-content:space-between;align-items:center;gap:10px;display:flex}.entry-kind{color:var(--color-accent);font-weight:700}.kind-practice{color:var(--color-selected)}.kind-local,.journal-list time{color:var(--color-muted)}.journal-list li p{font-size:var(--text-small);margin-top:5px}.empty-journal{text-align:center;color:var(--color-muted);padding:20px}.empty-journal p{margin-top:8px}footer{max-width:1340px;color:var(--color-muted);font-size:var(--text-small);justify-content:space-between;align-items:center;gap:12px;margin:24px auto 0;padding:22px 36px 30px;display:flex}footer>span:first-child{align-items:center;gap:7px;display:flex}.wallet-sheet{color:var(--color-text);background:var(--color-surface);border:0;border-radius:22px;width:min(420px,100% - 32px);max-height:85dvh;padding:22px;overflow:auto;box-shadow:0 22px 90px #3e382b30}.wallet-sheet::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#403b2b66}.sheet-heading{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.wallet-sheet p{font-size:var(--text-body);margin-bottom:14px}.wallet-sheet p.small{font-size:var(--text-small)}.wallet-row{width:100%;min-height:52px;color:var(--color-text);background:var(--cream-200);text-align:start;font-size:var(--text-body);border-radius:10px;align-items:center;gap:12px;margin-bottom:8px;padding:10px 12px;font-weight:700;text-decoration:none;display:flex}.wallet-row>span{flex:1}.wallet-row:hover{color:var(--color-text);background:#e3e5d4}.wallet-row:disabled{opacity:.6}.wallet-row img{object-fit:contain;border-radius:6px}.full-address{overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.wallet-sheet .primary{margin-bottom:12px}.spinner{border:2px solid;border-inline-end-color:#0000;border-radius:50%;width:16px;height:16px;animation:1s linear infinite wheel-turn}.skip-link{clip-path:inset(50%);z-index:100;background:var(--color-surface);width:1px;height:1px;padding:0;position:fixed;inset:10px auto auto 10px;overflow:hidden}.skip-link:focus{clip-path:none;width:auto;height:auto;padding:12px;overflow:visible}@keyframes wheel-turn{to{transform:rotate(360deg)}}@keyframes hamster-run{to{transform:translateY(-2px)rotate(.5deg)}}@keyframes twinkle{to{opacity:.25}}@keyframes smoke{0%{opacity:.25;transform:translateY(6px)}to{opacity:.6;transform:translateY(-15px)}}@keyframes flicker{to{opacity:.7}}@keyframes flow{to{stroke-dashoffset:-32px}}@keyframes ripple{to{opacity:.6;transform:scale(1.07)}}@keyframes bread-walk{0%,to{transform:translate(0)}45%,60%{transform:translate(59px)translateY(-10px)}}@keyframes celebrate{to{transform:translateY(-3px)}}.motion-off *,.motion-off :before,.motion-off :after{transition:none!important;animation:none!important}@media (width>=1500px){.site-header{padding-top:32px}main{padding-top:22px}.intro{padding-bottom:40px}}@media (width<=1000px){.play-layout{grid-template-columns:minmax(0,1fr) 300px;gap:10px}.world-note{display:none}.mayor-desk{padding-inline-start:18px}.site-header,main,footer{padding-inline:24px}.location-choice{gap:10px;padding:10px}.location-symbol{width:39px;height:39px}.town-records{gap:25px}.summary-detail{font-size:var(--text-small)}.summary-detail:not(:has(.disclosure-chevron)){display:none}}@media (width<=760px){.site-header{padding:12px 20px 8px}.brand{font-size:var(--text-title);gap:7px}.brand>svg{width:32px;height:32px}.brand-note{display:none}.header-actions{gap:4px}.help-button{display:none}.wallet-button{font-size:var(--text-small);white-space:nowrap;gap:6px;padding:9px 12px}main{padding:0 20px}.intro{padding:12px 0 16px}.intro h1{font-size:var(--text-heading);max-width:500px;margin:auto}.intro p{font-size:var(--text-small);margin-top:8px}.play-layout{flex-direction:column;gap:0;display:flex}.world{width:100%}.mode-row{justify-content:center;padding:0}.mode-switch button{min-height:36px;padding-inline:14px}.town-scene{margin:8px -20px 0;padding-bottom:14px}.town-art{width:100%}.scene-caption{top:1%;left:7%}.scene-message{font-size:var(--text-small);margin-top:10px;padding-inline:20px}.scene-pin{padding:0 5px}.scene-pin span{padding:4px 8px}.pin-bakery{top:78%}.pin-park{top:70%}.pin-square{top:83%;left:53%}.mayor-desk{border:0;width:100%;margin:0;padding:0}.energy-block{margin:0 0 13px}.energy-label{margin-bottom:7px}.energy-meter>span{height:10px}.choice-heading{margin-bottom:11px}.choice-heading h2{font-size:var(--text-title)}.choice-heading>span{margin-top:4px}.location-choices{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.location-choice{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:8px 6px 9px;display:flex;position:relative}.location-symbol{width:36px;height:36px}.location-symbol svg{width:24px;height:24px}.location-name{display:none}.location-title{font-size:var(--text-small);line-height:1.4}.choice-check{width:13px;height:13px;position:absolute;top:5px;right:5px}.choice-check svg{width:13px;height:13px}.choice-copy{flex:auto}.order-area{margin-top:11px}.location-description{display:none}.chain-status{justify-content:center;min-height:35px;margin-top:10px}.chain-status>span:nth-child(2){flex:initial}.chain-status .icon-button{margin:0}.practice-controls{margin-top:18px}.town-records{margin-top:24px;display:block}.town-records details+details{margin-top:0}summary{min-height:60px}.summary-detail{font-size:var(--text-small)}footer{text-align:center;flex-direction:column;gap:8px;margin-top:18px;padding:8px 20px 24px}.wallet-sheet{width:100%;max-width:none;padding:20px 20px calc(20px + env(safe-area-inset-bottom));border-radius:22px 22px 0 0;max-height:88dvh;margin:auto 0 0}.wallet-row{min-height:52px}}@media (width<=380px){.site-header{padding-inline:16px}.brand{font-size:var(--text-title)}.brand>svg{width:31px;height:31px}.wallet-button{padding-inline:9px}.wallet-button svg{display:none}main{padding-inline:16px}.intro{padding-top:10px}.town-scene{margin-inline:-16px}.intro h1{font-size:var(--text-heading)}.summary-detail{font-size:var(--text-small);gap:6px}.journal .summary-detail{font-size:0}.journal .disclosure-chevron{font-size:var(--text-title)}.location-choices{gap:6px}.location-choice{padding-inline:4px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media (forced-colors:active){:focus-visible{outline:3px solid highlight}.energy-meter>span{border:1px solid canvastext}.energy-meter>span.filled{background:highlight}.location-choice.selected{outline:2px solid highlight}}
