.town-page{background:var(--color-base);width:100%;height:100svh;color:var(--color-primary);position:relative;overflow:hidden}.town-header{z-index:5;pointer-events:none;justify-content:space-between;align-items:center;gap:24px;padding:24px 32px;display:flex;position:absolute;inset:0 0 auto}.town-header>*{pointer-events:auto}.town-header img{width:160px;height:32px}.town-explore,.town-frame{width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.town-frame{touch-action:pan-y}.town-panorama{width:max(100%,177.778svh);height:100%;transform:translateX(calc(-50% + var(--town-pan-offset,0px)));position:absolute;top:0;left:50%}.town-loop,.town-transition,.town-cover{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.town-cover{pointer-events:none}.town-transition{z-index:3}.town-hotspots{z-index:2;width:100%;height:100%;position:absolute;inset:0}.town-hotspot,.town-hotspot:hover,.town-hotspot:focus-visible{fill:#0000;stroke:none;cursor:none;outline:none}.town-hotspot[aria-disabled=true]{cursor:default}.town-markers{z-index:3;pointer-events:none;position:absolute;inset:0}.town-circle-marker{visibility:hidden;opacity:.6;pointer-events:none;width:64px;height:64px;transition:opacity .12s;position:absolute;transform:translate(-50%,-50%)}.town-circle-marker[data-positioned=true]{visibility:visible}.town-circle-marker[data-active=true],.town-circle-marker:hover{opacity:1}.town-circle{cursor:none;pointer-events:auto;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;padding:0;display:flex;position:relative}.town-circle-marker[data-following=true] .town-circle{pointer-events:none}.town-circle-marker:has(.town-circle:disabled){pointer-events:auto}.town-circle-ring{border:2px solid var(--color-primary);background:color-mix(in srgb, var(--color-primary) 5%, transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border-radius:50%;position:absolute;inset:0}.town-circle-dot{background:var(--color-primary);border-radius:50%;width:10px;height:10px;position:relative}.town-circle-label{opacity:0;visibility:hidden;pointer-events:none;align-items:center;transition:opacity .12s,visibility .12s;display:flex;position:absolute;top:50%;left:100%;transform:translateY(-50%)}.town-circle-marker[data-active=true] .town-circle-label,.town-circle-marker:hover .town-circle-label{opacity:1;visibility:visible}.town-circle-marker[data-side=left] .town-circle-label{flex-direction:row-reverse;left:auto;right:100%}.town-circle-connector{background:var(--color-primary);flex-shrink:0;width:16px;height:1px}.town-circle-pill{background:var(--color-primary);color:var(--color-accent-text-on);white-space:nowrap;letter-spacing:.025em;border-radius:999px;padding:6px 16px;font:500 12px monospace}.town-status{z-index:4;background:var(--color-surface);text-align:center;width:max-content;max-width:calc(100% - 32px);color:var(--color-primary);pointer-events:none;border-radius:20px;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;padding:10px 18px;font-size:13px;display:flex;position:absolute;bottom:90px;left:50%;transform:translate(-50%)}.town-status button{pointer-events:auto}.town-cinema[data-slot=dialog-content]{box-shadow:none;background:color-mix(in srgb, var(--color-base) 80%, transparent);-webkit-backdrop-filter:blur(64px);backdrop-filter:blur(64px);width:100vw;max-width:100vw;height:100svh;max-height:100svh;color:var(--color-primary);border:0;border-radius:0;gap:0;padding:0;overflow:hidden}.town-gallery{touch-action:none;cursor:grab;position:absolute;inset:0;overflow:hidden}.town-gallery:active{cursor:grabbing}.town-film-card{width:360px;height:480px;color:var(--color-primary);background:0 0;border:1px solid #fff3;border-radius:0;transition:border-color .3s;position:absolute}.town-poster{width:276px;height:367px;position:absolute;top:56px;left:43px}.town-film-card img{object-fit:cover;width:100%;height:100%;transition:transform .25s var(--ease-settle)}.town-play{background:color-mix(in srgb, var(--color-primary) 20%, transparent);width:48px;height:48px;transition:transform .25s var(--ease-settle);border-radius:50%;place-items:center;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.town-film-card:hover .town-play,.town-film-card:focus-visible .town-play{transform:translate(-50%,-50%)scale(1)}.town-film-card:hover,.town-film-card:focus-visible{border-color:#ffffff80}.town-card-brand{font:9px monospace;position:absolute;top:21px;right:18px}.town-film-card:hover img,.town-film-card:focus-visible img{transform:scale(1.05)}.town-film-card:focus-visible{outline:4px solid var(--color-primary);outline-offset:4px}.town-cinema-message{text-align:center;place-self:center;gap:16px;padding:24px;display:grid}@media (max-width:640px){.town-header{padding:16px 20px}.town-header img{width:136px;height:auto}}@media (prefers-reduced-motion:reduce){.town-page *,.town-cinema *{transition-duration:0s!important;animation-duration:0s!important}}.town-cinema[data-state=open]{animation:.3s both town-fade-in}.town-cinema[data-state=closed]{animation:.3s both town-fade-out}[data-slot=dialog-overlay]:has(+.town-cinema){background:0 0;animation:none}.town-cinema-close{z-index:50;color:#fff9;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0006;border-radius:50%;padding:10px;position:absolute;top:16px;right:16px}.town-cinema-close:hover{color:#fff;background:#0009}.town-gallery{-webkit-user-select:none;user-select:none}.town-gallery-shade{z-index:3;pointer-events:none;background:linear-gradient(#000,#0000 160px calc(100% - 160px),#000);position:absolute;inset:0}.town-gallery-controls{z-index:4;pointer-events:none;color:#fff6;justify-content:center;align-items:center;gap:8px;font:12px monospace;display:flex;position:absolute;bottom:32px;left:0;right:0}.town-card-year,.town-card-genre,.town-card-views,.town-card-ranking{font:9px monospace;position:absolute}.town-card-year{top:21px;left:18px}.town-card-line{background:#fff9;width:64px;height:1px;position:absolute;top:24px;left:140px}.town-card-genre{bottom:7px;left:18px}.town-card-views{bottom:7px;left:50%;transform:translate(-50%)}.town-card-ranking{bottom:7px;right:18px}.town-film{z-index:60;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);background:#00000080;flex-direction:column;justify-content:center;align-items:center;animation:.3s both town-fade-in;display:flex;position:absolute;inset:0}.town-film[data-closing=true]{animation:.3s both town-fade-out}.town-film-screen{width:90%;max-width:1300px;position:relative}.town-film-curve{aspect-ratio:21/9;background:#000;position:relative;overflow:hidden}.town-film video{object-fit:contain;width:calc(100% + 4px);height:calc(100% + 4px);position:absolute;inset:-2px}.town-film-toggle{color:#fff;background:0 0;border-radius:0;width:100%;height:100%;position:absolute;inset:0}.town-film-toggle>span{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;background:#00000080;border:1px solid #fff3;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;transition:opacity .15s,transform .15s;display:flex;transform:scale(.8)}.town-film-toggle[data-controls=true]>span{opacity:1;transform:scale(1)}.town-film-back{color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0006;border:1.5px solid #fff;border-radius:50%;width:56px;height:56px;margin-top:40px;animation:.25s .1s both town-film-back-in}.town-film-back:hover{opacity:.8}.town-film-spinner{animation:.9s linear infinite town-spin}@keyframes town-fade-in{0%{opacity:0}to{opacity:1}}@keyframes town-fade-out{0%{opacity:1}to{opacity:0}}@keyframes town-film-back-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes town-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.town-cinema[data-state],.town-film,.town-film-back{animation:none}}.town-play:after{content:"";border-top:8px solid #0000;border-bottom:8px solid #0000;border-left:14px solid #fff;width:0;height:0;margin-left:4px}
