/* base — reset + the few things every surface shares.
   If a rule is only used by one layout, it does NOT belong here. */

*{box-sizing:border-box; margin:0; padding:0}
/* form controls do NOT inherit typography by default — without this, any
   unstyled control falls back to the UA's mono/system look (the latent bug
   behind the campaign form review, 06-campaign-ui-fixes §3.1) */
input, textarea, select, button{font:inherit; color:inherit}
/* reserve the scrollbar gutter always, so short vs long pages don't shift the
   centered layout sideways as you navigate */
html{font-size:16px; scroll-behavior:smooth; scrollbar-gutter:stable}

/* default link color — surfaces override locally where they need to */
a{color:var(--amber-deep); text-decoration:none}
a:hover{text-decoration:underline; text-underline-offset:3px}

/* shared pulse: lander dot, dashboard unsaved-dot, ident dot */
@keyframes blink{50%{opacity:.35}}

/* ZZ mark (toasts, platform-voice, small inline uses) */
.zzmark{height:1.15em; width:auto; display:inline-block; vertical-align:-0.18em}

/* zztapes lockup — golden-block wordmark (shared/_logo, 2026-07-25).
   Colour comes from currentColor: set it on the parent, never inside the SVG. */
.logo{display:inline-flex; align-items:center; gap:9px; text-decoration:none; color:inherit}
.logo:hover{text-decoration:none}
.logo .wm{display:block; height:22px; width:auto}
.logo--sm .wm{height:15px}
.logo--lg .wm{height:34px}
.logo .zz{display:block; height:20px; width:auto}
.logo--accent .zz-ink{fill:var(--zz-accent)} /* amber zz — marketing surfaces only */
.logo .dot{width:8px; height:8px; border-radius:50%; background:var(--amber);
           animation:blink 1.8s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){ .logo .dot{animation:none} }
@media (max-width:600px){ .logo .wm{height:19px} }

/* horizon frame — the gradient ribbon runs around the whole viewport
   (lander + band pages; the white tool gets a single top pinstripe instead) */
body:not(.app)::before{
  content:""; position:fixed; inset:0; pointer-events:none; z-index:60;
  background:
    linear-gradient(90deg,#87a0b4,#cfd9db 28%,#e9c069 48%,#e0813d 62%,#7a5a45 78%,#332f2b) top/100% 5px no-repeat,
    linear-gradient(180deg,#332f2b,#7a5a45 22%,#e0813d 38%,#e9c069 52%,#cfd9db 72%,#87a0b4) right/5px 100% no-repeat,
    linear-gradient(270deg,#87a0b4,#cfd9db 28%,#e9c069 48%,#e0813d 62%,#7a5a45 78%,#332f2b) bottom/100% 5px no-repeat,
    linear-gradient(0deg,#332f2b,#7a5a45 22%,#e0813d 38%,#e9c069 52%,#cfd9db 72%,#87a0b4) left/5px 100% no-repeat;
}

/* build stamp in footers */
.ver{font-variant-numeric:tabular-nums; white-space:nowrap; opacity:.65}
