:root{
  --font-display:'Bricolage Grotesque','Manrope',system-ui,sans-serif;
  --font-body:'Manrope',system-ui,-apple-system,'Segoe UI',sans-serif;

  --color-bg:#0B0B0C;
  --color-surface:#17171A;
  --color-text:#F2F0EC;
  --color-primary:#C8FF3D;
  --color-accent:#FF5A36;
  --color-line:rgba(242,240,236,.14);
  --color-muted:rgba(242,240,236,.56);

  --radius-card:18px;
  --radius-btn:100px;
  --radius-tile:0px;
  --radius-xs:6px;

  --space-section:96px;
  --pad-x:14px;
  --topbar-h:56px;
  --ease:cubic-bezier(.2,.85,.15,1);
}
@supports (color: oklch(0.5 0.1 200)){
  :root{
    --color-bg:oklch(0.145 0.005 285);
    --color-surface:oklch(0.205 0.006 285);
    --color-text:oklch(0.955 0.006 90);
    --color-primary:oklch(0.921 0.212 127);
    --color-accent:oklch(0.687 0.206 36);
  }
}

*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none !important}
html{overflow-x:clip;background:var(--color-bg)}
body{
  margin:0;
  background:var(--color-bg);
  color:var(--color-text);
  font-family:var(--font-body);
  font-size:15px;
  line-height:1.45;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
body.no-scroll{overflow:hidden}
button{font-family:inherit;color:inherit}
a{color:inherit}

/* ---------- decorative backdrop (parallax) ---------- */
.glow{
  position:fixed;
  top:-24vh;left:-18vw;
  width:96vw;height:96vh;
  z-index:0;
  pointer-events:none;
  opacity:.9;
  transform:translate3d(0,0,0);
  will-change:transform;
  background:
    radial-gradient(38% 42% at 32% 30%, color-mix(in oklab, var(--color-primary) 9%, transparent), transparent 72%),
    radial-gradient(42% 46% at 82% 78%, color-mix(in oklab, var(--color-accent) 8%, transparent), transparent 74%);
}

/* ---------- header ---------- */
.topbar{
  position:sticky;top:0;z-index:60;
  display:flex;align-items:center;gap:10px;
  height:var(--topbar-h);
  padding:0 var(--pad-x);
  background:color-mix(in oklab, var(--color-bg) 74%, transparent);
  -webkit-backdrop-filter:blur(20px) saturate(1.3);
  backdrop-filter:blur(20px) saturate(1.3);
  border-bottom:1px solid var(--color-line);
}
.brand{display:flex;align-items:center;gap:9px;flex:0 0 auto}
.brand__mark{
  position:relative;
  width:18px;height:18px;
  border-radius:var(--radius-xs);
  background:var(--color-primary);
}
.brand__mark::after{
  content:"";
  position:absolute;left:4px;right:4px;top:50%;
  height:2px;background:var(--color-bg);
  transform:translateY(-50%) rotate(-24deg);
}
.brand__name{
  font-family:var(--font-display);
  font-weight:700;font-size:17px;letter-spacing:-.02em;
}
.topbar__sub{
  flex:1 1 auto;min-width:0;margin:0;
  font-size:12px;color:var(--color-muted);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.iconbtn{
  flex:0 0 auto;
  width:40px;height:40px;
  display:grid;place-items:center;
  border:1px solid var(--color-line);
  border-radius:var(--radius-btn);
  background:transparent;
  cursor:pointer;
  padding:0;
  transition:transform .18s var(--ease), opacity .2s;
}
.iconbtn:hover{background:color-mix(in oklab, var(--color-text) 9%, transparent)}
.iconbtn:active{transform:scale(.9)}
.iconbtn:focus-visible,
.chip:focus-visible,
.btn:focus-visible,
.tile:focus-visible,
.thumb__x:focus-visible,
.vpreset:focus-visible{
  outline:2px solid var(--color-primary);
  outline-offset:2px;
}
.pill{
  flex:0 0 auto;
  display:inline-flex;align-items:center;gap:6px;
  padding:8px 12px;
  border:1px solid var(--color-line);
  border-radius:var(--radius-btn);
  background:transparent;
  font-size:12px;font-weight:600;
  text-decoration:none;
  white-space:nowrap;
  cursor:pointer;
}
.pill__dot{width:6px;height:6px;border-radius:var(--radius-btn);background:var(--color-primary)}

/* ---------- vibe panel ---------- */
.vibe{
  position:fixed;top:var(--topbar-h);left:0;right:0;z-index:55;
  padding:16px var(--pad-x) 18px;
  background:color-mix(in oklab, var(--color-bg) 90%, transparent);
  -webkit-backdrop-filter:blur(22px);
  backdrop-filter:blur(22px);
  border-bottom:1px solid var(--color-line);
  opacity:0;transform:translateY(-10px);pointer-events:none;
  transition:opacity .22s var(--ease), transform .3s var(--ease);
}
.vibe.is-open{opacity:1;transform:none;pointer-events:auto}
.vibe__lead{
  margin:0 0 12px;
  font-family:var(--font-display);
  font-size:14px;font-weight:600;letter-spacing:-.01em;
}
.vibe__lead span{color:var(--color-muted);font-family:var(--font-body);font-weight:400;font-size:12px}
.vibe__presets{display:flex;flex-wrap:wrap;gap:6px}
.vpreset{
  display:inline-flex;align-items:center;gap:8px;
  padding:9px 13px;
  border:1px solid var(--color-line);
  border-radius:var(--radius-btn);
  background:transparent;
  font-size:13px;font-weight:500;
  cursor:pointer;
  transition:transform .18s var(--ease);
}
.vpreset:hover{background:color-mix(in oklab, var(--color-text) 9%, transparent)}
.vpreset:active{transform:scale(.95)}
.vpreset[aria-pressed="true"]{
  border-color:var(--color-primary);
  color:var(--color-primary);
}
.vpreset__dots{display:inline-flex;gap:3px}
.vpreset__dots i{width:5px;height:5px;border-radius:var(--radius-btn);display:block}
.vibe__row{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin-top:14px;
}
.vibe__count{font-size:12px;color:var(--color-muted)}

/* ---------- tag rail ---------- */
.rail{
  position:sticky;top:var(--topbar-h);z-index:45;
  background:color-mix(in oklab, var(--color-bg) 80%, transparent);
  -webkit-backdrop-filter:blur(20px);
  backdrop-filter:blur(20px);
  border-bottom:1px solid var(--color-line);
}
.rail__scroll{
  display:flex;gap:6px;
  overflow-x:auto;
  padding:8px var(--pad-x);
  scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
}
.rail__scroll::-webkit-scrollbar{display:none}
.chip{
  flex:0 0 auto;
  padding:9px 14px;
  border:1px solid var(--color-line);
  border-radius:var(--radius-btn);
  background:transparent;
  font-size:13px;font-weight:500;line-height:1;
  white-space:nowrap;
  cursor:pointer;
  transition:transform .18s var(--ease);
}
.chip:hover{background:color-mix(in oklab, var(--color-text) 9%, transparent)}
.chip:active{transform:scale(.94)}
.chip[aria-pressed="true"]{
  background:var(--color-primary);
  border-color:var(--color-primary);
  color:var(--color-bg);
  font-weight:700;
}
.chip--reset{color:var(--color-accent);border-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}

/* ---------- feed ---------- */
main{position:relative;z-index:1}
.hint{
  margin:0;
  padding:10px var(--pad-x) 4px;
  font-size:12px;
  color:var(--color-muted);
  transition:opacity .3s var(--ease), transform .3s var(--ease);
}
.hint.is-gone{opacity:0;transform:translateY(-6px);pointer-events:none}
.dropbar{
  display:flex;align-items:center;gap:8px;
  padding:14px var(--pad-x) 10px;
}
.dropbar__dot{
  width:7px;height:7px;flex:0 0 auto;
  border-radius:var(--radius-btn);
  background:var(--color-primary);
}
.dropbar__title{
  font-family:var(--font-display);
  font-size:14px;font-weight:700;letter-spacing:-.01em;
}
.dropbar__meta{font-size:12px;color:var(--color-muted)}
.dropbar__count{
  margin-left:auto;
  font-size:11px;font-weight:600;
  color:var(--color-bg);
  background:var(--color-text);
  padding:3px 8px;
  border-radius:var(--radius-btn);
}
.feed-wrap{container-type:inline-size}
.feed{
  column-count:2;
  column-gap:6px;
  padding:6px;
  background:var(--color-bg);
}
@media (min-width:640px){.feed{column-count:3}}
@media (min-width:1024px){.feed{column-count:4}}
@media (min-width:1440px){.feed{column-count:5}}

.tile{
  position:relative;
  display:block;
  margin:0;padding:0;
  border:0;
  border-radius:var(--radius-tile);
  background:var(--color-surface);
  overflow:hidden;
  isolation:isolate;
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  -webkit-touch-callout:none;
  user-select:none;
}
.tile[hidden]{display:none}

/* Pinterest masonry через columns */
.tile{
  display:block;
  width:100%;
  break-inside:avoid;
  margin:0 0 6px 0;
  aspect-ratio:var(--ar, 3 / 4);
  position:relative;
  overflow:hidden;
}
/* Аспект по data-атрибуту */
.tile[data-aspect="9:16"]{ --ar: 9 / 16; }
.tile[data-aspect="3:4"] { --ar: 3 / 4; }
.tile[data-aspect="1:1"] { --ar: 1 / 1; }
.tile[data-aspect="4:3"] { --ar: 4 / 3; }
.tile[data-aspect="16:9"]{ --ar: 16 / 9; }
.tile[data-aspect="2:3"] { --ar: 2 / 3; }
.tile[data-aspect="3:2"] { --ar: 3 / 2; }

/* Изображение внутри плитки — заполняет её */
.tile__media{
  position:absolute;inset:0;
  width:100%;height:100%;
  object-fit:cover;
  display:block;
}
.tile__art{
  position:absolute;inset:0;
  display:block;
  overflow:hidden;
  transform:scale(1);
  transition:transform .5s var(--ease);
}
.tile:hover .tile__art{transform:scale(1.05)}
.tile:active .tile__art{transform:scale(.985)}
.tile__art::after{
  content:"";
  position:absolute;inset:0;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='140' height='140' filter='url(%23n)' opacity='0.5'/></svg>");
  background-size:140px 140px;
  opacity:.34;
  mix-blend-mode:overlay;
  pointer-events:none;
}
.tile__media{
  position:absolute;inset:0;
  display:block;
  transform-origin:50% 50%;
}

/* ---------- procedural art presets (палитра: только цвета концепта) ---------- */
[data-art="neon"] .tile__media{
  background:
    radial-gradient(42% 52% at 28% 24%, color-mix(in oklab, var(--a) 82%, transparent), transparent 68%),
    radial-gradient(52% 62% at 78% 76%, color-mix(in oklab, var(--b) 62%, transparent), transparent 70%),
    radial-gradient(80% 90% at 50% 55%, color-mix(in oklab, var(--b) 16%, transparent), transparent 76%),
    linear-gradient(180deg, var(--c), var(--color-bg));
}
[data-art="chrome"] .tile__media{
  background:
    conic-gradient(from 200deg at 52% 48%,
      var(--c) 0deg,
      color-mix(in oklab, var(--a) 70%, transparent) 70deg,
      var(--c) 140deg,
      color-mix(in oklab, var(--b) 58%, transparent) 215deg,
      var(--c) 300deg,
      var(--c) 360deg),
    linear-gradient(160deg, var(--color-bg), var(--c));
}
[data-art="scan"] .tile__media{
  background:
    repeating-linear-gradient(112deg, color-mix(in oklab, var(--a) 30%, transparent) 0 4px, transparent 4px 12px),
    radial-gradient(66% 76% at 70% 18%, color-mix(in oklab, var(--b) 52%, transparent), transparent 72%),
    linear-gradient(200deg, var(--c), var(--color-bg));
}
[data-art="liquid"] .tile__media{
  background:
    radial-gradient(30% 40% at 22% 78%, color-mix(in oklab, var(--a) 72%, transparent), transparent 70%),
    radial-gradient(36% 46% at 62% 30%, color-mix(in oklab, var(--b) 68%, transparent), transparent 72%),
    radial-gradient(28% 34% at 84% 62%, color-mix(in oklab, var(--a) 42%, transparent), transparent 70%),
    linear-gradient(180deg, var(--color-bg), var(--c));
}
[data-art="grid"] .tile__media{
  background:
    repeating-linear-gradient(0deg, color-mix(in oklab, var(--a) 22%, transparent) 0 1px, transparent 1px 24px),
    repeating-linear-gradient(90deg, color-mix(in oklab, var(--b) 18%, transparent) 0 1px, transparent 1px 24px),
    radial-gradient(62% 62% at 60% 38%, color-mix(in oklab, var(--a) 28%, transparent), transparent 72%),
    linear-gradient(180deg, var(--c), var(--color-bg));
}
[data-art="flare"] .tile__media{
  background:
    linear-gradient(115deg, transparent 40%, color-mix(in oklab, var(--a) 58%, transparent) 50%, transparent 58%),
    linear-gradient(115deg, transparent 46%, color-mix(in oklab, var(--b) 30%, transparent) 52%, transparent 64%),
    radial-gradient(72% 62% at 30% 82%, color-mix(in oklab, var(--a) 24%, transparent), transparent 72%),
    linear-gradient(200deg, var(--color-bg), var(--c));
}
[data-art="silhouette"] .tile__media{
  background:
    radial-gradient(38% 46% at 50% 44%, color-mix(in oklab, var(--a) 86%, transparent), transparent 72%),
    radial-gradient(30% 22% at 50% 80%, var(--color-bg) 62%, transparent 76%),
    radial-gradient(13% 16% at 50% 40%, var(--color-bg) 70%, transparent 84%),
    linear-gradient(180deg, var(--c), var(--color-bg));
}
[data-art="duo"] .tile__media{
  background:
    linear-gradient(155deg, color-mix(in oklab, var(--a) 84%, transparent) 0%, transparent 56%),
    linear-gradient(335deg, color-mix(in oklab, var(--b) 72%, transparent) 0%, transparent 62%),
    var(--c);
}
.tile__flash{
  position:absolute;inset:0;
  border:2px solid var(--color-primary);
  opacity:0;
  pointer-events:none;
}

.empty{
  margin:0;
  padding:56px var(--pad-x) 0;
  font-size:14px;
  color:var(--color-muted);
  max-width:34ch;
}

/* ---------- fullscreen reference card ---------- */
.card{
  position:fixed;inset:0;z-index:90;
  background:var(--color-bg);
  overflow:hidden;
}
.card__stage{
  position:absolute;inset:0;
  overflow:hidden;
  touch-action:none;
}
.card__track{
  display:flex;
  width:300%;height:100%;
  transform:translateX(-33.3333%);
  will-change:transform;
}
.slide{
  position:relative;
  flex:0 0 33.3333%;
  height:100%;
  overflow:hidden;
  background:var(--color-surface);
}
.card__top{
  position:absolute;left:0;right:0;top:0;z-index:3;
  display:flex;align-items:center;gap:10px;
  padding:12px var(--pad-x);
  padding-top:max(12px, env(safe-area-inset-top));
  pointer-events:none;
}
.card__top > *{pointer-events:auto}
.card__index{
  flex:1 1 auto;text-align:center;
  font-family:var(--font-display);
  font-size:12px;letter-spacing:.04em;
  color:var(--color-muted);
}
.iconbtn--glass{
  background:color-mix(in oklab, var(--color-bg) 52%, transparent);
  border-color:color-mix(in oklab, var(--color-text) 16%, transparent);
  -webkit-backdrop-filter:blur(14px);
  backdrop-filter:blur(14px);
}
.card__sheet{
  position:absolute;left:0;right:0;bottom:0;z-index:4;
  padding:18px var(--pad-x) calc(18px + env(safe-area-inset-bottom));
  background:color-mix(in oklab, var(--color-surface) 88%, transparent);
  -webkit-backdrop-filter:blur(26px) saturate(1.2);
  backdrop-filter:blur(26px) saturate(1.2);
  border-top:1px solid var(--color-line);
  transform:translateY(112%);
  transition:transform .36s var(--ease);
}
.card.is-open .card__sheet{transform:none;transition-delay:.14s}
.sheet__title{
  margin:0 0 5px;
  font-family:var(--font-display);
  font-size:20px;font-weight:700;letter-spacing:-.02em;
}
.sheet__tags{
  margin:0 0 14px;
  font-size:12px;color:var(--color-muted);
}
.proof{
  display:flex;align-items:center;gap:10px;
  margin-bottom:16px;
}
.proof__avs{display:flex;flex:0 0 auto;padding-left:6px}
.av{
  width:22px;height:22px;
  margin-left:-6px;
  display:grid;place-items:center;
  border-radius:var(--radius-btn);
  border:1px solid var(--color-bg);
  background:color-mix(in oklab, var(--color-text) 16%, var(--color-surface));
  color:var(--color-text);
  font-size:8px;font-weight:700;letter-spacing:.02em;
}
.proof__text{margin:0;font-size:12px;color:var(--color-muted)}
.proof__text b{color:var(--color-text);font-weight:600}
.sheet__actions{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
}
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  gap:8px;
  min-height:48px;
  padding:0 18px;
  border:1px solid transparent;
  border-radius:var(--radius-btn);
  font-size:14px;font-weight:600;
  text-decoration:none;
  cursor:pointer;
  transition:transform .18s var(--ease), opacity .2s;
}
.btn:active{transform:scale(.97)}
.btn--primary{
  grid-column:1 / -1;
  background:var(--color-primary);
  color:var(--color-bg);
  border-color:var(--color-primary);
  font-weight:700;
}
.btn--primary:hover{transform:translateY(-1px)}
.btn--ghost{
  background:transparent;
  border-color:var(--color-line);
  color:var(--color-text);
}
.btn--ghost:hover{background:color-mix(in oklab, var(--color-text) 9%, transparent)}

/* ---------- moodboard ---------- */
.board{
  position:fixed;inset:0;z-index:120;
  display:flex;align-items:flex-end;
}
.board__scrim{
  position:absolute;inset:0;
  background:color-mix(in oklab, var(--color-bg) 74%, transparent);
  opacity:0;
  transition:opacity .26s var(--ease);
}
.board.is-open .board__scrim{opacity:1}
.board__panel{
  position:relative;
  width:100%;
  max-height:84vh;
  display:flex;flex-direction:column;
  background:var(--color-surface);
  border-top:1px solid var(--color-line);
  border-radius:var(--radius-card) var(--radius-card) 0 0;
  padding-bottom:env(safe-area-inset-bottom);
  transform:translateY(100%);
  transition:transform .38s var(--ease);
}
.board.is-open .board__panel{transform:none}
.board__head{
  display:flex;align-items:baseline;gap:10px;
  padding:18px var(--pad-x) 12px;
}
.board__title{
  margin:0;
  font-family:var(--font-display);
  font-size:19px;font-weight:700;letter-spacing:-.02em;
}
.board__count{font-size:12px;color:var(--color-muted)}
.board__close{margin-left:auto;align-self:center}
.board__grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:6px;
  padding:0 var(--pad-x) 4px;
  overflow-y:auto;
  max-height:52vh;
}
.thumb{
  position:relative;
  margin:0;
  aspect-ratio:1/1;
  border-radius:var(--radius-card);
  overflow:hidden;
  background:var(--color-bg);
}
.thumb__x{
  position:absolute;top:6px;right:6px;
  width:26px;height:26px;
  display:grid;place-items:center;
  border:0;border-radius:var(--radius-btn);
  background:color-mix(in oklab, var(--color-bg) 70%, transparent);
  -webkit-backdrop-filter:blur(10px);
  backdrop-filter:blur(10px);
  font-size:15px;line-height:1;
  cursor:pointer;
  transition:transform .18s var(--ease);
}
.thumb__x:hover{background:var(--color-accent)}
.thumb__x:active{transform:scale(.9)}
.board__empty{
  margin:0;
  padding:8px var(--pad-x) 20px;
  font-size:13px;
  color:var(--color-muted);
  max-width:36ch;
}
.board__foot{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  padding:14px var(--pad-x) 18px;
  border-top:1px solid var(--color-line);
}
.board__foot .btn--primary{grid-column:1 / -1}

/* ---------- footer ---------- */
.foot{
  position:relative;z-index:1;
  padding:var(--space-section) var(--pad-x) 40px;
  border-top:1px solid var(--color-line);
  background:var(--color-bg);
}
.foot__brand{
  margin:0 0 8px;
  font-family:var(--font-display);
  font-size:24px;font-weight:700;letter-spacing:-.03em;
}
.foot__text{
  margin:0 0 18px;
  max-width:44ch;
  font-size:13px;
  color:var(--color-muted);
}
.foot__note{
  margin:22px 0 0;
  font-size:11px;
  color:color-mix(in oklab, var(--color-text) 38%, transparent);
}

/* ---------- toast ---------- */
.toast{
  position:fixed;
  left:50%;bottom:calc(24px + env(safe-area-inset-bottom));
  z-index:200;
  max-width:calc(100vw - 28px);
  padding:11px 18px;
  border-radius:var(--radius-btn);
  background:var(--color-text);
  color:var(--color-bg);
  font-size:13px;font-weight:600;
  text-align:center;
  opacity:0;
  transform:translate(-50%,14px);
  pointer-events:none;
  transition:opacity .22s var(--ease), transform .3s var(--ease);
}
.toast.is-on{opacity:1;transform:translate(-50%,0)}

/* ---------- motion ---------- */
@media (prefers-reduced-motion: no-preference){
  .tile{
    opacity:0;
    transform:translate3d(0,22px,0);
  }
  .tile.is-in{
    opacity:1;
    transform:none;
    transition:opacity .5s var(--ease), transform .62s var(--ease);
    transition-delay:var(--d,0ms);
  }
  .tile.is-pop{animation:pop .42s var(--ease) both}
  .tile.is-saved .tile__flash{animation:flash .85s var(--ease)}
  [data-video="1"] .tile__media{animation:drift 22s ease-in-out infinite alternate}
  .card__sheet{will-change:transform}
}
@keyframes drift{
  from{transform:scale(1.08) translate3d(-1.2%,-1%,0)}
  to{transform:scale(1.17) translate3d(1.2%,1.4%,0)}
}
@keyframes pop{
  0%{transform:scale(.965)}
  100%{transform:scale(1)}
}
@keyframes flash{
  0%{opacity:1;transform:scale(1)}
  100%{opacity:0;transform:scale(1.05)}
}

@media (max-width:560px){
  .topbar__sub{display:none}
  .sheet__title{font-size:18px}
}
@media (min-width:900px){
  .card__sheet{max-width:520px;left:auto;right:24px;bottom:24px;border-radius:var(--radius-card);border:1px solid var(--color-line)}
  .board__panel{max-width:720px;margin:0 auto}
}
.brand__ai{
  color:var(--color-primary);
  font-weight:800;
  letter-spacing:-.02em;
}

/* ============================================================
   Topbar: аватар пользователя
   ============================================================ */
.topbar__user{
  flex:0 0 auto;
  width:32px;height:32px;
  margin-right:8px;
  border-radius:50%;
  overflow:hidden;
  background:color-mix(in oklab, var(--color-text) 12%, transparent);
  border:1px solid var(--color-line);
}
.topbar__avatar{
  width:100%;height:100%;
  object-fit:cover;
  display:block;
}

/* ============================================================
   Профиль — модалка (bottom-sheet)
   ============================================================ */
.profile{
  position:fixed;inset:0;z-index:130;
  display:flex;align-items:flex-end;
}
.profile__scrim{
  position:absolute;inset:0;
  background:color-mix(in oklab, var(--color-bg) 74%, transparent);
  opacity:0;
  transition:opacity .26s var(--ease);
}
.profile.is-open .profile__scrim{opacity:1}
.profile__panel{
  position:relative;
  width:100%;
  max-height:86vh;
  background:var(--color-surface);
  border-top:1px solid var(--color-line);
  border-radius:var(--radius-card) var(--radius-card) 0 0;
  padding:18px var(--pad-x) calc(24px + env(safe-area-inset-bottom));
  transform:translateY(100%);
  transition:transform .38s var(--ease);
  overflow-y:auto;
}
.profile.is-open .profile__panel{transform:none}

.profile__head{
  display:flex;align-items:center;gap:14px;
  margin-bottom:22px;
}
.profile__avatar-wrap{
  flex:0 0 auto;
  width:64px;height:64px;
  border-radius:50%;
  overflow:hidden;
  background:color-mix(in oklab, var(--color-text) 12%, transparent);
  border:2px solid var(--color-primary);
}
.profile__avatar{
  width:100%;height:100%;
  object-fit:cover;
  display:block;
}
.profile__meta{flex:1 1 auto;min-width:0}
.profile__name{
  font-family:var(--font-display);
  font-size:20px;font-weight:700;letter-spacing:-.02em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.profile__username{
  font-size:13px;color:var(--color-muted);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.profile__close{flex:0 0 auto}

.profile__section{margin-bottom:20px}
.profile__section-title{
  font-family:var(--font-display);
  font-size:12px;font-weight:700;letter-spacing:.06em;
  color:var(--color-muted);
  text-transform:uppercase;
  margin-bottom:10px;
}
.profile__stats{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:8px;
}
.profile__stat{
  background:color-mix(in oklab, var(--color-text) 6%, transparent);
  border-radius:var(--radius-card);
  padding:12px 8px;
  text-align:center;
}
.profile__stat span{
  display:block;
  font-family:var(--font-display);
  font-size:22px;font-weight:700;
  color:var(--color-primary);
  line-height:1.1;
}
.profile__stat small{
  display:block;
  font-size:11px;color:var(--color-muted);
  margin-top:4px;
}
.profile__favorites{
  font-size:14px;color:var(--color-muted);
  padding:12px 14px;
  background:color-mix(in oklab, var(--color-text) 6%, transparent);
  border-radius:var(--radius-card);
}

/* ============================================================
   Card: явные размеры для слайдов и медиа
   ============================================================ */
/* .slide — использует оригинальное flex определение выше.
   Дополняем только поведение media внутри слайда карточки. */
.slide .tile__art{
  position:absolute;inset:0;
  width:100%;height:100%;
  display:block;
}
.slide .tile__media{
  position:absolute;inset:0;
  width:100%;height:100%;
  object-fit:contain;
  display:block;
}

/* ============================================================
   Card track: принудительная GPU-отрисовка
   Chrome/WebView иногда не рисует слайды, пока не произойдёт
   репейнт. Форсируем отдельный слой и backface.
   ============================================================ */
.card__track{
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  transform:translate3d(-33.3333%, 0, 0);
}
.card.is-open .card__track{
  transition:transform .34s var(--ease);
}
.slide{
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  will-change:transform;
}
.slide .tile__media{
  transform:translateZ(0);
}

/* ============================================================
   TOPBAR — фикс. иконки-закладки вместо пилюли, компактнее
   ============================================================ */
.topbar{
  gap:6px;
  padding:0 10px;
}
.brand__name{
  font-size:14px;
  letter-spacing:-.03em;
  white-space:nowrap;
}
@media (max-width:480px){
  .brand__name{ font-size:12px; }
  .topbar__avatar{ width:28px;height:28px; }
  .topbar__user{ width:28px;height:28px; margin-right:6px; }
  .iconbtn{ width:36px;height:36px; }
}

/* Иконка-закладка для мудборда с бейджем */
.iconbtn--badge{
  position:relative;
}
.iconbtn__badge{
  position:absolute;
  top:-3px;right:-3px;
  min-width:16px;height:16px;
  padding:0 4px;
  border-radius:8px;
  background:var(--color-primary);
  color:var(--color-bg);
  font-size:10px;font-weight:800;
  display:grid;place-items:center;
  line-height:1;
}
.iconbtn__badge:empty,
.iconbtn__badge[data-empty="1"]{ display:none; }

/* ============================================================
   CARD — компактнее, фото НЕ закрывается панелью
   ============================================================ */
.card__stage{
  bottom:210px; /* под панель */
}
@media (min-width:900px){
  .card__stage{ bottom:0; }
}

.card__top{
  padding:8px var(--pad-x);
  padding-top:max(8px, env(safe-area-inset-top));
  gap:8px;
}
.card__index{
  font-size:11px;
  letter-spacing:.02em;
}

.card__sheet{
  padding:14px var(--pad-x) calc(14px + env(safe-area-inset-bottom));
}
.sheet__title{
  font-size:16px;
  margin:0 0 3px;
}
.sheet__tags{
  margin:0 0 8px;
  font-size:11px;
}
.proof{
  margin-bottom:10px;
  gap:6px;
}
/* Убираем аватарки полностью */
.proof__avs{ display:none !important; }
.av{ display:none !important; }
.proof__text{
  font-size:11px;
  color:var(--color-muted);
  background:color-mix(in oklab, var(--color-text) 6%, transparent);
  padding:4px 10px;
  border-radius:100px;
}
.proof__text b{
  color:var(--color-primary);
  font-weight:700;
}

.sheet__actions{
  gap:6px;
}
.btn{
  min-height:40px;
  padding:0 14px;
  font-size:13px;
}
.btn--primary{
  font-size:13px;
}

@media (max-width:560px){
  .sheet__title{ font-size:15px; }
}

/* Topbar actions — прижать к правому краю */
.topbar__actions{
  display:flex;
  align-items:center;
  gap:4px;
  margin-left:auto;
  flex:0 0 auto;
}
.brand__name{
  font-size:15px;
  letter-spacing:-.02em;
}
@media (max-width:480px){
  .brand__name{ font-size:13px; }
}
