/* ===========================================================================
   Spin Harbor Club — "Harbor Logbook" build
   Aesthetic: antique astronomical atlas — deep ink-teal ground, aged-paper
   plates, gold hairline rules, engraved constellation art, classical serif,
   ornamental dividers. No glow, no neon gradients, no 3D card flips.
   Locked archetypes (divergence engine, seed 1089) realized as almanac:
     hero=asymmetric-offset (offset star-chart medallion) · lobby=bento (plates)
     nav=split-top-bottom · section_order=hero→lobby→faq→ctaband→footer
     motif=engraved-star-chart · motion=constellation-draw · fonts=classical-serif
   Class prefix: mvl-   |  No signup, no lead form.
   =========================================================================== */

:root {
  --mvl-ink:      #0b1f24;   /* deep ink-teal ground */
  --mvl-ink-2:    #0e272d;
  --mvl-ink-3:    #103138;
  --mvl-ink-deep: #07181c;

  --mvl-paper:    #e9dcbf;   /* aged paper plate */
  --mvl-paper-2:  #f1e8d2;   /* lighter paper */
  --mvl-paper-3:  #ddcfae;   /* paper shadow tone */

  --mvl-on-ink:    #e6dcc2;  /* paper-toned text on ink ground */
  --mvl-on-ink-70: rgba(230,220,194,.70);
  --mvl-on-ink-45: rgba(230,220,194,.58); /* muted tier — .58 is the floor that keeps 4.5:1 on the ink ground */
  --mvl-on-ink-18: rgba(230,220,194,.16);

  --mvl-on-paper:    #221a12; /* sepia-ink text on paper */
  --mvl-on-paper-70: rgba(34,26,18,.72);
  --mvl-on-paper-45: rgba(34,26,18,.66); /* muted tier — .66 keeps 4.5:1 on the paper plates */

  --mvl-gold:      #c9a24b;   /* hairlines, rules, accents */
  --mvl-gold-2:    #e3c074;   /* brighter gold */
  --mvl-oxblood:   #7a2230;   /* rare emphasis ink */

  --mvl-wrap: 1140px;
  --mvl-rule: 1px;

  --mvl-serif-display: "Cormorant Garamond", "Cormorant", Garamond, serif;
  --mvl-serif-body:    "EB Garamond", Garamond, "Times New Roman", serif;
  --mvl-smallcaps-ls:  .22em;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body.mvl-body {
  margin: 0;
  font-family: var(--mvl-serif-body);
  font-size: clamp(17px, 1rem + .25vw, 19px);
  line-height: 1.66;
  color: var(--mvl-on-ink);
  /* layered depth: warm top-light + darker edges so the ground reads as
     aged vellum under a lamp rather than a flat fill */
  background:
    radial-gradient(120% 80% at 50% -10%, var(--mvl-ink-3) 0%, var(--mvl-ink) 42%, var(--mvl-ink-deep) 100%) fixed;
  background-color: var(--mvl-ink);
  -webkit-font-smoothing: antialiased;
  /* clip (not hidden): prevents horizontal bleed WITHOUT turning <body> into a
     scroll container — `overflow-x:hidden` here made the viewport stop scrolling. */
  overflow-x: clip;
}
a { color: var(--mvl-gold-2); text-decoration: none; }
a:hover { color: #f0d99a; text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
/* visible keyboard focus everywhere (gold ring on the ink ground) */
:focus-visible { outline: 2px solid var(--mvl-gold-2); outline-offset: 3px; border-radius: 1px; }
img { max-width: 100%; display: block; }
h1,h2,h3 { font-family: var(--mvl-serif-display); font-weight: 500; line-height: 1.05; margin: 0 0 .4em; }
.mvl-wrap { width: 100%; max-width: var(--mvl-wrap); margin: 0 auto; padding: 0 clamp(20px, 4vw, 44px); }

/* small-caps label used throughout the almanac */
.mvl-sc { font-variant: small-caps; letter-spacing: var(--mvl-smallcaps-ls); text-transform: lowercase; }

/* ---- motif: faint star-field + paper grain (no glow) -------------------- */
.mvl-motif { position: fixed; inset: 0; z-index: 0; pointer-events: none; }
/* engraved night-sky ground: two tiled star layers (gold + paper, mixed dots
   and four-point sparks) on out-of-phase twinkle cycles, drifting at different
   speeds for depth. opacity/transform only; disabled under reduced motion. */
.mvl-motif-dots {
  position: absolute; inset: -80px; /* oversized so the drift never exposes an edge */
  animation: mvl-drift 110s ease-in-out infinite alternate;
}
.mvl-motif-dots::before, .mvl-motif-dots::after { content: ""; position: absolute; inset: 0; background-repeat: repeat; }
.mvl-motif-dots::before { /* gold stars, 720px tile */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='720' height='720'%3E%3Cg fill='%23c9a24b'%3E%3Ccircle cx='84' cy='126' r='1.4'/%3E%3Ccircle cx='488' cy='200' r='1.1'/%3E%3Ccircle cx='389' cy='633' r='1.5'/%3E%3Ccircle cx='160' cy='415' r='.9'/%3E%3Ccircle cx='641' cy='484' r='1.2'/%3E%3Ccircle cx='303' cy='62' r='1'/%3E%3Ccircle cx='563' cy='338' r='.8'/%3E%3Ccircle cx='62' cy='594' r='1.1'/%3E%3Cpath d='M236 282l1.4 5.6 5.6 1.4-5.6 1.4-1.4 5.6-1.4-5.6-5.6-1.4 5.6-1.4z'/%3E%3Cpath d='M598 96l1.2 4.8 4.8 1.2-4.8 1.2-1.2 4.8-1.2-4.8-4.8-1.2 4.8-1.2z'/%3E%3Cpath d='M448 514l1 4 4 1-4 1-1 4-1-4-4-1 4-1z'/%3E%3C/g%3E%3C/svg%3E");
  background-size: 720px 720px;
  animation: mvl-twinkle 9s ease-in-out infinite alternate;
}
.mvl-motif-dots::after { /* paper stars, 520px tile, off-phase + counter-drift */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='520' height='520'%3E%3Cg fill='%23e6dcc2'%3E%3Ccircle cx='46' cy='76' r='.9'/%3E%3Ccircle cx='198' cy='150' r='1.1'/%3E%3Ccircle cx='332' cy='48' r='.8'/%3E%3Ccircle cx='459' cy='178' r='1'/%3E%3Ccircle cx='112' cy='305' r='1.2'/%3E%3Ccircle cx='268' cy='402' r='.9'/%3E%3Ccircle cx='430' cy='340' r='.8'/%3E%3Ccircle cx='66' cy='470' r='1'/%3E%3Ccircle cx='364' cy='497' r='1.1'/%3E%3Cpath d='M500 420l.9 3.6 3.6.9-3.6.9-.9 3.6-.9-3.6-3.6-.9 3.6-.9z'/%3E%3C/g%3E%3C/svg%3E");
  background-size: 520px 520px;
  animation: mvl-twinkle 13s ease-in-out -6s infinite alternate, mvl-drift-2 170s ease-in-out infinite alternate;
}
@keyframes mvl-twinkle { from { opacity: .18; } to { opacity: .5; } }
@keyframes mvl-drift { to { transform: translate3d(36px, -24px, 0); } }
@keyframes mvl-drift-2 { to { transform: translate3d(-28px, 18px, 0); } }
/* chart underprint: hairline concentric rings from two off-canvas centers,
   like the engraved coordinate arcs of an atlas plate. static by design. */
.mvl-motif-rings {
  position: absolute; inset: 0;
  background:
    repeating-radial-gradient(circle at 84% -22%, transparent 0 118px, rgba(201,162,75,.05) 118px 119.5px),
    repeating-radial-gradient(circle at 6% 118%, transparent 0 156px, rgba(201,162,75,.04) 156px 157.5px);
}
.mvl-motif-grain {
  position: absolute; inset: 0; opacity: .05; mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
/* layer in-flow content above the motif — but NOT the fixed overlays, whose
   own position:fixed must win (this rule's specificity would otherwise force
   them to position:relative and dump them into normal flow under the footer). */
body > *:not(.mvl-motif):not(.mvl-agegate):not(.mvl-cookie):not(.mvl-tabbar) { position: relative; z-index: 1; }

/* ---- ornamental rule (double hairline + centered fleuron/star) ----------- */
.mvl-rule { display: flex; align-items: center; gap: 14px; color: var(--mvl-gold); margin: 8px 0; }
.mvl-rule::before, .mvl-rule::after { content: ""; height: 0; flex: 1; border-top: var(--mvl-rule) solid var(--mvl-gold); box-shadow: 0 3px 0 -2px var(--mvl-gold); }
.mvl-rule svg { width: 20px; height: 20px; opacity: .9; }

/* ---- buttons: letterpress plates ----------------------------------------- */
.mvl-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5em;
  font-family: var(--mvl-serif-display); font-weight: 600; font-size: 1.06rem;
  font-variant: small-caps; letter-spacing: .08em;
  padding: .6em 1.5em; border: var(--mvl-rule) solid var(--mvl-gold);
  background: transparent; color: var(--mvl-on-ink); cursor: pointer; white-space: nowrap;
  box-shadow: inset 0 0 0 3px transparent, 0 0 0 1px transparent;
  transition: background .18s, color .18s, box-shadow .18s, border-color .18s, transform .12s ease;
}
.mvl-btn:active { transform: translateY(1px); }
.mvl-btn-solid { background: var(--mvl-gold); color: var(--mvl-ink-deep); border-color: var(--mvl-gold); }
.mvl-btn-solid:hover { background: var(--mvl-gold-2); border-color: var(--mvl-gold-2); color: var(--mvl-ink-deep); text-decoration: none; box-shadow: inset 0 0 0 2px var(--mvl-ink-deep), 0 8px 20px -10px rgba(201,162,75,.7); }
.mvl-btn-ghost:hover { color: #f0d99a; border-color: var(--mvl-gold-2); text-decoration: none; box-shadow: inset 0 0 0 2px var(--mvl-on-ink-18); }
.mvl-btn-sm { padding: .4em 1em; font-size: .95rem; }

/* ---- topbar (slim — split-top-bottom nav) -------------------------------- */
.mvl-topbar {
  position: sticky; top: 0; z-index: 30;
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 12px clamp(20px, 4vw, 44px);
  background: color-mix(in srgb, var(--mvl-ink-deep) 90%, transparent);
  backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
  border-bottom: var(--mvl-rule) solid var(--mvl-on-ink-18);
}
.mvl-brand { display: inline-flex; align-items: center; gap: 11px; color: var(--mvl-on-ink); }
.mvl-brand:hover { text-decoration: none; color: #f0d99a; }
.mvl-sigil { color: var(--mvl-gold); display: inline-flex; }
.mvl-brand-name { font-family: var(--mvl-serif-display); font-weight: 600; font-size: 1.5rem; letter-spacing: .02em; }
.mvl-brand-logo { height: 30px; width: auto; display: block; }
.mvl-topbar-end { display: flex; align-items: center; gap: 14px; }
.mvl-topnav { display: flex; align-items: center; gap: clamp(18px, 3vw, 34px); }
.mvl-topnav a {
  color: var(--mvl-on-ink-70); font-family: var(--mvl-serif-display);
  font-variant: small-caps; letter-spacing: .08em; font-size: 1.05rem;
}
.mvl-topnav a:hover { color: var(--mvl-gold-2); text-decoration: none; }
.mvl-coins {
  display: inline-flex; align-items: center; gap: 7px; color: var(--mvl-gold-2);
  border: var(--mvl-rule) solid var(--mvl-on-ink-18); padding: .34em .8em;
  font-family: var(--mvl-serif-display); font-variant: small-caps; letter-spacing: .04em; font-size: 1rem;
}
.mvl-coins b { color: var(--mvl-on-ink); font-variant-numeric: tabular-nums; }

/* ---- HERO: asymmetric-offset, almanac title plate ------------------------ */
.mvl-hero { position: relative; padding: clamp(40px, 7vw, 92px) 0 clamp(36px, 6vw, 76px); }
.mvl-hero-frame { position: relative; border: var(--mvl-rule) solid var(--mvl-gold); padding: clamp(26px, 5vw, 60px); }
.mvl-hero-frame::after { /* inner hairline of the double frame */
  content: ""; position: absolute; inset: 7px; border: var(--mvl-rule) solid var(--mvl-on-ink-18); pointer-events: none;
}
/* corner stars on the frame */
.mvl-hero-corner { position: absolute; width: 16px; height: 16px; color: var(--mvl-gold); }
.mvl-hero-corner.tl { top: -8px; left: -8px; } .mvl-hero-corner.tr { top: -8px; right: -8px; }
.mvl-hero-corner.bl { bottom: -8px; left: -8px; } .mvl-hero-corner.br { bottom: -8px; right: -8px; }
.mvl-hero-inner { display: grid; grid-template-columns: 1.15fr .85fr; gap: clamp(24px, 4vw, 56px); align-items: center; }
.mvl-eyebrow { display: block; font-family: var(--mvl-serif-display); font-variant: small-caps; letter-spacing: var(--mvl-smallcaps-ls); color: var(--mvl-gold-2); font-size: 1rem; margin-bottom: 14px; }
.mvl-hero h1 { font-size: clamp(3rem, 7vw, 6rem); font-weight: 500; line-height: .98; letter-spacing: -.005em; }
.mvl-hero h1 em { font-style: italic; color: var(--mvl-gold-2); }
.mvl-hero-lead { font-size: clamp(1.1rem, 1.4vw, 1.36rem); color: var(--mvl-on-ink-70); max-width: 52ch; margin: 20px 0 26px; }
.mvl-hero-ctas { display: flex; flex-wrap: wrap; gap: 14px; }
.mvl-points { display: flex; flex-wrap: wrap; gap: 8px 26px; margin-top: 30px; }
.mvl-point { display: inline-flex; align-items: center; gap: 9px; font-variant: small-caps; letter-spacing: .04em; font-size: 1rem; color: var(--mvl-on-ink-70); }
.mvl-point svg { color: var(--mvl-gold); flex: none; }
/* offset engraved star-chart medallion (replaces the glow orb) */
.mvl-medallion { position: relative; aspect-ratio: 1; max-width: 420px; margin-left: auto; color: var(--mvl-gold); }
.mvl-medallion svg { width: 100%; height: 100%; }
.mvl-medallion .mvl-draw { stroke-dasharray: 1400; stroke-dashoffset: 1400; animation: mvl-draw 3.4s ease forwards .3s; }
@keyframes mvl-draw { to { stroke-dashoffset: 0; } }
/* astrolabe motion: ticks and diagonal hairlines turn once per two minutes */
.mvl-medallion .mvl-spin { transform-origin: 100px 100px; animation: mvl-rotate 120s linear infinite; }
@keyframes mvl-rotate { to { transform: rotate(360deg); } }

/* ---- section heads ------------------------------------------------------- */
.mvl-section { padding: clamp(44px, 7vw, 92px) 0; scroll-margin-top: 90px; /* clear the sticky topbar (~75px) on anchor jumps */ }
.mvl-sec-head { margin-bottom: clamp(26px, 3.5vw, 46px); }
.mvl-sec-kicker { font-family: var(--mvl-serif-display); font-variant: small-caps; letter-spacing: var(--mvl-smallcaps-ls); color: var(--mvl-gold-2); display: block; margin-bottom: 6px; }
.mvl-sec-head h2 { font-size: clamp(2.2rem, 4.4vw, 3.6rem); font-weight: 500; }
.mvl-sec-head .mvl-sub { color: var(--mvl-on-ink-45); font-style: italic; max-width: 56ch; margin: 4px 0 0; }

/* ---- LOBBY: uniform engraved plates (full art, no crop) ------------------ */
.mvl-bento { display: grid; grid-template-columns: repeat(auto-fill, minmax(244px, 1fr)); gap: 18px; }
.mvl-card {
  position: relative; display: flex; flex-direction: column; overflow: hidden;
  background: var(--mvl-paper); color: var(--mvl-on-paper); text-decoration: none;
  border: var(--mvl-rule) solid var(--mvl-gold);
  box-shadow: 0 1px 0 1px rgba(0,0,0,.25), 0 14px 30px -18px rgba(0,0,0,.7);
  transition: transform .25s ease, box-shadow .25s ease;
}
.mvl-card::before { /* inner hairline frame on the plate */
  content: ""; position: absolute; inset: 6px; border: var(--mvl-rule) solid rgba(122,90,30,.4); z-index: 2; pointer-events: none;
}
.mvl-card:hover { transform: translateY(-6px); box-shadow: 0 1px 0 1px var(--mvl-gold-2), 0 30px 50px -20px rgba(0,0,0,.9); text-decoration: none; }
.mvl-card:focus-visible { outline: none; transform: translateY(-6px); box-shadow: 0 0 0 2px var(--mvl-ink), 0 0 0 4px var(--mvl-gold-2), 0 30px 50px -20px rgba(0,0,0,.9); }
/* square window, center-crop fill: 5 of 8 covers are native 1:1, the wide
   ones lose their side margins to the crop (logos are centered, so safe). */
.mvl-card-media { position: relative; aspect-ratio: 1 / 1; overflow: hidden; background: var(--mvl-ink-deep); }
.mvl-card-cover {
  position: relative; width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform .4s cubic-bezier(.2,.7,.2,1); will-change: transform;
}
.mvl-card:hover .mvl-card-cover, .mvl-card:focus-visible .mvl-card-cover { transform: scale(1.05); }
/* play affordance: letterpress plate over the art on hover/focus */
.mvl-card-play {
  position: absolute; inset: 0; z-index: 2; display: grid; place-items: center;
  background: rgba(7,24,28,.45); opacity: 0; transition: opacity .25s ease;
}
.mvl-card-play span {
  display: inline-flex; align-items: center; gap: .5em;
  font-family: var(--mvl-serif-display); font-weight: 600; font-size: 1.05rem;
  font-variant: small-caps; letter-spacing: .12em;
  color: var(--mvl-ink-deep); background: var(--mvl-gold-2);
  border: var(--mvl-rule) solid var(--mvl-ink-deep); box-shadow: 0 0 0 3px var(--mvl-gold-2);
  padding: .45em 1.3em;
}
.mvl-card:hover .mvl-card-play, .mvl-card:focus-visible .mvl-card-play { opacity: 1; }
@media (hover: none) { .mvl-card-play { display: none; } }
.mvl-card-body {
  position: relative; z-index: 3; padding: 12px 16px 14px;
  background: linear-gradient(180deg, var(--mvl-paper-2), var(--mvl-paper));
  border-top: var(--mvl-rule) solid rgba(122,90,30,.4);
}
.mvl-card-plate { float: right; font-variant: small-caps; letter-spacing: .12em; font-size: .8rem; color: var(--mvl-gold); }
.mvl-card-sub { display: block; font-variant: small-caps; letter-spacing: .16em; font-size: .76rem; color: var(--mvl-on-paper-45); }
.mvl-card-title { display: block; font-family: var(--mvl-serif-display); font-weight: 600; font-size: 1.34rem; line-height: 1.1; color: var(--mvl-on-paper); margin-top: 1px; min-height: 2.2em; transition: color .2s ease; }
.mvl-card:hover .mvl-card-title, .mvl-card:focus-visible .mvl-card-title { color: var(--mvl-oxblood); }
.mvl-card-prov { font-size: .82rem; color: var(--mvl-on-paper-45); font-style: italic; }

/* ---- FAQ ----------------------------------------------------------------- */
.mvl-faq-list { display: grid; gap: 0; max-width: 880px; border-top: var(--mvl-rule) solid var(--mvl-on-ink-18); }
.mvl-faq { border-bottom: var(--mvl-rule) solid var(--mvl-on-ink-18); }
.mvl-faq summary { cursor: pointer; list-style: none; padding: 20px 12px; margin: 0 -12px; font-family: var(--mvl-serif-display); font-weight: 600; font-size: 1.3rem; display: flex; justify-content: space-between; gap: 16px; align-items: baseline; transition: background .2s ease, color .2s ease; }
.mvl-faq summary:hover { background: var(--mvl-on-ink-18); color: var(--mvl-gold-2); }
.mvl-faq summary::-webkit-details-marker { display: none; }
.mvl-faq summary::after { content: "✶"; color: var(--mvl-gold); font-size: 1rem; transition: transform .25s ease; flex: none; }
.mvl-faq[open] summary::after { transform: rotate(72deg); }
.mvl-faq p { margin: 0 8px 22px; color: var(--mvl-on-ink-70); max-width: 70ch; }

/* ---- CTA band: parchment plate ------------------------------------------ */
.mvl-ctaband { padding: clamp(44px, 7vw, 92px) 0; }
.mvl-ctaband-inner { position: relative; text-align: center; background: var(--mvl-paper); color: var(--mvl-on-paper); border: var(--mvl-rule) solid var(--mvl-gold); padding: clamp(40px, 6vw, 76px); }
.mvl-ctaband-inner::after { content: ""; position: absolute; inset: 9px; border: var(--mvl-rule) solid rgba(122,90,30,.4); pointer-events: none; }
.mvl-ctaband-inner h2 { font-size: clamp(2.2rem, 4.6vw, 3.6rem); color: var(--mvl-on-paper); }
.mvl-ctaband-inner p { color: var(--mvl-on-paper-70); font-style: italic; max-width: 52ch; margin: 0 auto 26px; }
.mvl-ctaband-inner .mvl-btn { color: var(--mvl-on-paper); border-color: var(--mvl-oxblood); }
.mvl-ctaband-inner .mvl-btn:hover { background: var(--mvl-oxblood); color: var(--mvl-paper-2); border-color: var(--mvl-oxblood); }

/* ---- trust strip --------------------------------------------------------- */
.mvl-trust { background: var(--mvl-ink-deep); border-top: var(--mvl-rule) solid var(--mvl-on-ink-18); padding: 28px 0; }
.mvl-trust-inner { display: flex; align-items: center; justify-content: space-between; gap: 26px; flex-wrap: wrap; }
.mvl-trust-line { margin: 0; color: var(--mvl-on-ink-70); font-style: italic; max-width: 60ch; }
.mvl-partners { display: flex; align-items: center; gap: 24px; }
.mvl-partner-logo { height: 30px; width: auto; filter: grayscale(1) brightness(1.9) sepia(.3) opacity(.8); transition: filter .2s; }
.mvl-partner-logo:hover { filter: grayscale(1) brightness(2.1); }

/* ---- footer -------------------------------------------------------------- */
.mvl-footer { background: var(--mvl-ink-deep); padding-top: 46px; }
.mvl-footer-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: 34px; padding-bottom: 30px; }
.mvl-footer-addr { color: var(--mvl-on-ink-45); margin: 14px 0 8px; }
.mvl-footer-help { color: var(--mvl-on-ink-70); margin: 0; }
.mvl-footer-nav { display: flex; flex-direction: column; gap: 11px; align-items: flex-start; }
.mvl-footer-nav a { color: var(--mvl-on-ink-70); font-variant: small-caps; letter-spacing: .06em; }
.mvl-footer-fine { display: flex; align-items: center; gap: 14px; padding: 18px 0 30px; border-top: var(--mvl-rule) solid var(--mvl-on-ink-18); color: var(--mvl-on-ink-45); }
.mvl-age-badge { flex: none; display: inline-grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; border: var(--mvl-rule) solid var(--mvl-gold); color: var(--mvl-gold-2); font-family: var(--mvl-serif-display); font-weight: 600; font-size: .95rem; }

/* ---- mobile bottom tab bar ----------------------------------------------- */
.mvl-tabbar { display: none; }

/* ---- overlays: age gate + cookie ----------------------------------------- */
.mvl-agegate { position: fixed; inset: 0; z-index: 60; display: grid; place-items: center; padding: 24px; background: rgba(7,24,28,.92); }
.mvl-agegate[hidden] { display: none; }
.mvl-agegate-card { max-width: 460px; text-align: center; background: var(--mvl-paper); color: var(--mvl-on-paper); border: var(--mvl-rule) solid var(--mvl-gold); padding: 42px 34px; position: relative; }
.mvl-agegate-card::after { content: ""; position: absolute; inset: 9px; border: var(--mvl-rule) solid rgba(122,90,30,.4); pointer-events: none; }
.mvl-ag-sigil { color: var(--mvl-gold); display: inline-flex; margin-bottom: 6px; }
.mvl-agegate-card h2 { font-size: 2.2rem; color: var(--mvl-on-paper); }
.mvl-agegate-card p { color: var(--mvl-on-paper-70); }
.mvl-ag-actions { display: flex; flex-direction: column; gap: 10px; margin-top: 24px; }
.mvl-agegate-card .mvl-btn { color: var(--mvl-on-paper); border-color: var(--mvl-oxblood); }
.mvl-agegate-card .mvl-btn-solid { background: var(--mvl-oxblood); color: var(--mvl-paper-2); }

.mvl-cookie { position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 50; display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; max-width: 720px; margin: 0 auto; background: var(--mvl-paper); color: var(--mvl-on-paper); border: var(--mvl-rule) solid var(--mvl-gold); padding: 14px 18px; }
.mvl-cookie[hidden] { display: none; }
.mvl-cookie p { margin: 0; color: var(--mvl-on-paper-70); }
.mvl-cookie .mvl-btn { color: var(--mvl-on-paper); border-color: var(--mvl-oxblood); }
.mvl-cookie .mvl-btn-solid { background: var(--mvl-oxblood); color: var(--mvl-paper-2); }

/* ---- legal / content pages (printed page on paper) ----------------------- */
.mvl-doc { padding: clamp(36px,6vw,72px) 0; }
.mvl-doc-inner { max-width: 820px; background: var(--mvl-paper); color: var(--mvl-on-paper); border: var(--mvl-rule) solid var(--mvl-gold); padding: clamp(28px,5vw,60px); position: relative; }
.mvl-doc h1 { font-size: clamp(2.4rem,4.4vw,3.4rem); color: var(--mvl-on-paper); }
.mvl-doc h2 { font-size: 1.5rem; margin-top: 1.8em; color: var(--mvl-oxblood); font-weight: 600; }
.mvl-doc p, .mvl-doc li { color: var(--mvl-on-paper-70); }
.mvl-doc a { color: var(--mvl-oxblood); text-decoration: underline; }
.mvl-updated { color: var(--mvl-on-paper-45); font-style: italic; }
.mvl-callout { border-left: 3px solid var(--mvl-oxblood); background: rgba(122,34,48,.07); padding: 14px 18px; margin: 22px 0; }
.mvl-doc table th { color: var(--mvl-on-paper); }
.mvl-doc table td, .mvl-doc table th { border-bottom-color: rgba(122,90,30,.3) !important; }

/* ---- game page ----------------------------------------------------------- */
.mvl-game { padding: 20px 0 44px; }
.mvl-game-bar { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-bottom: 16px; flex-wrap: wrap; }
.mvl-game-bar h1 { font-size: clamp(1.8rem,3vw,2.6rem); margin: 0; }
.mvl-frame-wrap { position: relative; width: 100%; aspect-ratio: 16/9; background: #000; border: var(--mvl-rule) solid var(--mvl-gold); overflow: hidden; }
.mvl-frame-wrap iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.mvl-game-note { color: var(--mvl-on-ink-45); font-style: italic; margin-top: 16px; max-width: 72ch; }

/* ---- contact ------------------------------------------------------------- */
.mvl-contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: start; }
/* on paper plates the solid action is oxblood, matching the age gate and CTA band */
.mvl-contact-send { background: var(--mvl-oxblood); border-color: var(--mvl-oxblood); color: var(--mvl-paper-2); }
.mvl-contact-send:hover { background: #8e2938; border-color: #8e2938; color: var(--mvl-paper-2); box-shadow: inset 0 0 0 2px var(--mvl-paper-2); }
#mvl-contact-hint { margin-top: 14px; }
.mvl-field { display: block; margin-bottom: 16px; }
.mvl-field span { display: block; font-variant: small-caps; letter-spacing: .1em; color: var(--mvl-on-paper-70); margin-bottom: 6px; }
.mvl-field input, .mvl-field textarea { width: 100%; font-family: var(--mvl-serif-body); font-size: 1.05rem; color: var(--mvl-on-paper); background: var(--mvl-paper-2); border: var(--mvl-rule) solid rgba(122,90,30,.5); padding: .6em .8em; }
.mvl-field input:focus, .mvl-field textarea:focus { outline: 2px solid var(--mvl-oxblood); outline-offset: 1px; }

/* ---- scroll reveal (progressive entrance; JS toggles .mvl-in) ------------ */
/* Hidden state is gated on .mvl-js so the page stays fully visible without JS. */
.mvl-js [data-mvl-reveal] {
  opacity: 0; transform: translateY(20px);
  transition: opacity .6s ease, transform .6s cubic-bezier(.2,.7,.2,1);
}
.mvl-js [data-mvl-reveal].mvl-in { opacity: 1; transform: none; }

/* ---- responsive ---------------------------------------------------------- */
@media (max-width: 760px) {
  .mvl-topbar-cta { display: none; } /* nav links cover it; CTA needs the room */
}
@media (max-width: 560px) {
  .mvl-topnav { display: none; } /* mobile gets the bottom tab bar instead */
}
@media (max-width: 900px) {
  .mvl-hero-inner { grid-template-columns: 1fr; }
  .mvl-medallion { max-width: 300px; margin: 8px auto 0; }
  .mvl-bento { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }
  .mvl-footer-grid, .mvl-contact-grid { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .mvl-topbar-cta { display: none; }
  .mvl-bento { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
  .mvl-trust-inner { flex-direction: column; align-items: flex-start; }
  .mvl-hero-frame { padding: 22px 16px; }
  .mvl-tabbar { display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; justify-content: space-around; padding: 8px 6px calc(8px + env(safe-area-inset-bottom)); background: color-mix(in srgb, var(--mvl-ink-deep) 96%, transparent); backdrop-filter: blur(6px); border-top: var(--mvl-rule) solid var(--mvl-on-ink-18); }
  .mvl-tab { display: flex; flex-direction: column; align-items: center; gap: 3px; color: var(--mvl-on-ink-70); font-variant: small-caps; letter-spacing: .06em; font-size: .8rem; }
  .mvl-tab:hover { color: var(--mvl-gold-2); text-decoration: none; }
  .mvl-footer { padding-bottom: 78px; } .mvl-cookie { bottom: 86px; }
}

@media (prefers-reduced-motion: reduce) {
  * { animation-duration: .001ms !important; transition-duration: .001ms !important; scroll-behavior: auto; }
  /* the `*` rule doesn't reach pseudo-elements — stop the star layers explicitly */
  .mvl-motif-dots, .mvl-motif-dots::before, .mvl-motif-dots::after { animation: none; }
  .mvl-motif-dots::before, .mvl-motif-dots::after { opacity: .35; }
  .mvl-medallion .mvl-spin { animation: none; }
  .mvl-medallion .mvl-draw { stroke-dashoffset: 0; animation: none; }
  .mvl-js [data-mvl-reveal] { opacity: 1 !important; transform: none !important; }
  .mvl-card:hover .mvl-card-cover, .mvl-card:focus-visible .mvl-card-cover { transform: none; }
  .mvl-card-play { background: rgba(7,24,28,.55); }
}
