/* ==========================================================================
   HOMEBEACH — Component Styles
   Retro Surf Culture: Bangers headlines · Playfair Display body · Space Mono UI
   ========================================================================== */

/* ---- Section Tag — rubber stamp style ---- */
.section-tag {
  font-family: 'Space Mono', monospace;
  font-size: 0.72rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.35rem 1.1rem;
  border-radius: 2px;
  border: 2px solid currentColor;
  margin-bottom: 0.75rem;
  box-shadow: inset 0 0 0 1px currentColor;
}

/* ---- Section Illustrated Icon ---- */
.section-icon-wrap {
  display: none;
}
.section-icon-img {
  width: 40%;
  height: auto;
  object-fit: contain;
  display: block;
}

/* ---- Section Heading ---- */
.section-heading {
  font-family: 'Bangers', cursive;
  font-size: clamp(2.8rem, 5vw, 4.5rem);
  line-height: 0.95;
  letter-spacing: 0.04em;
  margin-bottom: 0.5rem;
  text-transform: uppercase;
}

.section-heading em {
  font-style: italic;
}

/* ---- Buttons ---- */
.btn {
  font-family: 'Bangers', cursive;
  font-size: 1.15rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 0.7rem 2.2rem;
  border-radius: 3px;
  cursor: pointer;
  text-decoration: none;
  display: inline-block;
  transition: transform 0.15s, box-shadow 0.15s;
}

.btn:hover { transform: translate(-2px, -3px); }

.btn-primary {
  background: var(--rust);
  color: var(--white);
  border: 2.5px solid var(--ink);
  box-shadow: var(--shadow-ink);
  position: relative;
}
.btn-primary::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 2px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Crect width='1' height='1' x='0' y='0' fill='black' opacity='0.05'/%3E%3Crect width='1' height='1' x='2' y='2' fill='black' opacity='0.05'/%3E%3C/svg%3E") repeat;
  pointer-events: none;
}
.btn-primary:hover { box-shadow: var(--shadow-ink-lg); }

.btn-outline {
  background: rgba(254,251,243,0.1);
  color: var(--white);
  border: 2px solid rgba(254,251,243,0.5);
  backdrop-filter: blur(4px);
  border-radius: 3px;
}
.btn-outline:hover { background: rgba(254,251,243,0.2); }

/* ---- Hero — Split Layout ---- */
.hero-inner {
  display: flex;
  align-items: center;
  gap: clamp(1.5rem, 4vw, 4rem);
  max-width: 960px;
  width: 100%;
  position: relative;
  z-index: 2;
}

.hero-badge {
  flex-shrink: 0;
  width: clamp(280px, 60vh, 580px);
  height: auto;
  display: block;
  filter: drop-shadow(0 8px 30px rgba(0,0,0,0.45));
  animation: pop-in 0.7s 0.1s cubic-bezier(0.34,1.56,0.64,1) both;
  mix-blend-mode: lighten;
}

.hero-text {
  flex: 1;
  text-align: left;
  animation: pop-in 0.7s 0.2s cubic-bezier(0.34,1.56,0.64,1) both;
}

.hero-eyebrow {
  display: inline-block;
  color: var(--sand);
  font-size: 0.68rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  font-family: 'Space Mono', monospace;
  margin-bottom: 0.6rem;
  opacity: 0.85;
}

.hero-headline {
  font-family: 'Bangers', cursive;
  font-size: clamp(3rem, 7.5vw, 6.5rem);
  color: var(--white);
  line-height: 0.95;
  letter-spacing: 0.03em;
  margin-bottom: 1.1rem;
}
.hl-sun   { color: #F7D060; }
.hl-sand  { color: #F5825A; }
.hl-zero  { color: #00A8E8; }
.hl-plans { color: #4CAF50; }

.hero-sub {
  font-family: 'Nunito', sans-serif;
  font-size: clamp(0.95rem, 1.8vw, 1.15rem);
  color: rgba(254,251,243,0.7);
  font-weight: 300;
  line-height: 1.65;
  max-width: 380px;
  margin-bottom: 1.25rem;
}

.hero-tag {
  display: inline-block;
  border: 1px solid rgba(254,251,243,0.2);
  color: rgba(254,251,243,0.45);
  font-size: 0.68rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  font-family: 'Space Mono', monospace;
  padding: 5px 12px;
  border-radius: 20px;
}

@media (max-width: 640px) {
  .hero-inner { flex-direction: column; text-align: center; }
  .hero-text { text-align: center; }
  .hero-sub { margin-left: auto; margin-right: auto; }
}

.hero-cta {
  display: inline-flex;
  gap: 1.2rem;
  flex-wrap: wrap;
  justify-content: center;
  animation: pop-in 0.7s 0.5s cubic-bezier(0.34,1.56,0.64,1) both;
}

/* ---- Cocktail Card — aged magazine page ---- */
.cocktail-card {
  border-radius: 4px;
  border: var(--border-ink);
  box-shadow: var(--shadow-ink);
  overflow: hidden;
  transition: transform 0.2s, box-shadow 0.2s, opacity 0.15s;
  cursor: pointer;
  background: var(--paper);
  position: relative;
}

/* Emoji watermark background */
.cocktail-card::before {
  content: attr(data-emoji);
  position: absolute;
  bottom: -10px;
  right: -10px;
  font-size: 9rem;
  line-height: 1;
  opacity: 0.1;
  pointer-events: none;
  z-index: 0;
  filter: grayscale(0.3);
}

/* Inner border — aged page edge */
.cocktail-card::after {
  content: '';
  position: absolute;
  inset: 3px;
  border: 1px solid rgba(26,18,9,0.07);
  pointer-events: none;
  border-radius: 2px;
  z-index: 1;
}

.cocktail-card:hover {
  transform: translate(-3px, -3px) rotate(-0.5deg);
  box-shadow: var(--shadow-ink-lg);
}

.cocktail-header { padding: 2rem 1.8rem 1.5rem; position: relative; }

.cocktail-emoji {
  font-size: 3.5rem;
  display: block;
  margin-bottom: 0.8rem;
  filter: drop-shadow(0 4px 8px rgba(0,0,0,0.15));
}

.cocktail-name {
  font-family: 'Bangers', cursive;
  font-size: 1.9rem;
  letter-spacing: 0.03em;
  color: var(--white);
  text-shadow: 2px 2px 0 rgba(0,0,0,0.25);
  line-height: 1;
}

.cocktail-tagline {
  font-size: 0.85rem;
  color: rgba(255,255,255,0.85);
  font-style: italic;
  margin-top: 0.3rem;
}

.card-amber .cocktail-header { background: linear-gradient(135deg, rgba(212,168,32,0.92) 0%, rgba(176,120,24,0.92) 100%), url('../images/Me/me.jpg') center top / cover no-repeat; }
.card-coral .cocktail-header { background: linear-gradient(135deg, rgba(212,105,74,0.92) 0%, rgba(168,68,42,0.92) 100%), url('../images/Me/me.jpg') center top / cover no-repeat; }
.card-sky   .cocktail-header { background: linear-gradient(135deg, rgba(46,134,171,0.92) 0%, rgba(27,79,107,0.92) 100%), url('../images/Me/me.jpg') center top / cover no-repeat; }
.card-lime  .cocktail-header { background: linear-gradient(135deg, rgba(74,143,63,0.92) 0%, rgba(45,92,40,0.92) 100%), url('../images/Me/me.jpg') center top / cover no-repeat; }
.card-pink  .cocktail-header { background: linear-gradient(135deg, rgba(196,96,122,0.92) 0%, rgba(138,48,80,0.92) 100%), url('../images/Me/me.jpg') center top / cover no-repeat; }
.card-teal  .cocktail-header { background: linear-gradient(135deg, rgba(42,157,143,0.92) 0%, rgba(26,107,96,0.92) 100%), url('../images/Me/me.jpg') center top / cover no-repeat; }

.cocktail-body { background: var(--paper); padding: 1.5rem 1.8rem; }

.cocktail-toggle {
  font-family: 'Space Mono', monospace;
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--rust);
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 1rem;
  user-select: none;
  border: none;
  background: none;
  padding: 0;
}

.toggle-arrow { transition: transform 0.25s; display: inline-block; }
.cocktail-card.open .toggle-arrow { transform: rotate(90deg); }

.cocktail-details {
  display: flex;
  gap: 2.5rem;
  align-items: flex-start;
  max-height: 0;
  overflow: hidden;
  opacity: 0;
  transition: max-height 0.65s ease, opacity 0.45s ease;
}

.cocktail-card.open .cocktail-details {
  max-height: 600px;
  opacity: 1;
}

/* ---- Expanded cocktail card — full-width with header panel on left ---- */
/* .is-closing keeps layout alive while card fades to transparent; grid snap happens while invisible */
:is(.cocktail-card.open, .cocktail-card.is-closing) {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: row;
  align-items: stretch;
  transform: none;
}

:is(.cocktail-card.open, .cocktail-card.is-closing):hover { transform: none; }

:is(.cocktail-card.open, .cocktail-card.is-closing) .cocktail-header {
  width: 260px;
  min-width: 260px;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 2.5rem 2rem;
}

:is(.cocktail-card.open, .cocktail-card.is-closing) .cocktail-body {
  flex: 1;
  padding: 2rem 2.5rem;
  display: flex;
  flex-direction: column;
}

:is(.cocktail-card.open, .cocktail-card.is-closing) .cocktail-toggle { display: none; }

/* While fading out: collapse details instantly and mute pointer events */
.cocktail-card.is-closing {
  opacity: 0;
  pointer-events: none;
}

.cocktail-card.is-closing .cocktail-details {
  transition: none !important;
  max-height: 0 !important;
  opacity: 0 !important;
}

.recipe-ingredients {
  flex: 0 0 220px;
}

.recipe-method {
  flex: 1;
}

.ingredients-label, .method-label {
  font-family: 'Space Mono', monospace;
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--text-light);
  margin-bottom: 0.5rem;
}

.ingredients-list { list-style: none; margin-bottom: 1.2rem; }
.ingredients-list li {
  font-size: 0.9rem;
  color: var(--text);
  padding: 0.3rem 0;
  border-bottom: 1px dashed rgba(26,18,9,0.1);
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.ingredients-list li::before { content: '·'; color: var(--rust); font-weight: 900; font-size: 1.2rem; }

.method-text {
  font-size: 0.92rem;
  line-height: 1.7;
  color: var(--text-light);
  font-style: italic;
}

.difficulty-row {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px solid rgba(26,18,9,0.07);
}

.diff-label {
  font-family: 'Space Mono', monospace;
  font-size: 0.55rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--text-light);
}

.diff-dots { display: flex; gap: 4px; }
.diff-dot { width: 8px; height: 8px; border-radius: 50%; background: rgba(26,18,9,0.12); }
.diff-dot.filled { background: var(--rust); }

/* ---- Quote Card — warm vintage feel ---- */
.quote-card {
  background: rgba(15,51,71,0.55);
  border: 1.5px solid rgba(232,200,74,0.2);
  border-radius: 4px;
  padding: 2rem;
  box-shadow: 3px 3px 0 rgba(0,0,0,0.25);
  backdrop-filter: blur(6px);
  transition: transform 0.2s, box-shadow 0.2s;
  position: relative;
}

/* Thin warm gold line at top — vintage card accent */
.quote-card::before {
  content: '';
  position: absolute;
  top: 0; left: 1.5rem; right: 1.5rem;
  height: 2px;
  background: var(--sand);
  opacity: 0.3;
}

.quote-card:hover {
  transform: translate(-2px, -2px);
  box-shadow: 5px 5px 0 rgba(0,0,0,0.3);
}

.quote-mark {
  font-family: 'Bangers', cursive;
  font-size: 5rem;
  line-height: 0.6;
  color: var(--sand);
  opacity: 0.5;
  display: block;
  margin-bottom: 0.8rem;
}

.quote-text {
  font-size: 1.05rem;
  line-height: 1.7;
  color: rgba(254,251,243,0.9);
  font-style: italic;
  margin-bottom: 1rem;
}

.quote-attr {
  font-family: 'Space Mono', monospace;
  font-size: 0.58rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--sand);
  opacity: 0.75;
}

/* ---- Fact Card — vintage stamp framing ---- */
.fact-card {
  background: var(--paper);
  border-radius: 4px;
  border: var(--border-ink);
  box-shadow: var(--shadow-ink);
  padding: 2rem;
  transition: transform 0.2s, box-shadow 0.2s;
  position: relative;
  overflow: hidden;
}

/* Watermark number in rust */
.fact-card::before {
  content: attr(data-num);
  position: absolute;
  top: -0.5rem; right: 0.8rem;
  font-family: 'Bangers', cursive;
  font-size: 5rem;
  color: var(--rust);
  opacity: 0.06;
  line-height: 1;
}

/* Inner border — stamp badge frame */
.fact-card::after {
  content: '';
  position: absolute;
  inset: 5px;
  border: 1px solid var(--ink);
  opacity: 0.07;
  pointer-events: none;
  border-radius: 2px;
}

.fact-card:hover {
  transform: translate(-3px, -3px);
  box-shadow: var(--shadow-ink-lg);
}
.fact-icon    { font-size: 2.2rem; margin-bottom: 0.8rem; display: block; }
.fact-headline {
  font-family: 'Bangers', cursive;
  font-size: 1.35rem;
  letter-spacing: 0.03em;
  color: var(--ink);
  margin-bottom: 0.5rem;
  text-transform: uppercase;
}
.fact-text {
  font-size: 0.92rem;
  line-height: 1.7;
  color: var(--text-light);
  font-style: italic;
}

/* ---- Game Card — stencil look on dark ---- */
.game-card {
  background: rgba(255,255,255,0.03);
  border: 1.5px solid rgba(61,107,69,0.4);
  border-radius: 4px;
  padding: 1.8rem 1.5rem;
  text-decoration: none;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  transition: transform 0.2s, box-shadow 0.2s, border-color 0.2s, background 0.2s;
  position: relative;
  overflow: hidden;
}

/* Corner stamp mark */
.game-card::before {
  content: '✦';
  position: absolute;
  top: 0.6rem; right: 0.8rem;
  font-size: 0.6rem;
  color: var(--green);
  opacity: 0.25;
}

.game-card:hover {
  border-color: rgba(61,107,69,0.7);
  background: rgba(255,255,255,0.06);
  transform: translate(-2px, -2px);
  box-shadow: 4px 4px 0 rgba(61,107,69,0.2);
}
.game-icon { font-size: 2.5rem; display: block; }
.game-name {
  font-family: 'Bangers', cursive;
  font-size: 1.3rem;
  letter-spacing: 0.06em;
  color: var(--white);
  text-transform: uppercase;
}
.game-tag {
  font-family: 'Space Mono', monospace;
  font-size: 0.52rem;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--stamp-green);
  opacity: 0.8;
  border: 1px solid var(--stamp-green);
  padding: 0.1rem 0.4rem;
  display: inline-block;
  width: fit-content;
  border-radius: 1px;
}
.game-arrow {
  margin-top: 0.5rem;
  color: var(--green);
  opacity: 0;
  font-size: 1.2rem;
  transform: translateX(-8px);
  transition: all 0.2s;
}
.game-card:hover .game-arrow { opacity: 1; transform: translateX(0); }

/* --- Game card thematic backgrounds --- */
/* Push all direct children above the ::after layer */
.game-card > * {
  position: relative;
  z-index: 1;
}

.game-card::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  opacity: 0.08;
  transition: opacity 0.3s;
}
.game-card:hover::after { opacity: 0.15; }

/* Missile Command — cityscape + missile arcs + explosion rings */
.games-grid .game-card:nth-child(1)::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Crect x='8' y='132' width='24' height='68' fill='white'/%3E%3Crect x='38' y='112' width='18' height='88' fill='white'/%3E%3Crect x='62' y='124' width='28' height='76' fill='white'/%3E%3Crect x='98' y='105' width='22' height='95' fill='white'/%3E%3Crect x='128' y='118' width='24' height='82' fill='white'/%3E%3Crect x='158' y='128' width='20' height='72' fill='white'/%3E%3Crect x='183' y='138' width='17' height='62' fill='white'/%3E%3Cline x1='38' y1='0' x2='20' y2='125' stroke='white' stroke-width='1.5'/%3E%3Cline x1='100' y1='0' x2='88' y2='108' stroke='white' stroke-width='1.5'/%3E%3Cline x1='168' y1='0' x2='150' y2='112' stroke='white' stroke-width='1.5'/%3E%3Ccircle cx='60' cy='65' r='20' stroke='white' stroke-width='2' fill='none'/%3E%3Ccircle cx='60' cy='65' r='32' stroke='white' stroke-width='0.8' fill='none'/%3E%3Ccircle cx='148' cy='48' r='15' stroke='white' stroke-width='2' fill='none'/%3E%3C/svg%3E");
}

/* Space Invaders — classic crab alien pixel art + stars + player cannon */
.games-grid .game-card:nth-child(2)::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Ccircle cx='18' cy='22' r='1.5' fill='white'/%3E%3Ccircle cx='72' cy='12' r='1' fill='white'/%3E%3Ccircle cx='135' cy='28' r='2' fill='white'/%3E%3Ccircle cx='185' cy='18' r='1.5' fill='white'/%3E%3Ccircle cx='25' cy='70' r='1' fill='white'/%3E%3Ccircle cx='188' cy='85' r='1.5' fill='white'/%3E%3Ccircle cx='160' cy='55' r='1' fill='white'/%3E%3Crect x='65' y='55' width='10' height='10' fill='white'/%3E%3Crect x='125' y='55' width='10' height='10' fill='white'/%3E%3Crect x='75' y='65' width='10' height='10' fill='white'/%3E%3Crect x='115' y='65' width='10' height='10' fill='white'/%3E%3Crect x='65' y='75' width='70' height='10' fill='white'/%3E%3Crect x='55' y='85' width='10' height='10' fill='white'/%3E%3Crect x='65' y='85' width='10' height='10' fill='white'/%3E%3Crect x='85' y='85' width='10' height='10' fill='white'/%3E%3Crect x='95' y='85' width='10' height='10' fill='white'/%3E%3Crect x='105' y='85' width='10' height='10' fill='white'/%3E%3Crect x='125' y='85' width='10' height='10' fill='white'/%3E%3Crect x='135' y='85' width='10' height='10' fill='white'/%3E%3Crect x='45' y='95' width='110' height='10' fill='white'/%3E%3Crect x='45' y='105' width='10' height='10' fill='white'/%3E%3Crect x='65' y='105' width='70' height='10' fill='white'/%3E%3Crect x='145' y='105' width='10' height='10' fill='white'/%3E%3Crect x='45' y='115' width='10' height='10' fill='white'/%3E%3Crect x='65' y='115' width='10' height='10' fill='white'/%3E%3Crect x='125' y='115' width='10' height='10' fill='white'/%3E%3Crect x='145' y='115' width='10' height='10' fill='white'/%3E%3Crect x='75' y='125' width='10' height='10' fill='white'/%3E%3Crect x='85' y='125' width='10' height='10' fill='white'/%3E%3Crect x='105' y='125' width='10' height='10' fill='white'/%3E%3Crect x='115' y='125' width='10' height='10' fill='white'/%3E%3Cpolygon points='100,172 92,184 108,184' fill='white'/%3E%3C/svg%3E");
}

/* Asteroids — polygon asteroid outlines + ship triangle + stars */
.games-grid .game-card:nth-child(3)::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Ccircle cx='12' cy='18' r='1.5' fill='white'/%3E%3Ccircle cx='80' cy='10' r='1' fill='white'/%3E%3Ccircle cx='155' cy='22' r='2' fill='white'/%3E%3Ccircle cx='190' cy='55' r='1' fill='white'/%3E%3Ccircle cx='168' cy='175' r='1.5' fill='white'/%3E%3Ccircle cx='20' cy='165' r='1' fill='white'/%3E%3Ccircle cx='95' cy='185' r='1.5' fill='white'/%3E%3Cpolygon points='58,32 92,36 108,60 95,102 66,108 38,88 28,58 42,36' stroke='white' stroke-width='2.5' fill='none'/%3E%3Cpolygon points='145,112 164,118 172,136 160,155 140,154 128,138 132,116' stroke='white' stroke-width='2' fill='none'/%3E%3Cpolygon points='158,48 146,36 136,46 148,58' stroke='white' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");
}

/* Frogger — lily pads + logs + road dashes + frog silhouette */
.games-grid .game-card:nth-child(4)::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Ccircle cx='20' cy='15' r='9' stroke='white' stroke-width='2' fill='none'/%3E%3Ccircle cx='55' cy='15' r='9' stroke='white' stroke-width='2' fill='none'/%3E%3Ccircle cx='100' cy='15' r='9' stroke='white' stroke-width='2' fill='none'/%3E%3Ccircle cx='145' cy='15' r='9' stroke='white' stroke-width='2' fill='none'/%3E%3Ccircle cx='180' cy='15' r='9' stroke='white' stroke-width='2' fill='none'/%3E%3Crect x='5' y='36' width='65' height='13' rx='4' fill='white'/%3E%3Crect x='130' y='36' width='65' height='13' rx='4' fill='white'/%3E%3Crect x='70' y='55' width='70' height='13' rx='4' fill='white'/%3E%3Crect x='10' y='74' width='55' height='13' rx='4' fill='white'/%3E%3Crect x='145' y='74' width='50' height='13' rx='4' fill='white'/%3E%3Cline x1='0' y1='103' x2='200' y2='103' stroke='white' stroke-width='2.5'/%3E%3Cline x1='0' y1='118' x2='200' y2='118' stroke='white' stroke-width='1' stroke-dasharray='12,8'/%3E%3Cline x1='0' y1='133' x2='200' y2='133' stroke='white' stroke-width='1' stroke-dasharray='12,8'/%3E%3Cline x1='0' y1='148' x2='200' y2='148' stroke='white' stroke-width='1' stroke-dasharray='12,8'/%3E%3Cline x1='0' y1='163' x2='200' y2='163' stroke='white' stroke-width='1' stroke-dasharray='12,8'/%3E%3Crect x='18' y='107' width='26' height='11' rx='2' fill='white'/%3E%3Crect x='108' y='122' width='34' height='11' rx='2' fill='white'/%3E%3Crect x='52' y='137' width='26' height='11' rx='2' fill='white'/%3E%3Crect x='146' y='152' width='34' height='11' rx='2' fill='white'/%3E%3Crect x='87' y='179' width='26' height='15' fill='white'/%3E%3Ccircle cx='86' cy='175' r='5' fill='white'/%3E%3Ccircle cx='114' cy='175' r='5' fill='white'/%3E%3Crect x='72' y='183' width='15' height='6' rx='2' fill='white'/%3E%3Crect x='113' y='183' width='15' height='6' rx='2' fill='white'/%3E%3C/svg%3E");
}

/* ---- Footer ---- */
.footer-tag {
  font-family: 'Space Mono', monospace;
  font-size: 0.58rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: rgba(232,200,74,0.3);
}
.footer-sg-link {
  display: inline-block;
  margin-top: 1.5rem;
  font-family: 'Space Mono', monospace;
  font-size: 0.55rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgba(232,200,74,0.25);
  text-decoration: none;
  transition: opacity 0.2s;
}
.footer-sg-link:hover { opacity: 0.6; }
.footer-links-row {
  display: flex;
  gap: 1.5rem;
  align-items: center;
  justify-content: center;
}

/* ---- Icon utilities ---- */
.icon-defs { position: absolute; overflow: hidden; }
.icon-rust    { color: var(--rust);   flex-shrink: 0; }
.icon-blue    { color: var(--blue);   flex-shrink: 0; }
.icon-navy    { color: var(--navy);   flex-shrink: 0; }
.icon-sand    { color: var(--sand);   flex-shrink: 0; }
.icon-coral   { color: var(--coral);  flex-shrink: 0; }
.icon-green   { color: var(--green);  flex-shrink: 0; }
.icon-white   { color: var(--white);  flex-shrink: 0; }
.icon-ink     { color: var(--ink);    flex-shrink: 0; }

/* legacy aliases used in existing JS-rendered markup */
.icon-amber       { color: var(--sand);  flex-shrink: 0; }
.icon-amber-light { color: var(--sand);  flex-shrink: 0; }
.icon-lime        { color: var(--green); flex-shrink: 0; }
.icon-lime-dark   { color: var(--green); flex-shrink: 0; }
.icon-text        { color: var(--text);  flex-shrink: 0; }

.btn-with-icon { display: inline-flex; align-items: center; gap: 0.5rem; }
.badge-icon       { vertical-align: middle; }
.badge-icon--left  { margin-right: 0.3rem; }
.badge-icon--right { margin-left: 0.3rem; }

/* ---- Loading Skeleton ---- */
.loading-skeleton { display: flex; gap: 1.5rem; flex-wrap: wrap; }
.skeleton-card {
  flex: 1;
  min-width: 260px;
  height: 200px;
  border-radius: var(--radius-lg);
  background: linear-gradient(90deg, rgba(26,18,9,0.06) 25%, rgba(26,18,9,0.03) 50%, rgba(26,18,9,0.06) 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
}
@keyframes shimmer {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
