/* Double Shot Marketing — base layer: reset, type, materials, controls. */
*{margin:0;padding:0;box-sizing:border-box;}
html{background:var(--orange-deep);scroll-behavior:smooth;}
/* the page IS the sun-faded poster: orange ground, ink anchors, cream only where legibility earns it */
body{
  font-family:var(--font-sans);color:var(--ink);
  font-size:var(--text-body);line-height:var(--leading-body);
  -webkit-font-smoothing:antialiased;
  background:
    radial-gradient(140% 60% at 12% 2%, rgba(223,154,118,.55), transparent 55%),
    radial-gradient(90% 34% at 86% 10%, rgba(232,196,172,.34), transparent 60%),
    radial-gradient(110% 50% at 88% 98%, rgba(166,78,46,.5), transparent 60%),
    radial-gradient(70% 26% at 28% 52%, rgba(223,154,118,.24), transparent 55%),
    var(--orange);
}
/* worn-paper grain over everything */
body::after{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:80;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='300' height='300'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='300' height='300' filter='url(%23n)' opacity='0.5'/></svg>");
  opacity:.05;mix-blend-mode:multiply;
}

.wrap{max-width:var(--content-max);margin:0 auto;padding:0 var(--gutter);}
@media (max-width:860px){.wrap{padding:0 var(--gutter-m);}}

/* ---------- type roles ---------- */
.display{font-family:var(--font-display);font-weight:400;line-height:.94;}
.mono{font-family:var(--font-mono);}
.caps{font-family:var(--font-mono);font-weight:500;letter-spacing:.24em;text-transform:uppercase;}
h1,h2,h3{font-weight:800;letter-spacing:var(--track-tight);line-height:1.05;text-wrap:balance;}
p{max-width:65ch;}

/* ---------- the Sun-Fade material ---------- */
.sunfade{
  position:relative;
  background:
    radial-gradient(120% 90% at 14% 8%, rgba(223,154,118,.62), transparent 58%),
    radial-gradient(70% 55% at 78% 22%, rgba(232,196,172,.38), transparent 60%),
    radial-gradient(150% 120% at 88% 112%, rgba(166,78,46,.55), transparent 62%),
    radial-gradient(60% 45% at 40% 70%, rgba(223,154,118,.28), transparent 55%),
    var(--orange);
}
.sunfade::after{
  content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='260' height='260'><filter id='g'><feTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='260' height='260' filter='url(%23g)' opacity='0.6'/></svg>");
  opacity:.13;mix-blend-mode:multiply;
}
.sunfade>*{position:relative;z-index:1;}

/* small text on orange always sits in an ink chip (contrast law) */
.chip{
  display:inline-block;background:var(--ink);color:var(--paper);
  font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;
  padding:5px 12px;border-radius:var(--radius-pill);
}

/* ---------- the Bean ---------- */
.bean{display:inline-block;vertical-align:baseline;}
.bean svg{display:block;height:100%;width:auto;}

/* ---------- links + controls ---------- */
a{color:inherit;text-decoration:none;}
.link{border-bottom:2px solid var(--orange);transition:color var(--dur-hover) var(--ease-out),border-color var(--dur-hover) var(--ease-out);}
.link:hover{color:var(--orange-deep);border-color:var(--orange-deep);}
.link:focus-visible,a:focus-visible{outline:3px solid var(--orange-deep);outline-offset:3px;border-radius:2px;}

.btn{
  display:inline-block;border-radius:var(--radius-pill);font-weight:700;font-size:17px;
  padding:15px 30px;line-height:1;white-space:nowrap;cursor:pointer;border:none;
  font-family:var(--font-sans);
  /* The pour: base coat on ::before, hover coat slides in on ::after, both behind the
     text (negative z-index inside the button's own stacking context). Transform-only,
     so the fill animates on the compositor like everything else. */
  position:relative;overflow:hidden;z-index:0;
  transition:transform var(--dur-hover) var(--ease-out),color var(--dur-hover) var(--ease-out);
}
.btn::before,.btn::after{content:'';position:absolute;inset:0;border-radius:inherit;}
.btn::before{z-index:-2;}
.btn::after{z-index:-1;transform:translateX(-102%);transition:transform .5s var(--ease-out);}
@media (hover:hover) and (pointer:fine){
  .btn:hover{transform:translateY(-1px);}
  .btn:hover::after{transform:translateX(0);}
}
.btn:active{transform:scale(.97);}
.btn:focus-visible{outline:3px solid var(--orange-deep);outline-offset:3px;}
.btn-ink{background:transparent;color:var(--paper);}
.btn-ink::before{background:var(--ink);}
.btn-ink::after{background:var(--orange-deep);}
.btn-line{background:transparent;border:2.5px solid var(--ink);color:var(--ink);padding:12.5px 28px;}
.btn-line::after{background:var(--ink);}
@media (hover:hover) and (pointer:fine){.btn-line:hover{color:var(--paper);}}
.btn-paper{background:transparent;color:var(--ink);}
.btn-paper::before{background:var(--paper);}
.btn-paper::after{background:var(--paper-deep);}

::selection{background:var(--orange-ghost);color:var(--ink);}

/* ---------- motion primitives ---------- */
.reveal{opacity:0;transform:translateY(18px);transition:opacity var(--dur-reveal) var(--ease-out),transform var(--dur-reveal) var(--ease-out);}
.reveal.is-in{opacity:1;transform:none;}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  .reveal{opacity:1;transform:none;transition:none;}
  .btn,.link{transition:background-color var(--dur-hover),color var(--dur-hover);}
  .btn:hover,.btn:active{transform:none;}
  .btn::after{transition:none;}
  *{animation:none !important;}
}
