/* michaelgaff.com — shared stylesheet for the multi-page studio site.
   Tokens + components live here; every page links it. Edit once, applies everywhere. */
:root{
  --canvas:#FAF7F0;--ink:#111111;--smoke:#5A5650;--greige:#C9C2B4;
  --accent:#7A1020;--accent-soft:rgba(122,16,32,.35);--pop:#E8540C;
  --line:rgba(17,17,17,.14);--ease:cubic-bezier(.16,1,.3,1);
  --display:'Bodoni Moda',serif;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--canvas);color:var(--ink);font-family:'Inter Tight',sans-serif;font-weight:400;line-height:1.6;overflow-x:hidden}
::selection{background:var(--accent);color:#fff}
.mono{font-family:'Spline Sans Mono',monospace}
.wrap{width:min(100% - 44px,1240px);margin-inline:auto}
.wrap-narrow{width:min(100% - 44px,760px);margin-inline:auto}
a{color:inherit}
.skip{position:absolute;left:12px;top:-60px;z-index:120;background:var(--accent);color:#fff;font-weight:700;padding:10px 16px;transition:top .2s}
.skip:focus{top:12px}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

/* paper grain + wash (fixed, every page) */
body::after{content:"";position:fixed;inset:0;pointer-events:none;opacity:.085;z-index:98;
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.62'/%3E%3C/svg%3E")}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:-1;background:
 radial-gradient(120% 60% at 85% -5%, var(--accent-soft) 0%, transparent 50%),
 radial-gradient(100% 50% at -10% 30%, rgba(201,194,180,.55) 0%, transparent 55%),
 linear-gradient(180deg, transparent 60%, rgba(122,16,32,.06) 100%)}

/* ===== nav (persistent bar) ===== */
nav{position:fixed;inset:0 0 auto 0;z-index:110;display:flex;justify-content:space-between;align-items:center;padding:0 20px;height:60px;background:rgba(17,17,17,.94);color:#FAF7F0;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
nav .id{display:flex;align-items:center;gap:12px;text-decoration:none}
nav .crest{height:32px;width:32px;color:#FAF7F0}
nav .nm{font-family:var(--display);font-weight:700;font-size:1.02rem;letter-spacing:.18em}
nav .nm i{color:#c4485c}
.navlinks{display:none;align-items:center;gap:30px}
.navlinks a{font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;text-decoration:none;color:rgba(250,247,240,.78);transition:color .2s;position:relative;padding:4px 0}
.navlinks a:hover{color:#FAF7F0}
.navlinks a.active{color:#FAF7F0}
.navlinks a.active::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;background:var(--accent)}
.navlinks a.cta{color:#FAF7F0;border:1px solid rgba(250,247,240,.4);padding:8px 16px;border-radius:2px;transition:background .2s,border-color .2s}
.navlinks a.cta:hover{background:var(--accent);border-color:var(--accent)}
.burger{width:44px;height:44px;border:0;background:transparent;cursor:pointer;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:6px}
.burger span{display:block;width:24px;height:2px;background:#FAF7F0;transition:transform .35s var(--ease),opacity .25s}
body.menu-open .burger span:nth-child(1){transform:translateY(8px) rotate(45deg)}
body.menu-open .burger span:nth-child(2){opacity:0}
body.menu-open .burger span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}
body.menu-open{overflow:hidden}
@media(min-width:880px){
  .navlinks{display:flex}
  .burger{display:none}
}

/* full-screen overlay menu (mobile) */
.menu{position:fixed;inset:0;z-index:105;background:var(--ink);color:var(--canvas);display:flex;flex-direction:column;justify-content:center;padding:80px 28px 40px;clip-path:inset(0 0 100% 0);transition:clip-path .55s var(--ease);overflow:hidden}
body.menu-open .menu{clip-path:inset(0 0 0% 0)}
.menu .ghost{position:absolute;right:-18%;top:8%;width:min(75vw,520px);aspect-ratio:1;color:#FAF7F0;opacity:.07}
.menu .mono{font-size:.66rem;letter-spacing:.3em;color:#c4485c;margin-bottom:18px}
.menu a.item{font-family:var(--display);font-weight:700;font-size:clamp(2.2rem,9vw,4.6rem);line-height:1.16;text-decoration:none;display:block;letter-spacing:-.01em;transition:color .25s,transform .3s var(--ease)}
.menu a.item:hover{color:#c4485c;transform:translateX(10px)}
.menu a.item i{font-style:italic}
.menu .sub{margin-top:34px;display:flex;flex-wrap:wrap;gap:18px;font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;opacity:.55}
.menu .sub a{text-decoration:none}

/* ===== hero (home) ===== */
.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding-top:84px;position:relative;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;background:
  radial-gradient(130% 75% at 82% -12%, var(--accent-soft) 0%, transparent 58%),
  radial-gradient(95% 65% at -12% 112%, rgba(201,194,180,.75) 0%, transparent 62%),
  conic-gradient(from 200deg at 85% 20%, transparent 0deg, rgba(122,16,32,.07) 40deg, transparent 90deg)}
.hero .watermark{position:absolute;right:-14%;top:4%;width:min(95vw,720px);aspect-ratio:1;color:var(--accent);opacity:.10;z-index:0;filter:saturate(.7)}
.hero .watermark2{position:absolute;left:-22%;bottom:-12%;width:min(70vw,440px);aspect-ratio:1;color:var(--ink);opacity:.045;z-index:0;transform:rotate(-12deg)}
.kicker{font-size:.72rem;letter-spacing:.42em;text-transform:uppercase;font-weight:500;color:var(--smoke);margin-bottom:10px;position:relative}
.masthead{font-family:var(--display);font-weight:800;font-size:clamp(4.6rem,20vw,16rem);line-height:.92;letter-spacing:-.015em;position:relative}
.masthead .rule{display:block;width:1.2em;height:.045em;background:var(--accent);margin-top:.08em;animation:grow 1s var(--ease) .4s both;transform-origin:left}
@keyframes grow{from{transform:scaleX(0)}}
.ident{margin-top:38px;max-width:62ch;font-size:clamp(1.05rem,2.5vw,1.4rem);font-weight:300;color:var(--smoke);position:relative}
.ident a{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent-soft);transition:border-color .25s}
.ident a:hover{border-bottom-color:var(--accent)}
.ident .it{font-family:var(--display);font-style:italic;font-weight:500;color:var(--ink)}
.stats{display:flex;flex-wrap:wrap;gap:10px;margin-top:30px;position:relative}
.stat{border:1px solid var(--line);background:rgba(255,255,255,.5);padding:8px 16px;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;font-weight:600;color:var(--smoke)}
.stat b{color:var(--accent)}

/* ticker */
.ticker{border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden;padding:14px 0;margin-top:7vh;background:rgba(255,255,255,.45);position:relative}
.ticker .track{display:flex;white-space:nowrap;animation:tick 26s linear infinite;width:max-content}
.ticker:hover .track{animation-play-state:paused}
.ticker span{font-family:var(--display);font-style:italic;font-size:1.05rem;color:var(--smoke);padding-right:16px}
.ticker b{color:var(--accent);font-style:normal;font-family:'Inter Tight',sans-serif;font-weight:600;font-size:.74rem;letter-spacing:.22em;text-transform:uppercase;vertical-align:2px;padding-right:16px}
@keyframes tick{to{transform:translateX(-50%)}}

/* ===== interior page header ===== */
.page{padding-top:60px}
.pagehead{padding:clamp(60px,11vw,120px) 0 0}
.pagehead .mono{font-size:.7rem;letter-spacing:.34em;text-transform:uppercase;color:var(--accent)}
.pagehead h1{font-family:var(--display);font-weight:800;font-size:clamp(2.8rem,9vw,5.6rem);line-height:.98;letter-spacing:-.015em;margin-top:14px}
.pagehead h1 i{color:var(--accent)}
.pagehead .lede{margin-top:22px;max-width:60ch;font-size:clamp(1.02rem,2.2vw,1.28rem);font-weight:300;color:var(--smoke)}
.pagehead .rule{display:block;width:1.1em;height:.05em;background:var(--accent);margin-top:24px}

/* ===== sections ===== */
section{padding-block:clamp(64px,9vw,120px)}
.sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:18px;border-bottom:2px solid var(--ink);padding-bottom:16px;margin-bottom:8px}
.sec-head h2{font-family:var(--display);font-weight:700;font-size:clamp(2rem,5vw,3.4rem);letter-spacing:-.01em}
.sec-head h2 i{color:var(--accent)}
.sec-head .mono{font-size:.68rem;letter-spacing:.18em;color:var(--smoke);text-align:right}

/* roster */
a.row{display:grid;grid-template-columns:1fr auto;gap:8px;padding:26px 6px;border-bottom:1px solid var(--line);position:relative;text-decoration:none;transition:background .3s}
@media(min-width:840px){a.row{grid-template-columns:130px 1.1fr 1.8fr auto;gap:30px;align-items:center}}
a.row::before{content:"";position:absolute;left:0;top:0;bottom:0;width:0;background:var(--accent);transition:width .3s var(--ease)}
a.row:hover::before{width:4px}
a.row:hover{background:rgba(122,16,32,.04)}
.row .idx{font-family:'Spline Sans Mono',monospace;font-size:.74rem;color:var(--accent);letter-spacing:.08em}
.row h3{font-family:var(--display);font-weight:700;font-size:clamp(1.5rem,5.2vw,2.05rem);margin-top:2px}
.row h3 .new{font-family:'Inter Tight',sans-serif;font-size:.56rem;font-weight:600;letter-spacing:.2em;color:#fff;background:var(--pop);padding:3px 8px;vertical-align:8px;margin-left:10px}
.row .cat{display:block;font-size:.62rem;letter-spacing:.26em;text-transform:uppercase;font-weight:600;color:var(--smoke);margin-top:5px}
.row p{color:var(--smoke);font-size:.94rem;max-width:50ch;font-weight:300}
.row .go{font-size:1.5rem;color:var(--greige);transition:transform .3s var(--ease),color .3s;align-self:center}
a.row:hover .go{transform:translateX(8px);color:var(--accent)}

/* ===== journal (dark sections + index) ===== */
.journal{background:var(--ink);color:var(--canvas);position:relative;overflow:hidden}
.journal::before{content:"";position:absolute;inset:0;background:radial-gradient(100% 80% at 110% 0%, rgba(122,16,32,.35) 0%, transparent 55%)}
.journal .wrap{position:relative}
.journal .sec-head{border-color:var(--canvas)}
.journal .sec-head .mono{color:rgba(250,247,240,.55)}
.j-grid{display:grid;gap:1px;background:rgba(250,247,240,.15);margin-top:40px}
@media(min-width:880px){.j-grid{grid-template-columns:repeat(3,1fr)}}
.j-card{background:rgba(17,17,17,.92);padding:34px 28px;transition:background .3s;text-decoration:none;color:inherit;display:block}
.j-card:hover{background:#1d1416}
.j-card.live{background:#1b1113}
.j-card .mono{font-size:.64rem;letter-spacing:.2em;color:#c4485c}
.j-card h3{font-family:var(--display);font-weight:500;font-size:1.5rem;line-height:1.22;margin:16px 0 12px}
.j-card h3 i{color:var(--greige)}
.j-card p{opacity:.55;font-size:.9rem;font-weight:300}
.j-card .soon{display:inline-block;margin-top:20px;font-size:.64rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:rgba(250,247,240,.5);border-bottom:1px solid var(--accent);padding-bottom:3px}
.j-card .read{display:inline-block;margin-top:20px;font-size:.64rem;letter-spacing:.2em;text-transform:uppercase;font-weight:700;color:#FAF7F0;border-bottom:1px solid var(--accent);padding-bottom:3px}
.j-note{margin-top:30px;text-align:center;font-size:.85rem;color:rgba(250,247,240,.5);font-weight:300;position:relative}
.j-note a{color:#c4485c;text-decoration:none}

/* featured note (home) */
.feature{display:grid;gap:30px;margin-top:40px}
@media(min-width:840px){.feature{grid-template-columns:1.3fr 1fr;align-items:center}}
.feature .card{border:1px solid var(--line);background:rgba(255,255,255,.5);padding:clamp(28px,4vw,44px);text-decoration:none;color:inherit;display:block;transition:background .3s,transform .3s var(--ease)}
.feature .card:hover{background:#fff;transform:translateY(-3px)}
.feature .card .mono{font-size:.64rem;letter-spacing:.22em;color:var(--accent)}
.feature .card h3{font-family:var(--display);font-weight:700;font-size:clamp(1.7rem,3.5vw,2.4rem);line-height:1.12;margin:14px 0 14px}
.feature .card p{color:var(--smoke);font-weight:300;font-size:.98rem;max-width:46ch}
.feature .card .read{display:inline-block;margin-top:22px;font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;font-weight:700;color:var(--accent);border-bottom:1px solid var(--accent-soft);padding-bottom:3px}
.feature .aside{font-weight:300;color:var(--smoke)}
.feature .aside .mono{font-size:.66rem;letter-spacing:.2em;color:var(--accent);text-transform:uppercase}
.feature .aside p{margin-top:12px;font-size:1.02rem}

/* studio band (home teaser) + studio page */
.band{background:var(--ink);color:var(--canvas);position:relative;overflow:hidden;text-align:center}
.band::before{content:"";position:absolute;inset:0;background:radial-gradient(90% 90% at 50% -20%, rgba(122,16,32,.4) 0%, transparent 60%)}
.band .wrap{position:relative}
.band .mono{font-size:.68rem;letter-spacing:.3em;color:#c4485c}
.band h2{font-family:var(--display);font-weight:700;font-size:clamp(1.9rem,5vw,3.2rem);line-height:1.12;max-width:20ch;margin:16px auto 0}
.band h2 i{color:var(--greige)}
.band .go{display:inline-block;margin-top:26px;font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;font-weight:700;color:#FAF7F0;border-bottom:1px solid var(--accent);padding-bottom:4px;text-decoration:none}

.split{display:grid;gap:1px;background:var(--line);margin-top:44px;border:1px solid var(--line)}
@media(min-width:840px){.split{grid-template-columns:1fr 1fr}}
.split .col{background:rgba(255,255,255,.55);padding:clamp(26px,4vw,40px)}
.split .col.dark{background:var(--ink);color:var(--canvas)}
.split .col .mono{font-size:.66rem;letter-spacing:.24em;text-transform:uppercase}
.split .col.dark .mono{color:#c4485c}
.split .col:not(.dark) .mono{color:var(--accent)}
.split .col h3{font-family:var(--display);font-weight:700;font-size:1.5rem;margin:12px 0 14px}
.split .col p{font-weight:300;font-size:.98rem;line-height:1.7}
.split .col.dark p{opacity:.7}
.split .col ul{list-style:none;margin-top:14px;display:flex;flex-direction:column;gap:10px}
.split .col li{font-weight:300;font-size:.96rem;padding-left:20px;position:relative}
.split .col li::before{content:"—";position:absolute;left:0;color:var(--accent)}
.split .col.dark li::before{color:#c4485c}

/* ===== article (journal post) ===== */
.article{padding-top:60px}
.article .head{padding:clamp(56px,10vw,110px) 0 0}
.article .back{font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:var(--smoke);text-decoration:none}
.article .back:hover{color:var(--accent)}
.article .meta{margin-top:30px;font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:var(--accent)}
.article h1{font-family:var(--display);font-weight:800;font-size:clamp(2.3rem,6.5vw,4rem);line-height:1.04;letter-spacing:-.01em;margin-top:14px}
.article .dek{margin-top:20px;font-family:var(--display);font-style:italic;font-size:clamp(1.15rem,2.6vw,1.5rem);font-weight:400;color:var(--smoke);max-width:34ch}
.article .body{margin-top:42px;font-size:1.1rem;line-height:1.78;font-weight:400;color:#2a2724}
.article .body p{margin-bottom:1.5em;max-width:68ch}
.article .body p strong{font-weight:700;color:var(--ink)}
.article .body .lead{font-size:1.22rem}
.article .sign{font-family:var(--display);font-style:italic;font-size:1.3rem;color:var(--accent);margin-top:8px}
.article .endcap{margin-top:54px;border-top:1px solid var(--line);padding-top:34px}

/* ===== letter page ===== */
.letter{text-align:center;position:relative;overflow:hidden}
.letter .ghost{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(120vw,760px);aspect-ratio:1;color:var(--accent);opacity:.05;z-index:0}
.letter .wrap{position:relative}
.letter .mono{font-size:.7rem;letter-spacing:.3em;color:var(--accent)}
.letter h1,.letter h2{font-family:var(--display);font-weight:700;font-size:clamp(2.2rem,6.5vw,4.6rem);max-width:17ch;margin:18px auto 0;letter-spacing:-.01em}
.letter h1 i,.letter h2 i{color:var(--accent)}
.letter p{color:var(--smoke);margin:24px auto 0;max-width:50ch;font-weight:300}
.letter .formwrap{margin-top:40px}
.cap{display:flex;max-width:500px;margin-inline:auto;border:1.5px solid var(--ink);overflow:hidden;background:#fff}
.cap input{flex:1;min-width:0;border:0;background:transparent;padding:17px 22px;font-family:'Inter Tight',sans-serif;font-size:.95rem;outline:none}
.cap button{border:0;background:var(--ink);color:var(--canvas);font-family:'Inter Tight',sans-serif;font-weight:600;font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;padding:0 32px;cursor:pointer;transition:background .25s}
.cap button:hover{background:var(--accent)}
.cap button[disabled]{opacity:.6;cursor:wait}
.cap-msg{min-height:1.4em;margin-top:12px;font-size:.85rem;font-weight:500}
.cap-msg.err{color:var(--pop)}
.signoff{margin-top:26px;font-family:var(--display);font-style:italic;font-size:1.1rem;color:var(--smoke)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none}
.success-block{display:none}
.success-block .big{font-family:var(--display);font-style:italic;font-size:1.4rem}
.letter .trust{margin-top:34px;font-size:.78rem;color:var(--smoke);font-weight:300}

/* ===== footer ===== */
footer{border-top:1px solid var(--line);padding:34px 0;background:rgba(255,255,255,.4)}
footer .wrap{display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;align-items:center;font-size:.74rem;color:var(--smoke)}
footer .crest{height:26px;width:26px;color:var(--ink)}
footer a{color:var(--smoke);text-decoration:none}
footer a:hover{color:var(--accent)}
.now{width:100%;font-size:.72rem;letter-spacing:.08em;color:var(--smoke)}
.now b{color:var(--accent);font-weight:600;letter-spacing:.16em}
.aicredit{width:100%;font-size:.72rem;letter-spacing:.04em;color:var(--smoke);font-weight:300;border-top:1px dashed var(--line);padding-top:14px;margin-top:2px}
.aicredit b{font-family:var(--display);font-style:italic;font-weight:500;color:var(--accent);letter-spacing:0}

/* reveals */
.rv{opacity:0;transform:translateY(26px);transition:opacity .85s var(--ease),transform .85s var(--ease)}
.rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none}.masthead .rule{animation:none}.ticker .track{animation:none}}
