/* ====== Тема ====== */
:root{
  --bg: radial-gradient(1200px 800px at 10% -20%, #ffe4ef 0%, #fff 50%), radial-gradient(800px 600px at 100% 10%, #ffeaf5 0%, #fff 50%);
  --card:#ffffff;
  --text:#1b1b1f;
  --muted:#6b6b74;
  --border:rgba(0,0,0,.08);
  --shadow: 0 10px 30px rgba(16,16,20,.08);
  --shadow-lg: 0 20px 60px rgba(16,16,20,.12);
  --pink:#ff6fb9;
  --pink2:#ffa3d2;
  --accent: linear-gradient(135deg, var(--pink), var(--pink2));
  --tg:#229ED9;
}

*{ box-sizing:border-box; }
html,body{ height:100%; }
body{
  margin:0; font-family:"Inter", system-ui, -apple-system, Segoe UI, Roboto, Arial, "Noto Sans", sans-serif;
  color:var(--text); background: var(--bg); background-attachment: fixed;
}

/* ====== Header ====== */
.site-header{
  position:sticky; top:0; z-index:5;
  display:flex; align-items:center; justify-content:space-between; gap:14px;
  padding:14px 18px;
  backdrop-filter: saturate(1.2) blur(10px);
  background: linear-gradient(180deg, rgba(255,255,255,.75), rgba(255,255,255,.55));
  border-bottom: 1px solid rgba(255,255,255,.6);
}
.brand{ display:flex; align-items:center; gap:10px; }
.brand-logo{
  width:42px; height:42px; border-radius:12px; display:grid; place-items:center;
  background: var(--accent); color:#fff; font-weight:800; font-size:22px;
  box-shadow: var(--shadow);
}
.brand-text h1{ margin:0; font-size:18px; line-height:1.1; font-weight:800; letter-spacing:.2px; }
.brand-text span{ display:block; margin-top:2px; font-size:12px; color:var(--muted); font-weight:600; }

.header-actions{ display:flex; gap:10px; align-items:center; }

/* ====== Buttons ====== */
.btn{
  appearance:none; border:none; cursor:pointer; font-weight:800;
  border-radius:14px; padding:10px 14px; display:inline-flex; gap:8px; align-items:center;
  box-shadow: var(--shadow); transition: transform .15s ease, box-shadow .2s ease, background-color .2s ease;
  user-select:none; text-decoration:none;
}
.btn:hover{ transform: translateY(-2px); box-shadow: var(--shadow-lg); }
.btn:active{ transform:none; }
.btn span{ font-size:14px; }

.btn-tg{ background: #e7f6ff; color: var(--tg); }
.btn-tg:hover{ background:#d9f0ff; }
.btn-primary{ background: var(--accent); color:#fff; }

/* ====== Layout ====== */
.container{ max-width:1100px; margin: 12px auto 60px; padding: 0 16px; }
.search-row{ margin: 10px 0 4px; }
.search-wrap{
  background:#fff; border:1px solid var(--border); border-radius:14px; padding:10px 12px; display:flex; align-items:center; gap:8px;
  box-shadow: var(--shadow);
}
.search-wrap input{
  width:100%; font-size:15px; border:none; outline:none; background:transparent; color:var(--text);
}
.search-wrap svg{ color:#9a9aa1; }

/* Chips */
.chips{ display:flex; gap:8px; flex-wrap:wrap; padding:10px 2px 6px; }
.chip{
  background:#fff; border:1px solid var(--border); padding:8px 12px; border-radius:999px; font-weight:700; font-size:13px;
  color:#333; cursor:pointer; box-shadow: var(--shadow);
  transition: all .15s ease;
}
.chip:hover{ transform: translateY(-2px); }
.chip.active{ background: var(--accent); border-color: transparent; color:#fff; box-shadow: var(--shadow-lg); }

/* Products */
.products-grid{ display:grid; gap:18px; grid-template-columns: repeat( auto-fill, minmax(240px, 1fr) ); margin-top:12px; }
.card{
  position:relative; background:rgba(255,255,255,.82);
  border:1px solid rgba(255,255,255,.6); border-radius:18px; overflow:hidden;
  box-shadow: var(--shadow); backdrop-filter: blur(6px) saturate(1.1);
  transition: transform .2s ease, box-shadow .25s ease;
}
.card:hover{ transform: translateY(-6px); box-shadow: var(--shadow-lg); }
.card-img{
  width:100%; aspect-ratio: 1/1; object-fit: cover; display:block; background: #ffeaf6;
}
.card-info{ padding:12px 14px 14px; display:flex; flex-direction:column; gap:8px; }
.card-title{ margin:0; font-size:16px; font-weight:800; letter-spacing:.2px; }
.card-desc{ margin:0; font-size:13px; color:var(--muted); line-height:1.35; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:2.7em; }
.card-bottom{ margin-top:4px; display:flex; align-items:center; justify-content:space-between; gap:10px; }
.price{ font-weight:900; font-size:15px; color:#111; letter-spacing:.2px; }

.empty{ padding:40px 0; text-align:center; color:var(--muted); font-weight:600; }

/* Toast */
.toast{
  position:fixed; left:50%; bottom:24px; transform: translateX(-50%) translateY(16px);
  background: var(--accent); color:#fff; padding:10px 14px; border-radius:999px; font-weight:800; opacity:0; pointer-events:none;
  transition: transform .25s ease, opacity .25s ease; z-index:10;
}
.toast.show{ transform: translateX(-50%) translateY(0); opacity:1; }

/* Footer */
.site-footer{
  max-width:1100px; margin: 0 auto; padding: 18px 16px 40px; color:var(--muted); font-size:13px; text-align:center;
}


/* ====== Mobile tweaks: 2 cards per row, smaller UI ====== */
@media (max-width: 640px){
  .container{ padding: 0 10px; }
  .chips{ gap:6px; }
  .chip{ font-size:12px; padding:6px 10px; }
  .products-grid{ 
    grid-template-columns: repeat(2, minmax(0, 1fr)); 
    gap: 12px; 
  }
  .card{ border-radius:14px; }
  .card-img{ aspect-ratio: 1/1; }
  .card-title{ font-size:13.5px; }
  .card-desc{ font-size:12px; -webkit-line-clamp: 3; }
  .price{ font-size:13px; }
  .btn{ padding:8px 10px; }
  .search-wrap input{ font-size:14px; }
}

/* ====== Hero ====== */
.hero{ margin: 8px 0 14px; }
.hero-inner{
  background: linear-gradient(135deg, rgba(255,255,255,.85), rgba(255,255,255,.7));
  border:1px solid rgba(255,255,255,.7);
  box-shadow: var(--shadow);
  border-radius: 18px;
  padding: 16px 18px;
}
.hero h2{ margin:0 0 6px; font-size:20px; font-weight:900; letter-spacing:.2px; }
.hero p{ margin:0; color: var(--muted); font-weight:600; font-size:13px; }

.meta-row{ margin: 6px 0 2px; }
.meta-info{ color: var(--muted); font-size:12.5px; font-weight:700; }

/* ====== Skeletons ====== */
.skel{ background: rgba(255,255,255,.8); border:1px solid rgba(255,255,255,.6); border-radius:18px; box-shadow: var(--shadow); overflow:hidden; }
.skel .s-img{ width:100%; aspect-ratio:1/1; background: linear-gradient(90deg, #f6f6f7, #ececf1, #f6f6f7); animation: sh 1.3s infinite; }
.skel .s-t1{ height:14px; margin:10px 14px 6px; border-radius:6px; background:#eee; }
.skel .s-t2{ height:12px; margin:0 14px 12px; border-radius:6px; background:#f0f0f3; width:70%; }
@keyframes sh{ 0%{background-position: -200px 0;} 100%{background-position: calc(200px + 100%) 0;} }

/* ====== Better empty ====== */
.empty{ padding:34px 0; text-align:center; color:var(--muted); font-weight:700; }
.empty a{ color:var(--tg); text-decoration:none; font-weight:900; }

/* ==== Visual upgrades ==== */
:root{
  --glow: radial-gradient(600px 300px at 80% -10%, rgba(255,111,185,.25), transparent 60%),
          radial-gradient(700px 400px at -10% 20%, rgba(255,163,210,.18), transparent 60%);
}
body::before{
  content:""; position:fixed; inset:0; pointer-events:none; z-index:-1; background:var(--glow);
  filter: blur(30px);
}
.site-header.scrolled{ box-shadow: 0 10px 30px rgba(16,16,20,.08); background: rgba(255,255,255,.8); }

/* Card reveal + tilt */
.card{ transform: translateY(12px); opacity:0; will-change: transform, box-shadow; }
.card.in-view{ transform: translateY(0); opacity:1; }
@media (hover:hover) and (pointer:fine){
  .card:hover{ transform: translateY(-6px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)); }
}

/* Image fade-in */
.card-img{ opacity:.0; transition: opacity .35s ease; }
.card-img.loaded{ opacity:1; }

/* Search highlight */
mark.hl{ background: linear-gradient(to right, rgba(255,111,185,.35), rgba(255,163,210,.35)); color: inherit; padding: 0 .15em; border-radius:6px; }

/* Chips micro-interactions */
.chip{ position:relative; overflow:hidden; }
.chip:after{
  content:""; position:absolute; inset:auto -20% 0 -20%; height:2px; background: var(--accent);
  transform: translateY(4px) scaleX(0); transform-origin:left center; transition: transform .2s ease;
  border-radius:999px;
}
.chip:hover:after, .chip.active:after{ transform: translateY(4px) scaleX(1); }

/* Ripple for buttons */
.ripple{
  position:absolute; border-radius:50%; transform: scale(0); animation: ripple .6s ease-out; pointer-events:none;
  background: rgba(255,255,255,.6);
}
@keyframes ripple{ to { transform: scale(12); opacity:0; } }
.btn{ position:relative; overflow:hidden; }

/* Gradient border on hover */
.card::before{
  content:""; position:absolute; inset:0; border-radius:18px;
  padding:1px; background: linear-gradient(135deg, rgba(255,111,185,.6), rgba(255,163,210,.6));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
  opacity:0; transition:opacity .25s ease;
}
.card:hover::before{ opacity:1; }

/* ===== Modal ===== */
.modal[hidden]{ display:none; }
.modal__backdrop{
  position:fixed; inset:0; background:rgba(15,15,20,.35); backdrop-filter: blur(4px);
}
.modal__panel{
  position:fixed; left:50%; top:50%; transform: translate(-50%,-48%) scale(.98);
  width:min(92vw, 560px); max-height:80vh; overflow:auto;
  background:#fff; border:1px solid rgba(0,0,0,.06); border-radius:18px; box-shadow: var(--shadow-lg);
  padding:14px; display:flex; flex-direction:column; gap:10px; opacity:0; animation: qv-in .18s ease forwards;
}
@keyframes qv-in{ to{ opacity:1; transform: translate(-50%,-50%) scale(1); } }
.modal__img{ width:100%; border-radius:12px; object-fit:cover; aspect-ratio:1/1; background:#ffeaf6; }
.modal__title{ margin:2px 2px 0; font-size:18px; font-weight:900; }
.modal__desc{ margin:0 2px; color:var(--muted); font-size:14px; line-height:1.4; }
.modal__bottom{ display:flex; align-items:center; justify-content:space-between; padding:6px 2px 2px; gap:12px; }
.modal__close{
  position:absolute; right:10px; top:10px; border:none; background:rgba(0,0,0,.06);
  width:30px; height:30px; border-radius:999px; cursor:pointer; font-weight:800;
}

/* ===== Back to top ===== */
.to-top{
  position:fixed; right:14px; bottom:18px; width:40px; height:40px; border:none; border-radius:999px;
  display:grid; place-items:center; font-weight:900; box-shadow: var(--shadow); cursor:pointer;
  background:#fff; color:#333; opacity:0; pointer-events:none; transform: translateY(8px);
  transition: opacity .2s ease, transform .2s ease; z-index:6;
}
.to-top.show{ opacity:1; pointer-events:auto; transform: translateY(0); }
