/* Full-viewport catalogue ribbon — calibrated from the supplied 25s reference. */
body.catalogue-ribbon-open { overflow:hidden; }
body.catalogue-ribbon-open .catalogue-particle-canvas { opacity:0 !important; visibility:hidden !important; }

.catalogue-ribbon__sr-only {
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}

.catalogue-ribbon {
  --ribbon-paper:#d2d1cc;
  --ribbon-ink:#18242d;
  --ribbon-muted:rgba(24,36,45,.58);
  --ribbon-line:rgba(24,36,45,.14);
  --ribbon-title-split:0;
  position:fixed;
  top:var(--ribbon-top,0px);
  left:var(--ribbon-left,0px);
  width:var(--ribbon-width,100%);
  height:var(--ribbon-height,100dvh);
  z-index:14000;
  overflow:hidden;
  isolation:isolate;
  background:var(--ribbon-paper);
  color:var(--ribbon-ink);
  opacity:0;
  visibility:hidden;
  clip-path:inset(var(--ribbon-origin,50% 0 50% 0));
  transition:clip-path .78s cubic-bezier(.7,0,.15,1),opacity .28s ease,visibility 0s linear .8s;
}

.catalogue-ribbon[hidden] { display:none; }
.catalogue-ribbon.is-open { opacity:1; visibility:visible; clip-path:inset(0); transition-delay:0s; }
.catalogue-ribbon.is-closing { pointer-events:none; clip-path:inset(var(--ribbon-origin,50% 0 50% 0)); }
.catalogue-ribbon__canvas { opacity:0; transition:opacity .7s .15s ease; }
.catalogue-ribbon.is-open .catalogue-ribbon__canvas { opacity:1; }
.catalogue-ribbon__meta,.catalogue-ribbon__navigation,.catalogue-ribbon__page-link {
  opacity:0; translate:0 16px; transition:opacity .55s .3s ease,translate .7s .3s cubic-bezier(.18,.82,.18,1);
}
.catalogue-ribbon.is-open :is(.catalogue-ribbon__meta,.catalogue-ribbon__navigation,.catalogue-ribbon__page-link) { opacity:1; translate:0 0; }
.catalogue-ribbon.is-dragging .catalogue-ribbon__meter i { background:#928400; }

.catalogue-ribbon__orbits { position:absolute; z-index:0; inset:-12%; pointer-events:none; opacity:.72; }
.catalogue-ribbon__orbits::before,
.catalogue-ribbon__orbits::after {
  content:"";
  position:absolute;
  border-color:var(--ribbon-line);
  border-style:solid;
}
.catalogue-ribbon__orbits::before {
  left:-9vw;
  top:13vh;
  width:78vw;
  height:18vw;
  border-width:1px 0 0;
  border-radius:52% 48% 0 0;
  transform:rotate(-5deg);
}
.catalogue-ribbon__orbits::after {
  right:-14vw;
  bottom:8vh;
  width:82vw;
  height:20vw;
  border-width:0 0 1px;
  border-radius:0 0 44% 56%;
  transform:rotate(-8deg);
}

.catalogue-ribbon__title {
  position:absolute;
  z-index:1;
  inset:0;
  display:grid;
  place-content:center;
  text-align:center;
  pointer-events:none;
  transform:translateY(-1.5vh);
}
.catalogue-ribbon__title-line {
  display:block;
  width:100vw;
  font-family:"Barlow Condensed",Arial,sans-serif;
  font-size:clamp(88px,10.2vw,188px);
  font-weight:500;
  line-height:.72;
  letter-spacing:-.047em;
  white-space:nowrap;
  text-transform:uppercase;
  will-change:transform;
}
.catalogue-ribbon__title-line:first-child { transform:translate3d(calc(var(--ribbon-title-split) * 58vw),0,0); }
.catalogue-ribbon__title-line:last-child { transform:translate3d(calc(var(--ribbon-title-split) * -58vw),0,0); }
.catalogue-ribbon__title-note {
  position:absolute;
  left:50%;
  top:50%;
  width:220px;
  transform:translate(-50%,-58%);
  font-size:11px;
  font-weight:700;
  line-height:1.12;
  letter-spacing:.06em;
  text-transform:uppercase;
}

.catalogue-ribbon__canvas { position:absolute; z-index:3; inset:0; width:100%; height:100%; display:block; touch-action:none; }

.catalogue-ribbon__topbar {
  background:var(--ribbon-paper);
  position:absolute;
  z-index:7;
  top:0;
  left:0;
  right:0;
  min-height:82px;
  padding:0 clamp(20px,3.1vw,50px);
  display:flex;
  align-items:center;
  justify-content:space-between;
  border-bottom:1px solid var(--ribbon-line);
  pointer-events:none;
}
.catalogue-ribbon__brand { display:flex; align-items:center; gap:11px; pointer-events:auto; }
.catalogue-ribbon__brand img { width:38px; height:38px; object-fit:contain; }
.catalogue-ribbon__brand span { display:grid; gap:1px; }
.catalogue-ribbon__brand strong { font-family:"Barlow Condensed",Arial,sans-serif; font-size:17px; line-height:.92; letter-spacing:.06em; }
.catalogue-ribbon__brand small { color:#756b00; font-size:11px; font-weight:800; letter-spacing:.08em; }

.catalogue-ribbon__close {
  min-height:34px;
  padding:0 14px;
  border:1px solid rgba(24,36,45,.4);
  border-radius:999px;
  background:transparent;
  color:inherit;
  font-size:11px;
  font-weight:800;
  letter-spacing:.12em;
  text-transform:uppercase;
  pointer-events:auto;
  transition:background .22s ease,color .22s ease,transform .22s ease;
}
.catalogue-ribbon__close:hover { background:var(--ribbon-ink); color:var(--ribbon-paper); }
.catalogue-ribbon__close:active { transform:scale(.96); }
.catalogue-ribbon__close:focus-visible,
.catalogue-ribbon__page-link:focus-visible { outline:2px solid var(--ribbon-ink); outline-offset:4px; }

.catalogue-ribbon__bottom {
  position:absolute;
  z-index:7;
  left:clamp(20px,3.1vw,50px);
  right:clamp(20px,3.1vw,50px);
  bottom:28px;
  display:grid;
  grid-template-columns:1fr auto auto 1fr;
  align-items:end;
  gap:28px;
  pointer-events:none;
}
.catalogue-ribbon__meta { max-width:280px; display:grid; gap:7px; }
.catalogue-ribbon__eyebrow,
.catalogue-ribbon__category { font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.catalogue-ribbon__category { color:var(--ribbon-muted); }
.catalogue-ribbon__counter { display:flex; align-items:baseline; gap:5px; font-family:"Barlow Condensed",Arial,sans-serif; font-size:28px; font-weight:600; line-height:1; }
.catalogue-ribbon__counter { font-variant-numeric:tabular-nums; }
.catalogue-ribbon__navigation { display:flex; gap:6px; pointer-events:auto; }
.catalogue-ribbon__navigation button {
  width:44px; height:44px; border:1px solid rgba(24,36,45,.3); background:var(--ribbon-paper);
  color:inherit; font-size:20px; transition:background .2s,color .2s,transform .2s;
}
.catalogue-ribbon__navigation button:hover { background:var(--ribbon-ink); color:var(--ribbon-paper); }
.catalogue-ribbon__navigation button:active { transform:scale(.92); }
.catalogue-ribbon__navigation button:focus-visible { outline:2px solid var(--ribbon-ink); outline-offset:3px; }
.catalogue-ribbon__counter span:last-child { font-size:13px; color:var(--ribbon-muted); }

.catalogue-ribbon__instruction {
  min-width:310px;
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:12px;
  align-items:center;
  padding-top:10px;
  border-top:1px solid var(--ribbon-line);
  color:var(--ribbon-muted);
  font-size:11px;
  font-weight:700;
  letter-spacing:.09em;
  text-transform:uppercase;
}
.catalogue-ribbon__meter { position:relative; height:1px; background:var(--ribbon-line); overflow:hidden; }
.catalogue-ribbon__meter i { position:absolute; inset:0; background:var(--ribbon-ink); transform:scaleX(0); transform-origin:left; will-change:transform; }
.catalogue-ribbon__page-link {
  justify-self:end;
  display:inline-flex;
  align-items:center;
  gap:18px;
  padding:0 0 8px;
  border-bottom:1px solid currentColor;
  font-size:11px;
  font-weight:800;
  letter-spacing:.12em;
  text-transform:uppercase;
  pointer-events:auto;
}

.catalogue-ribbon__loading {
  position:absolute;
  z-index:8;
  left:50%;
  top:50%;
  transform:translate(-50%,112px);
  display:flex;
  align-items:center;
  gap:9px;
  font-size:11px;
  font-weight:800;
  letter-spacing:.12em;
  text-transform:uppercase;
  transition:opacity .25s ease;
}
.catalogue-ribbon__loading i { width:6px; height:6px; border-radius:50%; background:var(--ribbon-ink); animation:catalogueRibbonBlink .72s ease-in-out infinite alternate; }
.catalogue-ribbon.is-ready .catalogue-ribbon__loading { opacity:0; pointer-events:none; }

.catalogue-ribbon__fallback { position:absolute; z-index:3; inset:96px 0 88px; display:none; align-items:center; gap:18px; overflow-x:auto; padding:0 12vw; scroll-snap-type:x mandatory; }
.catalogue-ribbon__fallback img { flex:0 0 auto; width:min(72vw,760px); max-height:68vh; object-fit:contain; scroll-snap-align:center; box-shadow:0 16px 48px rgba(24,36,45,.11); }
.catalogue-ribbon.is-fallback .catalogue-ribbon__canvas { display:none; }
.catalogue-ribbon.is-fallback .catalogue-ribbon__fallback { display:flex; }
.catalogue-ribbon.is-fallback .catalogue-ribbon__loading { display:none; }

@keyframes catalogueRibbonBlink { to { opacity:.14; transform:scale(.68); } }

@media (max-width:760px) {
  .catalogue-ribbon__topbar { min-height:72px; }
  .catalogue-ribbon__brand img { width:34px; height:34px; }
  .catalogue-ribbon__brand strong { font-size:15px; }
  .catalogue-ribbon__title { transform:translateY(-5vh); }
  .catalogue-ribbon__title-line { font-size:clamp(58px,18vw,96px); line-height:.76; }
  .catalogue-ribbon__title-note { width:160px; font-size:11px; }
  .catalogue-ribbon__bottom { bottom:18px; grid-template-columns:1fr auto; gap:18px; }
  .catalogue-ribbon__instruction { grid-column:1 / -1; grid-row:1; min-width:0; width:100%; }
  .catalogue-ribbon__meta { grid-column:1; grid-row:2; }
  .catalogue-ribbon__page-link { grid-column:2; grid-row:2; font-size:11px; }
  .catalogue-ribbon__category { display:none; }
  .catalogue-ribbon__navigation { grid-column:2; grid-row:2; }
  .catalogue-ribbon__page-link { grid-column:1 / -1; grid-row:3; }
  .catalogue-ribbon__fallback { bottom:180px; }
}

@media (prefers-reduced-motion:reduce) {
  .catalogue-ribbon { transition:none; clip-path:none; }
  .catalogue-ribbon__title-line { transform:none !important; }
  .catalogue-ribbon__loading i { animation:none; }
  .catalogue-ribbon__canvas,.catalogue-ribbon__meta,.catalogue-ribbon__navigation,.catalogue-ribbon__page-link { transition:none; }
}
