:root{--bg:#0d0a12;--surface:#1a151adb;--border:#3a2f38;--text:#f4f0f1;--muted:#a8a0a3;--pink:#ff4f9a;--lilac:#b48cff;--font-body:"DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-head:"Pixelify Sans", system-ui, sans-serif;--font-led:"VT323", ui-monospace, monospace}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--font-body);-webkit-tap-highlight-color:transparent;margin:0;overflow:hidden}#town{touch-action:none;cursor:grab;width:100%;height:100%;display:block;position:fixed;inset:0}#town.dragging{cursor:grabbing}a{color:inherit}.town-bar{padding:max(14px, env(safe-area-inset-top)) 16px 14px;pointer-events:none;z-index:3;justify-content:space-between;align-items:center;gap:12px;display:flex;position:fixed;top:0;left:0;right:0}.town-bar>*{pointer-events:auto}.town-brand{font-family:var(--font-head);text-shadow:0 0 18px #ff4f9a73;align-items:baseline;gap:8px;font-size:1.5rem;font-weight:600;text-decoration:none;display:inline-flex}.town-tag{font-family:var(--font-led);letter-spacing:.12em;color:var(--pink);text-transform:uppercase;font-size:1.15rem;font-weight:400}.town-bar-actions{gap:8px;display:flex}.town-chip{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:999px;align-items:center;padding:.5rem .95rem;font-size:.9rem;text-decoration:none;display:inline-flex}.town-chip:hover{border-color:#ff4f9a99}.town-chip--solid{color:#141112;background:#f6f1f3;border-color:#f6f1f3;font-weight:700}.town-places{border:1px solid var(--border);background:var(--surface);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:4;border-radius:18px;width:min(340px,100vw - 32px);max-height:calc(100vh - 100px);padding:16px;position:fixed;top:68px;right:16px;overflow:auto}.town-places h2{font-family:var(--font-head);margin:0 0 4px;font-size:1.2rem;font-weight:600}.town-places>p{color:var(--muted);margin:0 0 12px;font-size:.88rem}.town-places ul{gap:6px;margin:0;padding:0;list-style:none;display:grid}.town-places button{width:100%;min-height:44px;color:inherit;font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:12px;grid-template-columns:12px 1fr;align-items:center;gap:2px 10px;padding:9px 10px;display:grid}.town-places button:hover,.town-places button:focus-visible{background:#ffffff0f}.town-places .dot{border-radius:3px;width:10px;height:10px;box-shadow:0 0 10px}.town-places strong{font-size:.95rem}.town-places small{color:var(--muted);grid-column:2;font-size:.8rem}.town-hint{left:16px;bottom:max(16px, env(safe-area-inset-bottom));max-width:calc(100vw - 32px);color:var(--muted);pointer-events:none;z-index:2;background:#0d0a12b3;border-radius:999px;margin:0;padding:.45rem .8rem;font-size:.8rem;position:fixed}.town-prompt{left:50%;bottom:max(64px, calc(env(safe-area-inset-bottom) + 56px));background:var(--surface);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);text-align:center;z-index:3;border:1px solid #ff4f9a8c;border-radius:20px;width:min(420px,100vw - 32px);padding:16px 18px;animation:.22s ease-out prompt-in;position:fixed;transform:translate(-50%);box-shadow:0 0 40px #ff4f9a40}@keyframes prompt-in{0%{opacity:0;transform:translate(-50%,10px)}}.town-prompt p{margin:0}.town-prompt-kicker{font-family:var(--font-led);letter-spacing:.14em;color:var(--muted);font-size:1rem}.town-prompt-title{font-family:var(--font-head);font-size:1.45rem;font-weight:600;margin-top:2px!important}.town-prompt-body{color:#cfc7ca;font-size:.9rem;margin-top:4px!important}.town-enter{color:#1a0d13;font:inherit;cursor:pointer;background:linear-gradient(120deg,#ffc2dc,#ff4f9a 45%,#b48cff);border:0;border-radius:999px;align-items:center;gap:10px;margin-top:12px;padding:.65rem 1.4rem;font-weight:700;text-decoration:none;display:inline-flex}.town-enter kbd{font-family:var(--font-led);background:#1a0d1333;border-radius:6px;padding:1px 6px;font-size:1rem}.town-loading{background:var(--bg);color:var(--muted);font-family:var(--font-led);letter-spacing:.06em;z-index:10;place-content:center;justify-items:center;gap:14px;font-size:1.3rem;transition:opacity .5s;display:grid;position:fixed;inset:0}.town-loading.done{opacity:0;pointer-events:none}.town-loading p{margin:0}.town-spinner{border:3px solid #ff4f9a40;border-top-color:var(--pink);border-radius:50%;width:34px;height:34px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.town-noscript,.town-fallback{background:var(--surface);border:1px solid var(--border);z-index:5;border-radius:16px;padding:14px 16px;position:fixed;inset:auto 16px 16px}@media (width<=560px){.town-brand{font-size:1.25rem}.town-chip{padding:.45rem .75rem;font-size:.82rem}.town-hint{font-size:.74rem}}@media (prefers-reduced-motion:reduce){.town-prompt,.town-spinner{animation:none}.town-loading{transition:none}}[hidden]{display:none!important}:is(a,button,summary):focus-visible{outline:2px solid var(--lilac);outline-offset:3px}.town-zoom{right:max(12px, env(safe-area-inset-right));bottom:max(12px, env(safe-area-inset-bottom));z-index:3;gap:6px;display:flex;position:fixed}.town-zoom .town-chip,.town-task-close{justify-content:center;min-width:44px;min-height:44px;padding:0;font-size:1.35rem}.town-task{--task-accent:var(--pink);border:1px solid color-mix(in srgb, var(--task-accent) 55%, var(--border));width:min(1080px,100vw - 32px);max-width:none;height:min(820px,100dvh - 32px);max-height:none;color:var(--text);background:#151019;border-radius:20px;padding:0;overflow:hidden;box-shadow:0 24px 90px #08060cd9}.town-task[open]{grid-template-rows:auto auto minmax(0,1fr);display:grid}.town-task::backdrop{background:#08050cbf}.town-task-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:10px 14px 10px 18px;display:flex}.town-task-heading{min-width:0}.town-task-heading p{color:var(--task-accent);font-family:var(--font-led);letter-spacing:.06em;margin:0;font-size:.98rem;line-height:1.05}.town-task-heading h1{font:600 clamp(1.25rem, 3vw, 1.75rem)/1.05 var(--font-head);margin:2px 0 0}.town-task-actions{flex:none;align-items:center;gap:6px;display:flex}.town-task-actions a{white-space:nowrap;min-height:44px}.town-task-details{overscroll-behavior:contain;border-bottom:1px solid var(--border);max-height:32dvh;font-size:.88rem;overflow:auto}.town-task-details summary{color:#e4dce8;cursor:pointer;min-height:36px;padding:8px 18px}.town-task-details dl{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 20px;margin:0;padding:0 18px 12px;display:grid}.town-task-details dt{color:var(--task-accent);margin:0 0 2px;font-weight:700}.town-task-details dd{color:#dfd6e1;overflow-wrap:anywhere;margin:0}#task-frame{background:var(--bg);border:0;width:100%;height:100%;min-height:0;display:block}@media (pointer:coarse),(width<=560px){.town-hint{max-width:calc(100vw - 118px)}.town-prompt{bottom:max(84px, calc(env(safe-area-inset-bottom) + 75px))}}@media (width<=560px){.town-chip{min-height:44px}.town-places{top:calc(max(14px, env(safe-area-inset-top)) + 54px);max-height:calc(100dvh - max(90px, env(safe-area-inset-top) + 84px) - env(safe-area-inset-bottom))}.town-task{width:100vw;height:100dvh;height:var(--town-viewport-height,100dvh);padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);border-left:0;border-right:0;border-radius:0;margin:0}.town-task-header{padding:6px max(10px, env(safe-area-inset-right)) 6px max(12px, env(safe-area-inset-left))}.town-task-heading p{font-size:.8rem}.town-task-details dl{grid-template-columns:1fr;gap:6px}}.town-badges{border-top:1px solid var(--border);flex-wrap:wrap;gap:6px;margin-top:12px;padding-top:12px;display:flex}.town-badges span{color:#edddfa;font-family:var(--font-head);border:1px solid #9b6dc9;border-radius:999px;padding:4px 9px;font-size:.9rem}
