/* Tower View Gallery 2.0 — isolated showcase; rings are real interactive vector layers. */
@font-face { font-family:TVG Vazirmatn; src:url('fonts/Vazirmatn.woff2') format('woff2'); font-weight:100 900; font-style:normal; font-display:swap; }
body.zv-standalone { margin:0; padding:0; background:#101e31; color:#f4f0e8; font-family:'TVG Vazirmatn',Tahoma,sans-serif; }
body.zv-standalone #zv-main { display:block; margin:0; padding:0; max-width:none; width:100%; }
.zv-skip-link { position:absolute; z-index:100000; top:8px; right:12px; padding:8px 18px; transform:translateY(-150%); background:#f4f0e8; color:#101e31; border-radius:4px; }
.zv-skip-link:focus { transform:translateY(0); }
.zv-preview-notice { padding:8px 16px; text-align:center; font-size:12px; background:#273549; color:#f4ddaf; }
.zv-unavailable { max-width:600px; padding:80px 24px; margin:auto; text-align:center; direction:rtl; }.zv-unavailable a { color:#d8b57d; }
.tvg-gallery.tvg-showcase { position:relative; width:100%; max-width:none; padding:0; margin:0; min-height:100svh; overflow:hidden; container-type:normal; background:var(--tvg-bg); color:var(--tvg-fg); isolation:isolate; font-weight:400; }
.tvg-gallery.tvg-showcase.zv-font-vazirmatn { font-family:'TVG Vazirmatn',Tahoma,sans-serif; }
.tvg-gallery.tvg-showcase.zv-font-tahoma { font-family:Tahoma,sans-serif; }
.tvg-showcase a { color:inherit; text-decoration:none; box-shadow:none; }
.tvg-showcase a:focus-visible { outline:2px solid var(--tvg-accent); outline-offset:5px; }
.tvg-showcase .zv-backdrop { position:absolute; inset:0; z-index:-2; pointer-events:none; background:var(--tvg-bg); }
.tvg-showcase .zv-backdrop img { display:block; width:100%; height:100%; object-fit:cover; object-position:center; opacity:.77; }
.tvg-showcase .zv-backdrop::after { content:''; position:absolute; inset:0; background:linear-gradient(180deg,#07142736 0%,#07142708 48%,#06111d29 100%),linear-gradient(90deg,transparent 35%,#07152566 100%); }
.tvg-showcase .zv-shell { width:100%; max-width:2000px; margin:auto; padding:0 clamp(20px,2.8vw,52px); }
.tvg-showcase .zv-header { min-height:92px; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:24px; border-bottom:1px solid #f4e2c52e; padding:10px 0; direction:rtl; }
.tvg-showcase .zv-brand { display:flex; align-items:center; gap:9px; justify-self:start; color:var(--tvg-accent); }
.tvg-showcase .zv-brand strong { display:block; font-size:27px; font-weight:450; line-height:1.45; max-width:270px; overflow-wrap:anywhere; }
.tvg-showcase .zv-brand small { display:block; font:9px/1.7 ui-serif,Georgia,serif; letter-spacing:5px; margin-top:4px; text-align:center; }
.tvg-showcase .zv-brand-mark { width:53px; height:58px; flex-shrink:0; }
.tvg-showcase .zv-logo { display:block; max-width:80px; max-height:64px; object-fit:contain; }
.tvg-showcase .zv-nav { display:flex; align-items:center; gap:38px; height:100%; font-size:15px; font-weight:300; }
.tvg-showcase .zv-nav a { display:flex; height:100%; align-items:center; position:relative; padding:4px 8px; }
.tvg-showcase .zv-nav-active::after { content:''; height:2px; background:linear-gradient(90deg,#8d6e41,var(--tvg-accent),#f4e4bb); position:absolute; bottom:-11px; left:-6px; right:-6px; }
.tvg-showcase .zv-back { justify-self:end; display:flex; align-items:center; gap:12px; direction:ltr; font-size:13px; font-weight:300; opacity:.85; }
.tvg-showcase .zv-back svg { width:16px; height:16px; }
.tvg-showcase .zv-back:hover { opacity:1; color:var(--tvg-accent); }
.tvg-showcase .zv-content { display:grid; grid-template-columns:minmax(0,calc(var(--zv-scene)*1%)) minmax(0,1fr); gap:clamp(16px,2vw,38px); padding:28px 0 24px; align-items:center; direction:ltr; }
.tvg-showcase .zv-scene { min-width:0; direction:rtl; position:relative; align-self:stretch; display:flex; flex-direction:column; justify-content:center; }
.tvg-showcase .zv-artboard { position:relative; width:min(100%,calc((100svh - 174px)*.925926)); aspect-ratio:1000/1080; flex-shrink:0; margin:0 auto; isolation:isolate; }
.tvg-showcase .zv-building { position:absolute; top:5%; left:var(--zv-building-x); width:82%; height:93%; transform:translateX(-50%) scale(var(--zv-building-scale)); transform-origin:50% 100%; pointer-events:none; z-index:2; }
.tvg-showcase .zv-building img { width:100%; height:100%; display:block; max-width:none; object-fit:contain; object-position:center bottom; margin:0; border:0; filter:drop-shadow(0 12px 20px #02070c66); }
.tvg-showcase .zv-building.zv-grounded { top:4%; width:90%; height:94%; }
.tvg-showcase .zv-building.zv-grounded img {
    /* Only soften the street margins of the bundled art; custom uploads are untouched. */
    -webkit-mask-image:linear-gradient(to right,transparent,#000 3%,#000 97%,transparent),linear-gradient(to bottom,#000 0%,#000 97%,transparent 100%);
    -webkit-mask-composite:source-in;
    mask-image:linear-gradient(to right,transparent,#000 3%,#000 97%,transparent),linear-gradient(to bottom,#000 0%,#000 97%,transparent 100%);
    mask-composite:intersect;
}
.tvg-showcase .zv-orbit { position:absolute; inset:0; width:100%; height:100%; fill:none; overflow:visible; pointer-events:none; }
.tvg-showcase .zv-orbit-back { z-index:1; opacity:.9; }
.tvg-showcase .zv-orbit-front { z-index:3; }
.tvg-showcase .zv-ring-line { stroke-width:1.4px; vector-effect:non-scaling-stroke; opacity:.96; filter:drop-shadow(0 0 2px #d5a65c66); }
.tvg-showcase .zv-ring-line-1 { stroke-width:.85px; opacity:.78; }
.tvg-showcase .zv-ring-tick { stroke:var(--tvg-accent); stroke-width:.65px; vector-effect:non-scaling-stroke; opacity:.65; }
.tvg-showcase .zv-ring-glow { stroke:var(--tvg-accent); stroke-width:3px; vector-effect:non-scaling-stroke; opacity:0; filter:drop-shadow(0 0 7px var(--tvg-accent)); transition:opacity .22s; }
.tvg-showcase[data-view="ne"] .zv-glow-ne,.tvg-showcase[data-view="e"] .zv-glow-e,.tvg-showcase[data-view="se"] .zv-glow-se,.tvg-showcase[data-view="s"] .zv-glow-s,.tvg-showcase[data-view="sw"] .zv-glow-sw,.tvg-showcase[data-view="w"] .zv-glow-w,.tvg-showcase[data-view="nw"] .zv-glow-nw { opacity:var(--zv-glow); }
.tvg-showcase .zv-direction { position:absolute; left:var(--zv-x); top:var(--zv-y); transform:translate(-50%,-50%); width:44px; height:44px; display:flex; justify-content:center; align-items:center; z-index:4; padding:0; margin:0; background:transparent; border:0; border-radius:50%; color:var(--tvg-fg); overflow:visible; }
.tvg-showcase .zv-direction:hover,.tvg-showcase .zv-direction:focus { background:transparent; color:var(--tvg-accent); }
.tvg-showcase .zv-marker { display:block; width:13px; height:13px; border-radius:50%; background:#f1eee8; border:2px solid #9e855e; box-shadow:0 0 0 3px #f3ddab66,0 0 0 4px #20314c; transition:box-shadow .22s,background .22s; pointer-events:none; }
.tvg-showcase .zv-direction.is-active { background:transparent; color:var(--tvg-accent); }
.tvg-showcase .zv-direction.is-active .zv-marker { background:#fff3cb; border-color:#fff1cb; box-shadow:0 0 0 3px #b48b45,0 0 0 5px #ffe3a98c,0 0 calc(38px*var(--zv-glow)) calc(12px*var(--zv-glow)) #ffce77a0; }
.tvg-showcase .zv-direction:hover:not(:disabled) .zv-marker { box-shadow:0 0 0 3px #e6c89099,0 0 15px 5px #e8bb6d55; }
.tvg-showcase .zv-direction:disabled { opacity:.4; }
.tvg-showcase .zv-direction-copy { position:absolute; top:50%; left:41px; transform:translateY(-50%); text-align:left; pointer-events:none; white-space:nowrap; text-shadow:0 1px 4px #06111def; }
.tvg-showcase .zv-direction-copy b { display:block; font:400 clamp(12px,1.1vw,18px)/1.4 ui-sans-serif,Arial,sans-serif; }
.tvg-showcase .zv-direction-copy small { display:none; font-size:11px; font-weight:400; line-height:1.7; direction:rtl; max-width:105px; overflow:hidden; text-overflow:ellipsis; }
.tvg-showcase .zv-dir-n small,.tvg-showcase .zv-direction.is-active small { display:block; }
.tvg-showcase .zv-dir-w .zv-direction-copy,.tvg-showcase .zv-dir-nw .zv-direction-copy,.tvg-showcase .zv-dir-sw .zv-direction-copy { left:auto; right:41px; text-align:right; }
.tvg-showcase .zv-dir-nw .zv-direction-copy,.tvg-showcase .zv-dir-ne .zv-direction-copy { margin-top:-9px; }
.tvg-showcase .zv-dir-se .zv-direction-copy { left:58px; }
.tvg-showcase .zv-dir-s .zv-direction-copy { left:50%; top:42px; transform:translateX(-50%); text-align:center; }
.tvg-showcase .zv-dir-n .zv-direction-copy { display:flex; gap:10px; align-items:center; }
.tvg-showcase .zv-dir-n::after { content:''; position:absolute; width:1px; height:30px; top:35px; left:50%; background:repeating-linear-gradient(to bottom,var(--tvg-accent) 0 3px,transparent 3px 6px); opacity:.7; pointer-events:none; }
.tvg-showcase .zv-scene-caption { display:flex; align-items:center; justify-content:flex-end; gap:14px; padding:0 0 0 8px; margin:0; font-size:12px; color:var(--tvg-accent); opacity:.9; }
.tvg-showcase .zv-scene-caption span { display:block; width:38px; height:1px; background:var(--tvg-accent); order:1; }
.tvg-showcase .zv-mobile-hint { display:none; }
.tvg-showcase .zv-panel { min-width:0; width:100%; direction:rtl; padding:clamp(18px,1.8vw,30px); border:1px solid #f5e3bf55; border-radius:17px; background:linear-gradient(140deg,#d9e3f02b,#0e1e31b3 50%,#101e2cbd); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); box-shadow:inset 0 1px 0 #ffffff17,0 18px 60px #00000023; position:relative; z-index:6; align-self:start; margin-top:6px; }
.tvg-showcase .zv-panel-heading { padding:0 0 20px; margin:0 0 21px; border-bottom:1px solid #f5e3bf22; position:relative; }
.tvg-showcase .zv-panel-heading h1 { font-family:inherit; font-size:clamp(20px,1.8vw,30px); font-weight:330; color:var(--tvg-fg); line-height:1.8; padding:0; margin:0; letter-spacing:normal; }
.tvg-showcase .zv-panel-heading > span { position:absolute; bottom:-1px; right:0; width:62px; height:2px; background:linear-gradient(90deg,#8d6e41,var(--tvg-accent),#f4e4bb); }
.tvg-showcase .zv-view-heading { margin:0 0 18px; }
.tvg-showcase .zv-view-heading h2 { font-family:inherit; font-size:20px; font-weight:400; line-height:1.7; margin:0 0 4px; padding:0; color:var(--tvg-fg); }
.tvg-showcase .zv-view-heading > span { display:block; font-size:12px; font-weight:300; opacity:.68; }
.tvg-showcase .zv-photo { border:1px solid #f5e3bf3d; border-radius:7px; background:#101a24; }
.tvg-showcase .zv-photo .tvg-expand { left:auto; right:12px; top:12px; border-radius:5px; width:38px; height:38px; border-color:#eadcbd66; background:#142231b5; }
.tvg-showcase .zv-photo .tvg-expand svg { width:18px; height:18px; }
.tvg-showcase .zv-thumbnails { margin:15px -4px 0; padding:4px; gap:11px; }
.tvg-showcase .zv-thumbnails .tvg-thumb { border-radius:6px; padding:0; border:1px solid #f5e3bf55; flex-basis:calc((100% - (var(--tvg-thumbs) - 1)*11px)/var(--tvg-thumbs)); }
.tvg-showcase .zv-thumbnails .tvg-thumb img { border-radius:4px; opacity:.8; }
.tvg-showcase .zv-thumbnails .tvg-thumb.is-active { border-color:var(--tvg-accent); box-shadow:0 0 0 1px var(--tvg-accent); }
.tvg-showcase .zv-thumbnails .tvg-thumb.is-active img { opacity:1; }
.tvg-showcase .zv-caption { margin:9px 0 0; padding:0; font-size:11px; line-height:1.8; font-weight:300; max-height:5.5em; overflow:auto; color:var(--tvg-fg); opacity:.65; }
.tvg-showcase .zv-panel-footer { display:flex; align-items:center; justify-content:space-between; margin:19px 0 0; padding:16px 0 0; border-top:1px solid #f5e3bf30; gap:16px; }
.tvg-showcase .zv-panel-footer .tvg-arrow { width:44px; flex-basis:44px; height:44px; border:1px solid #f5e3bf66; background:transparent; color:var(--tvg-accent); }
.tvg-showcase .zv-panel-footer .tvg-arrow:hover:not(:disabled) { background:#e6c89022; color:#fff2d5; }
.tvg-showcase .zv-panel-footer .tvg-counter { color:var(--tvg-accent); font-size:13px; font-weight:400; opacity:1; }
.tvg-showcase .zv-empty { display:flex; width:100%; height:100%; min-height:180px; align-items:center; justify-content:center; padding:30px; color:var(--tvg-fg); font-size:13px; text-align:center; opacity:.7; }
.tvg-showcase .zv-noscript { position:relative; padding:24px; direction:rtl; background:#0b182ccc; }.tvg-showcase .zv-noscript a { text-decoration:underline; }
body.admin-bar .tvg-showcase { min-height:calc(100svh - 32px); }
@media(min-width:1600px) { .tvg-showcase .zv-shell { padding-inline:3vw; }.tvg-showcase .zv-content { gap:3vw; }.tvg-showcase .zv-panel { padding:30px; } }
@media(max-width:1100px) and (min-width:901px) { .tvg-showcase .zv-panel { padding:18px; }.tvg-showcase .zv-header { gap:16px; }.tvg-showcase .zv-brand strong { font-size:23px; }.tvg-showcase .zv-direction-copy { left:35px; }.tvg-showcase .zv-dir-w .zv-direction-copy,.tvg-showcase .zv-dir-nw .zv-direction-copy,.tvg-showcase .zv-dir-sw .zv-direction-copy { right:35px; }.tvg-showcase .zv-direction-copy small { font-size:10px; }.tvg-showcase .zv-panel-heading h1 { font-size:21px; } }
@media(max-width:900px) {
    .tvg-showcase.zv-street-scene .zv-backdrop { bottom:auto; height:calc(min(100vw - 32px,600px)*1.08 + 145px); }
    .tvg-showcase.zv-street-scene .zv-backdrop img { -webkit-mask-image:linear-gradient(#000 0 91%,transparent 100%); mask-image:linear-gradient(#000 0 91%,transparent 100%); }
    .tvg-showcase .zv-shell { padding-inline:20px; }
    .tvg-showcase .zv-header { min-height:78px; grid-template-columns:1fr auto; gap:16px; padding:9px 0; }
    .tvg-showcase .zv-nav { display:none; }
    .tvg-showcase .zv-brand strong { font-size:22px; }.tvg-showcase .zv-brand small { font-size:8px; letter-spacing:4px; }
    .tvg-showcase .zv-brand-mark { width:40px; height:48px; }.tvg-showcase .zv-logo { max-height:48px; max-width:65px; }
    .tvg-showcase .zv-back { grid-column:2; font-size:11px; gap:6px; }
    .tvg-showcase .zv-content { display:flex; flex-direction:column; gap:25px; padding-top:16px; padding-bottom:24px; }
    .tvg-showcase .zv-scene { width:100%; order:0; padding-bottom:3px; }
    .tvg-showcase .zv-artboard { width:100%; max-width:600px; height:auto; margin:auto; aspect-ratio:1000/1080; }
    .tvg-showcase .zv-scene-caption { justify-content:center; font-size:11px; margin-top:8px; padding:0; }
    .tvg-showcase .zv-mobile-hint { display:block; text-align:center; font-size:10px; color:var(--tvg-fg); opacity:.6; margin-top:10px; }
    .tvg-showcase .zv-panel { order:1; width:100%; max-width:650px; padding:22px; }
    .tvg-showcase .zv-panel-heading h1 { font-size:25px; }
    .tvg-showcase .zv-panel-heading { padding-bottom:15px; margin-bottom:16px; }
    .tvg-showcase .zv-direction-copy b { font-size:16px; }
    .tvg-showcase .zv-direction-copy small { font-size:11px; }
    .tvg-showcase .zv-backdrop img { object-position:35% top; }
}
@media(max-width:480px) {
    .tvg-showcase .zv-shell { padding-inline:16px; }
    .tvg-showcase .zv-header { min-height:72px; }
    .tvg-showcase .zv-brand { gap:5px; }.tvg-showcase .zv-brand strong { font-size:20px; }.tvg-showcase .zv-brand small { font-size:7px; letter-spacing:3px; }
    .tvg-showcase .zv-back { font-size:10px; }.tvg-showcase .zv-back svg { width:13px; }
    .tvg-showcase .zv-content { gap:22px; padding-top:14px; }
    .tvg-showcase .zv-artboard { margin-top:6px; }
    .tvg-showcase .zv-marker { width:9px; height:9px; border-width:1.3px; box-shadow:0 0 0 2px #f3ddab66,0 0 0 3px #20314c; }
    .tvg-showcase .zv-direction-copy { left:30px; }
    .tvg-showcase .zv-dir-w .zv-direction-copy,.tvg-showcase .zv-dir-nw .zv-direction-copy,.tvg-showcase .zv-dir-sw .zv-direction-copy { right:30px; }
    .tvg-showcase .zv-dir-e .zv-direction-copy { left:27px; }.tvg-showcase .zv-dir-w .zv-direction-copy { right:27px; }
    .tvg-showcase .zv-dir-se .zv-direction-copy { left:40px; }
    .tvg-showcase .zv-direction-copy b { font-size:11px; }
    .tvg-showcase .zv-direction-copy small { font-size:9px; max-width:70px; }
    .tvg-showcase .zv-dir-s .zv-direction-copy { top:34px; }
    .tvg-showcase .zv-dir-n::after { height:15px; top:32px; }
    .tvg-showcase .zv-dir-n .zv-direction-copy { gap:6px; }
    .tvg-showcase .zv-panel { border-radius:13px; padding:17px; }
    .tvg-showcase .zv-panel-heading h1 { font-size:22px; }
    .tvg-showcase .zv-view-heading h2 { font-size:18px; }.tvg-showcase .zv-view-heading { margin-bottom:13px; }
    .tvg-showcase .zv-thumbnails { gap:8px; --tvg-thumbs:3; }
    .tvg-showcase .zv-thumbnails .tvg-thumb { flex-basis:calc((100% - 16px)/3); }
    .tvg-showcase .zv-panel-footer { margin-top:14px; padding-top:13px; }
}
@media(prefers-reduced-motion:reduce) { .tvg-showcase .zv-ring-glow,.tvg-showcase .zv-marker { transition:none; } }
