.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}html,body.town-page{height:100%}body.town-page{overscroll-behavior:none;background:var(--cream);overflow:hidden}.town{position:fixed;inset:0}.town>canvas{touch-action:none;cursor:grab;-webkit-tap-highlight-color:transparent;user-select:none;width:100%;height:100%;display:block;position:absolute;inset:0}.town-bar{left:0;right:0;top:calc(env(safe-area-inset-top,0px) + 12px);padding-inline:max(14px, env(safe-area-inset-left,0px));pointer-events:none;justify-content:space-between;align-items:center;display:flex;position:absolute}.town-bar>*{pointer-events:auto}.brand{border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);line-height:0;display:block}.brand img{border-radius:var(--radius-sm);width:44px;height:44px;display:block}.hint{left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 92px);white-space:nowrap;pointer-events:none;margin:0;transition:opacity .6s;position:absolute;transform:translate(-50%)}.hint.gone{opacity:0}.warp{left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 18px);background:var(--gold);border-color:color-mix(in srgb, var(--gold) 70%, var(--forest));box-shadow:0 4px 18px #011e0747, 0 0 0 0 color-mix(in srgb, var(--gold) 60%, transparent);border-radius:999px;align-items:stretch;animation:2.4s ease-out 1.5s 3 warp-call;display:flex;position:absolute;overflow:hidden;transform:translate(-50%)}.warp button{font-family:var(--font-body);color:var(--forest);cursor:pointer;background:0 0;border:0}.warp button:hover{background:#ffffff38}.warp button:focus-visible{outline:3px solid var(--forest);outline-offset:-3px}.warp__go{text-align:left;align-items:center;gap:.6rem;padding:.55rem .9rem .55rem 1.1rem;display:flex}.warp__go svg{fill:currentColor;flex:none;width:22px;height:22px}.warp__go:hover svg{animation:.8s ease-in-out warp-spin}.warp__text{line-height:1.15;display:grid}.warp__text b{white-space:nowrap;font-size:1rem;font-weight:800}.warp__text small{opacity:.8;white-space:nowrap;text-overflow:ellipsis;max-width:15rem;font-size:.75rem;font-weight:600;overflow:hidden}.warp__pick{place-items:center;padding:0 .95rem 0 .8rem;display:grid;border-left:1px solid color-mix(in srgb, var(--forest) 25%, transparent)!important}.warp__pick svg{fill:none;stroke:currentColor;stroke-width:1.5px;width:17px;height:17px}@keyframes warp-call{0%{box-shadow:0 4px 18px #011e0747, 0 0 0 0 color-mix(in srgb, var(--gold) 70%, transparent)}to{box-shadow:0 4px 18px #011e0747,0 0 0 18px #0000}}@keyframes warp-spin{to{transform:rotate(180deg)scale(1.15)}}.warp-flash{pointer-events:none;z-index:40;visibility:hidden;background:radial-gradient(circle at 50% 100%, #fffaf0 0%, #fff3d6 35%, color-mix(in srgb, var(--gold) 80%, #fff) 70%, var(--gold) 100%);clip-path:circle(0% at 50% 100%);position:absolute;inset:0}.warp-flash.on{visibility:visible;clip-path:circle(150% at 50% 100%);transition:clip-path .38s cubic-bezier(.6,0,.9,.6)}.warp-flash.on.out{opacity:0;transition:opacity .7s ease-out}.warp-dest{z-index:41;text-align:center;border-radius:var(--radius-lg);border-top:4px solid var(--gold);background:var(--color-bg);width:max-content;max-width:min(88vw,460px);color:var(--color-text);pointer-events:none;opacity:0;justify-items:center;gap:.3rem;margin:0;padding:1.1rem 1.6rem 1.25rem;display:grid;position:absolute;top:38%;left:50%;transform:translate(-50%,-50%);box-shadow:0 10px 40px #011e0759}.warp-dest small{letter-spacing:.14em;text-transform:uppercase;color:var(--color-muted);font-size:.75rem;font-weight:700}.warp-dest b{font-family:var(--font-heading);font-size:clamp(1.8rem,6vw,2.8rem);line-height:1.05}.warp-dest span{font-size:.9375rem;font-weight:500}.warp-dest.show{animation:3.2s ease-out forwards warp-dest}@keyframes warp-dest{0%{opacity:0;transform:translate(-50%,-40%)scale(.96)}12%{opacity:1;transform:translate(-50%,-50%)scale(1)}70%{opacity:1}to{opacity:0;transform:translate(-50%,-54%)}}@media (width<=380px){.warp__go{gap:.45rem;padding-left:.85rem}.warp__text b{font-size:.9375rem}.warp__text small{max-width:11rem}}.sheet{background:var(--color-bg);max-height:min(70dvh,640px);color:var(--color-text);border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:var(--shadow-lg);visibility:hidden;flex-direction:column;transition:transform .3s,visibility 0s linear .3s;display:flex;position:absolute;bottom:0;left:0;right:0;overflow:hidden;transform:translateY(105%)}.sheet.open{visibility:visible;transition:transform .3s;transform:none}.sheet-handle{touch-action:none;cursor:grab;flex:none;justify-content:center;padding:10px 0 6px;display:flex}.sheet-body{overscroll-behavior:contain;min-height:0;padding:0 1.25rem calc(env(safe-area-inset-bottom,0px) + 1.5rem);flex:auto;overflow-y:auto}.sheet-handle span{background:var(--stone);border-radius:3px;width:42px;height:5px}.sheet-close{z-index:2;position:absolute;top:8px;right:10px}.sheet .kicker{padding-right:3rem}.sheet h2{outline:none;margin:0 0 .75rem;padding-right:2.5rem}.sheet .small{font-size:.875rem}.sheet h3{margin:1.4rem 0 .25rem;font-size:1rem}.person-preview{align-items:center;gap:1rem;display:flex}.person-preview canvas{border-radius:var(--radius);background:color-mix(in srgb, var(--leaf) 12%, var(--color-surface));width:120px;height:120px}.swatch{border-radius:var(--radius-sm);width:34px;height:34px;box-shadow:inset 0 0 0 1px var(--border-subtle);flex:none;grid-template-columns:1fr 1fr;display:grid;overflow:hidden}.swatch i{display:block}@media (width>=900px){.sheet{left:auto;top:calc(env(safe-area-inset-top,0px) + 72px);border-radius:var(--radius-lg);width:380px;max-height:none;padding-block:var(--radius-lg);bottom:16px;right:16px;transform:translate(calc(100% + 24px));box-shadow:0 6px 30px #011e072e}.sheet-handle{display:none}.sheet-body{padding:.6rem 1.5rem}.sheet-close{top:12px;right:12px}}@media (prefers-reduced-motion:reduce){.sheet,.sheet.open,.hint{transition:none}.warp,.warp__go:hover svg{animation:none}.warp-dest.show{animation-duration:4s}}
