
.catalog-page{min-height:100%;background:#0b0c0c;color:var(--text)}
.catalog-header{position:sticky;top:0;z-index:50;height:78px;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:28px;padding:0 4vw;background:rgba(7,8,8,.90);backdrop-filter:blur(15px);border-bottom:1px solid rgba(255,255,255,.055)}
.catalog-brand{display:flex;align-items:center;gap:10px;font-family:var(--serif);letter-spacing:.18em}
.catalog-brand img{width:38px;height:38px;object-fit:cover;border-radius:50%;filter:grayscale(1) contrast(1.08)}
.catalog-nav{display:flex;justify-content:flex-end;gap:30px}
.catalog-nav a{position:relative;font-size:.76rem;text-transform:uppercase;letter-spacing:.16em;color:#c8c4bc}
.catalog-nav a::after{content:"";position:absolute;left:0;right:100%;bottom:-12px;height:1px;background:var(--brass-soft);transition:right .25s ease}
.catalog-nav a:hover::after,.catalog-nav a.active::after{right:0}
.catalog-menu-toggle{display:none;background:none;border:0;width:44px;height:44px;padding:8px}
.catalog-menu-toggle span:not(.sr-only){display:block;height:1px;background:#ddd;margin:7px 0}

.catalog-hero{position:relative;padding:116px 6vw 92px;overflow:hidden;border-bottom:1px solid rgba(255,255,255,.055);background:radial-gradient(circle at 82% 30%,rgba(154,116,69,.08),transparent 30%),linear-gradient(180deg,#0b0c0c,#101111)}
.catalog-hero::before{content:"";position:absolute;inset:0;opacity:.22;background:repeating-linear-gradient(90deg,rgba(255,255,255,.006) 0 1px,transparent 1px 5px);pointer-events:none}
.catalog-hero-inner{position:relative;z-index:2;width:min(1180px,100%);margin:auto}
.catalog-k{margin:0 0 12px;font-size:.72rem;letter-spacing:.34em;text-transform:uppercase;color:rgba(180,157,128,.72)}
.catalog-hero h1{margin:0;font-family:var(--serif);font-size:clamp(4.7rem,10vw,9.2rem);font-weight:400;line-height:.88;letter-spacing:-.055em}
.catalog-subtitle{margin:28px 0 0;font-family:var(--serif);font-size:clamp(1.5rem,2.5vw,2.25rem);font-style:italic;color:#b6ada2}
.catalog-note{margin:12px 0 0;color:rgba(196,190,180,.63);font-size:.9rem}
.catalog-search-wrap{position:relative;width:min(820px,100%);margin-top:50px}
.catalog-search-wrap input{width:100%;height:62px;padding:0 58px 0 20px;border:1px solid rgba(255,255,255,.13);border-radius:0;background:rgba(255,255,255,.018);color:var(--text);font-size:1rem;outline:none;transition:.25s}
.catalog-search-wrap input:focus{border-color:rgba(176,132,79,.55);background:rgba(255,255,255,.026);box-shadow:0 0 24px rgba(154,116,69,.05)}
.search-mark{position:absolute;right:21px;top:50%;width:15px;height:15px;border:1px solid rgba(192,154,99,.72);border-radius:50%;transform:translateY(-58%)}
.search-mark::after{content:"";position:absolute;width:7px;height:1px;right:-5px;bottom:-3px;background:rgba(192,154,99,.72);transform:rotate(45deg)}

.catalog-browser{padding:58px 6vw 110px;background:linear-gradient(180deg,#0e0f0f,#0b0c0c)}
.catalog-browser-inner{width:min(1180px,100%);margin:auto}
.catalog-tabs{display:flex;flex-wrap:wrap;gap:10px;padding-bottom:28px;border-bottom:1px solid rgba(255,255,255,.07)}
.catalog-tab,.catalog-clear,.catalog-load-more{min-height:42px;padding:0 18px;border:1px solid rgba(255,255,255,.12);background:transparent;color:#c8c4bc;text-transform:uppercase;letter-spacing:.14em;font-size:.69rem;transition:.25s}
.catalog-tab:hover,.catalog-tab.active{border-color:rgba(176,132,79,.62);color:#f0ebe2;background:rgba(154,116,69,.08)}
.catalog-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:14px;align-items:end;padding:28px 0}
.catalog-filter{display:grid;gap:7px}
.catalog-filter label{font-size:.65rem;text-transform:uppercase;letter-spacing:.15em;color:rgba(196,190,180,.62)}
.catalog-filter select{height:46px;width:100%;padding:0 34px 0 12px;border:1px solid rgba(255,255,255,.10);border-radius:0;background:#111212;color:#d9d4cb;outline:none}
.catalog-filter select:focus{border-color:rgba(176,132,79,.50)}
.catalog-clear{height:46px;color:rgba(205,198,188,.64)}
.catalog-clear:hover{border-color:rgba(176,132,79,.45);color:#eee7dc}
.catalog-status{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:0 0 20px}
.catalog-status p{margin:0}
.catalog-status #result-count{font-family:var(--serif);font-size:1.25rem;color:#e8e2d8}
.catalog-status-note{font-size:.76rem;color:rgba(190,184,174,.48)}

.catalog-results{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid rgba(154,116,69,.20)}
.firearm-card{position:relative;min-height:195px;padding:30px 28px 26px;border-right:1px solid rgba(154,116,69,.12);border-bottom:1px solid rgba(154,116,69,.12);background:transparent;overflow:hidden;transition:background .28s ease}
.firearm-card:nth-child(even){border-right:0}
.firearm-card::before{content:"";position:absolute;inset:0;opacity:0;background:linear-gradient(100deg,rgba(154,116,69,.055),rgba(255,255,255,.012) 58%,transparent);transition:opacity .3s}
.firearm-card:hover::before{opacity:1}
.firearm-card button{position:absolute;inset:0;width:100%;height:100%;border:0;background:none;cursor:pointer;z-index:3}
.firearm-brand{margin:0 0 8px;font-size:.66rem;letter-spacing:.20em;text-transform:uppercase;color:#a78357}
.firearm-model{margin:0;max-width:85%;font-family:var(--serif);font-size:clamp(1.9rem,3.4vw,3.15rem);line-height:1;letter-spacing:-.03em;font-weight:400;color:#eee9df}
.firearm-meta{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:24px;font-size:.73rem;color:rgba(201,195,185,.55)}
.firearm-meta span{position:relative}
.firearm-meta span:not(:last-child)::after{content:"";position:absolute;right:-8px;top:50%;width:2px;height:2px;border-radius:50%;background:rgba(176,132,79,.55)}
.firearm-view{position:absolute;right:27px;bottom:24px;font-size:.65rem;letter-spacing:.16em;text-transform:uppercase;color:rgba(193,158,113,.62);transition:.25s}
.firearm-card:hover .firearm-view{color:#caa36d;transform:translateX(4px)}
.catalog-load-wrap{text-align:center;padding-top:38px}
.catalog-load-more{min-height:48px;padding:0 28px;border-color:rgba(176,132,79,.42);color:#d9d1c5}
.catalog-load-more:hover{background:rgba(154,116,69,.09);border-color:rgba(176,132,79,.70)}
.catalog-empty{text-align:center;padding:80px 20px}
.catalog-empty h2{margin:0 0 12px;font-family:var(--serif);font-size:clamp(3rem,7vw,5rem);font-weight:400}
.catalog-empty p:not(.catalog-k){color:var(--muted)}

.firearm-dialog{width:min(720px,calc(100% - 32px));max-height:calc(100% - 32px);padding:0;border:1px solid rgba(176,132,79,.30);border-radius:0;background:#101111;color:var(--text);box-shadow:0 34px 90px rgba(0,0,0,.65)}
.firearm-dialog::backdrop{background:rgba(0,0,0,.78);backdrop-filter:blur(4px)}
.dialog-close{position:absolute;right:18px;top:16px;width:44px;height:44px;border:0;background:none;color:#bdb7ad;font-size:2rem;font-weight:200;z-index:3}
.dialog-content{padding:58px 54px 52px}
.dialog-brand{margin:0 0 9px;font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:#a78357}
.dialog-content h2{margin:0;font-family:var(--serif);font-size:clamp(3rem,7vw,5.7rem);font-weight:400;line-height:.94;letter-spacing:-.045em}
.dialog-rule{width:120px;height:1px;margin:32px 0;background:linear-gradient(90deg,#9a7445,transparent)}
.dialog-specs{margin:0}
.dialog-specs>div{display:grid;grid-template-columns:150px 1fr;gap:20px;padding:14px 0;border-bottom:1px solid rgba(255,255,255,.075)}
.dialog-specs dt{text-transform:uppercase;letter-spacing:.14em;font-size:.66rem;color:#a78357}
.dialog-specs dd{margin:0;color:#d6d0c7}
.dialog-note{margin:28px 0 0;color:rgba(193,187,177,.56);font-size:.82rem;line-height:1.65}
.dialog-request{display:inline-flex;align-items:center;justify-content:center;min-height:50px;margin-top:30px;padding:0 24px;border:1px solid #9a7445;text-transform:uppercase;letter-spacing:.15em;font-size:.7rem;color:#eee7dc;background:rgba(154,116,69,.08);transition:.25s}
.dialog-request:hover{background:#9a7445;color:#111}

.catalog-footer{display:flex;justify-content:space-between;gap:20px;padding:28px 6vw;border-top:1px solid rgba(255,255,255,.06);font-size:.72rem;letter-spacing:.15em;text-transform:uppercase;color:rgba(199,193,183,.55)}
.catalog-footer span{font-family:var(--serif);letter-spacing:.22em}

@media(max-width:980px){
  .catalog-header{grid-template-columns:1fr auto}
  .catalog-menu-toggle{display:block}
  .catalog-nav{display:none;position:absolute;top:78px;left:0;right:0;padding:18px 5vw 26px;background:#090a0a;border-bottom:1px solid rgba(255,255,255,.07);flex-direction:column;gap:0}
  .catalog-nav.open{display:flex}
  .catalog-nav a{padding:14px 0}
  .catalog-nav a::after{display:none}
  .catalog-controls{grid-template-columns:1fr 1fr}
  .catalog-clear{grid-column:1/-1;width:max-content}
}
@media(max-width:700px){
  .catalog-hero{padding:88px 22px 72px}
  .catalog-browser{padding:42px 22px 82px}
  .catalog-controls{grid-template-columns:1fr}
  .catalog-clear{grid-column:auto}
  .catalog-status{align-items:flex-start;flex-direction:column;gap:5px}
  .catalog-results{grid-template-columns:1fr}
  .firearm-card{border-right:0;min-height:175px;padding:26px 20px}
  .firearm-model{max-width:90%;font-size:clamp(1.9rem,9vw,3rem)}
  .firearm-view{right:20px}
  .dialog-content{padding:54px 24px 34px}
  .dialog-specs>div{grid-template-columns:1fr;gap:3px}
  .catalog-footer{flex-direction:column}
}


/* ==========================================================
   V31 — UNIFORM FLOATING PRODUCT IMAGE STAGE
   Images are displayed only when an exact authorized image is mapped.
   ========================================================== */

.dialog-image-stage{
  position:relative;
  width:100%;
  height:270px;
  margin:0 0 34px;
  display:grid;
  place-items:center;
  overflow:hidden;
  isolation:isolate;
  border-bottom:1px solid rgba(154,116,69,.12);
  background:
    radial-gradient(ellipse at 50% 72%,rgba(154,116,69,.075),transparent 34%),
    linear-gradient(180deg,rgba(255,255,255,.012),transparent 72%);
}

.dialog-image-stage::before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  opacity:.18;
  background:
    repeating-linear-gradient(
      90deg,
      rgba(255,255,255,.006) 0 1px,
      transparent 1px 5px
    );
}

.dialog-image-floor{
  position:absolute;
  left:50%;
  bottom:31px;
  width:58%;
  height:28px;
  transform:translateX(-50%);
  border-radius:50%;
  background:radial-gradient(
    ellipse,
    rgba(0,0,0,.62) 0%,
    rgba(0,0,0,.24) 48%,
    transparent 72%
  );
  filter:blur(8px);
  opacity:.56;
}

.dialog-firearm-image{
  position:relative;
  z-index:3;
  display:none;
  width:88%;
  height:82%;
  max-width:590px;
  max-height:215px;
  object-fit:contain;
  object-position:center center;
  filter:
    drop-shadow(0 18px 16px rgba(0,0,0,.36))
    drop-shadow(0 2px 2px rgba(0,0,0,.20));
  transform:translateY(0);
  will-change:transform;
}

.dialog-image-stage.has-image .dialog-firearm-image{
  display:block;
  animation:catalogProductFloat 5.4s ease-in-out infinite;
}

.dialog-image-fallback{
  position:relative;
  z-index:2;
  width:min(150px,34%);
  height:auto;
  opacity:.13;
  filter:grayscale(1) brightness(.8);
}

.dialog-image-stage.has-image .dialog-image-fallback{
  display:none;
}

.dialog-image-stage.has-image::after{
  content:"";
  position:absolute;
  z-index:4;
  top:10%;
  bottom:10%;
  left:-28%;
  width:18%;
  opacity:0;
  transform:skewX(-18deg);
  pointer-events:none;
  background:linear-gradient(
    90deg,
    transparent,
    rgba(255,255,255,.015),
    rgba(212,179,136,.09),
    rgba(255,255,255,.018),
    transparent
  );
  filter:blur(3px);
  animation:catalogProductSheen 5.4s ease-in-out infinite;
}

@keyframes catalogProductFloat{
  0%,100%{transform:translate3d(0,3px,0)}
  50%{transform:translate3d(0,-7px,0)}
}

@keyframes catalogProductSheen{
  0%,60%{left:-28%;opacity:0}
  68%{opacity:.36}
  84%{opacity:.12}
  100%{left:116%;opacity:0}
}

@media(max-width:700px){
  .dialog-image-stage{
    height:215px;
    margin-bottom:28px;
  }

  .dialog-firearm-image{
    width:92%;
    height:80%;
    max-height:170px;
  }

  .dialog-image-floor{
    bottom:24px;
    width:68%;
  }
}

@media(prefers-reduced-motion:reduce){
  .dialog-image-stage.has-image .dialog-firearm-image,
  .dialog-image-stage.has-image::after{
    animation:none !important;
  }

  .dialog-firearm-image{
    transform:none !important;
  }
}
