/* Nifty Nice Mountain v2.0.0 */
.nnm-root, .nnm-modal, .nnm-toasts {
  --nnm-red: #d7202a;
  --nnm-red-dk: #a3141c;
  --nnm-green: #1f7a35;
  --nnm-lime: #7ddc2f;
  --nnm-gold: #f2b822;
  --nnm-gold-dk: #c98d00;
  --nnm-blue: #3316ee;   /* Her site's brand blue (Book A LIVE Santa Visit). */
  --nnm-night: #0d0b4a;
  --nnm-ice: #eef3ff;
  --nnm-ink: #1d2340;
  --nnm-muted: #5b6283;
  --nnm-snow: #ffffff;
  --nnm-paper: #fffdf7;
  --nnm-line: #e3e0d6;
  --nnm-radius: 18px;
  --nnm-shadow: 0 10px 30px rgba(29, 35, 64, .14);
  --nnm-stripes: repeating-linear-gradient(-45deg, var(--nnm-red) 0 14px, #fff 14px 22px, #f3c9cb 22px 24px, #fff 24px 32px);
  font-family: 'Nunito', system-ui, -apple-system, 'Segoe UI', sans-serif;
  color: var(--nnm-ink);
  line-height: 1.45;
}
.nnm-root *, .nnm-modal *, .nnm-toasts * { box-sizing: border-box; }
.nnm-root [hidden], .nnm-modal [hidden] { display: none !important; }
.nnm-root { display: grid; gap: 20px; width: 100%; }
.nnm-root.nnm-app { display: block; }
.nnm-wrap { max-width: 1180px; margin: 0 auto; padding: 0 20px; display: grid; gap: 20px; container-type: inline-size; container-name: nnm; position: relative; z-index: 2; }

/* --------------------------------------------- night-sky scene + icy band */
.nnm-scene { position: relative; overflow: hidden; padding: 28px 0 70px;
  background:
    radial-gradient(ellipse 80% 60% at 50% 0%, rgba(120, 100, 255, .55), transparent 70%),
    linear-gradient(180deg, #2412b8 0%, #1a0d86 38%, var(--nnm-night) 100%); }
.nnm-stars { position: absolute; inset: 0; pointer-events: none; opacity: .9;
  background-image:
    radial-gradient(1.5px 1.5px at 12% 18%, #fff, transparent), radial-gradient(1px 1px at 28% 8%, #fff, transparent),
    radial-gradient(2px 2px at 44% 26%, #ffe9a8, transparent), radial-gradient(1px 1px at 63% 12%, #fff, transparent),
    radial-gradient(1.5px 1.5px at 79% 22%, #fff, transparent), radial-gradient(1px 1px at 91% 6%, #fff, transparent),
    radial-gradient(1px 1px at 6% 44%, #fff, transparent), radial-gradient(2px 2px at 95% 40%, #ffe9a8, transparent),
    radial-gradient(1px 1px at 36% 52%, #fff, transparent), radial-gradient(1.5px 1.5px at 71% 58%, #fff, transparent);
  animation: nnm-twinkle 5s ease-in-out infinite; }
.nnm-scene > .nnm-snow { z-index: 3; }
.nnm-drift { position: absolute; left: 0; right: 0; bottom: -1px; height: 60px; z-index: 1;
  background: var(--nnm-ice);
  -webkit-mask: radial-gradient(60px 34px at 60px 0, transparent 98%, #000) -60px 26px / 120px 60px repeat-x;
          mask: radial-gradient(60px 34px at 60px 0, transparent 98%, #000) -60px 26px / 120px 60px repeat-x; }
.nnm-lower { position: relative; padding: 24px 0 48px; background: var(--nnm-ice);
  background-image: radial-gradient(rgba(51,22,238,.06) 1.5px, transparent 1.6px); background-size: 22px 22px; }
.nnm-narrow { max-width: 560px; width: 100%; justify-self: center; }

/* ------------------------------------------------------------ title bar */
.nnm-bar { position: relative; background: rgba(255,255,255,.96); border-radius: 20px; padding: 18px 22px 16px; box-shadow: 0 14px 40px rgba(5, 3, 40, .45); overflow: hidden; }
.nnm-bar::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 8px; background: var(--nnm-stripes); }
.nnm-bar__row { display: flex; justify-content: space-between; align-items: center; gap: 16px; }
.nnm-bar__title { display: flex; align-items: center; gap: 12px; min-width: 0; }
.nnm-bar__star { width: 48px; flex: none; animation: nnm-bob 3s ease-in-out infinite; }
.nnm-root .nnm-bar__h { font-family: 'Mountains of Christmas', cursive; font-weight: 700; font-size: clamp(1.7rem, 4.2cqw, 2.6rem); line-height: 1; margin: 0; color: var(--nnm-red); letter-spacing: .5px; }
.nnm-bar__sub { margin: 4px 0 0; font-weight: 800; color: var(--nnm-blue); }
.nnm-countdown { flex: none; display: flex; align-items: center; gap: 8px; background: linear-gradient(180deg, #ffe07a, var(--nnm-gold)); color: #5a3b00; border-radius: 16px; padding: 8px 14px; box-shadow: 0 4px 0 var(--nnm-gold-dk); }
.nnm-countdown b { font-size: 2rem; line-height: 1; font-weight: 800; }
.nnm-countdown span { font-size: .78rem; font-weight: 800; line-height: 1.15; text-transform: uppercase; letter-spacing: .3px; max-width: 86px; }
.nnm-countdown i { font-style: normal; }
.nnm-bar .nnm-climbers { margin-top: 14px; padding-top: 14px; border-top: 2px dashed #e3e6f3; }
.nnm-root img, .nnm-modal img { max-width: 100%; height: auto; border: 0; box-shadow: none; }
.nnm-root button, .nnm-modal button { font: inherit; cursor: pointer; }
.nnm-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.nnm-hp { position: absolute; left: -9999px; }
.nnm-loading { padding: 60px 20px; text-align: center; font-family: 'Mountains of Christmas', cursive; font-size: 1.8rem; color: var(--nnm-red); animation: nnm-breathe 1.4s ease-in-out infinite; }
.nnm-noscroll, .nnm-noscroll body { overflow: hidden; }

/* ------------------------------------------------------------- type */
.nnm-title { font-family: 'Mountains of Christmas', cursive; font-weight: 700; font-size: 1.9rem; line-height: 1.1; margin: 0 0 10px; color: var(--nnm-red); letter-spacing: .5px; }
.nnm-title--xl { font-size: clamp(2rem, 4vw, 2.8rem); }
.nnm-script { font-family: 'Mountains of Christmas', cursive; font-weight: 700; font-size: 1.7rem; margin: 0; }
.nnm-script u { text-decoration-thickness: 2px; text-underline-offset: 6px; color: var(--nnm-blue); padding: 0 6px; }
.nnm-gap { display: inline-block; width: 24px; }
.nnm-muted { color: var(--nnm-muted); margin: 0 0 8px; }
.nnm-fine { font-size: .85rem; color: var(--nnm-muted); margin: 6px 0 0; }
.nnm-label { font-weight: 800; margin: 10px 0 6px; }
.nnm-err { color: var(--nnm-red-dk); font-weight: 700; min-height: 1em; margin: 6px 0; }
.nnm-err:empty { display: none; }
.nnm-center { text-align: center; }

/* ------------------------------------------------------------ cards */
.nnm-card { background: #fff; border-radius: var(--nnm-radius); box-shadow: 0 10px 30px rgba(26, 13, 134, .12); padding: 26px 22px 22px; position: relative; border: 0; overflow: hidden; }
.nnm-card::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 6px; background: var(--nnm-stripes); }
.nnm-grid { display: grid; grid-template-columns: 1.1fr 1fr 1fr; gap: 20px; align-items: start; }
@container nnm (max-width: 960px) { .nnm-grid { grid-template-columns: 1fr 1fr; } .nnm-grid > .nnm-status { grid-column: 1 / -1; } }
@container nnm (max-width: 640px) { .nnm-grid { grid-template-columns: 1fr; } }

/* ---------------------------------------------------------- buttons */
.nnm-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 0; border-radius: 999px; padding: 10px 20px; background: var(--nnm-green); color: #fff !important; font-weight: 800; text-decoration: none !important; box-shadow: 0 4px 0 #145426; transition: transform .12s, box-shadow .12s, filter .12s; }
.nnm-btn:hover { filter: brightness(1.08); transform: translateY(-1px); }
.nnm-btn:active { transform: translateY(3px); box-shadow: 0 1px 0 #145426; }
.nnm-btn:disabled { opacity: .55; cursor: wait; }
.nnm-btn--big { font-size: 1.1rem; padding: 14px 26px; width: 100%; margin-top: 10px; }
.nnm-btn--red { background: var(--nnm-red); box-shadow: 0 4px 0 var(--nnm-red-dk); }
.nnm-btn--gold { background: linear-gradient(180deg, #ffd65a, var(--nnm-gold)); color: #5a3b00 !important; box-shadow: 0 4px 0 var(--nnm-gold-dk); width: 100%; margin-top: 10px; }
.nnm-btn--gold.is-locked { filter: grayscale(.85); opacity: .75; }
.nnm-btn--ghost { background: #fff; color: var(--nnm-green) !important; border: 2px solid var(--nnm-green); box-shadow: none; }
.nnm-btn--pulse { animation: nnm-pulse 2.2s ease-in-out infinite; }
.nnm-link { background: none; border: 0; padding: 0; color: var(--nnm-blue); text-decoration: underline; font-weight: 700; }
.nnm-danger { color: var(--nnm-red-dk); }
.nnm-reset { margin-top: 12px; font-size: .9rem; }
.nnm-x { background: none; border: 0; color: var(--nnm-muted); font-size: 1.3rem; line-height: 1; padding: 0 4px; margin-left: auto; }
.nnm-x:hover { color: var(--nnm-red); }

/* ---------------------------------------------------------- top bar */

/* ------------------------------------------------------------ stage */
.nnm-stage { position: relative; width: 100%; border-radius: 10px; overflow: hidden; user-select: none; -webkit-user-select: none; filter: drop-shadow(0 18px 30px rgba(0,0,0,.45)); }
.nnm-stage--path { aspect-ratio: 1414 / 900; container-type: inline-size; overflow: visible; } /* Lets a summit climber poke above the frame. */
.nnm-stage--start { aspect-ratio: 1200 / 787; }
.nnm-stage__art { position: absolute; inset: 0; width: 100%; height: 100% !important; display: block; }
.nnm-snow { position: absolute; inset: 0; pointer-events: none; z-index: 6; }
.nnm-gift-glow { position: absolute; left: 43.7%; top: 11.8%; width: 7%; aspect-ratio: 1; transform: translate(-50%, -50%); border-radius: 50%; background: radial-gradient(circle, rgba(255,231,120,.85), rgba(255,231,120,0) 65%); animation: nnm-twinkle 2.4s ease-in-out infinite; pointer-events: none; mix-blend-mode: screen; }
.nnm-start-here { display: block; position: absolute; left: 19.4%; top: 86.3%; width: 12%; height: 7%; transform: translate(-50%, -50%); border: 3px solid rgba(255,255,255,.95); border-radius: 999px; background: rgba(255,255,255,.08); box-shadow: 0 0 0 0 rgba(255,255,255,.7); animation: nnm-ring 1.8s ease-out infinite; z-index: 7; }
.nnm-start-here:hover { background: rgba(255,255,255,.25); }

/* Her trail: our gold glow rides on top of the traveled part. */
.nnm-trail { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 2; }
.nnm-trail__done { fill: none; stroke: #ffd65a; stroke-width: 6; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; stroke-dasharray: 2 10; filter: drop-shadow(0 0 4px rgba(255,214,90,.95)); animation: nnm-march 1s linear infinite; }

.nnm-cp { position: absolute; transform: translate(-50%, -50%); width: 4.2cqw; height: 4.2cqw; min-width: 22px; min-height: 22px; border: 0; background: none; padding: 0; z-index: 3; }
.nnm-cp__dot { position: absolute; inset: 22%; border-radius: 50%; }
.nnm-cp.is-next .nnm-cp__dot { box-shadow: 0 0 0 0 rgba(255,255,255,.9); animation: nnm-ring 1.6s ease-out infinite; }
.nnm-cp__star { position: absolute; inset: -18%; width: 136% !important; max-width: none !important; opacity: 0; transform: scale(.2) rotate(-40deg); transition: transform .5s cubic-bezier(.3,1.7,.5,1), opacity .3s; filter: drop-shadow(0 0 6px rgba(255,230,120,.95)); }
.nnm-cp.is-done .nnm-cp__star { opacity: 1; transform: scale(1) rotate(0); animation: nnm-twinkle 2.6s ease-in-out infinite; }
.nnm-cp__label { position: absolute; left: 50%; bottom: 120%; transform: translateX(-50%) translateY(6px); white-space: nowrap; background: #fff; color: var(--nnm-ink); font-weight: 800; font-size: 13px; padding: 4px 10px; border-radius: 999px; box-shadow: var(--nnm-shadow); opacity: 0; pointer-events: none; transition: .2s; }
.nnm-cp:hover .nnm-cp__label, .nnm-cp:focus-visible .nnm-cp__label { opacity: 1; transform: translateX(-50%) translateY(0); }
.nnm-cp--top { width: 7cqw; height: 7cqw; }
.nnm-cp--top.is-done .nnm-cp__dot, .is-summit .nnm-cp--top .nnm-cp__dot { inset: -20%; background: radial-gradient(circle, rgba(255,250,200,.95), rgba(125,220,47,.5) 40%, rgba(125,220,47,0) 70%); animation: nnm-twinkle 1.6s ease-in-out infinite; }

.nnm-pin { position: absolute; transform: translate(-50%, -88%); z-index: 4; transition: left .35s ease, top .35s ease; cursor: pointer; }
.nnm-pin--me { z-index: 5; }
.nnm-pin.is-climbing { transition: none; }
.nnm-pin__bob { display: block; position: relative; animation: nnm-bob 2.4s ease-in-out infinite; }
.nnm-pin .nnm-avatar { width: 4.4cqw; height: 4.4cqw; min-width: 26px; min-height: 26px; }
.nnm-pin--me .nnm-avatar { width: 7.4cqw; height: 7.4cqw; min-width: 40px; min-height: 40px; }
.nnm-pin.is-climbing .nnm-pin__bob { animation: nnm-hop .32s ease-in-out infinite; }
.nnm-pin__flag { position: absolute; left: 50%; top: -6px; transform: translate(-50%, -100%); background: var(--nnm-red); color: #fff; font-weight: 800; font-size: clamp(11px, 1.6cqw, 16px); padding: 2px 10px; border-radius: 999px; white-space: nowrap; box-shadow: 0 3px 8px rgba(0,0,0,.25); }
.nnm-pin__flag::after { content: ''; position: absolute; left: 50%; bottom: -5px; transform: translateX(-50%); border: 6px solid transparent; border-bottom: 0; border-top-color: var(--nnm-red); }

.nnm-particle { position: absolute; pointer-events: none; z-index: 20; will-change: transform, opacity; }

/* ---------------------------------------------------------- avatars */
.nnm-avatar { --s: 44px; display: inline-grid; place-items: center; width: var(--s); height: var(--s); border-radius: 50%; overflow: hidden; flex: none; position: relative; background: #fff; padding: 3px; background-image: var(--nnm-stripes); box-shadow: 0 3px 8px rgba(0,0,0,.25); }
.nnm-avatar > img { width: 100% !important; height: 100% !important; border-radius: 50%; object-fit: cover; background: #fff; }
.nnm-avatar--color > b { width: 100%; height: 100%; display: grid; place-items: center; border-radius: 50%; background: inherit; color: #fff; font-weight: 800; font-size: calc(var(--s) * .45); font-family: 'Mountains of Christmas', cursive; }
.nnm-avatar--color { background-image: none; border: 3px solid #fff; padding: 0; }
.nnm-avatar--icon > img { object-fit: contain; padding: 12%; }
.nnm-avatar__init { position: absolute; right: -2px; bottom: -2px; background: var(--nnm-green); color: #fff; border-radius: 50%; width: 40%; height: 40%; display: grid; place-items: center; font-size: calc(var(--s) * .22); border: 2px solid #fff; }
.nnm-avatar--sm { --s: 34px; }
.nnm-avatar--xs { --s: 28px; padding: 2px; }
.nnm-avatar--md { --s: 64px; }
.nnm-avatar--lg { --s: 84px; }
.nnm-pin .nnm-avatar { --s: 60px; }

/* ---------------------------------------------------------- climbers */
.nnm-climbers { display: flex; gap: 10px; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; padding-bottom: 2px; }
.nnm-climbers::-webkit-scrollbar { display: none; }
.nnm-climber-tab { flex: none; display: inline-flex; align-items: center; gap: 8px; border: 2px solid #e3e6f3; background: #fff; color: var(--nnm-ink); border-radius: 999px; padding: 4px 16px 4px 4px; font-weight: 800; box-shadow: 0 2px 8px rgba(0,0,0,.08); transition: .15s; }
.nnm-climber-tab.on { border-color: var(--nnm-red); background: #fff4f4; }
.nnm-climber-tab em { font-style: normal; font-size: .78rem; font-weight: 800; color: var(--nnm-green); background: #eaf7ee; border-radius: 999px; padding: 1px 8px; }
.nnm-climber-tab--add { border: 2px dashed var(--nnm-green); color: var(--nnm-green); background: transparent; box-shadow: none; padding-left: 8px; }
.nnm-plus { width: 26px; height: 26px; border-radius: 50%; background: var(--nnm-green); color: #fff; display: grid; place-items: center; }

/* ----------------------------------------------------------- status */
.nnm-status__head { display: flex; gap: 14px; align-items: center; margin-bottom: 10px; }
.nnm-status__head .nnm-title { margin: 0; }
.nnm-where { font-size: 1.1rem; margin: 6px 0; }
.nnm-meter { position: relative; height: 26px; border-radius: 999px; background: #eef1f7; overflow: hidden; box-shadow: inset 0 2px 4px rgba(0,0,0,.1); margin: 8px 0; }
.nnm-meter > span { position: absolute; inset: 0 auto 0 0; background: var(--nnm-stripes); background-size: 45px 45px; animation: nnm-candy 1.2s linear infinite; border-radius: 999px; transition: width .8s cubic-bezier(.3,1.2,.5,1); }
.nnm-meter > em { position: relative; display: block; text-align: center; font-style: normal; font-weight: 800; line-height: 26px; font-size: .9rem; color: var(--nnm-ink); text-shadow: 0 0 4px #fff, 0 0 4px #fff, 0 0 2px #fff; }
.nnm-meter--sm { height: 22px; }
.nnm-meter--sm > em { line-height: 22px; font-size: .85rem; }
.nnm-bank { display: flex; gap: 10px; align-items: center; font-weight: 600; }
.nnm-bank img { width: 30px; flex: none; animation: nnm-bob 2.4s ease-in-out infinite; }
.nnm-note { background: #fff7d6; border-radius: 12px; padding: 10px 14px; font-weight: 700; }

/* ------------------------------------------------------------ weeks */
.nnm-weeks { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.nnm-week button { width: 100%; height: 100%; display: grid; gap: 2px; justify-items: start; border: 2px solid var(--nnm-line); border-radius: 12px; background: #fff; padding: 8px 12px; text-align: left; transition: .15s; color: var(--nnm-ink); }
.nnm-week button:not(:disabled):hover { border-color: var(--nnm-green); transform: translateY(-2px); }
.nnm-week button:disabled { cursor: default; opacity: .6; }
.nnm-week__n { font-weight: 800; }
.nnm-week__d { color: var(--nnm-muted); font-size: .85rem; white-space: nowrap; }
.nnm-week__n, .nnm-week__pts { white-space: nowrap; }
.nnm-week__pts { display: inline-flex; align-items: center; gap: 4px; font-weight: 800; font-size: .9rem; }
.nnm-week__pts img { width: 18px; }
.nnm-week--done button { border-color: #b8e3c3; background: #f1fbf4; }
.nnm-week--now button { border-color: var(--nnm-red); background: #fff4f4; animation: nnm-pulse 2.2s ease-in-out infinite; }
.nnm-week--now .nnm-week__pts { color: var(--nnm-red); }
.nnm-week--missed .nnm-week__pts { color: var(--nnm-gold-dk); }

/* ----------------------------------------------------------- wishes */
.nnm-scroll { background: linear-gradient(#fffdf2, #fff7dd); }
.nnm-wishes { list-style: none; margin: 0 0 12px; padding: 0; display: grid; gap: 6px; }
.nnm-wishes li { display: flex; align-items: center; gap: 8px; border-bottom: 1px dashed #e6d9a8; padding: 6px 2px; font-weight: 700; }
.nnm-wish__ico { width: 20px; }
.nnm-wish--empty { border: 0 !important; font-weight: 400 !important; }
.nnm-wish-form { display: flex; gap: 8px; }
.nnm-wish-form input { flex: 1; min-width: 0; }

/* ------------------------------------------------------------ forms */
.nnm-form { display: grid; gap: 12px; }
.nnm-field { display: grid; gap: 4px; font-weight: 800; }
.nnm-field > span { font-size: .95rem; }
.nnm-root input[type=text], .nnm-root input[type=email], .nnm-root input[type=password], .nnm-root select, .nnm-root textarea,
.nnm-modal input[type=text], .nnm-modal input[type=email], .nnm-modal input[type=password], .nnm-modal select, .nnm-modal textarea {
  width: 100%; font: inherit; font-weight: 600; color: var(--nnm-ink); background: #fff; border: 2px solid #d9dceb; border-radius: 12px; padding: 10px 14px; transition: border-color .15s, box-shadow .15s; }
.nnm-root input:focus, .nnm-root select:focus, .nnm-root textarea:focus, .nnm-modal input:focus, .nnm-modal select:focus, .nnm-modal textarea:focus { outline: none; border-color: var(--nnm-green); box-shadow: 0 0 0 4px rgba(31,122,53,.15); }
.nnm-row { display: grid; grid-template-columns: 1fr 110px; gap: 12px; }
.nnm-actions { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.nnm-actions .nnm-btn--big { width: auto; margin: 0; }
.nnm-actions--end { justify-content: flex-end; }
.nnm-actions--center { justify-content: center; margin-top: 16px; }
.nnm-file { display: none; }
.nnm-tabs { display: inline-flex; background: #eef1f7; border-radius: 999px; padding: 4px; gap: 4px; justify-self: start; flex-wrap: wrap; }
.nnm-tabs button { border: 0; background: none; border-radius: 999px; padding: 8px 16px; font-weight: 800; color: var(--nnm-muted); }
.nnm-tabs button.on { background: #fff; color: var(--nnm-red); box-shadow: 0 2px 6px rgba(0,0,0,.1); }
.nnm-auth { max-width: 520px; width: 100%; justify-self: center; }
.nnm-auth .nnm-tabs { margin-bottom: 12px; }

.nnm-av-pick { display: grid; grid-template-columns: auto 1fr; gap: 18px; align-items: start; background: #f7f8fc; border-radius: 14px; padding: 14px; }
.nnm-av-preview .nnm-avatar { --s: 96px; animation: nnm-bob 2.4s ease-in-out infinite; }
.nnm-badges { display: flex; flex-wrap: wrap; gap: 8px; }
.nnm-badge { border: 3px solid transparent; background: none; border-radius: 50%; padding: 2px; transition: .15s; }
.nnm-badge.on { border-color: var(--nnm-gold); transform: scale(1.12); }
.nnm-badge .nnm-avatar { --s: 42px; }
@media (max-width: 520px) { .nnm-av-pick { grid-template-columns: 1fr; justify-items: center; text-align: center; } .nnm-badges { justify-content: center; } }

/* --------------------------------------------------------- how-to */
.nnm-how { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.nnm-how__step { text-align: center; }
.nnm-how__step img { width: 56px; animation: nnm-bob 3s ease-in-out infinite; }
.nnm-how__step:nth-child(2) img { animation-delay: -1s; }
.nnm-how__step:nth-child(3) img { animation-delay: -2s; }
.nnm-how__step h3 { font-family: 'Mountains of Christmas', cursive; font-size: 1.5rem; color: var(--nnm-green); margin: 6px 0; }
.nnm-how__step p { margin: 0; color: var(--nnm-muted); }
@container nnm (max-width: 760px) { .nnm-how { grid-template-columns: 1fr; } }

/* ------------------------------------------------------------ modal */
.nnm-modal { position: fixed; inset: 0; z-index: 99999; background: rgba(15, 22, 52, .62); backdrop-filter: blur(3px); display: grid; place-items: center; padding: 16px; overflow-y: auto; animation: nnm-fade .25s ease; }
.nnm-modal--out { animation: nnm-fade .25s ease reverse forwards; }
.nnm-modal__panel { position: relative; background: var(--nnm-paper); border-radius: 22px; width: min(640px, 100%); padding: 26px; box-shadow: 0 30px 80px rgba(0,0,0,.35); animation: nnm-pop .4s cubic-bezier(.3,1.5,.5,1); margin: auto; }
.nnm-modal__panel::before { content: ''; position: absolute; inset: -8px; border-radius: 28px; background: var(--nnm-stripes); z-index: -1; }
.nnm-modal__panel--wide { width: min(1040px, 100%); }
.nnm-modal__x { position: absolute; right: 12px; top: 10px; width: 38px; height: 38px; border-radius: 50%; border: 0; background: #fff; font-size: 1.6rem; line-height: 1; color: var(--nnm-red); box-shadow: 0 2px 8px rgba(0,0,0,.15); z-index: 2; }
.nnm-fly { animation: nnm-fly .75s cubic-bezier(.55,-0.2,.7,.4) forwards; }

/* ----------------------------------------------------------- report */
.nnm-report__head { display: flex; gap: 14px; align-items: center; padding-right: 40px; }
.nnm-legend { display: flex; flex-wrap: wrap; gap: 6px 18px; align-items: center; font-family: 'Mountains of Christmas', cursive; font-weight: 700; font-size: 1.25rem; }
.nnm-legend span { display: inline-flex; align-items: center; gap: 4px; }
.nnm-legend img { width: 34px; }
.nnm-legend .nnm-fine { font-family: 'Nunito', sans-serif; font-weight: 600; font-size: .85rem; }
.nnm-chart-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
/* The report chart. Theme table styles are overridden so every row is the same height. */
.nnm-root .nnm-chart, .nnm-modal .nnm-chart { border-collapse: collapse !important; border-spacing: 0 !important; table-layout: fixed; width: 100%; min-width: 640px; margin: 0 !important; background: #fff !important; border: 2px solid #222 !important; }
.nnm-chart col.nnm-chart__c1 { width: 32%; }
.nnm-modal .nnm-chart tr, .nnm-modal .nnm-chart tbody tr:nth-child(odd), .nnm-modal .nnm-chart tbody tr:nth-child(even) { background: #fff !important; }
.nnm-modal .nnm-chart th, .nnm-modal .nnm-chart td { border: 1px solid #222 !important; padding: 0 !important; margin: 0 !important; text-align: center; vertical-align: middle !important; background: #fff !important; height: 46px; box-sizing: border-box; line-height: 1.15; }
.nnm-modal .nnm-chart thead th { font-family: 'Mountains of Christmas', cursive; font-weight: 700; font-size: 1.15rem; padding: 4px 2px !important; height: 52px; background: #fffbea !important; color: var(--nnm-ink); }
.nnm-modal .nnm-chart thead th small { display: block; font-family: 'Nunito', sans-serif; font-size: .7rem; color: var(--nnm-muted); }
.nnm-modal .nnm-chart thead th.off { background: #f1f1f1 !important; color: #aaa; }
.nnm-modal .nnm-chart .nnm-chart__deed { text-align: left; padding: 0 10px !important; font-family: 'Nunito', sans-serif; font-weight: 700; font-size: .92rem; color: var(--nnm-ink); }
.nnm-modal .nnm-chart thead .nnm-chart__deed { font-family: 'Mountains of Christmas', cursive; font-size: 1.15rem; }
.nnm-modal .nnm-chart tbody tr:nth-child(even) .nnm-chart__deed { background: #fbfaf5 !important; }
.nnm-chart__in { display: flex; align-items: center; gap: 4px; min-height: 44px; }
.nnm-chart__in > span { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.nnm-modal .nnm-chart td:has(.nnm-cell:disabled) { background: repeating-linear-gradient(45deg, #f4f4f4 0 6px, #ebebeb 6px 12px) !important; }
.nnm-cell { width: 100%; height: 44px; border: 0; background: none; display: grid; place-items: center; padding: 3px; margin: 0; border-radius: 0; box-shadow: none; transition: background .12s; }
.nnm-cell:hover:not(:disabled) { background: #fff6d8; }
.nnm-cell:disabled { background: repeating-linear-gradient(45deg, #f4f4f4 0 6px, #ebebeb 6px 12px); cursor: not-allowed; }
.nnm-cell img { width: 30px; height: 30px; }
.nnm-add-deed { display: flex; gap: 8px; margin-top: 10px; }
.nnm-add-deed input { flex: 1; min-width: 0; }
.nnm-add-deed .nnm-btn { white-space: nowrap; }
.nnm-totals { display: grid; gap: 10px; }
.nnm-stepper { display: grid; grid-template-columns: 60px 1fr auto; gap: 14px; align-items: center; background: #fff; border-radius: 14px; padding: 10px 14px; border: 2px solid var(--nnm-line); }
.nnm-stepper img { width: 56px; }
.nnm-stepper strong { display: block; font-family: 'Mountains of Christmas', cursive; font-size: 1.4rem; }
.nnm-stepper small { color: var(--nnm-muted); font-weight: 700; }
.nnm-stepper__ctl { display: flex; align-items: center; gap: 8px; }
.nnm-stepper__ctl button { width: 42px; height: 42px; border-radius: 50%; border: 0; background: var(--nnm-green); color: #fff; font-size: 1.4rem; font-weight: 800; box-shadow: 0 3px 0 #145426; }
.nnm-stepper--g .nnm-stepper__ctl button { background: #6aa31f; box-shadow: 0 3px 0 #4a7614; }
.nnm-stepper__ctl output { min-width: 44px; text-align: center; font-size: 1.6rem; font-weight: 800; }
.nnm-live { background: #f7f8fc; border-radius: 14px; padding: 10px 14px; display: grid; gap: 8px; }
.nnm-live__icons { display: flex; gap: 18px; justify-content: center; }
.nnm-live__i { display: inline-flex; align-items: center; gap: 6px; font-size: 1.3rem; font-weight: 800; }
.nnm-live__i img { width: 30px; }

/* ---------------------------------------------------- report cards */
.nnm-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; }
.nnm-dl { display: grid; grid-template-columns: 34px 1fr auto; gap: 10px; align-items: center; border: 2px solid var(--nnm-line); border-radius: 14px; padding: 10px 12px; background: #fff; text-decoration: none !important; color: var(--nnm-ink) !important; transition: .15s; }
.nnm-dl:hover { border-color: var(--nnm-green); transform: translateY(-2px); }
.nnm-dl img { width: 34px; }
.nnm-dl strong, .nnm-dl small { display: block; }
.nnm-dl small { color: var(--nnm-muted); }
.nnm-dl em { font-style: normal; font-weight: 800; color: var(--nnm-green); font-size: .85rem; }
.nnm-dl.is-now { border-color: var(--nnm-red); background: #fff4f4; }
.nnm-dl.is-now em { color: var(--nnm-red); }

/* ------------------------------------------------------- nice list */
.nnm-nice { position: relative; padding: 30px 10px; border-radius: var(--nnm-radius); background: radial-gradient(ellipse at top, #29408f, #0f1c4d 70%); overflow: hidden; }
.nnm-nice__scroll { max-width: 620px; margin: 0 auto; position: relative; z-index: 7; animation: nnm-unroll .9s cubic-bezier(.3,1.2,.5,1); }
.nnm-nice__rod { height: 22px; border-radius: 12px; background: linear-gradient(#e9c27a, #a7742b); box-shadow: 0 4px 10px rgba(0,0,0,.35); margin: 0 -14px; position: relative; z-index: 2; }
.nnm-nice__paper { background: linear-gradient(90deg, #f3e5bf, #fff8e4 15%, #fff8e4 85%, #f3e5bf); padding: 26px 28px; text-align: center; box-shadow: inset 0 0 30px rgba(160,120,40,.25); }
.nnm-nice__icons img { width: 44px; margin: 0 6px; animation: nnm-bob 2.6s ease-in-out infinite; }
.nnm-nice__icons img:nth-child(2) { animation-delay: -.9s; }
.nnm-nice__icons img:nth-child(3) { animation-delay: -1.8s; }
.nnm-nice__form { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; margin: 10px 0; }
.nnm-nice__form input { flex: 1 1 220px; text-align: center; font-size: 1.2rem !important; }
.nnm-nice__form .nnm-btn { width: auto; margin: 0; }
.nnm-nice__ticker { height: 60px; overflow: hidden; mask-image: linear-gradient(transparent, #000 30%, #000 70%, transparent); -webkit-mask-image: linear-gradient(transparent, #000 30%, #000 70%, transparent); }
.nnm-nice__lines { display: grid; gap: 4px; animation: nnm-ticker 2.4s linear infinite; font-family: 'Mountains of Christmas', cursive; font-size: 1.3rem; color: #6b5420; }
.nnm-nice__big { width: 90px; animation: nnm-pop .6s cubic-bezier(.3,1.7,.5,1); }
.nnm-nice__yes .nnm-title { color: var(--nnm-green); }
.nnm-wobble { animation: nnm-wobble 1s ease-in-out 2; }

/* ----------------------------------------------------- celebration */
.nnm-summit__star img { width: 120px; animation: nnm-spin-pop 1.2s cubic-bezier(.3,1.5,.5,1), nnm-twinkle 2s ease-in-out 1.2s infinite; filter: drop-shadow(0 0 18px rgba(255,220,90,.9)); }

/* ------------------------------------------------------ certificate */
/* Her artwork as-is. The name box sits exactly over the blue-bordered blank (measured from her PDF). */
.nnm-cert2 { position: relative; width: 100%; aspect-ratio: 2200 / 1700; container-type: inline-size; }
.nnm-cert2__art { position: absolute; inset: 0; width: 100% !important; height: 100% !important; display: block; }
.nnm-cert2__box { position: absolute; left: 24.73%; top: 30.71%; width: 62.36%; height: 7.35%; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.nnm-cert2__datebox { position: absolute; left: 70%; top: 81.2%; width: 16.4%; height: 4.4%; display: flex; align-items: center; justify-content: flex-start; overflow: hidden; }
.nnm-cert2__date { font-family: 'Mountains of Christmas', cursive; font-weight: 700; font-size: 2.4cqw; line-height: 1; color: #0000cc; white-space: nowrap; }
.nnm-cert2__name { font-family: 'Mountains of Christmas', cursive; font-weight: 700; font-size: 4.6cqw; line-height: 1; color: #c8102e; white-space: nowrap; text-shadow: 0 1px 0 rgba(0,0,0,.08); }
.nnm-cert-modal { padding: 18px; }
.nnm-cert-modal::before { display: none; }
.nnm-cert-modal .nnm-modal__x { right: 6px; top: 6px; }

/* ----------------------------------------------------------- toasts */
.nnm-toasts { position: fixed; left: 50%; bottom: 20px; transform: translateX(-50%); z-index: 100000; display: grid; gap: 8px; justify-items: center; width: min(92vw, 520px); pointer-events: none; }
.nnm-toast { background: #fff; border-left: 6px solid var(--nnm-red); border-radius: 12px; padding: 12px 18px; font-weight: 800; box-shadow: 0 12px 30px rgba(0,0,0,.25); animation: nnm-toast-in .45s cubic-bezier(.3,1.5,.5,1); }
.nnm-toast.green { border-color: var(--nnm-lime); }
.nnm-toast.bad { border-color: #333; }
.nnm-toast.out { opacity: 0; transform: translateY(20px); transition: .5s; }

/* --------------------------------------------------------- keyframes */
@keyframes nnm-bob { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-6px) } }
@keyframes nnm-hop { 0%,100% { transform: translateY(0) rotate(-4deg) } 50% { transform: translateY(-10px) rotate(4deg) } }
@keyframes nnm-twinkle { 0%,100% { opacity: 1; filter: brightness(1) drop-shadow(0 0 4px rgba(255,230,120,.8)) } 50% { opacity: .85; filter: brightness(1.25) drop-shadow(0 0 12px rgba(255,230,120,1)) } }
@keyframes nnm-ring { 0% { box-shadow: 0 0 0 0 rgba(255,255,255,.85) } 100% { box-shadow: 0 0 0 16px rgba(255,255,255,0) } }
@keyframes nnm-pulse { 0%,100% { transform: scale(1) } 50% { transform: scale(1.025) } }
@keyframes nnm-march { to { stroke-dashoffset: -24 } }
@keyframes nnm-candy { to { background-position: 45px 0 } }
@keyframes nnm-fade { from { opacity: 0 } to { opacity: 1 } }
@keyframes nnm-pop { from { transform: scale(.7); opacity: 0 } to { transform: scale(1); opacity: 1 } }
@keyframes nnm-fly { 0% { transform: none } 30% { transform: scale(.92) rotate(-2deg) } 100% { transform: translateY(-120vh) scale(.3) rotate(12deg); opacity: 0 } }
@keyframes nnm-toast-in { from { transform: translateY(30px) scale(.9); opacity: 0 } to { transform: none; opacity: 1 } }
@keyframes nnm-unroll { from { clip-path: inset(0 0 100% 0) } to { clip-path: inset(0 0 0 0) } }
@keyframes nnm-ticker { from { transform: translateY(0) } to { transform: translateY(-50%) } }
@keyframes nnm-wobble { 0%,100% { transform: rotate(0) } 25% { transform: rotate(-12deg) } 75% { transform: rotate(12deg) } }
@keyframes nnm-spin-pop { from { transform: scale(0) rotate(-200deg) } to { transform: scale(1) rotate(0) } }
@keyframes nnm-breathe { 50% { opacity: .5 } }

@media (prefers-reduced-motion: reduce) {
  .nnm-root *, .nnm-modal *, .nnm-toasts * { animation: none !important; transition: none !important; }
}

/* ------------------------------------------------------------- print */
@media print {
  @page { size: letter landscape; margin: 0; }
  /* Print only the certificate: one landscape letter page, edge to edge. */
  .nnm-printing body > *:not(.nnm-modal) { display: none !important; }
  .nnm-printing, .nnm-printing body { margin: 0 !important; padding: 0 !important; background: #fff !important; overflow: visible !important; height: auto !important; }
  .nnm-printing .nnm-modal { position: static; display: block; padding: 0; background: none; backdrop-filter: none; animation: none; overflow: visible; }
  .nnm-printing .nnm-modal__panel { width: auto; padding: 0; margin: 0; border-radius: 0; box-shadow: none; animation: none; background: none; }
  .nnm-printing .nnm-modal__x, .nnm-printing .nnm-noprint { display: none !important; }
  .nnm-printing .nnm-cert2 { width: 11in; height: 8.5in; aspect-ratio: auto; -webkit-print-color-adjust: exact; print-color-adjust: exact; break-inside: avoid; }
}

/* ============================================ Nice List + Wish List games */
.nnm-btn--block { width: 100%; margin-top: 12px; }
.nnm-game { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: 28px; align-items: center; }
.nnm-game--solo { grid-template-columns: 1fr; justify-items: center; max-width: 560px; margin: 0 auto; width: 100%; }
.nnm-game__side { display: grid; gap: 16px; justify-items: center; }
.nnm-game__main { display: grid; gap: 14px; justify-items: center; }

/* Santa from her report card, on a soft moon so the clipart edges disappear. */
.nnm-santa { position: relative; width: min(340px, 80%); margin: 72px auto 0; }
.nnm-santa__img { display: block; max-height: 360px; object-fit: contain; margin: 0 auto; }
.nnm-santa__moon { position: absolute; inset: -14% -10%; border-radius: 50%; background: radial-gradient(circle, #fffef6 0 52%, rgba(255,250,220,.55) 62%, rgba(255,250,220,0) 72%); }
.nnm-santa__img { position: relative; width: 100% !important; height: auto !important; animation: nnm-bob 3.2s ease-in-out infinite; transform-origin: 50% 90%; }
.nnm-santa.is-busy .nnm-santa__img { animation: nnm-check .5s ease-in-out infinite; }
.nnm-bubble { position: absolute; left: 50%; bottom: 100%; transform: translateX(-50%); width: max-content; max-width: min(320px, 90vw); background: #fff; color: var(--nnm-ink); font-weight: 800; font-size: 1rem; line-height: 1.3; padding: 10px 16px; border-radius: 18px; box-shadow: 0 8px 22px rgba(0,0,0,.3); text-align: center; z-index: 2; }
.nnm-bubble::after { content: ''; position: absolute; left: 50%; top: 100%; transform: translateX(-50%); border: 10px solid transparent; border-top-color: #fff; }

.nnm-nice2__form { display: grid; gap: 10px; width: min(420px, 100%); }
.nnm-root .nnm-nice2__input { font-size: 1.25rem !important; text-align: center; padding: 14px 16px !important; border-radius: 16px !important; border: 3px solid #fff !important; box-shadow: 0 6px 18px rgba(0,0,0,.25); }
.nnm-nice2__form .nnm-btn--big { margin: 0; }
.nnm-nice2__form select { text-align: center; }
.nnm-nice2__msg { color: #fff; font-weight: 800; text-align: center; min-height: 1.2em; margin: 0; text-shadow: 0 1px 3px rgba(0,0,0,.5); }

/* Her scroll. Paper and roll areas measured from the artwork. */
.nnm-scroll2 { position: relative; width: min(520px, 100%); aspect-ratio: 800 / 1026; container-type: inline-size; filter: drop-shadow(0 18px 26px rgba(0,0,0,.45)); }
.nnm-scroll2__art { position: absolute; inset: 0; width: 100% !important; height: 100% !important; }
.nnm-scroll2__paper { position: absolute; left: 21%; right: 19%; top: 13%; bottom: 35%; }
.nnm-scroll2__roll { position: absolute; left: 28%; right: 7%; top: 76.5%; height: 13%; display: flex; align-items: center; justify-content: center; transform: rotate(-1.5deg); }
.nnm-scroll2__roll span { font-family: 'Mountains of Christmas', cursive; font-weight: 700; font-size: 6.2cqw; color: #a3141c; white-space: nowrap; text-shadow: 0 1px 0 rgba(255,255,255,.6); }

/* Spinning names. */
.nnm-reel { position: absolute; inset: 0; overflow: hidden; -webkit-mask-image: linear-gradient(transparent, #000 14%, #000 86%, transparent); mask-image: linear-gradient(transparent, #000 14%, #000 86%, transparent); }
.nnm-reel__strip { will-change: transform; }
.nnm-reel__line { display: flex; align-items: center; justify-content: center; gap: 6px; font-family: 'Mountains of Christmas', cursive; font-weight: 700; font-size: 7.4cqw; line-height: 1; color: #1b7a2a; white-space: nowrap; transition: transform .3s; }
.nnm-reel__line span { display: inline-block; padding: 0 6px; }
.nnm-reel__line.is-family { color: #0e5e1d; }
.nnm-reel__line.is-climber { color: #a3141c; }
.nnm-reel__ico { width: 5.5cqw !important; }
.nnm-reel.is-spinning .nnm-reel__strip { filter: blur(1.6px); }
.nnm-reel__line.is-hit { color: #a3141c; transform: scale(1.18); }
.nnm-reel__line.is-hit span { background: radial-gradient(ellipse at center, rgba(255,230,120,.95), rgba(255,230,120,0) 70%); border-radius: 12px; animation: nnm-twinkle 1s ease-in-out infinite; }

.nnm-chips { list-style: none; margin: 12px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }
.nnm-chips li { display: inline-flex; align-items: center; gap: 6px; background: #f1fbf4; border: 2px solid #b8e3c3; border-radius: 999px; padding: 4px 8px 4px 10px; font-family: 'Mountains of Christmas', cursive; font-weight: 700; font-size: 1.3rem; color: #0e5e1d; }
.nnm-chips li img { width: 20px; }
.nnm-chips li.is-climber { background: #fff4f4; border-color: #f3c0c3; color: #a3141c; padding-right: 14px; }
.nnm-chips li.is-empty { font-family: 'Nunito', sans-serif; font-size: .95rem; font-weight: 600; background: none; border: 0; color: var(--nnm-muted); }

/* Dear Santa letter. */
.nnm-letter { position: absolute; inset: 0; display: flex; flex-direction: column; }
.nnm-letter__dear { font-family: 'Mountains of Christmas', cursive; font-weight: 700; font-size: 8cqw; color: #a3141c; margin: 0 0 1cqw; line-height: 1.1; }
.nnm-letter__list { list-style: none; margin: 0; padding: 0 1cqw 0 0; overflow-y: auto; flex: 1; scrollbar-width: thin; }
.nnm-letter__list li { display: flex; align-items: center; gap: 1.6cqw; padding: 1cqw 0; border-bottom: 1px dashed rgba(163,20,28,.25); font-family: 'Mountains of Christmas', cursive; font-weight: 700; font-size: 5.4cqw; line-height: 1.1; color: #1b3a8a; }
.nnm-letter__list li.is-empty { border: 0; font-family: 'Nunito', sans-serif; font-weight: 600; font-size: 3.6cqw; color: rgba(90,60,0,.7); }
.nnm-letter__list li.is-fav .nnm-letter__txt { color: #a3141c; }
.nnm-letter__ico { width: 4.4cqw !important; flex: none; }
.nnm-letter__txt { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.nnm-fav { background: none; border: 0; padding: 0; width: 6cqw; height: 6cqw; flex: none; opacity: .3; filter: grayscale(1); transition: opacity .2s, filter .2s; }
.nnm-fav img { width: 100% !important; }
.nnm-fav.on { opacity: 1; filter: drop-shadow(0 0 4px rgba(255,220,90,.9)); }
.nnm-letter__list .nnm-x { font-size: 5cqw; color: rgba(90,60,0,.55); }

.nnm-ideas { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; width: min(460px, 100%); }
.nnm-ideas__h { width: 100%; text-align: center; color: #fff; font-weight: 800; margin: 4px 0 0; text-shadow: 0 1px 3px rgba(0,0,0,.4); }
.nnm-idea { display: inline-flex; align-items: center; gap: 6px; border: 0; background: #fff; color: var(--nnm-ink); border-radius: 999px; padding: 7px 14px 7px 8px; font-weight: 800; box-shadow: 0 4px 0 #c9cde3; transition: transform .12s; }
.nnm-idea img { width: 20px; }
.nnm-idea:hover { transform: translateY(-2px) rotate(-2deg); }
.nnm-idea:active { transform: translateY(2px); box-shadow: 0 1px 0 #c9cde3; }
.nnm-send { width: min(520px, 100%) !important; margin: 0 !important; }
.nnm-sent { color: #fff; font-weight: 800; margin: 0; text-align: center; text-shadow: 0 1px 3px rgba(0,0,0,.5); min-height: 1.2em; }
.nnm-flytag { position: fixed; z-index: 100001; pointer-events: none; display: inline-flex; align-items: center; gap: 6px; background: #fffbe8; border: 2px solid var(--nnm-gold); color: #1b3a8a; border-radius: 999px; padding: 6px 14px 6px 8px; font-family: 'Mountains of Christmas', cursive; font-weight: 700; font-size: 1.3rem; box-shadow: 0 10px 24px rgba(0,0,0,.3); white-space: nowrap; }
.nnm-flytag img { width: 22px; }
button.nnm-dl { font: inherit; cursor: pointer; text-align: left; width: 100%; }
button.nnm-dl .nnm-avatar { --s: 34px; }

@keyframes nnm-check { 0%,100% { transform: rotate(-4deg) translateY(0) } 50% { transform: rotate(4deg) translateY(-4px) } }

@container nnm (max-width: 760px) {
  .nnm-game { grid-template-columns: 1fr; gap: 18px; }
  .nnm-santa { width: min(240px, 62%); margin-top: 64px; }
  .nnm-bubble { font-size: .9rem; }
  /* Phones: idea chips become one swipeable row so the letter stays close. */
  .nnm-ideas { flex-wrap: nowrap; overflow-x: auto; justify-content: flex-start; padding: 2px 2px 8px; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
  .nnm-ideas::-webkit-scrollbar { display: none; }
  .nnm-ideas__h { position: sticky; left: 0; width: auto; flex: none; margin: 0; align-self: center; font-size: .85rem; }
  .nnm-idea { flex: none; }
}

/* ================================================================ Home hub */
.nnm-home { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.3fr); gap: 28px; align-items: center; }
.nnm-home__side { display: grid; gap: 14px; justify-items: center; }
.nnm-home__side > .nnm-btn--big { width: min(420px, 100%); margin: 0; }
.nnm-home__main { display: grid; gap: 10px; }
.nnm-home__mtn { display: block; text-decoration: none !important; }
.nnm-home__cap { margin: 0; text-align: center; color: #dfe3ff; font-weight: 700; font-size: .95rem; }
.nnm-home { margin-top: 18px; }
.nnm-home .nnm-santa { width: min(260px, 70%); margin-top: 96px; }
.nnm-kids { display: grid; gap: 10px; width: min(440px, 100%); }
.nnm-kid { display: flex; gap: 12px; align-items: center; background: rgba(255,255,255,.96); border-radius: 18px; padding: 10px 14px 10px 10px; box-shadow: 0 8px 20px rgba(0,0,0,.25); }
.nnm-kid__body { flex: 1; min-width: 0; display: grid; gap: 4px; }
.nnm-kid__body strong { font-family: 'Mountains of Christmas', cursive; font-size: 1.5rem; line-height: 1; color: var(--nnm-red); }
.nnm-kid .nnm-meter { margin: 2px 0; }
.nnm-kid__btns { display: flex; gap: 6px; flex-wrap: wrap; }
.nnm-btn--sm { padding: 6px 12px; font-size: .85rem; box-shadow: 0 3px 0 rgba(0,0,0,.2); }
.nnm-btn--ghost.nnm-btn--sm { padding: 4px 10px; }
.nnm-kid--add { justify-content: center; border: 3px dashed rgba(255,255,255,.7); background: rgba(255,255,255,.12); color: #fff; font: inherit; font-weight: 800; cursor: pointer; box-shadow: none; padding: 14px; }
.nnm-kid--add:hover { background: rgba(255,255,255,.22); }

.nnm-how2 { display: grid; gap: 16px; }
.nnm-how2__h { font-family: 'Mountains of Christmas', cursive; font-weight: 700; font-size: clamp(1.7rem, 3.4vw, 2.4rem); color: var(--nnm-red); text-align: center; margin: 6px 0 0; }
.nnm-how2__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.nnm-step { text-align: center; display: grid; gap: 8px; justify-items: center; align-content: start; padding-top: 34px; }
.nnm-step__n { position: absolute; left: 16px; top: 16px; width: 34px; height: 34px; border-radius: 50%; background: var(--nnm-blue); color: #fff; font-weight: 800; display: grid; place-items: center; }
.nnm-step__ico { width: 64px; animation: nnm-bob 3s ease-in-out infinite; }
.nnm-step:nth-child(2) .nnm-step__ico { animation-delay: -1s; }
.nnm-step:nth-child(3) .nnm-step__ico { animation-delay: -2s; }
.nnm-step h3 { font-family: 'Mountains of Christmas', cursive; font-size: 1.6rem; color: var(--nnm-green); margin: 0; }
.nnm-step p { margin: 0; color: var(--nnm-muted); }
.nnm-step .nnm-btn { margin-top: 6px; }

/* Her holiday tree with blinking ornaments. */
.nnm-treebox { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.4fr); border-radius: var(--nnm-radius); overflow: hidden; box-shadow: 0 10px 30px rgba(26,13,134,.14); background: #fff; }
.nnm-treebox__panel { background: #0e8f00; color: #fff; padding: 28px 26px; }
.nnm-treebox__panel h2 { font-family: 'Mountains of Christmas', cursive; font-weight: 700; font-size: 2.2rem; line-height: 1.05; margin: 0 0 10px; color: #fff; text-align: center; }
.nnm-treebox__panel p { margin: 0 0 14px; }
.nnm-tree__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.nnm-tree__list a { display: flex; align-items: center; gap: 10px; color: #fff !important; text-decoration: none !important; font-weight: 700; padding: 6px 8px; border-radius: 10px; transition: background .15s, transform .15s; }
.nnm-tree__list a:hover, .nnm-tree__list a:focus-visible { background: rgba(255,255,255,.16); transform: translateX(4px); }
.nnm-tree__list a > span:nth-child(2) { flex: 1; }
.nnm-tree__go { font-size: 1.4rem; line-height: 1; opacity: .6; transition: transform .15s, opacity .15s; }
.nnm-tree__list li.is-lit a, .nnm-tree__list a:hover { background: rgba(255,255,255,.18); transform: translateX(4px); }
.nnm-tree__list li.is-lit .nnm-tree__go { opacity: 1; transform: translateX(3px); }
.nnm-tree__list li.is-unset a { opacity: .7; }
.nnm-tree__list em { font-style: normal; font-size: .72rem; font-weight: 800; background: rgba(0,0,0,.25); border-radius: 999px; padding: 2px 8px; }
.nnm-tree__admin { margin: 14px 0 0 !important; font-size: .85rem; background: rgba(0,0,0,.2); border-radius: 10px; padding: 8px 10px; }
.nnm-tree__admin a { color: #fff !important; font-weight: 800; }
.nnm-orn.is-unset { opacity: .55; animation: none; }
.nnm-orn-dot { width: 16px; height: 16px; border-radius: 50%; flex: none; box-shadow: 0 0 0 2px rgba(255,255,255,.6); }
.nnm-treebox__tree { display: grid; place-items: center; padding: 18px; }
.nnm-tree { position: relative; width: min(460px, 100%); aspect-ratio: 5 / 6; }
.nnm-tree__art { position: absolute; inset: 0; width: 100% !important; height: 100% !important; object-fit: contain; }
.nnm-tree--bare { background: radial-gradient(ellipse at 50% 60%, #eef3ff, #fff 70%); border-radius: 16px; }
.nnm-tree__topper { position: absolute; left: 50%; top: 6%; width: 18% !important; transform: translateX(-50%); animation: nnm-twinkle 2s ease-in-out infinite; }
.nnm-orn { --c1: #ff5a5a; --c2: #b50d16; position: absolute; width: 9%; aspect-ratio: 1; transform: translate(-50%, -50%); border-radius: 50%; background: radial-gradient(circle at 32% 30%, #fff 0 8%, var(--c1) 22%, var(--c2) 78%); box-shadow: 0 3px 8px rgba(0,0,0,.35), 0 0 0 0 var(--c1); animation: nnm-blink 2.4s ease-in-out infinite; text-decoration: none !important; z-index: 2; transition: transform .2s; }
.nnm-orn::before { content: ''; position: absolute; left: 50%; top: -14%; width: 30%; height: 18%; transform: translateX(-50%); background: linear-gradient(#f6d77a, #b88a1c); border-radius: 3px 3px 1px 1px; }
.nnm-orn--blue { --c1: #6fb6ff; --c2: #1146a8; }
.nnm-orn--gold { --c1: #ffe07a; --c2: #c98d00; }
.nnm-orn--green { --c1: #7fe07a; --c2: #12761c; }
.nnm-orn-dot.nnm-orn--red { background: #e8323c; } .nnm-orn-dot.nnm-orn--blue { background: #2f7de0; } .nnm-orn-dot.nnm-orn--gold { background: #f2b822; } .nnm-orn-dot.nnm-orn--green { background: #3cbf3a; }
.nnm-orn:hover, .nnm-orn:focus-visible, .nnm-orn.is-lit { transform: translate(-50%, -50%) scale(1.35); animation: none; box-shadow: 0 0 0 6px rgba(255,255,255,.7), 0 0 26px 8px var(--c1); z-index: 3; }
.nnm-orn__tag { position: absolute; left: 50%; top: 115%; transform: translateX(-50%) translateY(-4px); background: #fff; color: var(--nnm-ink); font-weight: 800; font-size: 13px; padding: 4px 10px; border-radius: 999px; white-space: nowrap; box-shadow: var(--nnm-shadow); opacity: 0; pointer-events: none; transition: .2s; }
.nnm-orn:hover .nnm-orn__tag, .nnm-orn:focus-visible .nnm-orn__tag, .nnm-orn.is-lit .nnm-orn__tag { opacity: 1; transform: translateX(-50%); }
@keyframes nnm-blink { 0%,100% { box-shadow: 0 3px 8px rgba(0,0,0,.35), 0 0 0 0 var(--c1); filter: brightness(1); } 50% { box-shadow: 0 3px 8px rgba(0,0,0,.35), 0 0 18px 6px var(--c1); filter: brightness(1.3); } }

@container nnm (max-width: 860px) {
  .nnm-home { grid-template-columns: 1fr; }
  /* Signed out on a phone: the sign-in card comes first, Santa cheers underneath. */
  .nnm-home--out .nnm-home__main { order: -1; }
  .nnm-home--out .nnm-santa { width: min(200px, 55%); margin-top: 70px; }
  .nnm-how2__grid { grid-template-columns: 1fr; }
  .nnm-treebox { grid-template-columns: 1fr; }
  .nnm-treebox__tree { order: -1; }
  .nnm-orn__tag { display: none; }
}

/* ================================================================ Join flow */
.nnm-join { width: min(520px, 100%); }
.nnm-join__form { display: grid; gap: 14px; justify-items: center; width: 100%; }
.nnm-join__card { justify-items: stretch; }
.nnm-join__card .nnm-title { text-align: center; }
.nnm-join__back { color: #dfe3ff !important; justify-self: center; }
.nnm-join__card .nnm-join__back { color: var(--nnm-blue) !important; }
.nnm-join__err { display: flex; align-items: center; gap: 10px; background: #fff; border-radius: 14px; padding: 10px 14px; box-shadow: 0 6px 16px rgba(0,0,0,.25); color: var(--nnm-red-dk); text-align: left; width: min(440px, 100%); }
.nnm-join__err:empty { display: none; }
.nnm-join__grem { width: 44px; flex: none; }
.nnm-join__ok { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 0; font-weight: 800; color: var(--nnm-green); }
.nnm-join__ok img { width: 26px; }
.nnm-join__ok code { background: #f1fbf4; border: 2px dashed #b8e3c3; border-radius: 8px; padding: 2px 8px; color: var(--nnm-green); }
.nnm-join__help p { margin: 0 0 8px; }

.nnm-choices { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; width: 100%; }
.nnm-choice { display: grid; gap: 8px; justify-items: center; align-content: center; text-align: center; border: 0; border-radius: 22px; padding: 30px 18px; min-height: 260px; background: #fff; color: var(--nnm-ink); box-shadow: 0 6px 0 #c9cde3, 0 16px 30px rgba(0,0,0,.3); transition: transform .15s; font: inherit; cursor: pointer; }
.nnm-choice:hover:not(:disabled) { transform: translateY(-4px) rotate(-1deg); }
.nnm-choice:active:not(:disabled) { transform: translateY(3px); box-shadow: 0 2px 0 #c9cde3; }
.nnm-choice:disabled { opacity: .6; cursor: default; }
.nnm-choice strong { font-family: 'Mountains of Christmas', cursive; font-size: 1.6rem; line-height: 1.05; color: var(--nnm-red); }
.nnm-choice span { color: var(--nnm-muted); font-weight: 700; font-size: .92rem; }
.nnm-choice--code { background: linear-gradient(180deg, #fff, #eef4ff); }
.nnm-choice__gift { width: 130px !important; animation: nnm-bob 2.4s ease-in-out infinite; filter: drop-shadow(0 8px 10px rgba(0,0,0,.25)); }
.nnm-choice__price { width: 110px; height: 110px; border-radius: 50%; display: grid !important; place-items: center; background: linear-gradient(180deg, #ffe07a, var(--nnm-gold)); color: #5a3b00 !important; font-size: 2.2rem !important; font-weight: 800 !important; box-shadow: 0 6px 0 var(--nnm-gold-dk); animation: nnm-bob 2.4s ease-in-out -1.2s infinite; }

/* The gift and its tag. */
.nnm-gift { position: relative; width: 190px; height: 190px; display: grid; place-items: center; }
.nnm-gift__glow { pointer-events: none; position: absolute; inset: -20%; border-radius: 50%; background: radial-gradient(circle, rgba(255,240,170,.75), rgba(255,240,170,0) 65%); animation: nnm-twinkle 2.2s ease-in-out infinite; }
.nnm-gift__box { position: relative; width: 170px !important; filter: drop-shadow(0 12px 14px rgba(0,0,0,.35)); transform-origin: 50% 85%; }
.nnm-gift__box--wait { width: 130px !important; animation: nnm-check .5s ease-in-out infinite; }
.nnm-gift.is-open .nnm-gift__glow { inset: -60%; background: radial-gradient(circle, rgba(255,250,210,1), rgba(255,240,170,0) 60%); animation: nnm-twinkle .5s ease-in-out infinite; }
.nnm-tag { position: relative; width: min(420px, 100%); background: #fffbe8; border-radius: 10px 30px 30px 10px; padding: 14px 18px 16px 46px; box-shadow: 0 10px 24px rgba(0,0,0,.3); transform: rotate(-2deg); border: 3px solid var(--nnm-gold); }
.nnm-tag__hole { position: absolute; left: 14px; top: 50%; width: 18px; height: 18px; border-radius: 50%; transform: translateY(-50%); background: var(--nnm-night); box-shadow: inset 0 0 0 3px var(--nnm-gold); }
.nnm-tag__to { display: block; font-family: 'Mountains of Christmas', cursive; font-weight: 700; font-size: 1.1rem; color: var(--nnm-red); margin-bottom: 4px; }
.nnm-root .nnm-tag__input { width: 100%; border: 0 !important; border-bottom: 3px dashed #d9c27a !important; border-radius: 0 !important; background: transparent !important; box-shadow: none !important; font-family: 'Courier New', ui-monospace, monospace !important; font-weight: 800 !important; font-size: 1.7rem !important; letter-spacing: .18em; text-align: center; color: #1b3a8a !important; padding: 6px 4px !important; text-transform: uppercase; }
.nnm-root .nnm-tag__input::placeholder { color: #c9b98a; letter-spacing: .12em; }
.nnm-sleigh img { width: 40px; margin: 0 6px; animation: nnm-bob 2.4s ease-in-out infinite; }
.nnm-sleigh img:nth-child(2) { animation-delay: -.8s; }
.nnm-sleigh img:nth-child(3) { animation-delay: -1.6s; }
.nnm-join__welcome .nnm-title--xl { color: var(--nnm-green); }

@container nnm (max-width: 560px) {
  .nnm-choices { grid-template-columns: 1fr; }
  .nnm-choice { grid-template-columns: auto 1fr; justify-items: start; text-align: left; padding: 14px; column-gap: 14px; }
  .nnm-choice > :first-child { grid-row: span 2; width: 74px !important; height: 74px; font-size: 1.5rem !important; }
  .nnm-gift { width: 150px; height: 150px; }
  .nnm-gift__box { width: 135px !important; }
}

.nnm-home--out { align-items: start; }
.nnm-auth2 { width: min(520px, 100%); justify-self: center; padding-top: 18px; }
.nnm-auth2__tabs { display: flex !important; margin: 4px auto 14px; width: max-content; max-width: 100%; }
.nnm-auth2__tabs[hidden] { display: none !important; }
.nnm-auth2 .nnm-title { text-align: center; }
.nnm-auth2__links { display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.nnm-check { display: flex; align-items: center; gap: 8px; font-weight: 700; color: var(--nnm-muted); cursor: pointer; }
.nnm-check input { width: 20px; height: 20px; accent-color: var(--nnm-green); }
.nnm-auth2--join { background: transparent; box-shadow: none; padding: 18px 0 0; overflow: visible; }
.nnm-auth2--join::before { display: none; }
.nnm-auth2--join .nnm-auth2__tabs { background: rgba(255,255,255,.9); }
.nnm-join--embed { width: 100%; }

/* =========================================================== Sign-in card */
.nnm-auth2--signin { background: none; box-shadow: none; padding: 0; overflow: visible; width: min(460px, 100%); }
.nnm-auth2--signin::before { display: none; }
.nnm-signin { position: relative; margin-top: 54px; border-radius: 26px; padding: 10px; background: var(--nnm-stripes); box-shadow: 0 22px 50px rgba(5,3,40,.5); }
.nnm-signin > *:not(.nnm-signin__gift) { position: relative; }
.nnm-signin::after { content: ''; position: absolute; inset: 10px; border-radius: 18px; background: linear-gradient(180deg, #fff 0%, #fffaf0 100%); }
.nnm-signin > * { position: relative; z-index: 1; }
.nnm-signin__gift { position: absolute !important; left: 50%; top: -58px; width: 108px; transform: translateX(-50%); z-index: 2 !important; filter: drop-shadow(0 10px 12px rgba(0,0,0,.35)); }
.nnm-signin__gift img { width: 100% !important; animation: nnm-bob 2.6s ease-in-out infinite; }
.nnm-signin.is-open .nnm-signin__gift img, .is-open .nnm-signin__gift img { animation: nnm-spin-pop .8s ease-out reverse; }
.nnm-signin__h { font-family: 'Mountains of Christmas', cursive; font-weight: 700; font-size: 2.6rem; line-height: 1; color: var(--nnm-red); text-align: center; margin: 58px 0 4px; }
.nnm-signin__sub { text-align: center; margin: 0 0 18px; color: var(--nnm-muted); font-weight: 700; }
.nnm-signin__form { display: grid; gap: 12px; padding: 0 22px; }
.nnm-ifield { position: relative; display: flex; align-items: center; background: #fff; border: 2px solid #e2e5f2; border-radius: 16px; padding: 0 12px 0 10px; transition: border-color .15s, box-shadow .15s; }
.nnm-ifield:focus-within { border-color: var(--nnm-green); box-shadow: 0 0 0 4px rgba(31,122,53,.14); }
.nnm-ifield__ico { width: 26px !important; flex: none; margin-right: 8px; transition: transform .3s; }
.nnm-ifield:focus-within .nnm-ifield__ico { transform: scale(1.2) rotate(-12deg); }
.nnm-root .nnm-ifield input { border: 0 !important; box-shadow: none !important; background: transparent !important; padding: 15px 4px !important; font-size: 1.05rem; flex: 1; min-width: 0; }
.nnm-ifield__eye { border: 0; background: #f1f3fa; border-radius: 999px; padding: 4px 10px; font-weight: 800; font-size: .78rem; color: var(--nnm-muted); }
.nnm-signin__row { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; font-size: .95rem; }
.nnm-signin__row .nnm-check { font-weight: 700; }
.nnm-signin__go { margin: 4px 0 0 !important; font-size: 1.15rem !important; }
.nnm-signin__form .nnm-err { text-align: center; margin: 0; }
.nnm-signin__new { padding: 18px 22px 24px; }
.nnm-signin__or { display: flex; align-items: center; gap: 10px; margin: 0 0 12px; color: var(--nnm-muted); font-weight: 800; font-size: .9rem; }
.nnm-signin__or::before, .nnm-signin__or::after { content: ''; flex: 1; border-top: 2px dashed #e3d9bd; }
.nnm-signin__opts { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.nnm-pill { display: inline-flex; align-items: center; gap: 8px; border: 2px solid #b8e3c3; background: #f1fbf4; color: var(--nnm-green); border-radius: 999px; padding: 6px 16px 6px 6px; font-weight: 800; cursor: pointer; transition: transform .12s, background .12s; }
.nnm-pill img { width: 32px !important; }
.nnm-pill:hover { transform: translateY(-2px); background: #e4f7ea; }
.nnm-pill--gold { border-color: #f0d27a; background: #fff8df; color: #7a5200; padding-left: 6px; }
.nnm-pill--gold b { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: linear-gradient(180deg, #ffe07a, var(--nnm-gold)); font-size: .78rem; }
.nnm-auth2__back { display: block; position: relative; z-index: 3; margin: 0 auto 10px; color: #dfe3ff !important; }
.nnm-row--cs { display: grid; grid-template-columns: 1fr 150px; gap: 10px; }
.nnm-row--cs select { width: 100%; }
.nnm-row--names { grid-template-columns: 1fr 1fr; }
@container nnm (max-width: 420px) { .nnm-row--cs { grid-template-columns: 1fr; } }

/* ------------------------------------------------------ phone dock */
.nnm-dock { display: none; }

/* ------------------------------------------------------------ phones */
@container nnm (max-width: 640px) {
  .nnm-bar { padding: 16px 14px 12px; border-radius: 16px; }
  .nnm-bar__row { align-items: flex-start; }
  .nnm-bar__star { display: none; }
  .nnm-root .nnm-bar__h { font-size: 1.75rem; overflow-wrap: anywhere; }
  .nnm-bar__title { flex: 1; }
  .nnm-bar__sub { font-size: .82rem; }
  .nnm-countdown { flex-direction: column; gap: 0; padding: 5px 10px; text-align: center; border-radius: 12px; }
  .nnm-countdown b { font-size: 1.4rem; }
  .nnm-countdown span { font-size: .6rem; }
  .nnm-countdown i { display: none; }
  .nnm-climber-tab { padding-right: 12px; }
  .nnm-cp__label { display: none; }
  .nnm-card { padding: 22px 16px 16px; }
  .nnm-status > .nnm-btn--pulse { display: none; } /* The dock carries it. */
}
@media (max-width: 640px) {
  .nnm-scene { padding: 16px 0 54px; }
  .nnm-wrap { padding: 0 12px; gap: 14px; }
  .nnm-scene .nnm-stage { margin: 0 -10px; width: calc(100% + 20px); }
  .nnm-lower { padding-bottom: 96px; }
  .nnm-dock { display: block; position: fixed; left: 0; right: 0; bottom: 0; z-index: 9990; padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); background: linear-gradient(transparent, rgba(13,11,74,.35) 40%); }
  .nnm-dock .nnm-btn { width: 100%; font-size: 1.05rem; padding: 12px 16px; box-shadow: 0 4px 0 var(--nnm-red-dk), 0 10px 24px rgba(0,0,0,.3); }
  .nnm-dock .nnm-avatar { margin-left: -4px; }
}
