@import url('https://fonts.googleapis.com/css2?family=Creepster&family=Special+Elite&display=swap');
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:13px/1.4 ui-monospace,Menlo,Consolas,monospace}
a{color:#7dd3fc}header{position:sticky;top:0;z-index:5;background:var(--surface);border-bottom:2px solid var(--line);padding:8px 12px;display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}
header h1{font-size:16px;margin:0;color:#f43f5e;letter-spacing:2px;margin-right:auto;text-shadow:0 0 8px #f43f5e}header h1 a{color:inherit;text-decoration:none}
main{max-width:1300px;margin:auto;padding:12px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.room{position:relative;background:var(--surface);border:3px solid var(--c,#f43f5e);box-shadow:0 0 12px var(--c,#f43f5e),inset 0 0 18px rgba(0,0,0,.6);border-radius:4px;padding:8px;display:flex;flex-direction:column;gap:6px}
.room h2{margin:0;font-size:14px;color:var(--c,#f43f5e)}.room p{margin:0;color:var(--muted);font-size:12px}a.room{text-decoration:none;color:inherit}
canvas{width:100%;background:#000;border:1px solid var(--line);aspect-ratio:400/190;display:block}
.btn,button{background:#f43f5e;color:#fff;border:0;padding:7px 12px;font:inherit;cursor:pointer;border-radius:3px;text-decoration:none;display:inline-block}
.btn.g,button.g{background:var(--surface)}input,select,textarea{width:100%;background:var(--surface);color:var(--text);border:1px solid var(--line);padding:7px;font:inherit;border-radius:3px}
label{display:block;margin:8px 0 3px;color:var(--muted);font-size:11px}.card{background:var(--surface);border:1px solid var(--line);padding:14px;border-radius:4px;max-width:520px;margin:12px auto}
.items{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px}.item{background:var(--surface);border:1px solid var(--line);border-radius:4px;overflow:hidden;display:flex;flex-direction:column}
.item img{width:100%;aspect-ratio:1;object-fit:cover;background:#000}.item .b{padding:8px;display:flex;flex-direction:column;gap:4px;flex:1}.item .pr{color:#4ade80;font-weight:bold}
.tag{font-size:10px;border:1px solid #a855f7;color:#c4b5fd;padding:0 5px;align-self:flex-start}.muted{color:var(--muted)}.err{color:#f87171}.ok{color:#4ade80}
.av{width:28px;height:28px;border-radius:50%;object-fit:cover;vertical-align:middle;border:1px solid var(--line)}
@media(max-width:900px){.grid{grid-template-columns:1fr 1fr}.items{grid-template-columns:1fr 1fr 1fr}}@media(max-width:600px){.grid{grid-template-columns:1fr}.items{grid-template-columns:1fr 1fr}}

/* town map: Hangout in the middle, shops in rings */
.townwrap{overflow:auto;-webkit-overflow-scrolling:touch;padding:6px 2px 10px}.town{--n:3;--cw:minmax(220px,1fr);display:grid;grid-template-columns:repeat(var(--n),var(--cw));gap:12px;min-width:min-content}
.room.hang{text-align:center;justify-content:center;align-items:center;background:radial-gradient(circle at 50% 40%,#123040,#0b0b18 70%);border-width:4px;box-shadow:0 0 22px var(--c),0 0 46px rgba(34,211,238,.35),inset 0 0 22px rgba(0,0,0,.6);animation:hangpulse 3s ease-in-out infinite}
.room.hang h2{font-size:18px}.hangart{font-size:40px;line-height:1.2}.hangtag{font-size:10px;letter-spacing:.12em;color:#22d3ee;border:1px solid #22d3ee;border-radius:3px;padding:2px 6px}
@keyframes hangpulse{50%{box-shadow:0 0 30px var(--c),0 0 70px rgba(34,211,238,.5),inset 0 0 22px rgba(0,0,0,.6)}}.townhint{font-size:12px;text-align:center;margin-top:4px}
@media(max-width:600px){.town{--cw:minmax(108px,1fr);gap:6px}.town .room{padding:5px}.town .room h2{font-size:12px}.town .room p{font-size:10px}.room.hang h2{font-size:15px}.hangart{font-size:30px}.room.hang p.muted{display:none}}

.flt{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.chip{background:var(--surface);border:1px solid var(--line);color:var(--text);border-radius:999px;padding:4px 10px;font-size:12px;cursor:pointer}.chip.on{border-color:#f43f5e;color:var(--text);background:var(--surface)}
/* ---- brand: header logo ---- */
header h1 a{font-family:Creepster,Impact,sans-serif;font-weight:400;letter-spacing:2px;color:#e11d48;-webkit-text-stroke:1px #1b1430;text-shadow:0 0 10px rgba(244,63,94,.55);display:inline-flex;align-items:center;gap:8px}
header h1 a .moon{width:20px;height:20px;border-radius:50%;box-shadow:inset -6px 2px 0 0 #fbbf24;filter:drop-shadow(0 0 5px #fbbf24);transform:rotate(-20deg)}
/* ---- homepage banner ---- */
.bn{position:relative;min-height:340px;overflow:hidden;border:3px solid #f43f5e;box-shadow:0 0 18px #f43f5e;border-radius:4px;background:linear-gradient(#1a0a24,#3b0d1f 55%,#0a0a14);margin-bottom:14px}
.bn svg.sc{position:absolute;inset:0;width:100%;height:100%}.bn .fog{position:absolute;left:-20%;right:-20%;bottom:-20px;height:150px;background:radial-gradient(ellipse at 30% 60%,rgba(200,200,230,.26),transparent 60%),radial-gradient(ellipse at 75% 70%,rgba(200,200,230,.2),transparent 55%);filter:blur(6px);animation:hvdr 18s linear infinite alternate;pointer-events:none}
@keyframes hvdr{to{transform:translateX(12%)}}.bn .bl{animation:hvflick 5s infinite}
.bn .tx{position:relative;padding:44px 6% 30px;max-width:620px}.bn h1{font:78px/.95 Creepster,Impact,sans-serif;color:#e11d48;-webkit-text-stroke:3px #1b1430;text-shadow:0 0 18px rgba(244,63,94,.6);margin:0}
.bn p{font:17px 'Special Elite',monospace;color:var(--acc-text);margin:12px 0 18px;text-shadow:0 1px 2px #000}.bn .cta{display:inline-block;background:#e11d48;color:#fff;padding:10px 16px;font:bold 14px monospace;border:3px solid var(--line);box-shadow:4px 4px 0 #1b1430;text-decoration:none;margin:0 8px 8px 0}.bn .cta.g{background:#22d3ee;color:#0a0a14}.bn .cta.k{background:var(--surface);color:var(--acc-text)}
@media(max-width:600px){.bn{min-height:0}.bn .tx{padding:22px 16px 14px}.bn h1{font-size:46px;-webkit-text-stroke:2px #1b1430}.bn p{font-size:13px;margin:8px 0 12px}.bn .cta{padding:8px 10px;font-size:12px;margin:0 4px 6px 0}.bn svg.sc{opacity:.55}}
/* ---- town street: cobbles, fog, lamps ---- */
.townwrap.street{position:relative;border-radius:6px;padding:20px;background:radial-gradient(circle at 25% 30%,#3a3646 0 5px,transparent 6px) 0 0/22px 18px,radial-gradient(circle at 75% 75%,#34303f 0 6px,transparent 7px) 0 0/22px 18px,radial-gradient(circle at 60% 20%,#2e2a38 0 4px,transparent 5px) 0 0/16px 14px,#1a1722}
.street .town{gap:40px;position:relative;z-index:1}.street .town .room{background:var(--surface);position:relative}
.street .fogl{position:absolute;inset:0;pointer-events:none;z-index:3;background:radial-gradient(ellipse 40% 18% at 20% 30%,rgba(210,210,235,.15),transparent),radial-gradient(ellipse 45% 20% at 80% 65%,rgba(210,210,235,.13),transparent),radial-gradient(ellipse 50% 22% at 45% 95%,rgba(210,210,235,.16),transparent);filter:blur(8px);animation:hvfog 20s ease-in-out infinite alternate}
.street .fogl.two{animation-duration:31s;animation-direction:alternate-reverse;opacity:.8}@keyframes hvfog{to{transform:translateX(6%) translateY(-2%)}}
.lamp{position:absolute;z-index:2;pointer-events:none;width:calc(var(--gs)*.45);height:calc(var(--gs)*.45);max-width:16px;max-height:16px;transform:translate(-50%,-50%);border-radius:50%;background:var(--acc);box-shadow:0 0 12px 4px rgba(253,230,138,.55),0 0 50px 22px rgba(253,230,138,.1);animation:hvflick 4s infinite}
.lamp.b{animation-duration:6.5s}.lamp.c{animation-duration:3.2s;animation-delay:1s}@keyframes hvflick{0%,18%,22%,62%,64%,100%{opacity:1}20%,63%{opacity:.25}}
.neon{position:absolute;top:-12px;right:10px;z-index:5;font:900 14px/1 Impact,'Arial Black',sans-serif;letter-spacing:2px;color:var(--text);padding:4px 8px 3px;border:2px solid #f472b6;border-radius:6px;background:rgba(20,0,20,.85);text-shadow:0 0 4px #fff,0 0 10px #f472b6,0 0 20px #ec4899;box-shadow:0 0 10px #ec4899,inset 0 0 8px #ec4899;animation:hvneon 5s infinite}
@keyframes hvneon{0%,8%,10%,55%,57%,100%{opacity:1}9%,56%{opacity:.35}}
@media(max-width:600px){.townwrap.street{padding:10px}.street .town{gap:16px;--cw:minmax(100px,1fr)}.neon{font-size:10px;top:-9px;right:4px;padding:2px 5px}}
.street .town .room.hang{background:radial-gradient(circle at 50% 40%,#123040,#0b0b18 70%)}
.phs{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0}.pht{position:relative;width:96px;border:2px solid var(--line);border-radius:4px;background:var(--bg);cursor:grab}.pht:first-child{border-color:var(--acc);box-shadow:0 0 8px rgba(251,191,36,.5)}
.pht img{width:100%;height:96px;object-fit:cover;display:block}.pht .cov,.pht .num{position:absolute;top:3px;left:3px;font:bold 10px monospace;padding:1px 5px;border-radius:3px;background:var(--acc);color:var(--acc-ink)}.pht .num{background:rgba(0,0,0,.7);color:var(--text)}
.pht .pb{display:flex;justify-content:space-between}.pht .pb button{padding:2px 7px;font-size:12px;min-height:0}.pht .pb button:disabled{opacity:.3}
.phw{position:relative;cursor:zoom-in}.phw img{width:100%}.phn{position:absolute;right:6px;bottom:8px;background:rgba(0,0,0,.75);color:var(--acc-text);font:bold 11px monospace;padding:2px 6px;border-radius:3px}
.gal{position:fixed;inset:0;z-index:100;background:rgba(5,5,12,.92);display:flex;align-items:center;justify-content:center;padding:12px}.gbox{position:relative;width:min(900px,100%);display:flex;flex-direction:column;gap:8px}
.gmain{position:relative;display:flex;align-items:center;justify-content:center;background:#000;border:3px solid #f43f5e;box-shadow:0 0 18px #f43f5e;height:min(70vh,640px)}.gmain img{max-width:100%;max-height:100%;object-fit:contain;touch-action:pan-y}
.gp,.gn{position:absolute;top:50%;transform:translateY(-50%);font-size:28px;padding:4px 12px;z-index:2}.gp{left:6px}.gn{right:6px}.gx{position:absolute;right:0;top:-40px}.gcap{color:var(--acc-text);font:13px monospace;text-align:center}
.gth{display:flex;gap:6px;overflow-x:auto;justify-content:center}.gth img{width:64px;height:64px;object-fit:cover;border:2px solid var(--line);cursor:pointer;opacity:.7}.gth img.on{border-color:var(--acc);opacity:1}
@media(max-width:600px){.gmain{height:60vh}.gp,.gn{display:none}.gth{justify-content:flex-start}.gth img{width:52px;height:52px}}
.dz{border:2px dashed var(--line);border-radius:6px;padding:14px;text-align:center;display:flex;gap:8px;flex-wrap:wrap;justify-content:center;align-items:center}.dz.on{border-color:var(--acc);background:rgba(251,191,36,.08)}.dz button{min-height:44px;padding:8px 14px;font-size:14px}
.pht .bar{position:absolute;left:4px;right:4px;top:84px;height:6px;background:rgba(0,0,0,.6);border-radius:3px;overflow:hidden}.pht .bar i{display:block;height:100%;background:#22c55e;transition:width .2s}.pht .perr{position:absolute;left:0;right:0;top:36px;background:#7f1d1d;color:#fff;font:bold 10px monospace;text-align:center;padding:2px}
.pht .cropb{position:absolute;left:3px;right:3px;top:58px;font:bold 10px monospace;padding:3px 2px;min-height:0;background:rgba(0,0,0,.75);color:var(--acc-text);border:1px solid var(--acc)}.pht .cropd{position:absolute;right:3px;top:3px;font:bold 9px monospace;background:#22c55e;color:#04210f;padding:1px 4px;border-radius:3px}
.cropq{background:var(--surface);border:1px solid var(--acc);border-radius:4px;padding:6px 8px;font-size:12px}.cropq button{padding:4px 8px;font-size:12px;min-height:0}
.crop{position:fixed;inset:0;z-index:110;background:rgba(5,5,12,.94);display:flex;align-items:center;justify-content:center;padding:10px}.cbox{width:min(720px,100%);display:flex;flex-direction:column;gap:8px}.cbox h3{margin:0;color:var(--acc-text)}
.cstage{height:min(62vh,560px);background:#000;border:2px solid var(--line)}.cstage canvas{display:block}.crow{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.crow label{display:flex;gap:6px;align-items:center;font-size:13px}.crow input[type=range]{width:180px}
/* interests & neighborhoods */
.ipick .ig{margin:8px 0}.ipick .ig b{display:block;font-size:12px;color:var(--acc-text);margin-bottom:4px}.chip{background:var(--surface);border:1px solid var(--line);color:var(--text);border-radius:999px;padding:5px 11px;margin:3px;font-size:12px;cursor:pointer;min-height:32px}.chip.on{background:#f43f5e;border-color:#f43f5e;color:#fff}.chip:focus-visible{outline:2px solid var(--acc)}
.imod .gbox{overflow:auto;max-height:90vh}
.district{border:2px dashed var(--c);border-radius:14px;background:radial-gradient(circle at 50% 50%,color-mix(in srgb,var(--c) 14%,transparent),transparent 75%);margin:-14px;z-index:0;pointer-events:none}
.street .town .room{z-index:1}.room.hoodsign{text-align:center;justify-content:center;align-items:center;background:var(--surface)!important;border-style:double;border-width:5px}.room.hoodsign h2{font-size:17px;letter-spacing:.04em}
.room.vacant{opacity:.55;border-style:dashed;justify-content:center;text-align:center;--c:#6b7280}.room.vacant:hover{opacity:.9}
.newtag{position:absolute;top:-10px;left:6px;background:var(--acc);color:var(--acc-ink);font-size:10px;font-weight:700;border-radius:3px;padding:2px 6px;z-index:2}
.heart{position:absolute;top:6px;right:6px;background:rgba(0,0,0,.55);border:1px solid #f43f5e;color:#f43f5e;border-radius:50%;width:32px;height:32px;padding:0;font-size:17px;line-height:1;cursor:pointer;z-index:3}.heart.on{background:#f43f5e;color:#fff}
.room .heart{top:30px}.itags{font-size:10px!important;color:var(--acc-text)!important;opacity:.85}
.pick{margin:14px 0}.pkh{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.pkh h2{margin:0;color:var(--acc-text);font-size:18px}#sf{flex:1;min-width:180px;max-width:360px}#sf input{margin:0}#pkm{font-size:11px;flex-basis:100%}
.prow{display:flex;gap:10px;overflow-x:auto;padding:12px 2px 8px;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}
.pcard{position:relative;flex:0 0 150px;scroll-snap-align:start;background:var(--surface);border:2px solid var(--line);border-radius:6px;padding:6px;display:flex;flex-direction:column;gap:3px;color:inherit;text-decoration:none;font-size:12px}.pcard:hover{border-color:#f43f5e}.pcard img{width:100%;aspect-ratio:13/18;object-fit:cover;border-radius:3px;background:var(--bg)}.pcard b{font-size:12px;line-height:1.2;max-height:2.4em;overflow:hidden}.pcard .muted{font-size:11px}
.item{position:relative}.stags{margin:4px 0}
@media(max-width:600px){.pcard{flex-basis:124px}.room .heart{top:22px;width:28px;height:28px;font-size:15px}.room.hoodsign h2{font-size:13px}.district{margin:-7px}.itags{display:none}}
.town{--rh:210px}@media(max-width:600px){.town{--rh:140px}}
/* chat sessions */
.cpop{position:absolute;z-index:60;background:var(--surface);border:2px solid #22d3ee;border-radius:8px;padding:8px 10px;box-shadow:0 6px 24px rgba(0,0,0,.6);display:flex;flex-direction:column;gap:6px;min-width:150px}.cpop b{color:var(--acc-text)}.cpop div{display:flex;gap:6px}.cpop button,.cpop .btn{min-height:36px;padding:6px 12px}
.cwrap{display:flex;flex-direction:column;gap:6px;margin:6px 0}.cnote{background:var(--surface);border:1px solid var(--acc);border-radius:6px;padding:8px;font-size:13px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.cnote.inv{border-color:#22d3ee;box-shadow:0 0 12px rgba(34,211,238,.35)}
.cbox2{background:var(--surface);border:2px solid #22d3ee;border-radius:8px;padding:8px;display:flex;flex-direction:column;gap:6px}.cbox2 .ch{display:flex;justify-content:space-between;align-items:center;gap:8px}.cbox2 .ch b{color:#22d3ee;font-size:13px}
.clog{max-height:120px;overflow:auto;font-size:12px;display:flex;flex-direction:column;gap:2px}.clog b{color:var(--acc-text)}.crow2{display:flex;gap:6px;align-items:flex-end}.crow2 textarea,#sf textarea{flex:1;margin:0;font-size:16px;line-height:22px;resize:none;overflow-y:hidden;min-height:38px;max-height:calc(22px*5 + 16px);white-space:pre-wrap;overflow-wrap:anywhere;box-sizing:border-box;display:block}#sf{align-items:flex-end}#sf button,.crow2 button{flex:0 0 auto;min-height:38px}.cbox2 .cm{font-size:11px}
/* plaza, ambience, lamps per district */
.townwrap.street>.fogl{display:none}
.district.plaza{border:3px solid #22d3ee;border-radius:18px;background:radial-gradient(circle,rgba(34,211,238,.16),rgba(34,211,238,.04) 70%),repeating-linear-gradient(45deg,rgba(34,211,238,.05) 0 10px,transparent 10px 20px)}
.room.plazasign,.room.board{background:var(--surface)!important;border-style:double;border-width:5px}.room.plazasign h2,.room.board h2{color:#22d3ee;font-size:15px}.room.board ul{list-style:none;margin:0;padding:0;font-size:12px;display:flex;flex-direction:column;gap:3px}.board .bsub{font-size:11px!important}
.amb{position:relative;pointer-events:none;z-index:3;border-radius:14px;margin:-14px;overflow:hidden}.amb .fogl{position:absolute;inset:0}
.amb-games{background:linear-gradient(rgba(163,230,53,.05) 50%,transparent 50%) 0 0/100% 4px;box-shadow:inset 0 0 40px rgba(163,230,53,.25),inset 0 0 90px rgba(217,70,239,.12);animation:ambflick 6s infinite}
.amb-anime{background:radial-gradient(circle at 15% 20%,rgba(244,114,182,.22) 0 3px,transparent 4px) 0 0/90px 80px,radial-gradient(circle at 60% 70%,rgba(251,207,232,.2) 0 2px,transparent 3px) 0 0/70px 60px,radial-gradient(ellipse at 50% 0,rgba(244,114,182,.12),transparent 70%);animation:petal 14s linear infinite}
.amb-music{background:repeating-radial-gradient(circle at 50% 50%,rgba(192,132,252,.06) 0 2px,transparent 2px 9px);box-shadow:inset 0 0 70px rgba(192,132,252,.18)}
.amb-comics{background:radial-gradient(rgba(250,204,21,.13) 1.2px,transparent 1.6px) 0 0/9px 9px}
.amb-screen{background:radial-gradient(rgba(186,230,253,.5) .8px,transparent 1.2px) 0 0/37px 41px,radial-gradient(rgba(186,230,253,.3) .8px,transparent 1.2px) 13px 19px/53px 47px,radial-gradient(ellipse at 50% 100%,rgba(56,189,248,.12),transparent 70%)}
.amb-toys{background:radial-gradient(ellipse at 50% 30%,rgba(251,146,60,.13),transparent 70%),repeating-linear-gradient(90deg,rgba(251,146,60,.05) 0 16px,rgba(250,204,21,.04) 16px 32px)}
.amb-sports{background:radial-gradient(ellipse at 50% 0,rgba(255,255,255,.12),transparent 55%),repeating-linear-gradient(0deg,rgba(52,211,153,.05) 0 22px,transparent 22px 44px)}
.amb-style{background:linear-gradient(120deg,rgba(45,212,191,.1),transparent 40%,rgba(244,114,182,.08));box-shadow:inset 0 0 60px rgba(45,212,191,.15)}
.amb-art{background:radial-gradient(circle at 20% 30%,rgba(253,164,175,.14),transparent 30%),radial-gradient(circle at 75% 70%,rgba(125,211,252,.12),transparent 30%),radial-gradient(circle at 60% 20%,rgba(250,204,21,.1),transparent 25%)}
@keyframes ambflick{0%,100%{opacity:1}48%{opacity:.85}50%{opacity:.65}52%{opacity:.9}}@keyframes petal{to{background-position:90px 160px,-70px 120px,0 0}}
@media (prefers-reduced-motion:reduce){.amb{animation:none!important}}
.lamp.lamp-plaza{background:#a5f3fc;box-shadow:0 0 12px 4px rgba(34,211,238,.55),0 0 50px 22px rgba(34,211,238,.12)}
.lamp.lamp-games{background:#d9f99d;box-shadow:0 0 12px 4px rgba(163,230,53,.6),0 0 50px 22px rgba(217,70,239,.14)}
.lamp.lamp-anime{background:#fbcfe8;box-shadow:0 0 12px 4px rgba(244,114,182,.55),0 0 50px 22px rgba(244,114,182,.12)}
.lamp.lamp-music{background:#e9d5ff;box-shadow:0 0 12px 4px rgba(192,132,252,.55),0 0 50px 22px rgba(192,132,252,.12)}
.lamp.lamp-comics{background:#fef08a;box-shadow:0 0 12px 4px rgba(250,204,21,.55),0 0 50px 22px rgba(250,204,21,.12)}
.lamp.lamp-screen{background:#bae6fd;box-shadow:0 0 12px 4px rgba(56,189,248,.55),0 0 50px 22px rgba(56,189,248,.12)}
.lamp.lamp-toys{background:#fed7aa;box-shadow:0 0 12px 4px rgba(251,146,60,.55),0 0 50px 22px rgba(251,146,60,.12)}
.lamp.lamp-sports{background:#f0fdf4;box-shadow:0 0 12px 4px rgba(255,255,255,.5),0 0 50px 22px rgba(52,211,153,.12)}
.lamp.lamp-style{background:#99f6e4;box-shadow:0 0 12px 4px rgba(45,212,191,.55),0 0 50px 22px rgba(45,212,191,.12)}
.lamp.lamp-art{background:#fecdd3;box-shadow:0 0 12px 4px rgba(253,164,175,.55),0 0 50px 22px rgba(253,164,175,.12)}
.lamp.lamp-none{opacity:.35}
.room.featured{box-shadow:0 0 0 2px #fde68a,0 0 22px var(--c)}.newtag.feat{background:var(--acc)}.room.testacct{opacity:.55;filter:saturate(.5)}
/* guide map */
.mapb{padding:4px 10px}.gmap{position:fixed;inset:0;z-index:80;background:rgba(3,3,10,.75);display:flex;align-items:center;justify-content:center}.gmbox{position:relative;background:var(--surface);border:2px solid #22d3ee;border-radius:10px;width:min(980px,96vw);height:min(720px,92vh);display:flex;flex-direction:column;overflow:hidden}
.gmh{display:flex;gap:8px;align-items:center;padding:8px;border-bottom:1px solid var(--line);flex-wrap:wrap}.gmh b{color:#22d3ee}.gmh input{flex:1;min-width:140px;margin:0}.gmz{display:flex;gap:4px}.gmz button,#gmx{min-width:36px;min-height:36px;padding:4px}
.gmv{flex:1;position:relative;overflow:hidden;touch-action:none;background:var(--bg)}.gmv svg{width:100%;height:100%;display:block;cursor:grab}.gdl{font:bold 11px monospace}.gd.top rect{filter:drop-shadow(0 0 6px currentColor)}
.gpin circle{transition:opacity .2s}.gpin:hover circle:first-child{stroke:#fff}.gpin.dim{opacity:.15}.gpin.test{opacity:.45}.yt{font:bold 9px monospace;fill:#fff;letter-spacing:.06em}.yah{animation:hangpulse 2s infinite}
.gml{display:flex;flex-wrap:wrap;gap:10px;padding:6px 10px;font-size:11px;border-top:1px solid var(--line)}.gml i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:-1px}.gml .top{color:var(--acc-text);font-weight:bold}
.gmt{position:absolute;z-index:2;background:var(--surface);border:1px solid var(--acc);border-radius:5px;padding:4px 8px;font-size:12px;pointer-events:none;white-space:nowrap;margin-top:52px}
@media(max-width:600px){.gmbox{width:100vw;height:100vh;height:100dvh;border-radius:0;border:0}.gmap{background:var(--surface)}}
body.gmopen{overflow:hidden}
.cmini{position:fixed;right:12px;bottom:var(--cmb,12px);z-index:40;width:150px;padding:4px;background:rgba(11,11,22,.88);border:1px solid #22d3ee;border-radius:8px;opacity:0;pointer-events:none;transition:opacity .25s}.cmini.on{opacity:1;pointer-events:auto}
.cmmap{display:flex;flex-direction:column;gap:2px;width:100%;background:none;border:0;padding:0;margin:0;cursor:pointer}.cmmap svg{width:100%;height:auto;max-height:120px}.cmmap span{font-size:10px;color:#22d3ee;text-align:left}
.cmtg{position:absolute;top:-9px;left:-9px;width:22px;height:22px;min-height:0;padding:0;border-radius:50%;background:var(--surface);color:#22d3ee;border:1px solid #22d3ee;font:bold 13px/20px ui-monospace,monospace;text-align:center}
.cmini.col{width:auto;padding:0;border-radius:50%}.cmini.col .cmmap{display:none}.cmini.col .cmtg{position:static;width:40px;height:40px;font-size:20px;line-height:38px;background:rgba(11,11,22,.9)}
@media(max-width:820px){.cmini{bottom:var(--cmb,calc(72px + env(safe-area-inset-bottom)))}}
@media(max-width:600px){.cmini{width:76px;right:8px}.cmini .cmmap svg{max-height:70px}.cmmap span{font-size:9px}}
#gmview,.yt,.yah,.gdl{pointer-events:none}
.fogl,.fog{display:none!important}
.amb-horror{background:radial-gradient(ellipse at 50% 100%,rgba(244,63,94,.12),transparent 65%);box-shadow:inset 0 0 60px rgba(159,18,57,.25)}
/* low-power devices and reduced motion: keep the look, drop the motion and heavy glows */
html.lowfx .lamp,html.lowfx .amb,html.lowfx .room.hang,html.lowfx .yah,html.lowfx .bl,html.lowfx .neon{animation:none!important}
html.lowfx .lamp{box-shadow:0 0 8px 3px rgba(253,230,138,.45)}html.lowfx .street .town .room{box-shadow:0 0 6px var(--c,#f43f5e)}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
.gnote{position:fixed;z-index:90;top:60px;right:12px;max-width:min(360px,calc(100vw - 24px));box-shadow:0 6px 24px rgba(0,0,0,.6)}
#it.items{max-width:760px;margin:12px auto 0;grid-template-columns:repeat(auto-fill,minmax(165px,1fr))}
#flt.flt,#own.card{max-width:760px;margin-left:auto;margin-right:auto;box-sizing:border-box}

img[src$=".ct.png"],img[src$=".cut.png"],img.cutimg{object-fit:contain!important;background:radial-gradient(circle at 50% 40%,#fafaf9,#d6d3d1)!important}
.trace .ttools button.on{outline:2px solid var(--acc);background:var(--surface)}
.trace .ttools{flex-wrap:wrap;gap:4px}
.trace .ttools button{padding:6px 8px;font-size:12px}
/* phones: full-screen dialogs cover the bottom tab bar, fit the dynamic viewport + safe areas, keep actions reachable */
.imod .gbox{max-height:90dvh}.gmbox{height:min(720px,92dvh)}
@media(max-width:820px){
 body:has(.crop,.gal,.gmap) #chtabs,body:has(.crop,.gal,.gmap) #ga-banner{display:none!important}
 .crop,.gal,.gmap{z-index:1000}
 .crop{height:100vh;height:100dvh;align-items:stretch;padding:calc(8px + env(safe-area-inset-top)) calc(8px + env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) calc(8px + env(safe-area-inset-left));overflow:hidden}
 .cbox{height:100%;min-height:0;max-height:100%;overflow-y:auto;overscroll-behavior:contain}
 .cstage{flex:1 1 auto;min-height:140px;height:auto}
 .cbox>.crow{flex:0 0 auto}.crow input[type=range]{width:min(180px,40vw)}
 .cbox>.crow:last-child{position:sticky;bottom:0;margin:0 -2px;padding:8px 2px 2px;background:var(--bg);border-top:1px solid var(--line);gap:8px}
 .crop:not(.trace) .cbox>.crow:last-child button{flex:1 1 auto}
 .gal{padding:calc(12px + env(safe-area-inset-top)) 12px calc(12px + env(safe-area-inset-bottom))}
}

/* seller "Needs attention" strip (owner only) */
.attn{max-width:760px;margin:0 auto 12px}.attn h3{margin:0 0 6px;color:var(--acc-text);font-size:15px}.atr{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}
.atc{background:var(--surface);border:2px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:3px;min-width:0}.atc b{font-size:14px;color:var(--text)}.atc p{margin:0 0 6px;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.atc .btn{align-self:flex-start;margin-top:auto;padding:6px 12px;font-size:13px}.ati{font-size:22px;line-height:1}
.atc-msg{border-color:#f43f5e88}.atc-ord{border-color:#fbbf2488}.atc-photo{border-color:#22d3ee88}
@media(max-width:600px){.atr{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:8px;padding-bottom:4px;scrollbar-width:thin}.atc{flex:0 0 72%;scroll-snap-align:start}}
/* Buyer reviews */
.rv-head{display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap}.rv-head h3{margin:0;color:var(--acc-text)}.rv-stars{color:var(--acc-text);letter-spacing:1px}.rv-off{color:var(--text)}.rv-sm{font-size:12px}.rv-sub{font-size:12px;margin:4px 0}.rv-filters{margin:8px 0}.rv-card{border-top:1px solid var(--line);padding:12px 0}.rv-top{display:flex;gap:10px;align-items:center}.rv-top .rv-stars{margin-left:auto}.rv-av{width:40px;height:40px;border-radius:50%;background:#a855f7;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:bold;flex:none}.rv-meta{font-size:12px}.rv-subrow{display:flex;justify-content:space-between;font-size:13px;padding:2px 0}.rv-body{white-space:pre-wrap;margin:8px 0}.rv-photos{display:flex;gap:8px;flex-wrap:wrap}.rv-photos img{width:84px;height:84px;object-fit:cover;border-radius:8px;border:2px solid var(--line)}.rv-reply{background:var(--surface);border-left:4px solid #22d3ee;padding:8px 10px;margin:8px 0;font-size:14px}.rv-reply b{color:#22d3ee}.rv-actions{margin-top:6px}.rv-form{display:flex;flex-direction:column;gap:6px;margin-top:8px}.rv-form textarea{width:100%}.rv-starbtn{background:none;border:0;color:var(--text);font-size:34px;padding:0 2px;cursor:pointer}.rv-starbtn.on{color:var(--acc-text)}.rv-mini{font-size:13px}

/* Edit-room toolbar (hvTopRemove): Done editing + Remove selected stay reachable while the palette scrolls */
#edbar{display:flex;gap:6px;align-items:center;flex-wrap:wrap;flex-basis:100%}
#edbar.on{position:sticky;z-index:4;background:var(--surface);padding:6px 8px;margin:0 -8px;border-bottom:1px solid var(--line);border-radius:0 0 8px 8px}
#edbar #rmsel{border-color:#7f1d1d}
/* cropfix v79: photo + whole crop box always inside the viewport (tall, wide/panorama, huge photos; phones, tablets, desktop) */
html.hvcropping,html.hvcropping body{overflow:hidden!important;overscroll-behavior:none}
.crop{overflow:hidden;box-sizing:border-box;max-width:100vw}
.cbox{min-width:0;max-width:100%;box-sizing:border-box}
.cstage{box-sizing:border-box;width:100%;min-width:0;height:min(68vh,680px,calc(100vh - 200px));height:min(68dvh,680px,calc(100dvh - 200px));min-height:160px;overflow:hidden;position:relative}
.cstage canvas{display:block;position:absolute;inset:0;width:100%;height:100%;touch-action:none}
@media(max-width:820px){.cstage{flex:1 1 auto;height:auto;min-height:140px}}
@media(max-height:500px){.cbox{gap:4px}.cbox h3{font-size:14px}.cbox>p.muted{display:none}.cstage{min-height:120px}}
