/* Claude did this for Glen on 2026-10-13 at 09:45 MDT */

/* ==========================================================================
   Extras: footer horizon, easter eggs ("delight"), investing page, toolkit
   ========================================================================== */

/* ---------- Footer horizon: scroll-linked Utah sunset ---------- */
.horizon { height: clamp(90px, 12vw, 170px); margin-top: -4rem; margin-bottom: 2.5rem; --dusk: 0; }
.horizon svg { width: 100%; height: 100%; display: block; }
.horizon .sky-top { stop-color: #24221f; }
.horizon .sky-bottom { stop-color: color-mix(in srgb, #c98a52 calc((1 - var(--dusk)) * 100%), #24221f); }
.horizon .sun {
  fill: #e9b77a; transform: translateY(calc(var(--dusk) * 70px)); transform-box: fill-box;
  opacity: calc(1 - var(--dusk) * 0.9);
}
.horizon .stars circle { fill: #f1e8da; opacity: calc(var(--dusk) * 0.9); }
.horizon .ridge--back { fill: #3a3631; }
.horizon .ridge--front { fill: #24221f; }
.horizon .houses path { fill: #24221f; }
.horizon .window { fill: #f3c77d; opacity: calc(var(--dusk)); cursor: pointer; transition: opacity 0.4s; }
.horizon .window.is-off { opacity: 0.08; }
@supports not (color: color-mix(in srgb, red, blue)) {
  .horizon .sky-bottom { stop-color: #5a4635; }
}

/* ---------- Toasts ---------- */
.toast-stack { position: fixed; left: 50%; bottom: 1.5rem; transform: translateX(-50%); z-index: 90; display: grid; gap: 0.6rem; width: min(92vw, 420px); pointer-events: none; }
.toast {
  pointer-events: auto; background: var(--charcoal); color: var(--cream); border-radius: 16px;
  padding: 0.95rem 1.2rem; box-shadow: var(--shadow-soft); font-size: 0.95rem; line-height: 1.45;
  display: flex; gap: 0.8rem; align-items: center;
  animation: toast-in 0.5s var(--ease-bounce) both;
}
.toast a { color: var(--sand); font-weight: 700; }
.toast__emoji { font-size: 1.5rem; flex: none; }
.toast.is-leaving { animation: toast-out 0.35s var(--ease) forwards; }
@keyframes toast-in { from { opacity: 0; transform: translateY(20px) scale(0.96); } }
@keyframes toast-out { to { opacity: 0; transform: translateY(12px); } }
@media (max-width: 720px) { .toast-stack { bottom: 5.5rem; } }

/* ---------- Confetti (tiny houses, keys, hearts) ---------- */
.confetti-layer { position: fixed; inset: 0; pointer-events: none; z-index: 95; overflow: hidden; }
.confetti {
  position: absolute; top: -40px; font-size: var(--size, 22px); line-height: 1;
  animation: confetti-fall var(--dur, 2.8s) var(--ease) forwards;
  animation-delay: var(--delay, 0s);
}
@keyframes confetti-fall {
  0% { transform: translate3d(0, 0, 0) rotate(0deg); opacity: 1; }
  100% { transform: translate3d(var(--drift, 0px), 110vh, 0) rotate(var(--spin, 360deg)); opacity: 0.9; }
}

/* ---------- SOLD sign drop (Konami / type "sold") ---------- */
.sold-sign {
  position: fixed; top: 0; left: 50%; z-index: 96; pointer-events: none;
  transform-origin: 50% 0; animation: sign-drop 1.1s var(--ease-bounce) both, sign-swing 2.4s 1.1s ease-in-out 2 alternate;
  margin-left: -110px; width: 220px;
}
.sold-sign.is-leaving { animation: sign-up 0.6s var(--ease) forwards; }
.sold-sign__chains { display: flex; justify-content: space-between; padding-inline: 40px; height: 90px; }
.sold-sign__chains span { width: 2px; background: repeating-linear-gradient(var(--taupe) 0 6px, transparent 6px 9px); }
.sold-sign__board {
  background: var(--white); border: 6px solid var(--charcoal); border-radius: 10px; text-align: center;
  padding: 0.8rem 0.6rem; box-shadow: var(--shadow-soft);
}
.sold-sign__board strong { display: block; font-family: var(--font-display); font-size: 3rem; line-height: 1; color: #b4553f; letter-spacing: 0.06em; }
.sold-sign__board span { font-size: 0.72rem; letter-spacing: 0.2em; text-transform: uppercase; font-weight: 700; }
@keyframes sign-drop { from { transform: translateY(-110%); } }
@keyframes sign-swing { from { transform: rotate(-4deg); } to { transform: rotate(4deg); } }
@keyframes sign-up { to { transform: translateY(-120%); } }

/* ---------- Logo: roof lift + floating hearts ---------- */
.brand__roof { transition: transform 0.4s var(--ease-bounce); transform-box: fill-box; transform-origin: 50% 100%; }
.brand:hover .brand__roof { transform: translateY(-2px); }
.brand.is-celebrating .brand__roof { animation: roof-hop 0.6s var(--ease-bounce) 3; }
@keyframes roof-hop { 50% { transform: translateY(-6px) rotate(-6deg); } }
.float-heart {
  position: fixed; z-index: 97; pointer-events: none; font-size: 20px;
  animation: heart-rise 1.8s var(--ease) forwards; animation-delay: var(--delay, 0s);
}
@keyframes heart-rise {
  0% { opacity: 0; transform: translate(0, 0) scale(0.4); }
  20% { opacity: 1; transform: translate(calc(var(--dx) * 0.3), -20px) scale(1); }
  100% { opacity: 0; transform: translate(var(--dx), -120px) scale(0.9); }
}

/* ---------- Drainage card: rain on hover ---------- */
.pitfall .raindrop {
  position: absolute; top: -12px; width: 2px; height: 12px; border-radius: 2px;
  background: linear-gradient(transparent, var(--sage)); opacity: 0.7; pointer-events: none;
  animation: rain var(--dur, 0.9s) linear infinite; animation-delay: var(--delay, 0s);
}
@keyframes rain { to { transform: translateY(420px); } }

/* ---------- Flip card: peel-back reveal ---------- */
.pitfall[data-egg="flip"] { cursor: pointer; }
.peel {
  position: absolute; inset: 0; background: var(--charcoal); color: var(--linen);
  padding: 2rem 1.8rem; display: flex; flex-direction: column; justify-content: center; gap: 0.6rem;
  clip-path: circle(0% at 100% 0%); transition: clip-path 0.7s var(--ease); z-index: 2;
}
.peel h4 { font-size: 1.4rem; color: var(--white); margin: 0; }
.peel p { color: rgba(241, 232, 218, 0.85) !important; margin: 0; font-size: 0.95rem; }
.peel small { color: var(--bronze); letter-spacing: 0.16em; text-transform: uppercase; font-weight: 700; font-size: 0.7rem; }
.pitfall.is-peeled .peel { clip-path: circle(150% at 100% 0%); }
.pitfall[data-egg="flip"]::after {
  content: ""; position: absolute; top: 0; right: 0; width: 34px; height: 34px; z-index: 1;
  background: linear-gradient(225deg, var(--cream) 50%, var(--sand) 50%); box-shadow: -2px 2px 6px rgba(0,0,0,0.08);
  border-bottom-left-radius: 8px; transition: width 0.3s var(--ease), height 0.3s var(--ease);
}
.pitfall[data-egg="flip"]:hover::after { width: 46px; height: 46px; }

/* ---------- Layout card: mini floor plan doodle ---------- */
.pitfall[data-egg="layout"] .pitfall__icon svg path, .pitfall[data-egg="layout"] .pitfall__icon svg rect {
  stroke-dasharray: 80; stroke-dashoffset: 0;
}
.pitfall[data-egg="layout"]:hover .pitfall__icon svg * { animation: draw 1.2s var(--ease) both; }
@keyframes draw { from { stroke-dashoffset: 80; } }

/* ---------- "Hablo español" shimmer ---------- */
[data-egg="hablo"] { cursor: help; position: relative; display: inline-block; min-width: 8.2em; transition: opacity 0.25s; }
[data-egg="hablo"].is-swapping { opacity: 0; }

/* ---------- Portrait wink: 4 hearts ---------- */
.arch[data-egg="portrait"] { cursor: pointer; transition: transform 0.5s var(--ease-bounce); }
.arch[data-egg="portrait"]:hover { transform: rotate(-1.2deg) scale(1.01); }

/* ---------- Step 4 SOLD stamp ---------- */
.step__dot[data-egg="sold"] { cursor: pointer; transition: transform 0.3s var(--ease-bounce); }
.step__dot[data-egg="sold"]:hover { transform: scale(1.08) rotate(-6deg); }
.step__dot.is-sold { background: #b4553f; color: var(--white); border-color: #b4553f; font-size: 0.72rem; letter-spacing: 0.1em; font-family: var(--font-body); font-weight: 800; animation: stamp 0.45s var(--ease-bounce); }
@keyframes stamp { from { transform: scale(2.2) rotate(-18deg); opacity: 0; } }

/* ---------- Timp "sleeping lady" zzz ---------- */
.zzz { position: absolute; z-index: 3; font-family: var(--font-display); color: var(--white); font-size: 1.6rem; pointer-events: none; animation: zzz 2.6s var(--ease) forwards; animation-delay: var(--delay, 0s); opacity: 0; }
@keyframes zzz { 0% { opacity: 0; transform: translate(0, 0) scale(0.6); } 25% { opacity: 1; } 100% { opacity: 0; transform: translate(40px, -110px) scale(1.3); } }

/* ---------- Submit button key turn ---------- */
.form__submit.is-sending svg { animation: key-turn 0.8s var(--ease) infinite alternate; }
@keyframes key-turn { to { transform: rotate(-90deg); } }

/* ---------- Easter-egg hint ---------- */
.egg-hint { display: block; margin-top: 0.6rem; font-style: italic; }

/* ==========================================================================
   Sub-page layout (investing / toolkit)
   ========================================================================== */
.page-intro { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr); gap: clamp(2rem, 6vw, 5rem); align-items: start; }
.page-intro aside {
  background: var(--white); border-radius: var(--radius-lg); padding: 2rem; box-shadow: var(--shadow-card);
  position: sticky; top: 7rem;
}
.page-intro aside h3 { font-size: 1.4rem; }
.check-list { display: grid; gap: 0.8rem; }
.check-list li { display: flex; gap: 0.7rem; align-items: flex-start; line-height: 1.5; }
.check-list svg { width: 20px; height: 20px; color: var(--sage-deep); flex: none; margin-top: 0.15rem; }
.prose { max-width: 68ch; }
.prose p { color: var(--charcoal-soft); }
.prose h3 { font-size: 1.6rem; margin-top: 2rem; }
@media (max-width: 900px) { .page-intro { grid-template-columns: 1fr; } .page-intro aside { position: static; } }

/* Two sides of the table */
.sides { display: grid; grid-template-columns: 1fr auto 1fr; gap: 1.4rem; align-items: stretch; }
.side { background: var(--cream); border: 1px solid var(--sand); border-radius: var(--radius-lg); padding: clamp(1.6rem, 3vw, 2.4rem); }
.side--dark { background: var(--charcoal); color: var(--linen); border-color: var(--charcoal); }
.side--dark .service__kicker { color: var(--bronze); }
.side h3 { font-size: 1.7rem; margin: 0.5rem 0 1rem; }
.side ul { display: grid; gap: 0.75rem; }
.side li { padding-left: 1.4rem; position: relative; font-size: 0.96rem; line-height: 1.5; }
.side li::before { content: "→"; position: absolute; left: 0; color: var(--bronze); }
.sides__amp {
  align-self: center; width: 64px; height: 64px; border-radius: 50%; display: grid; place-items: center;
  background: var(--bronze-deep); color: var(--white); font-family: var(--font-display); font-size: 1.8rem; font-style: italic;
  box-shadow: var(--shadow-soft);
}
@media (max-width: 860px) { .sides { grid-template-columns: 1fr; } .sides__amp { justify-self: center; } }

/* Strategy cards */
.strategy-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.2rem; }
.strategy { background: var(--white); border-radius: var(--radius); padding: 1.6rem; box-shadow: var(--shadow-card); }
.strategy h3 { font-size: 1.3rem; margin-bottom: 0.4rem; }
.strategy p { font-size: 0.93rem; color: var(--charcoal-soft); margin: 0; }
.strategy .pitfall__icon { width: 46px; height: 46px; margin-bottom: 1rem; }
@media (max-width: 980px) { .strategy-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .strategy-grid { grid-template-columns: 1fr; } }

/* ---------- Calculator ---------- */
.calc { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 0.9fr); gap: 0; background: var(--white); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-soft); }
.calc__inputs { padding: clamp(1.6rem, 4vw, 2.6rem); display: grid; grid-template-columns: 1fr 1fr; gap: 1rem 1.1rem; align-content: start; }
.calc__inputs h3 { grid-column: 1 / -1; font-size: 1.5rem; margin: 0; }
.calc__inputs .field input { padding-left: 1.8rem; }
.calc__inputs .field .unit { position: relative; }
.calc__inputs .field .unit::before { content: attr(data-unit); position: absolute; left: 0.85rem; top: 50%; transform: translateY(-50%); color: var(--taupe-deep); font-size: 0.95rem; pointer-events: none; }
.calc__inputs .field .unit--suffix input { padding-left: 1rem; padding-right: 2rem; }
.calc__inputs .field .unit--suffix::before { left: auto; right: 0.9rem; }
.calc__results { background: var(--charcoal); color: var(--linen); padding: clamp(1.6rem, 4vw, 2.6rem); display: flex; flex-direction: column; gap: 1.2rem; }
.calc__results h3 { color: var(--white); font-size: 1.5rem; margin: 0; }
.metric { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; border-bottom: 1px solid rgba(241, 232, 218, 0.12); padding-bottom: 0.9rem; }
.metric dt { font-size: 0.82rem; letter-spacing: 0.08em; text-transform: uppercase; opacity: 0.8; }
.metric dd { margin: 0; font-family: var(--font-display); font-size: clamp(1.4rem, 1.1rem + 1vw, 2rem); color: var(--white); font-variant-numeric: tabular-nums; transition: color 0.3s; }
.metric dd.is-good { color: #b9cfa3; }
.metric dd.is-bad { color: #e8a48f; }
.calc__verdict { background: rgba(241, 232, 218, 0.08); border-radius: 14px; padding: 1rem 1.1rem; font-size: 0.95rem; line-height: 1.5; }
.calc__verdict strong { color: var(--sand); }
.calc__fine { font-size: 0.75rem; opacity: 0.7; margin: 0; }
@media (max-width: 900px) { .calc { grid-template-columns: 1fr; } }
@media (max-width: 520px) { .calc__inputs { grid-template-columns: 1fr; } }

/* ---------- Case-study slots (render only when populated) ---------- */
.cases { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.4rem; }
.case { background: var(--white); border-radius: var(--radius); padding: 1.8rem; box-shadow: var(--shadow-card); }
.case h3 { font-size: 1.35rem; }
.case dl { display: grid; grid-template-columns: auto 1fr; gap: 0.3rem 1rem; font-size: 0.9rem; margin: 1rem 0 0; }
.case dt { color: var(--taupe-deep); font-weight: 700; }
.case dd { margin: 0; }

/* ---------- Toolkit: Flip detector quiz ---------- */
.quiz { background: var(--white); border-radius: var(--radius-lg); box-shadow: var(--shadow-soft); padding: clamp(1.6rem, 4vw, 2.8rem); max-width: 860px; margin-inline: auto; }
.quiz__progress { height: 6px; border-radius: 99px; background: var(--sand); overflow: hidden; margin-bottom: 1.6rem; }
.quiz__progress span { display: block; height: 100%; width: 0; background: linear-gradient(90deg, var(--sage), var(--bronze)); transition: width 0.4s var(--ease); }
.quiz__q { font-family: var(--font-display); font-size: clamp(1.3rem, 1.1rem + 0.8vw, 1.8rem); line-height: 1.3; margin-bottom: 0.4rem; min-height: 2.6em; }
.quiz__why { color: var(--charcoal-soft); font-size: 0.95rem; min-height: 3em; }
.quiz__answers { display: flex; gap: 0.8rem; flex-wrap: wrap; margin-top: 1rem; }
.quiz__answers .btn { min-width: 9rem; }
.quiz__count { font-size: 0.78rem; letter-spacing: 0.16em; text-transform: uppercase; font-weight: 700; color: var(--taupe-deep); }
.quiz__result { text-align: center; }
.quiz__result .gauge { width: min(260px, 70vw); margin: 0 auto 1rem; }
.quiz__result h3 { font-size: clamp(1.7rem, 1.4rem + 1.2vw, 2.4rem); }
.quiz__result p { color: var(--charcoal-soft); max-width: 56ch; margin-inline: auto; }
.gauge__track { fill: none; stroke: var(--sand); stroke-width: 14; stroke-linecap: round; }
.gauge__fill { fill: none; stroke-width: 14; stroke-linecap: round; transition: stroke-dashoffset 1.2s var(--ease), stroke 0.4s; }
.gauge__label { font-family: var(--font-display); font-size: 34px; fill: var(--charcoal); }

/* ---------- Toolkit: walkthrough checklist ---------- */
.checklist { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.4rem; }
.checklist__group { background: var(--white); border-radius: var(--radius); padding: 1.6rem 1.8rem; box-shadow: var(--shadow-card); break-inside: avoid; }
.checklist__group h3 { font-size: 1.35rem; display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; }
.checklist__group h3 small { font-family: var(--font-body); font-size: 0.75rem; color: var(--taupe-deep); font-weight: 700; letter-spacing: 0.08em; }
.checklist label { display: flex; gap: 0.75rem; align-items: flex-start; padding: 0.45rem 0; cursor: pointer; font-size: 0.95rem; line-height: 1.45; }
.checklist input[type="checkbox"] {
  appearance: none; -webkit-appearance: none; width: 20px; height: 20px; flex: none; margin-top: 0.1rem;
  border: 1.5px solid var(--taupe); border-radius: 6px; display: grid; place-items: center; background: var(--white); cursor: pointer;
  transition: background-color 0.2s, border-color 0.2s;
}
.checklist input[type="checkbox"]::after { content: ""; width: 10px; height: 6px; border-left: 2px solid var(--white); border-bottom: 2px solid var(--white); transform: rotate(-45deg) scale(0); margin-top: -2px; transition: transform 0.2s var(--ease-bounce); }
.checklist input[type="checkbox"]:checked { background: var(--sage-deep); border-color: var(--sage-deep); }
.checklist input[type="checkbox"]:checked::after { transform: rotate(-45deg) scale(1); }
.checklist input:checked + span { color: var(--taupe-deep); text-decoration: line-through; text-decoration-color: var(--sage); }
.checklist-bar { display: flex; flex-wrap: wrap; gap: 0.8rem; align-items: center; justify-content: space-between; margin-bottom: 1.6rem; }
.checklist-bar__progress { font-weight: 600; }
@media (max-width: 760px) { .checklist { grid-template-columns: 1fr; } }

/* ---------- Toolkit: Utah facts + deadlines ---------- */
.facts-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.4rem; }
.fact-card { background: var(--cream); border: 1px solid var(--sand); border-radius: var(--radius); padding: 1.8rem; }
.fact-card h3 { font-size: 1.4rem; }
.fact-card p { color: var(--charcoal-soft); font-size: 0.96rem; }
.fact-card .source { font-size: 0.8rem; margin: 0; }
.fact-card .source a { color: var(--bronze-deep); }
@media (max-width: 760px) { .facts-grid { grid-template-columns: 1fr; } }

.timeline { position: relative; display: grid; gap: 1.2rem; max-width: 820px; margin-inline: auto; padding-left: 2.4rem; }
.timeline::before { content: ""; position: absolute; left: 11px; top: 6px; bottom: 6px; width: 2px; background: linear-gradient(var(--sage), var(--bronze)); border-radius: 2px; }
.timeline li { position: relative; background: var(--white); border-radius: var(--radius); padding: 1.3rem 1.5rem; box-shadow: var(--shadow-card); }
.timeline li::before { content: ""; position: absolute; left: -2.4rem; top: 1.5rem; width: 24px; height: 24px; border-radius: 50%; background: var(--cream); border: 2px solid var(--bronze); transform: translateX(-1px); }
.timeline h3 { font-size: 1.25rem; margin-bottom: 0.3rem; }
.timeline p { margin: 0; font-size: 0.95rem; color: var(--charcoal-soft); }

/* ---------- Print: checklist only ---------- */
@media print {
  .site-header, .site-footer, .mobile-cta, .no-print, .hero, .toast-stack, .confetti-layer { display: none !important; }
  body { background: #fff; font-size: 11pt; }
  .section { padding: 0 !important; }
  .print-only { display: block !important; }
  .checklist { grid-template-columns: 1fr 1fr; gap: 10pt; }
  .checklist__group { box-shadow: none; border: 1px solid #ccc; padding: 10pt; }
  .js .reveal { opacity: 1 !important; transform: none !important; }
}
.print-only { display: none; }

/* ---------- Accessibility refinements (Lighthouse) ---------- */
.peel-btn {
  position: absolute; top: 0; right: 0; width: 46px; height: 46px; z-index: 3;
  background: transparent; border: 0; cursor: pointer; border-bottom-left-radius: 8px;
}
.peel-btn:focus-visible { outline: 2px solid var(--bronze); outline-offset: -4px; }
/* Bronze on dark backgrounds: lighter tint keeps text above WCAG AA 4.5:1 */
.site-footer h2,
.contact__info .eyebrow,
.service--featured .service__kicker,
.side--dark .service__kicker,
.peel small { color: #c9a274; }
