/* Prizes section fonts */
@import url('https://fonts.googleapis.com/css2?family=Mountains+of+Christmas:wght@700&family=Merriweather:wght@400;700&display=swap');

:root {
  --prize-head: 'Mountains of Christmas', cursive;
  --prize-body: 'Merriweather', ui-serif, Georgia, serif;
  --holly-red: #B51A1A;
  --berry-red: #D62323;
  --evergreen: #0F6B3E;
  --pine: #0B5732;
  --gold: #F2C94C;
  --snow: #F7FAFC;
  --frost: #EAF3FF;
  --mint: #DCF4E6;
  --prize-midnight: #0B3658;
  --prize-dawn: #16527A;
  --prize-aurora: rgba(94, 186, 255, .35);
  --prize-ice: rgba(255, 255, 255, .85);
  --prize-silver: #DBE6FF;
  --prize-bronze: #F9E2C7;
  --prize-shadow: 0 20px 50px rgba(9, 30, 66, .22);
  --shadow: 0 8px 24px rgba(0,0,0,.12);

  --red: #b30000;
  --green: #0c6b1f;
  --card: #ffffff;
  --ink: #1d2939;
  --muted: #667085;
  --pad: clamp(12px,3vw,20px);
  --host-photo-w: 112px;
  --host-photo-radius: 16px;
  --host-photo-gap: 16px;
}
    html,body{height:100%}
    *{box-sizing:border-box}
    body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);
      background: radial-gradient(1200px 800px at 20% -10%, #ffffff 0%, #f7fbff 40%, #e9f5ff 60%, #dff1ff 100%),
                 linear-gradient(180deg,#f8fbff 0%, #eaf4ff 100%);overflow-x:hidden}
    .is-hidden{display:none !important}
    .container{max-width:1200px;margin:0 auto;padding:var(--pad);padding-bottom:clamp(48px,6vw,96px)}
    section{margin:2rem 0}
    img,video{max-width:100%;height:auto}
    button,.btn{min-height:44px;padding:.8rem 1rem;border-radius:10px;cursor:pointer}
    input:not([type=checkbox]):not([type=radio]),select,textarea{width:100%;min-height:44px;padding:.7rem .8rem;border-radius:10px;border:1px solid #d0d5dd;background:#fff}
    label{display:block;margin:.25rem 0 .35rem}
    header{position:relative;padding:2.5rem 1rem 3rem;text-align:center;color:#fff;
      background: linear-gradient(120deg, rgba(179,0,0,.95), rgba(12,107,31,.95));
      border-bottom:6px solid var(--gold);box-shadow:0 6px 30px rgba(0,0,0,.2)}
    header h1{margin:0;font-family:var(--prize-head);font-size:clamp(2rem,3.8vw,3.6rem);text-shadow:0 4px 14px rgba(0,0,0,.4)}
    header p{margin:.5rem auto 0;font-size:1.05rem;max-width:60ch;opacity:.95}
    .container{max-width:1200px;margin:0 auto;padding:var(--pad);padding-bottom:clamp(48px,6vw,96px)}
    section{margin:2rem 0}
    h2{font-family:var(--prize-head);color:var(--red);text-align:center;font-size:clamp(1.6rem,2.6vw,2.2rem);margin:0 0 1.1rem}
    .sub{text-align:center;color:var(--muted);margin-top:-.35rem;margin-bottom:1.25rem}

    #map{height:480px;border-radius:16px;border:4px solid #fff;box-shadow:0 12px 30px rgba(0,0,0,.18);overflow:hidden}
    .tree-icon{background:transparent !important;border:none !important}
    .tree-icon .tree-emoji{font-size:28px;line-height:1;transform:translateY(-4px);filter:drop-shadow(0 2px 4px rgba(0,0,0,.45));user-select:none;transition:transform .25s ease}
    .leaflet-marker-icon.tree-icon:hover .tree-emoji{animation:tree-jiggle .8s ease-in-out infinite}
    .map-legend{background:#fff;padding:.55rem .7rem;border-radius:10px;box-shadow:0 6px 18px rgba(0,0,0,.12);font-size:.9rem;border:1px solid #e5e7eb}
    .legend-swatch{display:inline-block;width:12px;height:12px;background:#22c55e;border:2px solid #065f46;border-radius:2px;margin-right:6px}
    .leaflet-pane.boundaryPane{pointer-events:none !important;z-index:401}

    .grid{display:grid;gap:1.25rem;grid-template-columns:repeat(12,1fr)}
    .card{background:var(--card);border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 10px 22px rgba(15,23,42,.08)}
    .pad{padding:1.25rem}.pad-lg{padding:1.5rem}
    .thumb{width:120px;height:120px;object-fit:cover;border-radius:8px;border:1px solid #e5e7eb}
    .popup-card{min-width:240px}
    .popup-photo-wrap{margin:.5rem 0}
    .popup-photo{width:100%;max-width:240px;border-radius:8px;border:1px solid #e5e7eb}
    .popup-vote{background:#22c55e;border:none;color:#fff;padding:.45rem .7rem;border-radius:10px;cursor:pointer;font-weight:700}
    .popup-vote:hover{background:#16a34a}
    .marker-top{z-index:10000 !important}

    @media (max-width:880px){
      .grid{display:grid;grid-template-columns:1fr;gap:1rem}
      .col-12,.col-8,.col-6,.col-4,.col-3{grid-column:1/-1}
      #map{height:60vh;min-height:360px}
      .pad,.pad-lg{padding:1rem}
    }

    form .row{display:grid;gap:.8rem;grid-template-columns:repeat(12,1fr)}
    form label{font-size:.9rem;margin:.1rem 0 .2rem;color:#0f172a;font-weight:600}
    form input:not([type=checkbox]):not([type=radio]),form select,form button,form textarea{padding:.85rem .9rem;border-radius:12px;border:1px solid #d0d5dd;background:#fff}
    form input:focus,form select:focus,form textarea:focus{border-color:#94c6ff;box-shadow:0 0 0 4px rgba(14,165,233,.15);outline:none}
    form button{background:linear-gradient(180deg,#b30000,#8f0000);color:#fff;border:none;cursor:pointer;font-weight:700;letter-spacing:.2px;box-shadow:0 12px 16px rgba(179,0,0,.18)}
    .hp-field{position:absolute;left:-9999px}
    .form-consent,.consent-row{display:flex;gap:.6rem;align-items:flex-start;text-align:left}
    .form-consent input[type="checkbox"],.consent-row input[type="checkbox"]{margin-top:.35rem;flex:0 0 auto}
    .form-consent label,.consent-row label{margin:0;flex:1 1 auto;white-space:normal;word-break:normal;overflow-wrap:anywhere;text-align:left;float:none}
    .field-error{margin:.25rem 0 0;color:#b91c1c;font-size:.85rem;min-height:1.05rem}
    .field-error:empty{display:none}
    [data-captcha-for]{display:flex;flex-direction:column;gap:.35rem}
    .captcha-status{margin:0;color:#64748b;font-size:.85rem}
    .captcha-status:empty{display:none}
    .captcha-status.is-ready{color:#0f5132}
    .notice{margin-top:.6rem;font-size:.9rem}
    .success{color:#15803d}.error{color:#b91c1c}.muted{color:var(--muted)}
    .table-wrap{max-height:60vh;overflow:auto}
    .table-wrap table{width:100%}
    table{width:100%;border-collapse:collapse;border-radius:14px;overflow:hidden}
    thead th{background:var(--red);color:#fff;padding:.85rem .9rem;text-align:left}
    tbody td{padding:.8rem .9rem;border-bottom:1px solid #eef2f7;background:#fff}

    .leaflet-popup-content{max-width:260px;overflow-wrap:break-word}
    .leaflet-container a.leaflet-popup-close-button{width:34px;height:34px;line-height:34px;font-size:20px}
    .leaflet-control-zoom a{width:36px;height:36px;line-height:36px}

    .hl-popup .leaflet-popup-content-wrapper{border-radius:12px;box-shadow:0 10px 24px rgba(0,0,0,.18)}
    .hl-popup{max-width:min(320px,88vw)}

    /* Hide votes column when we want a finals surprise */
    .table-hide-votes thead th:nth-child(2),
    .table-hide-votes tbody td:nth-child(2){display:none}

    /* === Candy-cane progress (improved) === */
    #progressSection{margin-top:1rem}
    .candy-progress{display:grid;gap:.6rem}
    .candy-legend{display:flex;gap:.5rem;justify-content:space-between;font-size:.9rem;color:var(--muted)}
    .track{
      position:relative;height:18px;border-radius:999px;
      background:linear-gradient(180deg,#f8fafc,#eef2f7);
      border:1px solid #e5e7eb;overflow:hidden;
    }
    .fill{
      position:absolute;left:0;top:0;bottom:0;width:0%;
      background:
        repeating-linear-gradient(45deg,#ffffff 0 12px,#d61f1f 12px 24px),
        linear-gradient(180deg,rgba(255,255,255,.25),rgba(0,0,0,.08));
      box-shadow:inset 0 0 0 1px rgba(0,0,0,.06),0 2px 6px rgba(0,0,0,.08);
      transition:width .6s ease;will-change:width;
    }
    .marker{
      position:absolute;top:-6px;width:12px;height:12px;border-radius:50%;
      background:var(--gold);border:2px solid #fff;box-shadow:0 0 0 2px rgba(234,179,8,.35);
      transform:translateX(-50%);
    }
    .marker span{
      position:absolute;top:-30px;left:50%;transform:translateX(-50%);
      white-space:nowrap;background:#fff;border:1px solid #e5e7eb;border-radius:8px;
      padding:.15rem .4rem;font-size:.75rem;color:#065f46;box-shadow:0 2px 6px rgba(0,0,0,.06)
    }
    .steps{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}
    .step{
      text-align:center;padding:.45rem .6rem;border-radius:10px;font-weight:700;
      background:#fff;border:1px solid #e5e7eb;color:#065f46
    }
    .step.active{border-color:var(--gold);box-shadow:0 0 0 2px rgba(230,184,0,.25) inset}
    @media (max-width:640px){
      .marker span{top:-34px;font-size:.7rem}
    }

    .section-title{margin:.2rem 0 1rem;text-align:center}
    #markStart{left:0%}
    #markNEnd{left:50%}
    #markFEnd{left:100%}
    #progressNote{text-align:center;margin-top:.5rem}
    #leaderboardList{display:flex;flex-direction:column;gap:1rem}
    .entries-cards{display:grid;gap:1rem}

    /* Scrollable leaderboard that only scrolls when needed */
    .table-scroll{max-height:clamp(260px,45vh,420px);overflow-y:auto;overscroll-behavior:contain;border-radius:12px}
    .table-scroll thead th{position:sticky;top:0;z-index:1}
    .table-scroll table{border-collapse:separate;border-spacing:0}
.entry-thumb{max-width:100px;border-radius:8px;border:1px solid #e5e7eb}

.hl-modal{position:fixed;inset:0;z-index:9999;background:rgba(15,23,42,.6);display:flex;align-items:center;justify-content:center;padding:1.25rem;overflow:auto;backdrop-filter:blur(2px)}
.hl-modal.is-hidden{display:none !important}
.hl-modal-backdrop{position:absolute;inset:0}
.hl-modal-content{position:relative;z-index:1;background:#fff;border-radius:16px;box-shadow:0 20px 48px rgba(0,0,0,.28);max-width:min(960px,90vw);max-height:min(640px,90vh);width:100%;padding:1rem;display:flex;flex-direction:column;gap:.75rem}
.hl-modal-content img{width:100%;max-height:480px;object-fit:contain;border-radius:12px;background:#f8fafc}
.hl-modal-close{position:absolute;top:.5rem;right:.5rem;border:none;background:rgba(15,23,42,.08);color:#0f172a;border-radius:999px;width:36px;height:36px;cursor:pointer;font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(0,0,0,.12)}
.hl-modal-close:hover{background:rgba(15,23,42,.14)}
.hl-modal-caption{margin:0;color:var(--muted);font-size:.95rem}
.modal-open{overflow:hidden}

@media (max-width:900px){
  .hl-modal-content{max-height:calc(100vh - 48px);padding:1rem;gap:.5rem}
  .hl-modal-content img{max-height:60vh}
}

    .countdown{display:flex;gap:1rem;justify-content:center;align-items:center;flex-wrap:wrap;padding:1rem}
    .cd-box{min-width:120px;background:#fff;border:1px solid #e5e7eb;border-radius:16px;text-align:center;padding:1rem .75rem;box-shadow:0 8px 20px rgba(0,0,0,.08)}
    .cd-box b{display:block;font-size:1.8rem;color:#064e3b;text-shadow:0 1px 0 #fff}
    .cd-box span{color:var(--muted);font-size:.85rem}

    /* === Winners podium (clearer heights + medals) === */
    #winnersSection{display:none}
    .winners-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;align-items:end}
    .winner{position:relative;background:#fff;border:1px solid #e5e7eb;border-radius:16px;padding:1rem;text-align:center;box-shadow:0 10px 22px rgba(0,0,0,.06)}
    .winner img{width:100%;height:200px;object-fit:cover;border-radius:12px;border:3px solid #fff;box-shadow:0 6px 16px rgba(0,0,0,.15)}
    .winner .podium{border-radius:12px;margin-top:.6rem}
    .winner.p1 .podium{height:200px;background:linear-gradient(180deg,#fff5c2,#f6d768);border:2px solid var(--gold)}
    .winner.p2 .podium{height:130px;background:linear-gradient(180deg,#f7f7f8,#cfcfd3);border:2px solid #c0c0c0}
    .winner.p3 .podium{height:80px;background:linear-gradient(180deg,#fff0e0,#e0a06b);border:2px solid #cd7f32}
    .winner h3{margin:.5rem 0 0;font-size:1.1rem}
    .winner small{color:var(--muted)}
    .winner .badge{position:absolute;top:10px;left:10px;border-radius:999px;padding:.25rem .5rem;font-weight:800;font-size:.8rem;color:#1f2937;box-shadow:0 2px 6px rgba(0,0,0,.15);background:#fff}
    .winner.p1 .badge{background:linear-gradient(180deg,#fff6cc,#ffd54d);border:1px solid var(--gold)}
    .winner.p2 .badge{background:linear-gradient(180deg,#f8f8f8,#dbdbdf);border:1px solid #c0c0c0}
    .winner.p3 .badge{background:linear-gradient(180deg,#ffe9d8,#e2a870);border:1px solid #cd7f32}
    @media(max-width:720px){.winners-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}}

/* === Prize constellations === */
.prize-section {
  position: relative;
  margin: clamp(32px, 6vw, 72px) 0;
  padding: clamp(36px, 5.5vw, 72px) clamp(18px, 5vw, 60px);
  border-radius: 28px;
  background:
    radial-gradient(160% 120% at 18% -10%, rgba(255, 255, 255, .92) 0%, rgba(210, 236, 255, .78) 45%, rgba(220, 244, 230, .65) 100%),
    linear-gradient(150deg, rgba(11, 54, 88, .88), rgba(22, 82, 122, .82));
  color: var(--snow);
  overflow: hidden;
  box-shadow: var(--prize-shadow);
  border: 1px solid rgba(255, 255, 255, .15);
}

.prize-section::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(140% 130% at 12% 0%, rgba(255, 255, 255, .22), transparent 60%),
    radial-gradient(120% 110% at 88% 0%, rgba(255, 255, 255, .16), transparent 65%);
  pointer-events: none;
  mix-blend-mode: screen;
}

.prize-sky {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
}

.prize-star {
  position: absolute;
  top: var(--star-top, 50%);
  left: var(--star-left, 50%);
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .85);
  box-shadow: 0 0 10px rgba(255, 255, 255, .45);
  animation: prizeTwinkle var(--twinkle-duration, 3.6s) ease-in-out infinite;
  animation-delay: var(--twinkle-delay, 0s);
  transform: translate(-50%, -50%) scale(var(--twinkle-scale, 1));
}

.prize-inner {
  position: relative;
  z-index: 1;
  display: grid;
  gap: clamp(24px, 5vw, 42px);
  max-width: 1080px;
  margin: 0 auto;
}

.prize-header {
  text-align: center;
  display: grid;
  gap: clamp(8px, 1.6vw, 16px);
}

.prize-title-wrap {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: clamp(10px, 1.8vw, 16px);
  letter-spacing: .18em;
  text-transform: uppercase;
}

.prize-sparkle {
  font-size: clamp(1.4rem, 3vw, 2.2rem);
  color: rgba(242, 201, 76, .75);
  filter: drop-shadow(0 0 8px rgba(242, 201, 76, .35));
  animation: prizeTwinkle 3.2s ease-in-out infinite;
}

.prize-section h2 {
  margin: 0;
  font-family: var(--prize-head);
  font-size: clamp(2rem, 4vw, 3.1rem);
  letter-spacing: .08em;
  text-transform: uppercase;
  background: linear-gradient(90deg, #ffe9a3 0%, #f2c94c 50%, #ffe9a3 100%);
  -webkit-background-clip: text;
  color: transparent;
  text-shadow: none;
}

.prize-tagline {
  margin: 4px auto 0;
  max-width: 48ch;
  font-family: var(--prize-body);
  font-size: clamp(1rem, 2.2vw, 1.2rem);
  color: rgba(255, 255, 255, .78);
  letter-spacing: .04em;
}

.prize-flakes {
  display: flex;
  justify-content: center;
  gap: clamp(10px, 2vw, 18px);
  color: rgba(255, 255, 255, .6);
}

.prize-flakes span {
  font-size: clamp(1.2rem, 3vw, 1.6rem);
  animation: prizeTwinkle 2.8s ease-in-out infinite;
  animation-delay: var(--flake-delay, 0s);
}

.prize-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: clamp(18px, 4vw, 32px);
}

.prize-card {
  list-style: none;
  position: relative;
  border-radius: 24px;
  padding: clamp(26px, 4vw, 36px);
  background: linear-gradient(160deg, rgba(255, 255, 255, .98), rgba(236, 250, 255, .88));
  border: 1px solid rgba(15, 107, 62, .18);
  box-shadow: 0 16px 32px rgba(15, 23, 42, .18);
  display: grid;
  gap: clamp(12px, 2vw, 18px);
  justify-items: center;
  text-align: center;
  font-family: var(--prize-body);
  color: #1d2a3a;
  transition: transform .35s ease, box-shadow .35s ease;
  overflow: hidden;
  --card-accent: var(--pine);
  --card-icon-color: #c38f2c;
  --divider-color: rgba(15, 107, 62, .32);
}

.prize-card::before {
  content: "";
  position: absolute;
  inset: -120% -80%;
  background: linear-gradient(120deg, transparent 15%, rgba(255, 255, 255, .45) 45%, transparent 75%);
  transform: rotate(8deg);
  opacity: .35;
  animation: prizeShimmer 6s linear infinite;
}

.prize-card::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(120% 140% at 50% 0%, rgba(255, 255, 255, .35), transparent 70%);
  opacity: .45;
}

.prize-card > * {
  position: relative;
  z-index: 1;
}

.prize-card:hover {
  transform: translateY(-6px) scale(1.015);
  box-shadow: 0 22px 40px rgba(15, 23, 42, .22);
}

.prize-icon {
  width: clamp(82px, 12vw, 98px);
  height: clamp(82px, 12vw, 98px);
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, .96), rgba(210, 236, 255, .35));
  border: 2px solid rgba(255, 255, 255, .55);
  box-shadow: 0 14px 24px rgba(15, 23, 42, .16);
  animation: prizeFloat 5.6s ease-in-out infinite;
  color: var(--card-icon-color);
}

.prize-symbol {
  width: clamp(42px, 8vw, 56px);
  height: clamp(42px, 8vw, 56px);
  fill: currentColor;
  filter: drop-shadow(0 6px 12px rgba(0, 0, 0, .18));
}

.prize-place {
  margin: 0;
  font-family: var(--prize-head);
  font-size: clamp(1.4rem, 3vw, 2rem);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--card-accent);
}

.prize-divider {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(10px, 2vw, 18px);
  width: 100%;
  color: var(--card-accent);
}

.prize-divider::before,
.prize-divider::after {
  content: "";
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--divider-color), transparent);
}

.sparkle-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .75);
  color: var(--card-accent);
  box-shadow: 0 8px 18px rgba(15, 23, 42, .18);
  font-size: 1.1rem;
  animation: prizeTwinkle 2.6s ease-in-out infinite;
}

.prize-amount {
  margin: 0;
  font-size: clamp(2rem, 6vw, 3.2rem);
  font-weight: 700;
  color: var(--card-accent);
  text-shadow: 0 4px 16px rgba(0, 0, 0, .12);
}

.prize-accent {
  width: clamp(82px, 14vw, 120px);
  height: 4px;
  border-radius: 999px;
  background: linear-gradient(90deg, transparent, rgba(242, 201, 76, .8), transparent);
  box-shadow: 0 0 16px rgba(242, 201, 76, .35);
}


.prize-place-highlight {
  display: inline-block;
  font-size: .75em;
  letter-spacing: .4em;
  margin: 0 .35em;
  color: currentColor;
}

.prize-card.is-featured {
  --card-accent: var(--holly-red);
  --card-icon-color: #c4891d;
  --divider-color: rgba(181, 26, 26, .32);
  background: linear-gradient(155deg, rgba(255, 248, 224, .95), rgba(255, 255, 255, .92));
  border: 2px solid rgba(242, 201, 76, .78);
  box-shadow: 0 22px 48px rgba(242, 201, 76, .28), 0 16px 32px rgba(15, 23, 42, .22);
}

.prize-card.is-featured::after {
  background: radial-gradient(130% 140% at 50% 0%, rgba(242, 201, 76, .35), transparent 70%);
}

.prize-card.is-featured .prize-icon {
  background: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, .98), rgba(242, 201, 76, .32));
  border-color: rgba(242, 201, 76, .55);
  animation-duration: 6.4s;
}

.prize-card.is-featured .prize-amount {
  color: var(--holly-red);
  text-shadow: 0 6px 22px rgba(181, 26, 26, .28);
}

.prize-card.is-second {
  --card-accent: #0f4c81;
  --card-icon-color: #8eaefb;
  --divider-color: rgba(15, 76, 129, .28);
  background: linear-gradient(150deg, rgba(241, 246, 255, .98), rgba(219, 233, 255, .9));
  border-color: rgba(15, 76, 129, .18);
}

.prize-card.is-third {
  --card-accent: #7d3f12;
  --card-icon-color: #f1ab72;
  --divider-color: rgba(125, 63, 18, .26);
  background: linear-gradient(150deg, rgba(254, 244, 233, .96), rgba(255, 239, 224, .9));
  border-color: rgba(125, 63, 18, .2);
}


@media (max-width: 720px) {
  .prize-title-wrap {
    letter-spacing: .12em;
  }

  .prize-section h2 {
    font-size: clamp(1.9rem, 6vw, 2.6rem);
  }

  .prize-card {
    padding: clamp(24px, 6vw, 30px);
  }
}

/* ===== HL copy hints (namespaced) ===== */
.hl-banner {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 10px;
  align-items: start;
  margin: 0 0 16px 0;
  padding: 10px 14px;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  background: #eef2ff;          /* soft indigo */
  color: #1e293b;                /* slate-800 */
  box-shadow: 0 6px 20px rgba(17,24,39,0.08);
  font-size: 0.95rem;
  line-height: 1.35;
}
.hl-banner strong { font-weight: 800; }
.hl-banner-emoji { font-size: 1.15rem; line-height: 1; }

.hl-inline-note {
  margin: 6px 0 12px;
  padding: 8px 10px;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  background: #f8fafc;          /* slate-50 */
  color: #334155;                /* slate-700 */
  font-size: 0.95rem;
}

.hl-helper {
  margin: 4px 0 10px;
  color: #6b7280;                /* gray-500 */
  font-size: 0.95rem;
}

@media (prefers-reduced-motion: reduce) {
  .prize-card,
  .prize-card::before,
  .prize-icon,
  .prize-sparkle,
  .prize-flakes span,
  .sparkle-icon,
  .prize-star {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
  }

  .prize-card:hover {
    transform: none;
  }
}

@keyframes prizeShimmer {
  0% {
    transform: translateX(-30%) rotate(8deg);
  }
  100% {
    transform: translateX(30%) rotate(8deg);
  }
}

@keyframes prizeFloat {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-10px);
  }
}

@keyframes prizeTwinkle {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: .25;
  }
}

    #cookieWarn{display:none;margin-top:-.5rem}
    #cookieWarn.is-visible{display:block}
    .hosts-card{overflow:hidden}
    .hosts-grid{display:grid;gap:1.2rem;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
    .host-card{display:flex;align-items:center;gap:var(--host-photo-gap);background:linear-gradient(135deg,rgba(248,250,252,.95),rgba(236,254,255,.9));border:1px solid rgba(14,165,233,.18);border-radius:18px;padding:1.1rem 1.25rem;box-shadow:0 12px 28px rgba(15,23,42,.08)}
    .host-photo{flex:0 0 var(--host-photo-w);width:var(--host-photo-w);aspect-ratio:3/4;border-radius:var(--host-photo-radius);overflow:hidden;border:3px solid #fff;box-shadow:0 6px 16px rgba(14,116,144,.25);background:#fff}
    .host-photo img{width:100%;height:100%;object-fit:cover;display:block}
    .host-body{display:flex;flex-direction:column;gap:.4rem}
    .host-name{margin:0;font-size:1.1rem}
    .host-role{margin:0;color:#0f5132;font-weight:600}
    .host-meta{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.25rem;color:#1f2937;font-size:.95rem}
    .host-meta a{color:#0f6a30;text-decoration:none;font-weight:600}
    .host-meta a:hover{text-decoration:underline}
    .host-link{align-self:flex-start;margin-top:.2rem;padding:.4rem .75rem;border-radius:999px;background:linear-gradient(135deg,#0ea5e9,#2563eb);color:#fff;font-weight:700;text-decoration:none;box-shadow:0 10px 20px rgba(37,99,235,.28)}
    .host-link:hover{background:linear-gradient(135deg,#0284c7,#1d4ed8)}

    @media (max-width:560px){
      .host-card{flex-direction:column;text-align:center}
      .host-body{align-items:center}
      .host-link{align-self:center}
    }

    /* ===== Sponsors (rail layout, consistent cards) ===== */
    .sponsors{
      display:grid;gap:1.25rem;justify-items:center;
      --rail-gap:16px;
      --card-h:200px;
      --logo-pad:14px;
      --card-w:280px;
    }
    .tier{
      background:#fff;border:1px solid #e5e7eb;border-radius:16px;
      box-shadow:0 10px 22px rgba(15,23,42,.08);
      padding:1rem 1rem 1.25rem;width:100%;max-width:960px;margin:0 auto;
    }
    .tier h3{margin:.2rem 0 .6rem;text-align:center}
    .badge{display:inline-block;padding:.35rem .6rem;border-radius:999px;font-weight:700;color:#fff;margin:.25rem auto .75rem;background:linear-gradient(90deg,#e6b800,#ffde7a);border:1px solid #f3c24e;box-shadow:0 6px 14px rgba(230,184,0,.35)}
    .badge-winter{background:linear-gradient(90deg,#9dd6ff,#64b5f6);border-color:#7ec2ff}
    .badge-snow{background:linear-gradient(90deg,#b9fbc0,#34d399);border-color:#7ae590}
    .badge-jingle{background:linear-gradient(90deg,#ffd6a5,#f9a8d4);border-color:#f8b4cf}
    .sponsor-note{margin-top:.6rem}
    .muted-small{font-size:.9rem}

    .tier .s-grid{
      display:grid;
      grid-auto-flow:column;
      grid-auto-columns:var(--card-w);
      gap:var(--rail-gap);
      overflow-x:auto;
      -webkit-overflow-scrolling:touch;
      scroll-snap-type:x mandatory;
      padding:8px 4px 14px;
    }
    .tier .s-grid > .s-wrap{scroll-snap-align:center}

    .s-wrap{
      display:grid;
      justify-items:center;
      align-content:start;
      gap:10px;
      text-decoration:none;
      color:inherit;
    }
    .s-cap{font-size:.9rem;color:var(--tier-accent,#334155);text-align:center}

    /* Sponsor card */
    .s-card{
      border:2px solid rgba(0,0,0,.06);
      border-radius:16px;
      background:#fff;
      box-shadow:0 8px 18px rgba(0,0,0,.06);
      /* ensure consistent inner layout: logo area + caption lane */
      display:grid;
      grid-template-rows:1fr auto; /* logo fills, caption sits below */
      inline-size:var(--card-w);
      block-size:var(--card-h);
      padding:var(--logo-pad);
    }
    .logo-box{
      inline-size:100%;
      block-size:100%;
      display:flex;
      align-items:center;
      justify-content:center;
      overflow:hidden; /* hide any bleed on extreme cases */
      position:relative;
    }
    /* Normalize media defaults */
    .logo-box img,
    .logo-box svg{
      display:block;
      object-fit:contain;
      max-inline-size:100%;
      max-block-size:100%;
    }
    /* Portrait / ultraPortrait: drive by height */
    .sponsors .logo-box img.is-portrait,
    .sponsors .logo-box img.is-ultraPortrait{
      inline-size:auto;
      block-size:100%;
      max-inline-size:none;
      max-block-size:100%;
    }

    /* Panorama (very wide): drive by width */
    .sponsors .logo-box img.is-panorama{
      inline-size:100%;
      block-size:auto;
      max-inline-size:100%;
      max-block-size:none;
    }

    /* Square or mild landscape: fully contain (no cropping) */
    .sponsors .logo-box img.is-square{
      inline-size:auto;
      block-size:auto;
      max-inline-size:100%;
      max-block-size:100%;
      object-fit:contain;
    }

    /* Debug mode: outline logos and show ratio text */
    body.debug-logos .logo-box img{ outline: 2px dashed #d946ef; }
    .logo-debug-note{
      font: 12px/1.2 system-ui, sans-serif;
      color:#6b7280;
      margin-top:4px;
    }

    .s-card .s-cap{
      block-size:32px;                 /* reserve space */
      margin-top:8px;
      display:flex;
      align-items:center;
      justify-content:center;
      text-align:center;
      font-size:.92rem;
      line-height:1.2;
      white-space:normal;
    }


    /* Twinkling light borders using data-URI SVGs; no black bars */
    .lights{position:fixed;pointer-events:none;z-index:50;filter:drop-shadow(0 4px 2px rgba(0,0,0,.25));animation:twinkle 2.2s infinite steps(2)}
    .lights.top,.lights.bottom{left:0;right:0;height:52px;background-size:64px 52px;background-repeat:repeat-x;background-color:transparent;
      background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="52" viewBox="0 0 64 52"><g fill="none" stroke="%23c1121f" stroke-width="3"><path d="M-10 26 C 10 10, 54 10, 74 26"/></g><g><circle cx="8" cy="26" r="7" fill="%23ff3b30"/><circle cx="24" cy="26" r="7" fill="%23ffd60a"/><circle cx="40" cy="26" r="7" fill="%2300c2ff"/><circle cx="56" cy="26" r="7" fill="%2334d399"/></g></svg>')}
    .lights.top{top:0}.lights.bottom{bottom:0;transform:rotate(180deg)}
    .lights.left,.lights.right{top:0;bottom:0;width:52px;background-size:52px 64px;background-repeat:repeat-y;background-color:transparent;
      background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="52" height="64" viewBox="0 0 52 64"><g fill="none" stroke="%23c1121f" stroke-width="3"><path d="M26 -10 C 10 10, 10 54, 26 74"/></g><g><circle cx="26" cy="8" r="7" fill="%2300c2ff"/><circle cx="26" cy="24" r="7" fill="%2334d399"/><circle cx="26" cy="40" r="7" fill="%23ff3b30"/><circle cx="26" cy="56" r="7" fill="%23ffd60a"/></g></svg>')}
    .lights.left{left:0}.lights.right{right:0;transform:rotate(180deg)}
    @keyframes tree-jiggle{
      0%,100%{transform:translateY(-4px) rotate(0deg)}
      25%{transform:translateY(-8px) rotate(-4deg)}
      50%{transform:translateY(-6px) rotate(4deg)}
      75%{transform:translateY(-7px) rotate(-3deg)}
    }
    @keyframes bow-shimmer{
      0%,100%{filter:brightness(1)}
      45%{filter:brightness(1.18)}
      55%{filter:brightness(1.32)}
    }
    @keyframes twinkle{50%{filter:drop-shadow(0 4px 2px rgba(0,0,0,.25)) brightness(1.25)}}

    /* Canvas snow (your original) */
    #snow{position:fixed;inset:0;z-index:40;pointer-events:none;background:transparent}

    /* Modal layering: modal above everything else */
    .modal{position:fixed;inset:0;display:none;z-index:1000;background:rgba(2,6,23,.58);align-items:center;justify-content:center;padding:1rem;backdrop-filter:blur(4px)}
    .modal.open{display:flex}
    /* Video modal sizing */
    .modal-content{
      position:relative;
      background:#000;
      border-radius:16px;
      overflow:hidden;
      aspect-ratio:16/9;
      width:min(1280px,calc(100vw - 32px));
      max-height:calc(100vh - 32px);
      box-shadow:0 30px 70px rgba(0,0,0,.5);
    }
    .yt-poster{position:relative;display:block;width:100%;height:100%;background:#000;color:#fff;cursor:pointer}
    .yt-poster:focus-visible{outline:3px solid var(--gold);outline-offset:4px}
    .yt-poster img{width:100%;height:100%;object-fit:cover;display:block}
    .yt-poster-play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}
    .yt-poster-play::before{content:"";display:block;width:clamp(64px,18vw,96px);height:clamp(64px,18vw,96px);border-radius:50%;background:rgba(0,0,0,.55);box-shadow:0 12px 30px rgba(0,0,0,.45);transition:transform .2s ease,background .2s ease}
    .yt-poster-play::after{content:"";position:absolute;border-left:clamp(18px,5vw,26px) solid #fff;border-top:clamp(12px,3.3vw,18px) solid transparent;border-bottom:clamp(12px,3.3vw,18px) solid transparent;margin-left:clamp(4px,1.2vw,6px)}
    .yt-poster:hover .yt-poster-play::before,.yt-poster:focus-visible .yt-poster-play::before{transform:scale(1.05);background:rgba(0,0,0,.7)}
    .modal-content iframe,.modal-content video{width:100%;height:100%;display:block}
    .modal .close{position:absolute;top:.6rem;right:.6rem;background:#fff;border:none;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;cursor:pointer;box-shadow:0 8px 18px rgba(0,0,0,.25)}
    @media (max-height:600px){
      .modal-content{
        height:calc(100vh - 32px);
        width:auto;
        max-width:calc(100vw - 32px);
      }
    }

    .center{display:flex;justify-content:center;align-items:center}.divider{text-align:center;margin:1.6rem 0 .8rem;color:#84a7c5}.muted{color:var(--muted)}
    .col-12{grid-column:span 12}.col-8{grid-column:span 8}.col-6{grid-column:span 6}.col-4{grid-column:span 4}.col-3{grid-column:span 3}
    @media (max-width:880px){.col-md-12{grid-column:span 12}.col-md-6{grid-column:span 6}}
    @media (max-width:640px){.col-sm-12{grid-column:span 12}}

    footer{color:#fff;background:linear-gradient(120deg,rgba(12,107,31,1),rgba(179,0,0,1));padding:1.25rem;text-align:center;border-top:6px solid var(--gold)}
    footer p{margin:.35rem 0}
    footer .footer-links{display:flex;flex-wrap:wrap;gap:.45rem;justify-content:center;font-weight:600;align-items:center}
    footer .footer-links a{color:#fff;text-decoration:underline}
    footer .footer-links span{margin:0 .2rem;color:#fff}
    footer .footer-meta{font-weight:600}

    body.static-page{min-height:100vh;display:flex;flex-direction:column}
    body.static-page .container{max-width:960px;width:100%;padding:clamp(32px,6vw,52px) clamp(18px,6vw,36px)}
    body.static-page main{flex:1;display:block}
    body.static-page header{margin-bottom:0}
    body.static-page header h1{margin-bottom:.5rem}
    body.static-page header p{max-width:42rem}
    .breadcrumb{margin:1.25rem auto 0;display:flex;gap:.35rem;flex-wrap:wrap;justify-content:center;font-size:.95rem;color:#fff}
    .breadcrumb a{color:#fff;text-decoration:underline}
    .static-content{background:rgba(255,255,255,.92);border-radius:18px;border:1px solid #e5e7eb;box-shadow:0 12px 22px rgba(15,23,42,.08);padding:clamp(24px,5vw,40px);color:var(--ink)}
    .static-content section{margin:2.25rem 0}
    .static-content section:first-of-type{margin-top:0}
    .static-content h2{font-family:"Mountains of Christmas",cursive;color:var(--green);text-align:left;font-size:clamp(1.65rem,2.4vw,2.2rem);margin-bottom:1rem}
    .static-content h3{font-size:1.15rem;margin:1.1rem 0 .55rem;color:#0f172a}
    .static-content p{line-height:1.7;margin:.65rem 0}
    .static-content ul,.static-content ol{margin:.65rem 0 .65rem 1.25rem;padding:0}
    .static-content li{margin:.4rem 0;line-height:1.6}
    .static-content a{color:#0f6a30;font-weight:600;text-decoration:underline}
    .callout{background:#f9fbff;border-left:4px solid var(--green);padding:1rem 1.2rem;border-radius:12px;margin:1.1rem 0;color:#0f172a}
    @media(max-width:640px){
      .static-content{padding:clamp(20px,6vw,28px)}
      footer .footer-links{flex-direction:column}
    }

    /* Music pill */
    #musicBar{position:fixed;right:14px;bottom:14px;z-index:400;display:flex;gap:.5rem;align-items:center;background:#ffffffcc;border:1px solid #e5e7eb;padding:.45rem .6rem;border-radius:999px;backdrop-filter:blur(6px);box-shadow:0 10px 24px rgba(0,0,0,.18)}
    #musicToggle{background:#0ea5e9;border:none;color:#fff;padding:.5rem .75rem;border-radius:999px;font-weight:700;box-shadow:0 8px 16px rgba(14,165,233,.25);cursor:pointer}
    #musicStatus{font-size:.9rem;color:#0ea5e9;font-weight:700}
    body.welcome-modal-open #musicBar{pointer-events:none}

    .toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,12px);background:rgba(15,23,42,.95);color:#fff;padding:.65rem 1.1rem;border-radius:999px;font-weight:600;box-shadow:0 18px 36px rgba(15,23,42,.35);opacity:0;pointer-events:none;transition:opacity .3s ease, transform .3s ease;z-index:120}
    .toast.show{opacity:1;transform:translate(-50%,0)}
    @media (max-width:560px){
      .toast{width:90%;max-width:320px;text-align:center;font-size:.95rem}
    }

    @media (max-width:560px){
      :root{
        --mobile-pad:12px;
        --card-w:min(82vw,260px);
      }

      body{line-height:1.5;}

      input,select,textarea,button{font-size:16px;}

      button,.btn,.tools button,.vote,.enter{
        min-height:44px;
        padding:10px 14px;
      }

      .container,.wrap,.tier{padding-left:var(--mobile-pad);padding-right:var(--mobile-pad);}

      .hosts{grid-template-columns:1fr;}

      .leaflet-popup-content-wrapper{max-width:85vw;}
      .leaflet-popup-content{overflow-wrap:anywhere;}

      .table-wrap,.entries-wrap{
        overflow-x:auto;
        -webkit-overflow-scrolling:touch;
      }
      table{min-width:600px;}

      /* Mobile-only sponsor rails */
      .sponsors{justify-content:center;justify-items:center;}

      .tier{
        margin:0 auto;
        max-width:100%;
      }

      #tier-northpole .s-grid,
      #tier-winter .s-grid,
      #tier-snowflake .s-grid,
      #tier-jingle .s-grid{
        display:grid;
        grid-auto-flow:column;
        grid-auto-columns:var(--card-w);
        overflow-x:auto;
        gap:14px;
        scroll-snap-type:x proximity;
        padding:0 var(--mobile-pad) .5rem;
      }
      #tier-northpole .s-wrap,
      #tier-winter .s-wrap,
      #tier-snowflake .s-wrap,
      #tier-jingle .s-wrap{
        scroll-snap-align:center;
      }
    }

/* Inline helper inside the voter subtitle */
.hl-helper-inline {
  display: inline-block;
  margin-left: .35em;
  color: #6b7280;
  font-weight: 500;
  font-size: 0.95em;
}

.form-disabled {
  opacity: .75;
}

.form-disabled button {
  cursor: not-allowed;
}

.phase-notice {
  margin: 0 0 .5rem;
  font-weight: 600;
}
