/* Gammag — design system extracted from the approved comp.
   Palette: bg #F4EDDE · ink #16130E · muted #8B8578 · body-muted #4A463D · hairline #D8D0BC */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:#F4EDDE;
  color:#16130E;
  font-family:'Space Grotesk',sans-serif;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
a{color:#16130E;text-decoration:none}
a:hover{color:#8B8578}
img{max-width:100%}
.mut{color:#8B8578}
/* Silkscreen's ampersand glyph reads like a euro sign; render "&" inside pixel
   headings in the body face so it looks like a proper ampersand. */
.amp{font-family:'Space Grotesk',sans-serif;font-weight:700;letter-spacing:normal}
.flip{display:inline-block;transform:scaleX(-1)}
.nowrap{white-space:nowrap}

/* layout */
.wrap{max-width:1160px;margin-inline:auto;padding-inline:24px}

/* animations */
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes gflip{0%,65%{transform:scaleX(-1)}75%,90%{transform:scaleX(1)}100%{transform:scaleX(-1)}}
@keyframes hammock{
  0%,100%{transform:translate(calc(-1 * var(--amp,6px)),var(--dip,8px)) rotate(calc(-1 * var(--tilt,3deg)))}
  50%{transform:translate(var(--amp,6px),var(--dip,8px)) rotate(var(--tilt,3deg))}
}
.gflip{display:inline-block;animation:gflip 4s ease-in-out infinite}

/* buttons — base carries the colours so :hover can invert them */
.btn{
  font-family:'Silkscreen',monospace;
  font-size:13px;
  padding:16px 24px;
  border:2px solid transparent;
  display:inline-block;
  line-height:1;
  cursor:pointer;
  transition:background .18s ease,color .18s ease;
}
.btn-dark{background:#16130E;color:#F4EDDE;border-color:#16130E}
.btn-dark:hover{background:#F4EDDE;color:#16130E}
.btn-outline{background:transparent;color:#16130E;border-color:#16130E}
.btn-outline:hover{background:#16130E;color:#F4EDDE}
.btn-light{background:#F4EDDE;color:#16130E;border-color:#F4EDDE}
.btn-light:hover{background:#16130E;color:#F4EDDE}
.pill{font-size:12px;padding:12px 18px}
.btn-cta{padding:18px 30px}

/* header */
.site-header{position:sticky;top:0;z-index:50;background:#F4EDDE;border-bottom:2px solid #16130E}
.bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px 20px;min-height:52px;padding-block:12px}
.brand{display:flex;align-items:center;gap:12px}
.wordmark{font-family:'Silkscreen',monospace;font-size:20px}
.wordmark.light{color:#F4EDDE}
.nav{display:flex;align-items:center;gap:12px 24px;font-size:15px;font-weight:500;flex-wrap:wrap}

/* hero */
.hero{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));
  gap:48px;align-items:center;
  padding-block:clamp(56px,8vw,96px) clamp(48px,7vw,88px);
}
.hero-copy{display:flex;flex-direction:column;gap:26px}
.eyebrow{font-family:'Silkscreen',monospace;font-size:12px;letter-spacing:3px;color:#8B8578}
.display{font-family:'Silkscreen',monospace;font-weight:700;font-size:clamp(32px,5.2vw,58px);line-height:1.15;margin:0}
.lead{font-size:clamp(16px,2vw,19px);line-height:1.6;color:#4A463D;max-width:520px;margin:0;text-wrap:pretty}
/* Silkscreen is heavy at the desktop headline size on a phone — scale it down
   and open the leading so the hero headline reads cleanly on mobile. */
@media (max-width: 560px){
  .display{font-size:clamp(24px,6.6vw,32px);line-height:1.32}
}
.btn-row{display:flex;gap:14px;flex-wrap:wrap}
.hero-art{display:flex;justify-content:center;align-items:end;min-height:340px}
.hero-art-inner{position:relative;width:min(280px,72%);padding-bottom:34px}
.hero-shadow{position:absolute;left:8%;right:8%;bottom:6px;height:26px;opacity:.35;background:radial-gradient(ellipse at center,rgba(22,19,14,.4),rgba(22,19,14,0) 70%)}
#hero-dice{display:block;width:100%;height:auto;will-change:transform;cursor:pointer}
/* On phones the hero stacks and the big floating dice becomes an empty block
   under the copy — drop it there. It returns once the hero is two columns. */
@media (max-width: 700px){ .hero-art{display:none} }

/* marquee */
.marquee{background:#16130E;color:#F4EDDE;overflow:hidden;padding:16px 0}
.marquee-track{display:flex;width:max-content;animation:marquee 22s linear infinite;font-family:'Silkscreen',monospace;font-size:15px;letter-spacing:2px}
.marquee-track span{white-space:nowrap;padding-right:32px}

/* generic section rhythm */
.section{padding-top:clamp(56px,8vw,96px)}
.section-pb{padding-bottom:clamp(56px,8vw,96px)}
.head{font-family:'Silkscreen',monospace;font-size:clamp(24px,3.4vw,34px);margin:0 0 36px}
.head.no-mb{margin:0}
.section-head{display:flex;justify-content:space-between;align-items:end;flex-wrap:wrap;gap:16px;margin-bottom:36px}
.text-link{font-family:'Silkscreen',monospace;font-size:13px;border-bottom:2px solid #16130E;padding-bottom:4px}

/* grids */
.grid{display:grid;gap:24px}
.grid-300{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
.grid-280{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}
.grid-220{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}

/* two crafts */
.craft{
  border:2px solid #16130E;
  padding:clamp(24px,3vw,36px);
  display:flex;flex-direction:column;gap:18px;
  background:#F4EDDE;color:#16130E;
  transition:background .18s ease,color .18s ease;
}
.craft:hover{background:#16130E;color:#F4EDDE}
.craft-num{font-family:'Silkscreen',monospace;font-size:13px;color:#8B8578}
.craft-title{font-family:'Silkscreen',monospace;font-size:clamp(18px,2.4vw,24px)}
.craft-body{margin:0;font-size:16px;line-height:1.6;color:#8B8578}
.tags{display:flex;flex-wrap:wrap;gap:10px;margin-top:auto}
.tag{border:1px solid #8B8578;padding:6px 12px;font-size:13px}

/* stats */
.stats-wrap{margin-top:56px}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:2px;background:#16130E;border:2px solid #16130E}
.stat{padding:28px;background:#F4EDDE}
.stat-n{font-family:'Silkscreen',monospace;font-size:clamp(24px,3vw,32px)}
.stat-l{color:#8B8578;font-size:14px;margin-top:6px}

/* selected work */
.work{display:flex;flex-direction:column;gap:14px}
.work-img{height:260px;border:2px solid #16130E;display:flex;align-items:center;justify-content:center;background:#F4EDDE;color:#8B8578;font-size:14px;text-align:center;padding:12px}
.work-title{font-family:'Silkscreen',monospace;font-size:16px}
.work-meta{color:#8B8578;font-size:14px}

/* how we work */
.step{border-top:2px solid #16130E;padding-top:20px;display:flex;flex-direction:column;gap:10px}
.step-n{font-family:'Silkscreen',monospace;font-size:22px;color:#8B8578}
.step-t{font-weight:600;font-size:18px}
.step-b{margin:0;color:#8B8578;font-size:15px;line-height:1.6}

/* cta band */
.cta{background:#16130E;color:#F4EDDE}
.cta-inner{display:flex;justify-content:space-between;align-items:center;gap:32px;flex-wrap:wrap;padding-block:clamp(48px,7vw,88px)}
.cta-title{font-family:'Silkscreen',monospace;font-size:clamp(26px,4vw,40px);margin:0;line-height:1.2}

/* footer */
.footer{background:#16130E;color:#F4EDDE;border-top:1px solid #4A463D}
.foot-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:32px;padding-block:48px}
.foot-brand{display:flex;flex-direction:column;gap:14px}
.foot-tag{margin:0;color:#8B8578;font-size:14px;line-height:1.6;max-width:280px}
.foot-col{display:flex;flex-direction:column;gap:10px;font-size:14px}
.foot-col a{color:#F4EDDE}
.foot-h{font-family:'Silkscreen',monospace;font-size:12px;color:#8B8578;letter-spacing:2px}
.foot-legal{color:#8B8578;font-size:13px;padding-bottom:32px}

/* ---- services page ---- */
.page-head{padding-block:clamp(56px,8vw,96px) clamp(40px,6vw,72px)}
.page-title{font-family:'Silkscreen',monospace;font-size:clamp(30px,5vw,52px);line-height:1.15;margin:0;max-width:820px}
.page-lead{font-size:clamp(16px,2vw,19px);line-height:1.6;color:#4A463D;max-width:600px;margin:24px 0 0;text-wrap:pretty}
.svc-list{display:flex;flex-direction:column;gap:24px}
.svc{border:2px solid #16130E;padding:clamp(24px,4vw,44px);display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:32px}
.svc-main{display:flex;flex-direction:column;gap:16px}
.svc-num{font-family:'Silkscreen',monospace;font-size:13px;color:#8B8578}
.svc-h{font-family:'Silkscreen',monospace;font-size:clamp(20px,3vw,28px);margin:0}
.svc-p{margin:0;font-size:16px;line-height:1.7;color:#4A463D}
.svc-cells{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:2px;background:#D8D0BC;border:1px solid #D8D0BC}
.cell{padding:20px;background:#F4EDDE}
.cell-t{font-weight:600}
.cell-d{color:#8B8578;font-size:14px;margin-top:4px}
.ways{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:24px}

/* ---- contact page ---- */
.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:40px;align-items:start;padding-bottom:clamp(56px,8vw,96px)}
.info{display:flex;flex-direction:column;border:2px solid #16130E}
.info-row{padding:24px;display:flex;flex-direction:column;gap:6px}
.info-row+.info-row{border-top:1px solid #D8D0BC}
.info-h{font-family:'Silkscreen',monospace;font-size:12px;color:#8B8578;letter-spacing:2px}
.info-v{font-size:18px;font-weight:600}
.info-sub{color:#8B8578;font-size:14px}
.info-links{display:flex;gap:16px;flex-wrap:wrap;font-weight:500}
.info-links a{border-bottom:1px solid #16130E}
.form{display:flex;flex-direction:column;gap:18px}
.field{display:flex;flex-direction:column;gap:8px;font-size:14px;font-weight:600}
.two-col{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:18px}
.control{font-family:'Space Grotesk',sans-serif;font-size:16px;padding:14px;border:2px solid #16130E;background:#F4EDDE;color:#16130E;outline:none;width:100%}
textarea.control{resize:vertical}
.control::placeholder{color:#8B8578;opacity:1}
.chips{display:flex;gap:10px;flex-wrap:wrap}
.chip{border:2px solid #16130E;padding:10px 16px;font-size:14px;cursor:pointer;background:#F4EDDE;color:#16130E;transition:background .18s ease,color .18s ease}
.chip:hover{background:#16130E;color:#F4EDDE}
.chip.selected{background:#16130E;color:#F4EDDE}

/* ---- splash overlay (home only) ---- */
body.splashing{overflow:hidden}
/* Gate (set by the inline <head> script) hides the splash before first paint on
   internal navigations, so only initial load + refresh show it. */
html.no-splash #splash{display:none}
#splash{
  position:fixed;inset:0;z-index:1000;
  background:#16130E;color:#F4EDDE;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:34px;
  overflow:hidden;transition:opacity .5s ease;cursor:pointer;
}
#splash.done{opacity:0;pointer-events:none}
.splash-row{display:flex;align-items:center;gap:24px}
#splash-dice{width:clamp(72px,14vh,120px);height:auto;will-change:transform}
#splash-title{font-family:'Silkscreen',monospace;font-size:clamp(34px,8vh,64px);letter-spacing:2px;display:flex}
#splash-title span{opacity:0;display:inline-block}
#splash-title span.flip{transform:scaleX(-1)}
.splash-skip{position:absolute;bottom:22px;font-size:12px;color:#4A463D;letter-spacing:1px}
#splash-enter{background:none;border:0;color:#8B8578;border-bottom:1px solid #4A463D;font:inherit;letter-spacing:1px;cursor:pointer;padding:0 0 1px}
#splash-enter:hover{color:#F4EDDE}

/* The splash was authored landscape (dice + wordmark side by side, sized off
   viewport height). On a phone that row is wider than the screen and clips, so
   stack it and size off width instead. Wide/landscape screens keep the original. */
@media (max-width: 560px){
  #splash{gap:26px;padding-inline:20px}
  .splash-row{flex-direction:column;gap:18px}
  #splash-dice{width:clamp(64px,18vw,96px)}
  #splash-title{font-size:clamp(30px,11vw,54px);justify-content:center}
}

@media (prefers-reduced-motion: reduce){
  .marquee-track,.gflip{animation:none}
  #splash-title span{opacity:1}
}
