a.skip-nav{position:absolute;left:1rem;top:-120px;z-index:10001;padding:.55rem 1.1rem;background:var(--green);color:var(--bg);font-family:var(--font-ui);font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;border-radius:var(--radius-sm);transition:top .2s ease}a.skip-nav:focus{top:1rem;outline:2px solid var(--cyan);outline-offset:3px}.protocols-page{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:clamp(1.25rem,4vw,2.5rem) clamp(1rem,3vw,1.75rem) clamp(3rem,8vw,4.5rem)}.protocols-header{text-align:center;padding:clamp(2rem,5vw,3.5rem) 0 clamp(1.75rem,4vw,2.5rem);margin-bottom:clamp(1.5rem,4vw,2rem);border-bottom:1px solid var(--border);position:relative}.protocols-header:after{content:"";position:absolute;bottom:-1px;left:15%;right:15%;height:1px;background:linear-gradient(90deg,transparent,rgba(0,255,136,.2) 35%,rgba(0,229,255,.15) 65%,transparent);pointer-events:none}.protocols-header .eyebrow{margin-bottom:.65rem}.protocols-title{font-family:var(--font-head);font-size:clamp(2rem,5.5vw,3.25rem);font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--white);line-height:1.05;margin:0 0 .75rem}.protocols-title .accent{color:var(--green);text-shadow:0 0 24px rgba(0,255,136,.25)}.protocols-lede{font-family:var(--font-body);font-size:clamp(.95rem,2vw,1.05rem);font-weight:400;color:var(--text-secondary);max-width:36rem;margin:0 auto;line-height:1.65}.protocols-notice{background:#ffc8000f;border:1px solid rgba(255,200,0,.22);border-left:3px solid var(--gold);border-radius:var(--radius-md);padding:1.1rem 1.35rem;margin:0 0 1.5rem;font-family:var(--font-body);font-size:.875rem;color:var(--text-secondary);line-height:1.6}.protocols-notice strong{color:var(--gold);font-weight:600}.protocols-toc{display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem .35rem;margin:0 0 2.25rem;padding:0;list-style:none}.protocols-toc li{list-style:none;margin:0;padding:0}.protocols-toc a{font-family:var(--font-ui);font-size:.62rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-tertiary);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.4rem .75rem;transition:color .15s ease,border-color .15s ease,background .15s ease}.protocols-toc a:hover,.protocols-toc a:focus-visible{color:var(--green);border-color:#00ff8859;background:#00ff880f}.protocols-section{margin-bottom:clamp(2.25rem,5vw,3.25rem);scroll-margin-top:5.5rem}.protocols-category-heading{font-family:var(--font-head);font-size:clamp(1.15rem,2.8vw,1.5rem);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--white);margin:0 0 1.15rem;padding-bottom:.6rem;border-bottom:1px solid rgba(0,255,136,.12);display:flex;align-items:center;gap:.65rem}.protocols-category-heading:before{content:"";width:4px;height:1.1em;border-radius:2px;background:var(--green);flex-shrink:0}#heading-hgh:before{background:var(--teal)}#heading-healing:before{background:var(--cyan)}#heading-tanning:before{background:var(--gold)}#heading-metabolic:before{background:var(--purple)}#heading-muscle:before{background:var(--green)}#heading-cognitive:before{background:var(--violet)}#heading-skin:before{background:#e8f4f873}.protocols-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:1.15rem}.protocol-card{position:relative;background:linear-gradient(145deg,#0d1219eb,#1118278c);border:1px solid var(--border);border-radius:var(--radius-md);padding:1.35rem 1.4rem 1.25rem;overflow:hidden;transition:border-color .22s ease,box-shadow .22s ease,transform .22s ease}.protocol-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--green);opacity:.95}.protocol-card:hover{border-color:#00ff8847;box-shadow:var(--glow-green)}.protocol-card[data-cat=hgh]:before{background:var(--teal)}.protocol-card[data-cat=healing]:before{background:var(--cyan)}.protocol-card[data-cat=tanning]:before{background:var(--gold)}.protocol-card[data-cat=metabolic]:before{background:var(--purple)}.protocol-card[data-cat=longevity]:before{background:linear-gradient(90deg,var(--purple),var(--violet))}.protocol-card[data-cat=muscle]:before{background:var(--green)}.protocol-card[data-cat=cognitive]:before{background:var(--violet)}.protocol-card[data-cat=skin]:before{background:#e8f4f880}.protocol-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;margin-bottom:1rem}.protocol-compound{font-family:var(--font-head);font-size:1.2rem;font-weight:700;letter-spacing:.02em;color:var(--white);margin:0;line-height:1.2}.protocol-category-tag{font-family:var(--font-ui);font-size:.58rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--green);background:#00ff8814;border:1px solid rgba(0,255,136,.22);border-radius:var(--radius-pill);padding:.25rem .65rem;white-space:nowrap;flex-shrink:0}.protocol-details{display:flex;flex-direction:column;gap:0;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);overflow:hidden;margin-bottom:.65rem}.protocol-detail{display:grid;grid-template-columns:minmax(0,42%) 1fr;gap:.5rem 1rem;align-items:baseline;padding:.5rem .75rem;border-bottom:1px solid rgba(255,255,255,.05)}.protocol-detail:last-child{border-bottom:none}.protocol-detail-label{font-family:var(--font-ui);font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-tertiary)}.protocol-detail-value{font-family:var(--font-body);font-size:.875rem;color:var(--text);text-align:right;line-height:1.45}.protocol-notes{font-family:var(--font-body);font-size:.8125rem;color:var(--text-tertiary);font-style:italic;line-height:1.55;margin:.35rem 0 0;padding-top:.65rem;border-top:1px solid rgba(255,255,255,.06)}.protocol-card-link{display:inline-flex;align-items:center;gap:.35rem;margin-top:.85rem;font-family:var(--font-ui);font-weight:700;font-size:.68rem;text-transform:uppercase;letter-spacing:.14em;color:var(--green);text-decoration:none;padding:.45rem 1rem;border:1px solid rgba(0,255,136,.3);border-radius:var(--radius-sm);background:#00ff880d;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.protocol-card-link:hover{background:#00ff881f;border-color:var(--green);box-shadow:0 0 16px #00ff881f}.protocols-group-order{max-width:52rem;margin:clamp(2.5rem,6vw,3.5rem) auto;padding:clamp(1.75rem,4vw,2.5rem) clamp(1.25rem,3vw,2rem);text-align:center;border-radius:var(--radius-lg);border:1px solid rgba(0,255,136,.22);background:linear-gradient(135deg,#00ff8817,#00e5ff0a);position:relative;overflow:hidden}.protocols-group-order:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 80% 60% at 50% 0%,rgba(0,255,136,.12),transparent 55%);pointer-events:none}.protocols-group-order h2{font-family:var(--font-head);font-size:clamp(1.2rem,3vw,1.65rem);font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--white);margin:0 0 .65rem;position:relative}.protocols-group-order p{font-family:var(--font-body);font-weight:400;font-size:.95rem;color:var(--text-secondary);max-width:38rem;margin:0 auto 1.35rem;line-height:1.65;position:relative}.protocols-group-order .btn-shop{position:relative;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-ui);font-weight:800;font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;color:var(--bg);background:var(--green);border:none;border-radius:var(--radius-sm);padding:.8rem 2.25rem;text-decoration:none;transition:transform .15s ease,filter .15s ease,box-shadow .15s ease}.protocols-group-order .btn-shop:hover{filter:brightness(1.08);box-shadow:var(--glow-green-strong)}.protocols-storage{max-width:52rem;margin:0 auto 2rem;padding:1.35rem 1.5rem;border-radius:var(--radius-md);border:1px solid rgba(0,229,255,.2);border-left:3px solid var(--cyan);background:#00e5ff0d}.protocols-storage h2{font-family:var(--font-head);font-size:1.15rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--white);margin:0 0 .85rem}.protocols-storage ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.55rem}.protocols-storage li{font-family:var(--font-body);font-size:.875rem;color:var(--text-secondary);line-height:1.55;padding-left:1.1rem;position:relative}.protocols-storage li:before{content:"";position:absolute;left:0;top:.55em;width:5px;height:5px;border-radius:50%;background:var(--cyan)}.protocols-storage strong{color:var(--white);font-weight:600}@media(prefers-reduced-motion:reduce){.protocol-card,.protocol-card-link,.protocols-group-order .btn-shop,.protocols-toc a{transition:none}.protocol-card:hover{transform:none}}@media(prefers-reduced-motion:no-preference){.protocol-card:hover{transform:translateY(-2px)}}@media(max-width:720px){.protocol-detail{grid-template-columns:1fr;gap:.15rem}.protocol-detail-value{text-align:left}.protocols-toc{justify-content:flex-start;overflow-x:auto;flex-wrap:nowrap;padding-bottom:.35rem;margin-bottom:1.75rem;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.protocols-toc a{flex-shrink:0}}@media(max-width:480px){.protocol-card{padding:1.15rem 1.1rem}.protocol-compound{font-size:1.05rem}}

/* ══════════════════════════════════════════════════════════════════════════
   PROTOCOLS v2 — dynamic, glossy, full-catalog render
   Added for /protocols page redesign. All rules namespaced under
   .protocols-v2-* so they don't collide with the legacy `.protocol-card`
   minified block above. See public/js/protocols-loader.js.
   ══════════════════════════════════════════════════════════════════════════ */

.protocols-v2-root {
  position: relative;
  margin: 0 0 clamp(2.5rem, 5vw, 3.5rem);
}

/* ── Skeleton (shown while /api/products is in flight) ───────────────────── */
.protocols-v2-skeleton {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  padding: 3rem 1rem;
  color: var(--text-secondary);
  font-family: var(--font-body);
  font-size: 0.9rem;
  letter-spacing: 0.05em;
}
.protocols-v2-skeleton-spinner {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 2px solid rgba(0, 229, 255, 0.18);
  border-top-color: #00e5ff;
  animation: protocolsV2Spin 0.9s linear infinite;
}
@keyframes protocolsV2Spin {
  to { transform: rotate(360deg); }
}

.protocols-v2-root[data-protocols-loaded="1"] .protocols-v2-skeleton {
  display: none;
}

.protocols-v2-error {
  padding: 1.5rem 1.65rem;
  border: 1px solid rgba(255, 120, 120, 0.3);
  border-left: 3px solid #ff6b6b;
  border-radius: var(--radius-md, 12px);
  background: rgba(40, 10, 12, 0.45);
  color: var(--text-secondary);
  font-size: 0.9rem;
  line-height: 1.6;
}
.protocols-v2-error strong { color: #ff9a9a; }

/* ── Dynamic Table of Contents ───────────────────────────────────────────── */
.protocols-v2-toc {
  position: sticky;
  top: 0;
  z-index: 20;
  margin: 0 0 clamp(1.75rem, 4vw, 2.5rem);
  padding: 0.85rem 0.75rem;
  border-radius: 14px;
  background: linear-gradient(
    180deg,
    rgba(10, 18, 28, 0.85) 0%,
    rgba(6, 12, 22, 0.75) 100%
  );
  border: 1px solid rgba(120, 220, 255, 0.16);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.06),
    0 14px 38px rgba(0, 0, 0, 0.35);
  backdrop-filter: blur(12px) saturate(1.1);
  -webkit-backdrop-filter: blur(12px) saturate(1.1);
}
.protocols-v2-toc ul {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.4rem 0.45rem;
  list-style: none;
  margin: 0;
  padding: 0;
}
.protocols-v2-toc li { list-style: none; margin: 0; }
.protocols-v2-toc a {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.5rem 0.9rem;
  border-radius: 999px;
  border: 1px solid rgba(120, 220, 255, 0.18);
  background: rgba(8, 16, 26, 0.62);
  font-family: var(--font-ui, ui-sans-serif, system-ui, sans-serif);
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(215, 235, 250, 0.85);
  text-decoration: none;
  transition: color 0.2s, border-color 0.2s, background 0.2s, transform 0.2s;
}
.protocols-v2-toc a:hover,
.protocols-v2-toc a:focus-visible {
  color: #fff;
  border-color: var(--cat-accent, #00e5ff);
  background: rgba(10, 22, 34, 0.85);
  transform: translateY(-1px);
  box-shadow: 0 0 18px color-mix(in srgb, var(--cat-accent, #00e5ff) 40%, transparent);
}
.protocols-v2-toc-emoji {
  font-size: 0.95rem;
  line-height: 1;
  filter: drop-shadow(0 0 6px color-mix(in srgb, var(--cat-accent, #00e5ff) 60%, transparent));
}
.protocols-v2-toc-count {
  margin-left: 0.15rem;
  padding: 0.05em 0.5em;
  border-radius: 999px;
  background: color-mix(in srgb, var(--cat-accent, #00e5ff) 18%, transparent);
  color: var(--cat-accent, #00e5ff);
  font-size: 0.58rem;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

/* ── Category Section ────────────────────────────────────────────────────── */
.protocols-v2-sections {
  display: flex;
  flex-direction: column;
  gap: clamp(2rem, 5vw, 3rem);
}
.protocols-v2-section {
  scroll-margin-top: 5rem;
  position: relative;
}

.protocols-v2-cat-header {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin: 0 0 1.5rem;
  padding: 1rem 1.15rem 1.15rem;
  border-radius: 16px;
  background:
    linear-gradient(180deg,
      color-mix(in srgb, var(--cat-accent, #00e5ff) 14%, transparent) 0%,
      transparent 100%),
    linear-gradient(180deg, rgba(10, 18, 28, 0.85), rgba(5, 10, 18, 0.7));
  border: 1px solid color-mix(in srgb, var(--cat-accent, #00e5ff) 30%, rgba(255, 255, 255, 0.08));
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.05),
    inset 0 -1px 0 rgba(0, 0, 0, 0.25),
    0 12px 32px rgba(0, 0, 0, 0.28),
    0 0 36px color-mix(in srgb, var(--cat-accent, #00e5ff) 18%, transparent);
  overflow: hidden;
}
.protocols-v2-cat-header::before {
  content: "";
  position: absolute;
  left: 0; right: 0; top: 0;
  height: 2px;
  background: linear-gradient(90deg,
    transparent 0%,
    var(--cat-accent, #00e5ff) 20%,
    var(--cat-accent, #00e5ff) 80%,
    transparent 100%);
  opacity: 0.9;
  pointer-events: none;
}
.protocols-v2-cat-badge {
  flex-shrink: 0;
  width: 52px;
  height: 52px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 14px;
  background:
    radial-gradient(circle at 30% 25%, rgba(255, 255, 255, 0.14), transparent 60%),
    linear-gradient(150deg,
      color-mix(in srgb, var(--cat-accent, #00e5ff) 35%, rgba(15, 25, 38, 1)) 0%,
      rgba(6, 14, 24, 0.95) 100%);
  border: 1px solid color-mix(in srgb, var(--cat-accent, #00e5ff) 45%, transparent);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.18),
    0 0 22px color-mix(in srgb, var(--cat-accent, #00e5ff) 32%, transparent);
}
.protocols-v2-cat-emoji {
  font-size: 1.7rem;
  line-height: 1;
  filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.5));
}
.protocols-v2-cat-titles { min-width: 0; }
.protocols-v2-cat-heading {
  margin: 0;
  font-family: var(--font-head, ui-sans-serif, sans-serif);
  font-size: clamp(1.2rem, 2.8vw, 1.55rem);
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #fff;
  line-height: 1.15;
}
.protocols-v2-cat-count {
  margin: 0.3rem 0 0;
  font-family: var(--font-ui, ui-sans-serif, sans-serif);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--cat-accent, #00e5ff) 90%, rgba(255, 255, 255, 0.3));
}

/* ── Card Grid ───────────────────────────────────────────────────────────── */
.protocols-v2-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 360px), 1fr));
  gap: 1.25rem;
}

/* ── Individual Card ─────────────────────────────────────────────────────── */
.protocols-v2-card {
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 1.35rem 1.4rem 1.3rem;
  border-radius: 16px;
  background:
    radial-gradient(ellipse 100% 50% at 50% 0%,
      color-mix(in srgb, var(--cat-accent, #00e5ff) 10%, transparent) 0%,
      transparent 60%),
    linear-gradient(165deg, rgba(13, 22, 34, 0.95) 0%, rgba(6, 12, 20, 0.88) 100%);
  border: 1px solid rgba(120, 220, 255, 0.12);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.05),
    0 14px 38px rgba(0, 0, 0, 0.35),
    0 0 0 rgba(0, 0, 0, 0);
  overflow: hidden;
  transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
}
.protocols-v2-card-accent {
  position: absolute;
  left: 0; right: 0; top: 0;
  height: 3px;
  background: linear-gradient(90deg,
    transparent 0%,
    var(--cat-accent, #00e5ff) 20%,
    var(--cat-accent, #00e5ff) 80%,
    transparent 100%);
  opacity: 0.85;
  pointer-events: none;
}
.protocols-v2-card:hover {
  transform: translateY(-3px);
  border-color: color-mix(in srgb, var(--cat-accent, #00e5ff) 45%, transparent);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.08),
    0 18px 44px rgba(0, 0, 0, 0.42),
    0 0 34px color-mix(in srgb, var(--cat-accent, #00e5ff) 22%, transparent);
}

/* ── Card Header ─────────────────────────────────────────────────────────── */
.protocols-v2-card-head {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: start;
  gap: 0.85rem;
  margin: 0 0 0.95rem;
}
.protocols-v2-card-emoji {
  grid-column: 1;
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  font-size: 1.4rem;
  line-height: 1;
  background:
    radial-gradient(circle at 30% 25%, rgba(255, 255, 255, 0.12), transparent 60%),
    linear-gradient(150deg,
      color-mix(in srgb, var(--cat-accent, #00e5ff) 30%, rgba(15, 25, 38, 1)) 0%,
      rgba(6, 14, 24, 0.95) 100%);
  border: 1px solid color-mix(in srgb, var(--cat-accent, #00e5ff) 38%, transparent);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18);
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.4));
}
.protocols-v2-card-titles {
  grid-column: 2;
  min-width: 0;
}
.protocols-v2-card-name {
  margin: 0;
  font-family: var(--font-head, ui-sans-serif, sans-serif);
  font-size: 1.15rem;
  font-weight: 800;
  color: #fff;
  letter-spacing: 0.015em;
  line-height: 1.2;
}
.protocols-v2-card-aka {
  margin: 0.2rem 0 0;
  font-family: var(--font-body, ui-sans-serif, sans-serif);
  font-size: 0.72rem;
  color: var(--text-tertiary, rgba(190, 210, 230, 0.55));
  line-height: 1.35;
  font-style: italic;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.protocols-v2-card-tag {
  grid-column: 3;
  align-self: start;
  padding: 0.28em 0.65em;
  border-radius: 999px;
  font-family: var(--font-ui, ui-sans-serif, sans-serif);
  font-size: 0.56rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--cat-accent, #00e5ff);
  background: color-mix(in srgb, var(--cat-accent, #00e5ff) 14%, transparent);
  border: 1px solid color-mix(in srgb, var(--cat-accent, #00e5ff) 32%, transparent);
  white-space: nowrap;
  flex-shrink: 0;
}

/* ── Description ─────────────────────────────────────────────────────────── */
.protocols-v2-card-desc {
  margin: 0 0 1rem;
  font-family: var(--font-body, ui-sans-serif, sans-serif);
  font-size: 0.82rem;
  line-height: 1.55;
  color: rgba(215, 230, 245, 0.78);
}

/* ── Dosage box ──────────────────────────────────────────────────────────── */
.protocols-v2-dosage-box {
  position: relative;
  margin: 0 0 0.85rem;
  padding: 0.9rem 1rem 0.85rem;
  border-radius: 12px;
  background: linear-gradient(180deg, rgba(0, 229, 255, 0.04) 0%, rgba(0, 0, 0, 0.18) 100%);
  border: 1px solid rgba(120, 220, 255, 0.14);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
}
.protocols-v2-dosage-box-label {
  font-family: var(--font-ui, ui-sans-serif, sans-serif);
  font-size: 0.58rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--cat-accent, #00e5ff) 80%, rgba(255, 255, 255, 0.3));
  margin-bottom: 0.55rem;
}
.protocols-v2-dosage-rows {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin: 0;
}
.protocols-v2-dosage-row {
  display: grid;
  grid-template-columns: minmax(0, 34%) 1fr;
  gap: 0.5rem 0.9rem;
  padding: 0.5rem 0;
  border-bottom: 1px solid rgba(120, 220, 255, 0.08);
}
.protocols-v2-dosage-row:last-child { border-bottom: none; padding-bottom: 0; }
.protocols-v2-dosage-row:first-child { padding-top: 0; }
.protocols-v2-dosage-row dt {
  margin: 0;
  font-family: var(--font-ui, ui-sans-serif, sans-serif);
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-tertiary, rgba(190, 210, 230, 0.55));
  align-self: center;
}
.protocols-v2-dosage-row dd {
  margin: 0;
  font-family: var(--font-body, ui-sans-serif, sans-serif);
  font-size: 0.85rem;
  color: rgba(230, 244, 255, 0.96);
  line-height: 1.4;
}

/* ── Notes ───────────────────────────────────────────────────────────────── */
.protocols-v2-card-notes {
  margin: 0 0 0.9rem;
  padding: 0.7rem 0.85rem;
  font-family: var(--font-body, ui-sans-serif, sans-serif);
  font-size: 0.74rem;
  line-height: 1.55;
  color: rgba(200, 218, 232, 0.76);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid rgba(255, 255, 255, 0.05);
}
.protocols-v2-notes-label {
  display: inline-block;
  margin-right: 0.45rem;
  padding: 0.1em 0.45em;
  border-radius: 6px;
  font-size: 0.58rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--cat-accent, #00e5ff) 90%, rgba(255, 255, 255, 0.3));
  background: color-mix(in srgb, var(--cat-accent, #00e5ff) 12%, transparent);
  vertical-align: middle;
}

/* ── CTA ─────────────────────────────────────────────────────────────────── */
.protocols-v2-card-link {
  margin-top: auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.7rem 1.1rem;
  border-radius: 10px;
  font-family: var(--font-ui, ui-sans-serif, sans-serif);
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #05121c;
  text-decoration: none;
  background: linear-gradient(180deg,
    color-mix(in srgb, var(--cat-accent, #00e5ff) 100%, transparent) 0%,
    color-mix(in srgb, var(--cat-accent, #00e5ff) 80%, #000) 100%);
  border: 1px solid color-mix(in srgb, var(--cat-accent, #00e5ff) 60%, transparent);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.35),
    0 8px 22px color-mix(in srgb, var(--cat-accent, #00e5ff) 32%, transparent);
  transition: transform 0.2s, box-shadow 0.2s, filter 0.2s;
}
.protocols-v2-card-link:hover {
  transform: translateY(-1px);
  filter: brightness(1.08) saturate(1.15);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.45),
    0 12px 28px color-mix(in srgb, var(--cat-accent, #00e5ff) 42%, transparent);
}
.protocols-v2-card-link svg { flex-shrink: 0; }

/* ── Responsive ──────────────────────────────────────────────────────────── */
@media (max-width: 720px) {
  .protocols-v2-grid {
    grid-template-columns: 1fr;
    gap: 1rem;
  }
  .protocols-v2-toc {
    position: static;
    padding: 0.7rem 0.55rem;
  }
  .protocols-v2-toc ul {
    flex-wrap: nowrap;
    overflow-x: auto;
    justify-content: flex-start;
    scrollbar-width: thin;
    -webkit-overflow-scrolling: touch;
  }
  .protocols-v2-toc a { flex-shrink: 0; }
  .protocols-v2-cat-header {
    gap: 0.8rem;
    padding: 0.85rem 0.95rem;
  }
  .protocols-v2-cat-badge { width: 44px; height: 44px; border-radius: 12px; }
  .protocols-v2-cat-emoji { font-size: 1.4rem; }
  .protocols-v2-card {
    padding: 1.2rem 1.15rem 1.15rem;
  }
  .protocols-v2-dosage-row {
    grid-template-columns: 1fr;
    gap: 0.1rem;
  }
  .protocols-v2-card-head {
    grid-template-columns: auto 1fr;
    row-gap: 0.5rem;
  }
  .protocols-v2-card-tag {
    grid-column: 1 / -1;
    justify-self: start;
  }
}

@media (prefers-reduced-motion: reduce) {
  .protocols-v2-card,
  .protocols-v2-card-link,
  .protocols-v2-toc a { transition: none; }
  .protocols-v2-card:hover,
  .protocols-v2-card-link:hover,
  .protocols-v2-toc a:hover { transform: none; }
  .protocols-v2-skeleton-spinner { animation: none; }
}
