/* =========================================================
   ГАЛЕРЕЯ ВЛАДИМИРА АРОНЧИКА
   Тёплые пастельные залы · плавные переходы · защита работ
   ========================================================= */

:root{
  /* цвета текущего зала — подставляются из data.js через JS */
  --bg:     #E7E1D7;
  --soft:   #E1D8C8;
  --accent: #A87F4A;

  --ink:    #2b2621;
  --ink-2:  #4a423a;
  --muted:  #8a7f73;
  --line:   rgba(43,38,33,.13);
  --paper:  rgba(255,255,255,.72);

  --sh-s: 0 2px 10px rgba(60,45,30,.06);
  --sh-m: 0 14px 38px rgba(60,45,30,.12);
  --sh-l: 0 34px 80px rgba(45,33,22,.22);

  --r:   16px;
  --r-l: 24px;
  --wrap: 1240px;
  --bar: 68px;

  --sans:  'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
  --serif: 'Cormorant Garamond', 'Iowan Old Style', Georgia, 'Times New Roman', serif;

  --ease: cubic-bezier(.16,.84,.34,1);
}

*,*::before,*::after{ box-sizing:border-box; }

html{ scroll-behavior:smooth; }

body{
  margin:0;
  font-family:var(--sans);
  font-size:17px;
  line-height:1.6;
  color:var(--ink);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  transition:background .85s var(--ease);
}

/* мягкая «бумажная» подложка зала */
body::before{
  content:''; position:fixed; inset:0; z-index:0; pointer-events:none;
  background:
    radial-gradient(1100px 620px at 50% -10%, rgba(255,255,255,.48), transparent 70%),
    radial-gradient(760px 520px at 100% 100%, var(--soft), transparent 72%);
  transition:background .85s var(--ease);
}
body::after{
  content:''; position:fixed; inset:0; z-index:1; pointer-events:none; opacity:.30;
  mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.25'/%3E%3C/svg%3E");
}

main{ position:relative; z-index:2; }

a{ color:inherit; text-decoration:none; }
h1,h2,h3{ margin:0; line-height:1.12; font-weight:600; letter-spacing:-.01em; }
p{ margin:0; }
button{ font:inherit; color:inherit; }

.wrap{ width:min(100% - 40px, var(--wrap)); margin-inline:auto; }

/* запрет выделения и «перетаскивания» — работы не утекают мышкой */
.no-select{
  -webkit-user-select:none; -moz-user-select:none; user-select:none;
  -webkit-touch-callout:none;
}
img, .canvas__layer, .tile__img{ -webkit-user-drag:none; user-drag:none; }

/* ================= Шапка ================= */
.topbar{
  position:fixed; top:0; left:0; right:0; z-index:60;
  background:rgba(255,255,255,.80);
  -webkit-backdrop-filter:saturate(1.5) blur(18px);
  backdrop-filter:saturate(1.5) blur(18px);
  box-shadow:0 1px 0 var(--line), 0 8px 26px -20px rgba(60,45,30,.55);
  transition:background .6s var(--ease);
}
.topbar__top{
  width:min(100% - 32px, 1440px); margin-inline:auto;
  height:62px;
  display:flex; align-items:center; gap:14px;
}
.topbar__line{ height:2px; background:var(--line); }
.topbar__line i{ display:block; height:100%; width:0; background:var(--accent); transition:width .12s linear, background .6s var(--ease); }

/* марка слева, звук и контакты автора — прижаты вправо */
.brand{ display:flex; align-items:center; gap:11px; flex:none; margin-right:auto; }
.brand__mark{ width:38px; height:38px; color:var(--accent); flex:none; transition:color .6s var(--ease), transform .5s var(--ease); }
.brand__mark svg{ width:100%; height:100%; display:block; }
.brand:hover .brand__mark{ transform:translateY(-2px) rotate(-2deg); }
.brand__text{ display:flex; flex-direction:column; line-height:1.1; }
.brand__text b{ font-family:var(--serif); font-size:21px; font-weight:600; letter-spacing:.02em; }
.brand__text i{ font-style:normal; font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }

/* строка залов — всегда видна, при нехватке места переносится на вторую */
.halls{
  border-top:1px solid var(--line);
  background:rgba(255,255,255,.35);
}
.halls__track{
  width:min(100% - 24px, 1440px); margin-inline:auto;
  display:flex; flex-wrap:wrap; justify-content:center;
  gap:5px 4px; padding:7px 0 8px;
}

.hallbtn{
  flex:none; border:0; background:transparent; cursor:pointer;
  padding:7px 13px; border-radius:999px;
  font-size:14px; font-weight:500; white-space:nowrap; color:var(--ink-2);
  display:inline-flex; align-items:center; gap:7px;
  transition:background .3s var(--ease), color .3s var(--ease);
}
.hallbtn__dot{ width:9px; height:9px; border-radius:50%; background:var(--d); box-shadow:0 0 0 1px rgba(0,0,0,.07) inset; flex:none; }
.hallbtn:hover{ background:rgba(0,0,0,.045); }
.hallbtn.is-active{ background:var(--ink); color:#fff; }
.hallbtn.is-active .hallbtn__dot{ box-shadow:0 0 0 2px rgba(255,255,255,.35); }

.iconbtn{
  flex:none; width:40px; height:40px; border:0; border-radius:12px;
  background:rgba(0,0,0,.045); cursor:pointer;
  display:grid; place-items:center; transition:background .3s var(--ease), transform .3s var(--ease);
}
.iconbtn:hover{ background:rgba(0,0,0,.085); transform:translateY(-1px); }
.iconbtn svg{ width:21px; height:21px; fill:currentColor; }
.iconbtn .ico-off{ display:none; }
.iconbtn[data-on="false"] .ico-on{ display:none; }
.iconbtn[data-on="false"] .ico-off{ display:block; }
.iconbtn[data-on="false"]{ color:var(--muted); }

/* ================= Главная ================= */
.hero{ padding:calc(var(--bar) + 76px) 0 46px; text-align:center; }
.hero > .wrap{ position:relative; }

/* Окошко со случайными работами — справа вверху заглавного экрана */
.peek{
  position:absolute; top:-14px; right:0; z-index:5;
  width:206px; padding:0; border:0; background:transparent;
  cursor:pointer; text-align:left;
  animation:peekIn .9s var(--ease) both .25s;
}
@keyframes peekIn{ from{ opacity:0; transform:translateY(-10px); } to{ opacity:1; transform:none; } }

.peek__frame{
  display:block; position:relative;
  aspect-ratio:1/1; border-radius:10px; overflow:hidden;
  background:#fff; padding:9px;
  box-shadow:var(--sh-m), 0 0 0 1px var(--line);
  transition:transform .5s var(--ease), box-shadow .5s var(--ease);
}
.peek:hover .peek__frame{ transform:translateY(-3px); box-shadow:var(--sh-l), 0 0 0 1px var(--accent); }

.peek__layer{
  position:absolute; inset:9px; border-radius:4px;
  background-position:center; background-repeat:no-repeat; background-size:contain;
  opacity:0; transition:opacity .9s var(--ease);
}
.peek__layer.is-on{ opacity:1; }
.peek__shield{ position:absolute; inset:0; z-index:3; }
.peek__wm{
  position:absolute; right:12px; bottom:11px; z-index:4; pointer-events:none;
  font-size:9.5px; letter-spacing:.05em; color:rgba(255,255,255,.9);
  text-shadow:0 1px 3px rgba(0,0,0,.7), 0 0 1px rgba(0,0,0,.85);
}
.peek__cap{ display:block; padding:9px 2px 0; }
.peek__cap b{
  display:block; font-family:var(--serif); font-size:16px; font-weight:600; line-height:1.2;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.peek__cap i{
  display:block; font-style:normal; font-size:11px; letter-spacing:.1em;
  text-transform:uppercase; color:var(--muted); margin-top:3px;
}

@media (max-width:1180px){ .peek{ display:none; } }
.hero__k{ font-size:12px; letter-spacing:.28em; text-transform:uppercase; color:var(--muted); margin-bottom:18px; }
/* вся строка одним начертанием: курсив, жирный, тёмный */
.hero__t{
  font-family:var(--serif); font-size:clamp(40px, 7vw, 78px);
  font-style:italic; font-weight:700; color:var(--ink); letter-spacing:-.015em;
}
.hero__t em{ font-style:italic; font-weight:700; color:inherit; }
.hero__s{ margin-top:18px; font-size:clamp(16px,2vw,19px); color:var(--ink-2); max-width:620px; margin-inline:auto; }
.hero__rule{ width:76px; height:1px; background:var(--accent); margin:30px auto 0; transition:background .6s var(--ease); }

/* Пока окошко со случайными работами на экране, заголовок делаем мельче —
   иначе крупная строка доезжает до рамки и наползает на неё. */
@media (min-width:1181px){
  .hero__t{ font-size:clamp(44px, 4.3vw, 58px); }
}

.rooms{ padding:26px 0 76px; }
.rooms__grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:22px; }

.room{
  position:relative; text-align:left; cursor:pointer;
  border:1px solid var(--line); border-radius:var(--r-l);
  background:var(--c); padding:26px 26px 22px;
  min-height:210px; display:flex; flex-direction:column; overflow:hidden;
  transition:transform .5s var(--ease), box-shadow .5s var(--ease);
}
.room::after{
  content:''; position:absolute; inset:auto -30% -60% auto; width:230px; height:230px; border-radius:50%;
  background:var(--a); opacity:.10; transition:transform .7s var(--ease), opacity .7s var(--ease);
}
.room:hover{ transform:translateY(-5px); box-shadow:var(--sh-m); }
.room:hover::after{ transform:scale(1.25) translate(-10%,-10%); opacity:.16; }
.room__n{ font-family:var(--serif); font-size:15px; color:var(--a); letter-spacing:.18em; }
.room__t{ font-family:var(--serif); font-size:30px; font-weight:600; margin-top:12px; position:relative; z-index:1; }
.room__s{ margin-top:10px; font-size:14.5px; color:var(--ink-2); position:relative; z-index:1; }
.room__b{ margin-top:auto; padding-top:18px; display:flex; align-items:center; gap:9px; font-size:13.5px; color:var(--a); font-weight:600; position:relative; z-index:1; }
.room__b svg{ width:16px; height:16px; transition:transform .4s var(--ease); }
.room:hover .room__b svg{ transform:translateX(5px); }
.room__cnt{ margin-left:auto; color:var(--muted); font-weight:500; }

/* ================= Зал ================= */
.hallhead{ padding:calc(var(--bar) + 64px) 0 30px; }
.hallhead__top{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  flex-wrap:wrap-reverse;
}
.hallhead__k{ font-size:12px; letter-spacing:.26em; text-transform:uppercase; color:var(--muted); }

/* Выход в холл — на экране зала и в полноэкранном просмотре */
.exitbtn{
  flex:none; display:inline-flex; align-items:center; gap:9px;
  border:0; cursor:pointer; border-radius:999px;
  padding:10px 18px 10px 15px;
  font-size:14px; font-weight:600; color:var(--accent);
  background:rgba(255,255,255,.75); box-shadow:0 0 0 1px var(--line), var(--sh-s);
  transition:background .3s var(--ease), transform .3s var(--ease), box-shadow .3s var(--ease), color .6s var(--ease);
}
.exitbtn svg{ width:18px; height:18px; flex:none; }
.exitbtn:hover{
  background:#fff; transform:translateY(-2px);
  box-shadow:0 0 0 1px var(--accent), var(--sh-m);
}

.viewer__exit{
  position:absolute; top:18px; right:74px; z-index:7;
  display:inline-flex; align-items:center; gap:9px;
  border:0; cursor:pointer; border-radius:999px;
  padding:11px 20px 11px 16px;
  font-size:14px; font-weight:600; color:#f4ece1;
  background:rgba(255,255,255,.12);
  transition:background .3s var(--ease), transform .3s var(--ease);
}
.viewer__exit svg{ width:18px; height:18px; flex:none; }
.viewer__exit:hover{ background:rgba(255,255,255,.24); transform:translateY(-1px); }
.hallhead__t{ font-family:var(--serif); font-size:clamp(36px,6vw,64px); font-weight:600; margin-top:12px; }
.hallhead__s{ margin-top:12px; font-size:17px; color:var(--ink-2); max-width:640px; }
.hallhead__m{ margin-top:22px; display:flex; align-items:center; gap:16px; font-size:13.5px; color:var(--muted); flex-wrap:wrap; }
.hallhead__m b{ color:var(--accent); font-weight:600; }
.hallhead__rule{ height:1px; background:var(--line); margin-top:26px; }

.grid{ padding:8px 0 24px; columns:3; column-gap:26px; }
@media (max-width:1000px){ .grid{ columns:2; } }
@media (max-width:640px){  .grid{ columns:1; } }

.tile{
  break-inside:avoid; -webkit-column-break-inside:avoid; page-break-inside:avoid;
  margin:0 0 26px; padding:0; border:0; background:transparent; width:100%;
  cursor:zoom-in; display:block; text-align:left;
  opacity:0; transform:translateY(18px);
  transition:opacity .7s var(--ease), transform .7s var(--ease);
}
.tile.is-in{ opacity:1; transform:none; }

.tile__frame{
  display:block;
  position:relative; border-radius:12px; overflow:hidden;
  background:#fff; padding:12px;
  box-shadow:var(--sh-s), 0 0 0 1px var(--line);
  transition:transform .55s var(--ease), box-shadow .55s var(--ease);
}
.tile:hover .tile__frame{ transform:translateY(-4px); box-shadow:var(--sh-m), 0 0 0 1px var(--line); }
.tile__img{
  display:block;
  position:relative; width:100%; aspect-ratio:var(--ar, 4/3);
  background:var(--soft) center/cover no-repeat;
  border-radius:5px;
}
.tile__shield{ position:absolute; inset:0; z-index:3; }
.tile__wm{
  position:absolute; right:8px; bottom:7px; z-index:4;
  font-size:10px; letter-spacing:.06em; color:rgba(255,255,255,.9);
  text-shadow:0 1px 3px rgba(0,0,0,.65), 0 0 1px rgba(0,0,0,.8);
  pointer-events:none;
}
.tile__cap{ display:block; padding:12px 3px 0; }
.tile__cap b{ display:block; font-family:var(--serif); font-size:19px; font-weight:600; line-height:1.25; }
.tile__cap span{ display:block; font-size:13.5px; color:var(--muted); margin-top:3px; }
.tile__demo{
  position:absolute; left:18px; top:18px; z-index:4;
  background:rgba(255,255,255,.86); color:var(--muted);
  font-size:10px; letter-spacing:.12em; text-transform:uppercase;
  padding:4px 8px; border-radius:6px;
}

/* пустой зал */
.empty{
  border:1px dashed var(--line); border-radius:var(--r-l);
  padding:44px 30px; text-align:center; background:rgba(255,255,255,.5);
}
.empty b{ font-family:var(--serif); font-size:24px; display:block; }
.empty span{ display:block; margin-top:8px; color:var(--muted); font-size:15px; }

/* переход к следующему залу */
.nexthall{
  margin:14px 0 80px; border-radius:var(--r-l); overflow:hidden;
  border:1px solid var(--line); background:var(--c);
  padding:34px 32px; display:flex; align-items:center; gap:24px; flex-wrap:wrap;
  cursor:pointer; width:100%; text-align:left;
  transition:transform .5s var(--ease), box-shadow .5s var(--ease);
}
.nexthall:hover{ transform:translateY(-4px); box-shadow:var(--sh-m); }
.nexthall__l{ flex:1 1 300px; }
.nexthall__l > *{ display:block; }
.nexthall__k{ font-size:12px; letter-spacing:.24em; text-transform:uppercase; color:var(--muted); }
.nexthall__t{ font-family:var(--serif); font-size:clamp(28px,4vw,42px); font-weight:600; margin-top:8px; }
.nexthall__s{ margin-top:8px; color:var(--ink-2); font-size:15px; }
.nexthall__go{
  flex:none; width:64px; height:64px; border-radius:50%; background:var(--a); color:#fff;
  display:grid; place-items:center; transition:transform .5s var(--ease);
}
.nexthall:hover .nexthall__go{ transform:translateX(7px) scale(1.06); }
.nexthall__go svg{ width:26px; height:26px; }

.btn{
  border:0; border-radius:999px; cursor:pointer;
  padding:13px 26px; font-size:15px; font-weight:600;
  background:var(--ink); color:#fff;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease), opacity .3s;
}
.btn:hover{ transform:translateY(-2px); box-shadow:var(--sh-m); }
.btn--ghost{ background:transparent; color:#fff; box-shadow:inset 0 0 0 1px rgba(255,255,255,.4); }
.btn--ghost:hover{ background:rgba(255,255,255,.12); box-shadow:inset 0 0 0 1px rgba(255,255,255,.6); }

/* ---------- Логотип автора справа вверху + карточка контактов ---------- */
.prowrap{ position:relative; flex:none; }
.pro{
  flex:none; display:flex; align-items:center; gap:10px;
  padding:5px 8px 5px 6px; border-radius:12px;
  border:0; background:transparent; cursor:pointer; font:inherit; color:inherit;
  transition:background .3s var(--ease), transform .3s var(--ease);
}
.pro:hover{ background:rgba(15,95,168,.08); transform:translateY(-1px); }
.pro__chev{ width:16px; height:16px; color:var(--muted); transition:transform .3s var(--ease); }
.pro[aria-expanded="true"]{ background:rgba(15,95,168,.10); }
.pro[aria-expanded="true"] .pro__chev{ transform:rotate(180deg); }

.card{
  position:absolute; top:calc(100% + 10px); right:0; z-index:80;
  width:min(92vw, 306px);
  background:#fff; border-radius:18px; padding:8px;
  box-shadow:0 24px 60px -18px rgba(35,25,15,.4), 0 0 0 1px var(--line);
  opacity:0; transform:translateY(-8px) scale(.985);
  transition:opacity .28s var(--ease), transform .28s var(--ease);
}
.card[hidden]{ display:none; }
.card.is-open{ opacity:1; transform:none; }

.card__head{ display:flex; align-items:center; gap:11px; padding:10px 10px 14px; }
.card__head img{ width:44px; height:44px; border-radius:12px; flex:none;
  box-shadow:0 8px 20px -10px rgba(15,95,168,.8); }
.card__head span{ display:flex; flex-direction:column; line-height:1.2; }
.card__head b{ font-family:var(--serif); font-size:19px; font-weight:600; }
.card__head i{ font-style:normal; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); }

.card__row{
  display:flex; align-items:center; gap:12px;
  padding:11px 10px; border-radius:12px;
  transition:background .25s var(--ease);
}
.card__row:hover{ background:rgba(15,95,168,.07); }
.card__ico{
  width:34px; height:34px; flex:none; border-radius:10px;
  display:grid; place-items:center;
  background:rgba(15,95,168,.10); color:#0f5fa8;
}
.card__ico svg{ width:19px; height:19px; }
.card__txt{ display:flex; flex-direction:column; line-height:1.25; min-width:0; }
.card__txt b{ font-size:15px; font-weight:600; overflow:hidden; text-overflow:ellipsis; }
.card__txt i{ font-style:normal; font-size:12px; color:var(--muted); }

.card__qr{
  margin-top:6px; padding:14px 10px 8px; border-top:1px solid var(--line);
  display:flex; align-items:center; gap:12px;
}
.card__qr img{ width:76px; height:76px; border-radius:10px; flex:none;
  background:#fff; box-shadow:0 0 0 1px var(--line); padding:4px; }
.card__qr span{ font-size:12.5px; color:var(--muted); }
.pro img{ width:34px; height:34px; border-radius:10px; flex:none;
  box-shadow:0 6px 16px -8px rgba(15,95,168,.75); }
.pro__t{ display:flex; flex-direction:column; line-height:1.14; }
.pro__d{ font-size:15px; font-weight:700; letter-spacing:-.01em; white-space:nowrap; }
.pro__d i{ font-style:normal; color:#0f5fa8; }
.pro__t b{ font-size:9.5px; font-weight:500; letter-spacing:.13em; text-transform:uppercase; color:var(--muted); margin-top:2px; white-space:nowrap; }

/* ================= Подвал ================= */
.foot{ position:relative; z-index:2; border-top:1px solid var(--line); background:rgba(255,255,255,.62); }
.foot__in{ width:min(100% - 40px, var(--wrap)); margin-inline:auto; padding:46px 0 26px; }

.foot__grid{
  display:grid; gap:34px;
  grid-template-columns:1.15fr 1.15fr auto;
  align-items:start;
}

.foot__col{ min-width:0; }

.foot__logo{ display:flex; align-items:center; gap:13px; }
.foot__logo img{ width:48px; height:48px; border-radius:13px; flex:none;
  box-shadow:0 10px 24px -12px rgba(15,95,168,.8); }
.foot__logo span{ display:flex; flex-direction:column; line-height:1.2; }
.foot__logo b{ font-family:var(--serif); font-size:23px; font-weight:600; }
.foot__logo i{ font-style:normal; font-size:12px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); }

.foot__tags{ margin-top:16px; font-size:13.5px; color:var(--ink-2); }
.foot__tags--muted{ margin-top:4px; color:var(--muted); font-size:12.5px; }

.foot__lbl{ font-size:11.5px; letter-spacing:.22em; text-transform:uppercase; color:var(--muted); }
.foot__phone{
  display:inline-block; margin-top:10px;
  font-family:var(--serif); font-size:clamp(26px,3.4vw,34px); font-weight:600;
  color:var(--accent); transition:color .6s var(--ease), opacity .3s;
}
.foot__phone:hover{ opacity:.75; }
.foot__small{ margin-top:8px; font-size:13px; color:var(--muted); max-width:330px; }
.foot__btns{ margin-top:18px; display:flex; gap:10px; flex-wrap:wrap; }

.btn--dark{ background:var(--ink); color:#fff; }
.btn--line{ background:transparent; color:var(--ink); box-shadow:inset 0 0 0 1px var(--line); }
.btn--line:hover{ box-shadow:inset 0 0 0 1px var(--accent); color:var(--accent); }
.foot .btn{ display:inline-block; text-align:center; padding:11px 22px; font-size:14.5px; }

.foot__col--qr{ text-align:center; }
.foot__col--qr img{
  width:132px; height:132px; border-radius:14px; margin-inline:auto;
  background:#fff; padding:7px; box-shadow:var(--sh-s), 0 0 0 1px var(--line);
}
.foot__col--qr .foot__small{ margin-inline:auto; max-width:150px; }

.foot__bar{
  margin-top:34px; padding-top:20px; border-top:1px solid var(--line);
  display:flex; align-items:center; gap:14px; flex-wrap:wrap; justify-content:space-between;
}
.foot__sign{ font-size:13.5px; }
.foot__note{ font-size:12.5px; color:var(--muted); flex:1 1 320px; }
.foot__site{ font-family:var(--serif); font-size:20px; color:var(--accent); transition:color .6s var(--ease); }

@media (max-width:900px){
  .foot__grid{ grid-template-columns:1fr; gap:28px; }
  .foot__col--qr{ text-align:left; }
  .foot__col--qr img{ margin-inline:0; }
  .foot__col--qr .foot__small{ margin-inline:0; }
  .foot__bar{ justify-content:flex-start; }
}

/* ================= Просмотр картины ================= */
.viewer{ position:fixed; inset:0; z-index:90; display:grid; place-items:center; }
.viewer[hidden]{ display:none; }
.viewer__bg{
  position:absolute; inset:0;
  background:radial-gradient(120% 90% at 50% 40%, #2a231d 0%, #17120e 65%, #0d0a08 100%);
  opacity:0; transition:opacity .5s var(--ease);
}
.viewer.is-open .viewer__bg{ opacity:.985; }

.viewer__stage{
  position:relative; z-index:2;
  display:flex; flex-direction:column; align-items:center; gap:20px;
  padding:18px; max-width:96vw;
  opacity:0; transform:scale(.98); transition:opacity .45s var(--ease), transform .45s var(--ease);
}
.viewer.is-open .viewer__stage{ opacity:1; transform:none; }
.viewer.is-end .viewer__stage{ opacity:0; pointer-events:none; }

.canvas{
  position:relative;
  width:min(92vw, calc((100vh - 230px) * var(--ar, 1.3333)));
  aspect-ratio:var(--ar, 4/3);
  background:#0b0806;
  border-radius:4px;
  box-shadow:0 0 0 10px #fdfaf4, 0 0 0 11px rgba(0,0,0,.35), 0 46px 100px rgba(0,0,0,.7);
  transition:width .5s var(--ease);
}
.canvas__layer{
  position:absolute; inset:0;
  background-position:center; background-repeat:no-repeat; background-size:contain;
  opacity:0; transition:opacity .62s var(--ease), transform .62s var(--ease);
  transform:scale(1.012);
}
.canvas__layer.is-on{ opacity:1; transform:none; }
.canvas__shield{ position:absolute; inset:0; z-index:5; }
.wm{
  position:absolute; right:12px; bottom:10px; z-index:6; pointer-events:none;
  font-size:13px; letter-spacing:.07em; color:rgba(255,255,255,.92);
  text-shadow:0 1px 4px rgba(0,0,0,.75), 0 0 2px rgba(0,0,0,.9);
}

.plate{ text-align:center; color:#f4ece1; max-width:min(92vw, 760px); transition:opacity .22s var(--ease); }
.plate__title{ display:block; font-family:var(--serif); font-size:clamp(21px,3vw,29px); font-weight:600; }
.plate__note{ display:block; font-size:14.5px; color:rgba(244,236,225,.62); margin-top:6px; }

.viewer__close{
  position:absolute; top:16px; right:18px; z-index:6;
  width:46px; height:46px; border:0; border-radius:50%;
  background:rgba(255,255,255,.10); color:#fff; font-size:29px; line-height:1; cursor:pointer;
  transition:background .3s var(--ease), transform .3s var(--ease);
}
.viewer__close:hover{ background:rgba(255,255,255,.2); transform:rotate(90deg); }

.viewer__counter{
  position:absolute; top:26px; left:50%; transform:translateX(-50%); z-index:6;
  color:rgba(255,255,255,.62); font-size:13px; letter-spacing:.16em;
}
.viewer__hall{
  position:absolute; top:24px; left:24px; z-index:6;
  color:rgba(255,255,255,.55); font-family:var(--serif); font-size:19px;
}

.viewer__nav{
  position:absolute; top:0; bottom:0; z-index:6; width:min(19vw,150px);
  border:0; background:transparent; cursor:pointer; color:#fff;
  display:grid; place-items:center; opacity:.42; transition:opacity .3s var(--ease);
}
.viewer__nav:hover{ opacity:1; background:linear-gradient(var(--g), rgba(255,255,255,.05), transparent 70%); }
.viewer__nav--prev{ left:0;  --g:90deg; }
.viewer__nav--next{ right:0; --g:270deg; }
.viewer__nav svg{ width:44px; height:44px; }
.viewer__nav[disabled]{ opacity:.12; cursor:default; }
.viewer.is-end .viewer__nav{ opacity:0; pointer-events:none; }

/* карточка «зал просмотрен» */
.endcard{
  position:absolute; inset:0; z-index:4;
  display:grid; align-content:center; justify-items:center;
  text-align:center; color:#f4ece1;
  padding:30px;
  opacity:0; transform:translateY(14px); transition:opacity .5s var(--ease), transform .5s var(--ease);
  pointer-events:none;
}
.endcard > *{ max-width:min(92vw,620px); }
.viewer.is-end .endcard{ opacity:1; transform:none; pointer-events:auto; }
.endcard__k{ font-size:12px; letter-spacing:.26em; text-transform:uppercase; color:rgba(244,236,225,.55); }
.endcard__t{ font-family:var(--serif); font-size:clamp(30px,5vw,50px); font-weight:600; margin-top:14px; }
.endcard__s{ margin-top:12px; color:rgba(244,236,225,.7); font-size:15.5px; }
.endcard__row{ margin-top:28px; display:flex; gap:12px; justify-content:center; flex-wrap:wrap; }
.endcard .btn:not(.btn--ghost){ background:#fdfaf4; color:#221c16; }

/* «показ приостановлен» — окно потеряло фокус */
.viewer__guard{
  position:absolute; inset:0; z-index:20; display:grid; place-items:center;
  background:rgba(12,9,7,.97);
  opacity:0; pointer-events:none; transition:opacity .18s linear;
}
.viewer.is-guarded .viewer__guard{ opacity:1; pointer-events:auto; }
.viewer__guard-in{ text-align:center; color:#e8ded1; }
.viewer__guard-in b{ display:block; font-family:var(--serif); font-size:28px; font-weight:600; }
.viewer__guard-in span{ display:block; margin-top:8px; font-size:14px; color:rgba(232,222,209,.6); }

/* размытие витрины, когда окно не в фокусе */
.is-away .tile__img{ filter:blur(22px); }
.is-away .tile__cap{ opacity:.25; }

/* ================= Уведомление ================= */
.toast{
  position:fixed; left:50%; bottom:26px; transform:translate(-50%, 20px); z-index:120;
  background:#221c16; color:#f6efe4; border-radius:12px;
  padding:12px 20px; font-size:14px; box-shadow:var(--sh-l);
  opacity:0; pointer-events:none; transition:opacity .3s var(--ease), transform .3s var(--ease);
  max-width:min(92vw,460px); text-align:center;
}
.toast.is-on{ opacity:1; transform:translate(-50%,0); }

/* ================= Адаптив ================= */
@media (max-width:900px){
  .topbar__top{ height:56px; }
  .brand__text i{ display:none; }
  .hallbtn{ font-size:12.5px; padding:6px 10px; gap:5px; }
  .hallbtn__dot{ width:7px; height:7px; }
  /* на узком экране десять залов в две строки не помещаются —
     оставляем одну строку с горизонтальной прокруткой */
  .halls{
    -webkit-mask-image:linear-gradient(90deg, transparent, #000 20px, #000 calc(100% - 20px), transparent);
    mask-image:linear-gradient(90deg, transparent, #000 20px, #000 calc(100% - 20px), transparent);
  }
  .halls__track{
    flex-wrap:nowrap; justify-content:flex-start;
    overflow-x:auto; scroll-behavior:smooth; scrollbar-width:none;
    gap:3px; padding:6px 14px 7px; width:100%;
  }
  .halls__track::-webkit-scrollbar{ display:none; }
  /* в просмотре на телефоне оставляем только значок «домой» */
  .viewer__exit{ font-size:0; gap:0; padding:11px; right:70px; }
  .exitbtn{ font-size:13px; padding:8px 14px 8px 12px; }
  .viewer__nav{ width:26vw; }
  .viewer__nav svg{ width:32px; height:32px; }
  .viewer__hall{ display:none; }
  .canvas{ width:min(94vw, calc((100vh - 210px) * var(--ar, 1.3333))); }
  .room{ min-height:0; padding:22px; }
  .pro__t{ display:none; }
  .card{ width:min(94vw, 300px); }
}
@media (max-width:1180px){
  .pro__t b{ display:none; }
}

@media (prefers-reduced-motion:reduce){
  *{ animation-duration:.01ms !important; transition-duration:.06s !important; scroll-behavior:auto !important; }
}

/* ================= Печать запрещена ================= */
@media print{
  html, body{ display:none !important; }
}
