

:root,
:root[data-palette="nightfall"]{
  --paper:#0e1113; --paper-2:#171b1e; --raised:#1f2427; --top:#272d31;
  --ink:#e9edee; --ink-2:#ced5d7; --muted:#93a0a4; --dim:#8d9a9e;
  --line:#2b3236;
  --accent:#4cc9ae; --accent-soft:rgba(76,201,174,.13); --on-accent:#06231d;
  --accent-edge:inset 0 1px 0 rgba(255,255,255,.30), inset 0 -2px 0 rgba(0,60,48,.34);
  --accent-press:inset 0 2px 4px rgba(0,60,48,.42), inset 0 -1px 0 rgba(255,255,255,.14);
}

:root[data-palette="monograph"]{
  --paper:#111112; --paper-2:#1b1b1d; --raised:#232326; --top:#2b2b2f;
  --ink:#eeedeb; --ink-2:#d5d3cf; --muted:#9d9b96; --dim:#98968f;
  --line:#313134;
  --accent:#d7b475; --accent-soft:rgba(215,180,117,.13); --on-accent:#1a1a1c;
  --accent-edge:inset 0 1px 0 rgba(255,255,255,.32), inset 0 -2px 0 rgba(84,63,22,.30);
  --accent-press:inset 0 2px 4px rgba(84,63,22,.40), inset 0 -1px 0 rgba(255,255,255,.16);
}

:root[data-palette="signal"]{
  --paper:#131113; --paper-2:#1d1a1d; --raised:#262226; --top:#2e2a2f;
  --ink:#efeaec; --ink-2:#d8d1d4; --muted:#a49aa0; --dim:#a0969c;
  --line:#353035;
  --accent:#ff6b81; --accent-soft:rgba(255,107,129,.13); --on-accent:#2a0b12;
  --accent-edge:inset 0 1px 0 rgba(255,255,255,.28), inset 0 -2px 0 rgba(110,10,30,.32);
  --accent-press:inset 0 2px 4px rgba(110,10,30,.42), inset 0 -1px 0 rgba(255,255,255,.14);
}

:root{
  --display:'Fraunces',Georgia,serif;
  --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;

  --ease:cubic-bezier(.22,1,.36,1);
  --spring:cubic-bezier(.34,1.4,.64,1);
  --settle:cubic-bezier(.16,1.36,.3,1);   
  --press-t:.09s;

  --contact:0 1px 2px rgba(0,0,0,.5);
  --ambient:0 8px 22px -10px rgba(0,0,0,.6);
  --contact-lift:0 2px 5px rgba(0,0,0,.55);
  --ambient-lift:0 20px 40px -14px rgba(0,0,0,.66);
  --edge:inset 0 1px 0 rgba(255,255,255,.07), inset 0 -1px 0 rgba(0,0,0,.4);
  --edge-hi:inset 0 1px 0 rgba(255,255,255,.10), inset 0 -1px 0 rgba(0,0,0,.5);
  --press:inset 0 2px 5px rgba(0,0,0,.55);

  --emboss:0 1px 0 rgba(255,255,255,.055);

  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.085'/%3E%3C/svg%3E");
  --grain-page:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.06'/%3E%3C/svg%3E");
  --grain-hi:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.78' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.11'/%3E%3C/svg%3E");

  --r:14px;
  --r-lg:20px;
  --wrap:1180px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;color-scheme:dark}
body{
  font-family:var(--sans);
  background-color:var(--paper);
  background-image:var(--grain-page);
  color:var(--ink-2);
  -webkit-font-smoothing:antialiased;
  line-height:1.6;
  min-height:100dvh;
  display:flex;flex-direction:column;
  transition:background-color .5s var(--ease),color .5s var(--ease);
}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%;height:auto}
main{flex:1 0 auto}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:5px}

.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 clamp(18px,4vw,36px)}

.skip{
  position:absolute;left:-9999px;top:8px;z-index:100;
  padding:11px 18px;border-radius:999px;font-size:13px;font-weight:600;
  background-color:var(--accent);color:var(--on-accent);box-shadow:var(--contact),var(--accent-edge);
}
.skip:focus{left:16px}

.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

.eyebrow{
  font-size:10.5px;font-weight:600;letter-spacing:.17em;text-transform:uppercase;
  color:var(--muted);text-shadow:var(--emboss);display:block;
}

.bar{
  position:sticky;top:0;z-index:40;
  background-color:var(--paper);
  border-bottom:1px solid transparent;
  transition:border-color .3s var(--ease),background-color .5s var(--ease);
}
.bar.stuck{border-bottom-color:var(--line)}
.bar .wrap{display:flex;align-items:center;gap:14px;height:66px}

.mark{display:flex;flex-direction:column;line-height:1;margin-right:auto}
.mark b{
  font-family:var(--display);font-weight:900;font-size:17px;letter-spacing:-.025em;
  color:var(--ink);text-shadow:var(--emboss);
}
.mark span{
  font-size:10px;font-weight:600;letter-spacing:.17em;text-transform:uppercase;
  color:var(--muted);margin-top:5px;text-shadow:var(--emboss);
}

.jump{
  display:flex;align-items:center;gap:3px;border-radius:999px;padding:4px;
  background-color:var(--paper-2);background-image:var(--grain);
  box-shadow:var(--contact),var(--edge);
}
.jump a{
  font-size:12.5px;font-weight:600;padding:7px 14px;border-radius:999px;color:var(--muted);
  white-space:nowrap;
  transition:color .2s,background-color .2s,transform var(--press-t) ease-out,box-shadow var(--press-t) ease-out;
}
.jump a:hover{color:var(--ink);background-color:var(--accent-soft)}
.jump a:active{transform:translateY(1px);box-shadow:var(--press)}

.jump a[aria-current="page"]{color:var(--ink);background-color:var(--paper);box-shadow:var(--press)}

.menu-btn{display:none}

@media (max-width:860px){
  .bar .wrap{gap:10px;position:relative}

  .menu-btn{
    display:grid;place-items:center;flex:0 0 auto;
    width:38px;height:38px;border-radius:11px;
    background-color:var(--paper-2);background-image:var(--grain);
    box-shadow:var(--contact),var(--edge);
    transition:transform var(--press-t) ease-out,box-shadow var(--press-t) ease-out;
  }
  .menu-btn:active{transform:translateY(1px);box-shadow:var(--press)}
  .menu-btn svg{width:19px;height:19px;fill:none;stroke:var(--ink);stroke-width:1.9;stroke-linecap:round}

  .menu-btn svg path{transition:transform .3s var(--ease),opacity .2s ease;transform-origin:12px 12px}
  .bar.menu-open .menu-btn .m1{transform:rotate(45deg) translateY(5px)}
  .bar.menu-open .menu-btn .m2{opacity:0}
  .bar.menu-open .menu-btn .m3{transform:rotate(-45deg) translateY(-5px)}
  .bar.menu-open .menu-btn{background-color:var(--top);box-shadow:var(--press)}

  .jump{display:none}
  .bar.menu-open .jump{
    display:flex;flex-direction:column;align-items:stretch;gap:2px;
    position:absolute;top:calc(100% + 4px);left:clamp(18px,4vw,36px);right:clamp(18px,4vw,36px);
    z-index:60;
    border-radius:14px;padding:7px;
    box-shadow:var(--contact),var(--ambient),var(--edge);
    animation:sheetDrop .28s var(--settle) both;
  }
  @keyframes sheetDrop{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
  .jump a{padding:13px 14px;border-radius:9px;font-size:14.5px;text-align:left;white-space:normal}
  .jump a[aria-current="page"]{box-shadow:var(--press)}
}

@media (max-width:860px){
  .mark b{font-size:15.5px;white-space:nowrap}
  .mark span{font-size:9.5px;letter-spacing:.15em;margin-top:4px;white-space:nowrap}
}
@media (max-width:520px){
  .mark b{font-size:16px}
  .mark span{font-size:8.5px;letter-spacing:.11em;margin-top:3px}
}
@media (max-width:370px){
  .mark b{font-size:15px}
  .mark span{font-size:8px;letter-spacing:.07em}
}

.btn{
  display:inline-flex;align-items:center;gap:9px;
  font-size:14px;font-weight:600;padding:13px 22px;border-radius:999px;
  background-color:var(--raised);background-image:var(--grain-hi);color:var(--ink);
  box-shadow:var(--contact),var(--ambient),var(--edge-hi);
  transition:background-color .25s var(--ease),transform var(--press-t) ease-out,box-shadow var(--press-t) ease-out;
}
.btn:hover{background-color:var(--top)}
.btn:active{transform:translateY(2px);box-shadow:var(--press)}
.btn.solid{
  background-color:var(--accent);background-image:var(--grain-hi);color:var(--on-accent);
  box-shadow:var(--contact),var(--ambient),var(--accent-edge);
}
.btn.solid:hover{filter:brightness(1.06)}
.btn.solid:active{transform:translateY(2px);box-shadow:var(--accent-press);filter:none}
.btn svg{width:15px;height:15px;flex:0 0 auto}

.seeall{
  display:inline-flex;align-items:center;gap:8px;margin-top:clamp(22px,3vw,34px);
  font-size:13px;font-weight:600;color:var(--muted);
  padding:11px 19px;border-radius:999px;
  background-color:var(--paper-2);background-image:var(--grain);
  box-shadow:var(--contact),var(--edge);
  transition:color .2s,background-color .25s var(--ease),gap .25s var(--ease),
             transform var(--press-t) ease-out,box-shadow var(--press-t) ease-out;
}
.seeall:hover{color:var(--ink);background-color:var(--raised);gap:12px}
.seeall:active{transform:translateY(2px);box-shadow:var(--press)}
.seeall .n{
  font-variant-numeric:tabular-nums;color:var(--dim);font-weight:500;
  padding-left:2px;
}

.back{
  display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;
  color:var(--muted);transition:color .2s,gap .25s var(--ease);
}
.back:hover{color:var(--accent);gap:10px}

.hero{padding:clamp(56px,9vw,116px) 0 clamp(40px,6vw,72px)}
.hero .plate{
  border-radius:var(--r-lg);padding:clamp(30px,5vw,62px);
  background-color:var(--paper-2);background-image:var(--grain);
  box-shadow:var(--contact),var(--ambient),var(--edge-hi);
  display:grid;grid-template-columns:1.25fr .85fr;gap:clamp(28px,4vw,52px);align-items:center;
}
@media (max-width:860px){ .hero .plate{grid-template-columns:1fr} }

.hero h1{
  font-family:var(--display);font-weight:900;
  font-size:clamp(40px,7.4vw,82px);line-height:.98;letter-spacing:-.038em;
  color:var(--ink);margin:16px 0 0;
}
.hero .lede{
  font-size:clamp(15.5px,1.7vw,19px);line-height:1.55;color:var(--ink-2);
  max-width:38ch;margin-top:20px;
}
.hero .acts{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}

.hero .art{
  aspect-ratio:1;border-radius:var(--r);
  background-color:var(--top);background-image:var(--grain-hi);
  box-shadow:var(--contact),var(--ambient),var(--edge-hi);
  position:relative;overflow:hidden;display:grid;place-items:center;
}
.hero .art img{width:100%;height:100%;object-fit:cover}
.hero .art .ring{width:52%;aspect-ratio:1;border-radius:50%;border:1.5px solid var(--accent);opacity:.5}
.hero .art .ring2{position:absolute;width:34%;aspect-ratio:1;border-radius:50%;border:1.5px solid var(--accent);opacity:.28}
.hero .art .dot{position:absolute;width:9%;aspect-ratio:1;border-radius:50%;background-color:var(--accent)}
.hero .art .cap{position:absolute;left:16px;bottom:14px}

.pagehead{padding:clamp(40px,6vw,78px) 0 clamp(20px,3vw,34px)}
.pagehead h1{
  font-family:var(--display);font-weight:900;
  font-size:clamp(32px,5.4vw,60px);line-height:1.02;letter-spacing:-.035em;
  color:var(--ink);margin:14px 0 0;
}
.pagehead p{font-size:clamp(15px,1.6vw,17px);color:var(--muted);max-width:52ch;margin-top:16px}
.pagehead .top{margin-bottom:22px}
.rule{height:1px;background-color:var(--line);margin:clamp(24px,4vw,40px) 0 0}

section.band{padding:clamp(48px,7vw,92px) 0;scroll-margin-top:78px}
section.band.tight{padding-top:clamp(28px,4vw,48px)}
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:clamp(22px,3vw,36px)}
.head h2{
  font-family:var(--display);font-weight:700;
  font-size:clamp(26px,3.6vw,42px);letter-spacing:-.028em;line-height:1.06;
  color:var(--ink);margin-top:9px;
}
.head p{font-size:14px;color:var(--muted);max-width:34ch;text-align:right}
@media (max-width:640px){ .head{flex-direction:column;align-items:flex-start} .head p{text-align:left} }

.deck{
  --p:0;
  display:grid;grid-template-columns:minmax(0,auto) minmax(0,1fr);
  gap:clamp(24px,4vw,52px);align-items:center;
  padding:clamp(22px,3.2vw,38px);border-radius:var(--r-lg);
  background-color:var(--paper-2);background-image:var(--grain);
  box-shadow:var(--contact),var(--ambient),var(--edge);
}
@media (max-width:760px){
  .deck{grid-template-columns:1fr;justify-items:center;text-align:center}
}

.deck .platter{position:relative;width:clamp(210px,25vw,282px);aspect-ratio:1}
.deck .disc{
  position:absolute;inset:0;border-radius:50%;
  background-color:var(--paper);background-image:var(--grain-hi);
  box-shadow:var(--contact),var(--ambient),inset 0 0 0 1px var(--line);
  animation:platter 1.8s linear infinite;   
  animation-play-state:paused;
  display:grid;place-items:center;
}
.deck.playing .disc{animation-play-state:running}
@keyframes platter{ to{transform:rotate(360deg)} }

.deck .ring{position:absolute;border-radius:50%;border:1px solid var(--line);opacity:.85}
.deck .ring.r1{inset:5%}
.deck .ring.r2{inset:11%}
.deck .ring.r3{inset:17.5%}
.deck .ring.r4{inset:24%}
.deck .ring.r5{inset:30.5%}

.deck .label{
  position:absolute;inset:34%;border-radius:50%;overflow:hidden;
  display:grid;place-items:center;
  background-color:var(--accent);
  box-shadow:inset 0 0 0 1px var(--line);
}
.deck .label img{width:100%;height:100%;object-fit:cover}

.deck .label .lbl{
  font-family:var(--display);font-weight:700;font-size:13px;line-height:1.15;
  letter-spacing:-.01em;color:var(--on-accent);text-align:center;padding:0 12%;
}
.deck .spindle{
  position:absolute;width:7px;height:7px;border-radius:50%;
  background-color:var(--paper);box-shadow:0 0 0 1px var(--line);
}

.deck .arm{
  position:absolute;top:6%;right:-3%;width:52%;height:10px;
  transform-origin:calc(100% - 11px) 50%;
  transform:rotate(calc(-25deg + var(--p) * 17deg));
  transition:transform .3s linear;
}
.deck .arm .tube{position:absolute;left:12px;top:4px;right:14px;height:2px;background-color:var(--muted)}
.deck .arm .head{position:absolute;left:0;top:0;width:13px;height:10px;border-radius:2px;background-color:var(--ink-2)}
.deck .arm .pivot{
  position:absolute;right:0;top:-6px;width:22px;height:22px;border-radius:50%;
  background-color:var(--raised);box-shadow:var(--contact),var(--edge-hi);
}

.deck .panel{display:flex;flex-direction:column;gap:7px;min-width:0;width:100%}
.deck .panel h2{
  font-family:var(--display);font-weight:700;
  font-size:clamp(27px,3.7vw,44px);letter-spacing:-.028em;line-height:1.05;color:var(--ink);
}
.deck .panel .yr{font-size:13px;color:var(--dim);font-variant-numeric:tabular-nums}
.deck .note{font-size:13px;color:var(--muted);margin-top:5px}
.deck .note a{color:var(--accent);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}

.deck .transport{display:flex;align-items:center;gap:16px;margin-top:14px;width:100%}
@media (max-width:760px){ .deck .transport{margin-top:18px} }

.deck .cue{
  flex:0 0 auto;width:54px;height:54px;border-radius:50%;display:grid;place-items:center;
  background-color:var(--accent);background-image:var(--grain-hi);
  box-shadow:var(--contact),var(--ambient),var(--accent-edge);
  transition:transform var(--press-t) ease-out,box-shadow var(--press-t) ease-out;
}
.deck .cue:active{transform:translateY(2px);box-shadow:var(--contact),var(--accent-press)}

.deck .cue .ico{
  position:relative;width:15px;height:17px;margin-left:3px;
  background-color:var(--on-accent);
  clip-path:polygon(0 0,100% 50%,0 100%);
}
.deck.playing .cue .ico{background-color:transparent;clip-path:none;margin-left:0;width:14px}
.deck.playing .cue .ico::before,
.deck.playing .cue .ico::after{
  content:"";position:absolute;top:0;width:4px;height:17px;background-color:var(--on-accent);
}
.deck.playing .cue .ico::before{left:1px}
.deck.playing .cue .ico::after{right:1px}

.deck .scrub{
  flex:1 1 auto;min-width:0;height:20px;margin:0;
  -webkit-appearance:none;appearance:none;background:transparent;cursor:pointer;
}
.deck .scrub::-webkit-slider-runnable-track{height:3px;border-radius:3px;background-color:var(--top)}
.deck .scrub::-moz-range-track{height:3px;border-radius:3px;background-color:var(--top)}
.deck .scrub::-moz-range-progress{height:3px;border-radius:3px;background-color:var(--accent)}
.deck .scrub::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;
  width:13px;height:13px;border-radius:50%;border:none;margin-top:-5px;
  background-color:var(--accent);box-shadow:var(--contact);
}
.deck .scrub::-moz-range-thumb{
  width:13px;height:13px;border-radius:50%;border:none;
  background-color:var(--accent);box-shadow:var(--contact);
}
.deck .scrub:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:999px}

.deck .clock{
  flex:0 0 auto;font-size:12.5px;color:var(--dim);font-variant-numeric:tabular-nums;
  display:flex;gap:5px;
}
.deck .clock .sep{opacity:.5}

.deck.dead .cue{opacity:.4;pointer-events:none}
.deck.dead .scrub{opacity:.4;pointer-events:none}

.releases{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,1.8vw,22px)}
@media (max-width:900px){ .releases{grid-template-columns:repeat(2,1fr)} }
@media (max-width:440px){ .releases{grid-template-columns:1fr} }

.rel.lead{grid-column:span 2;grid-row:span 2}
@media (max-width:900px){ .rel.lead{grid-column:span 2;grid-row:auto} }
@media (max-width:440px){ .rel.lead{grid-column:span 1} }

.rel{
  display:flex;flex-direction:column;border-radius:var(--r);overflow:hidden;
  background-color:var(--paper-2);background-image:var(--grain);
  box-shadow:var(--contact),var(--ambient),var(--edge);
  transition:transform .42s var(--ease),box-shadow .42s var(--ease),background-color .25s var(--ease);
  will-change:transform;
}
.rel:hover{
  transform:translateY(-6px);background-color:var(--raised);
  box-shadow:var(--contact-lift),var(--ambient-lift),var(--edge-hi);
}
.rel:active{transform:translateY(-1px);transition-duration:var(--press-t)}
.rel .cover{
  aspect-ratio:1;position:relative;overflow:hidden;
  background-color:var(--top);background-image:var(--grain-hi);
  display:grid;place-items:center;
}
.rel .cover img{width:100%;height:100%;object-fit:cover}
.rel .cover .glyph{width:44%;aspect-ratio:1;border-radius:50%;border:1.5px solid var(--accent);opacity:.42}
.rel .cover .bar-g{position:absolute;bottom:0;left:0;height:3px;width:38%;background-color:var(--accent);opacity:.55}
.rel .body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:5px;flex:1}
.rel h3{font-family:var(--display);font-weight:700;font-size:19px;letter-spacing:-.02em;color:var(--ink);line-height:1.15}
.rel.lead h3{font-size:clamp(22px,2.6vw,31px)}
.rel .yr{font-size:12.5px;color:var(--dim);font-variant-numeric:tabular-nums}
.rel .blurb{font-size:13.5px;color:var(--muted);line-height:1.55;margin-top:4px}
.rel .play{
  margin-top:auto;padding-top:12px;font-size:12.5px;font-weight:600;color:var(--accent);
  display:inline-flex;align-items:center;gap:6px;transition:gap .25s var(--ease);
}
.rel:hover .play{gap:10px}

.mosaic{
  display:flex;flex-wrap:wrap;
  gap:clamp(12px,1.5vw,18px);
  --rowh:clamp(190px,23vw,300px);
}
.mosaic::after{content:"";flex-grow:1e9;flex-basis:0}

.ph{
  position:relative;border-radius:var(--r);overflow:hidden;
  flex-grow:var(--ar);flex-shrink:1;flex-basis:calc(var(--ar) * var(--rowh));
  aspect-ratio:var(--ar);
  background-color:var(--paper-2);background-image:var(--grain-hi);
  box-shadow:var(--contact),var(--ambient),var(--edge);
  transition:transform .42s var(--ease),box-shadow .42s var(--ease);
  display:grid;place-items:center;
}
.ph:hover{transform:translateY(-5px);box-shadow:var(--contact-lift),var(--ambient-lift),var(--edge-hi)}
.ph img{width:100%;height:100%;object-fit:cover}
.ph .cap{position:absolute;left:14px;bottom:12px;opacity:0;transform:translateY(4px);transition:opacity .3s var(--ease),transform .3s var(--ease)}
.ph:hover .cap,.ph:focus-within .cap{opacity:1;transform:none}
.ph i{display:block;width:34px;height:34px;border:1.5px solid var(--accent);opacity:.3;border-radius:3px}

.ar-50 {--ar:0.5}      
.ar-56 {--ar:0.5625}   
.ar-67 {--ar:0.6667}   
.ar-75 {--ar:0.75}     
.ar-80 {--ar:0.8}      
.ar-100{--ar:1}        
.ar-125{--ar:1.25}     
.ar-133{--ar:1.3333}   
.ar-150{--ar:1.5}      
.ar-178{--ar:1.7778}   
.ar-200{--ar:2}        
.ar-240{--ar:2.4}      

@media (max-width:620px){
  .mosaic{--rowh:clamp(150px,44vw,220px)}
  .ph{min-width:44%}
}

.projects{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,1.8vw,22px);align-items:start}
@media (max-width:880px){ .projects{grid-template-columns:repeat(2,1fr)} }
@media (max-width:560px){ .projects{grid-template-columns:1fr} }

.prj{
  display:flex;flex-direction:column;border-radius:var(--r);overflow:hidden;
  background-color:var(--paper-2);background-image:var(--grain);
  box-shadow:var(--contact),var(--ambient),var(--edge);
  transition:transform .42s var(--ease),box-shadow .42s var(--ease),background-color .25s var(--ease);
}
.prj:hover{transform:translateY(-5px);background-color:var(--raised);box-shadow:var(--contact-lift),var(--ambient-lift),var(--edge-hi)}
.prj .thumb{aspect-ratio:16/10;background-color:var(--top);background-image:var(--grain-hi);display:grid;place-items:center;overflow:hidden}
.prj .thumb img{width:100%;height:100%;object-fit:cover}
.prj .thumb i{width:30px;height:30px;border:1.5px solid var(--accent);opacity:.3;border-radius:3px}
.prj .body{padding:18px 20px 20px;display:flex;flex-direction:column;gap:7px;flex:1}
.prj .kind{font-size:10px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);text-shadow:var(--emboss)}
.prj h3{font-family:var(--display);font-weight:700;font-size:18.5px;letter-spacing:-.02em;color:var(--ink);line-height:1.2}
.prj p{font-size:13.5px;color:var(--muted);line-height:1.55}
.prj .go{
  margin-top:auto;padding-top:12px;font-size:12.5px;font-weight:600;color:var(--accent);
  display:inline-flex;align-items:center;gap:6px;transition:gap .25s var(--ease);
}
.prj:hover .go{gap:10px}

.prj.bare .body{padding:22px 20px}

.log{display:flex;flex-direction:column;gap:2px;max-width:70ch}
.entry{
  display:grid;grid-template-columns:112px 1fr;gap:22px;
  padding:22px 20px;border-radius:var(--r);
  transition:background-color .25s var(--ease);
}
.entry:hover{background-color:var(--paper-2)}
.entry + .entry{border-top:1px solid var(--line)}
.entry time{
  font-size:12px;color:var(--dim);font-variant-numeric:tabular-nums;letter-spacing:.02em;
  padding-top:3px;white-space:nowrap;
}
.entry p{font-size:15px;color:var(--ink-2);line-height:1.62}
.entry p em{color:var(--ink);font-style:italic}
@media (max-width:600px){
  .entry{grid-template-columns:1fr;gap:8px;padding:18px 14px}
}

.yearmark{
  font-family:var(--display);font-weight:700;font-size:13px;color:var(--dim);
  letter-spacing:.04em;padding:26px 20px 8px;font-variant-numeric:tabular-nums;
}

.contact .plate{
  border-radius:var(--r-lg);padding:clamp(30px,5vw,58px);
  background-color:var(--raised);background-image:var(--grain-hi);
  box-shadow:var(--contact),var(--ambient),var(--edge-hi);
  display:grid;grid-template-columns:1fr auto;gap:clamp(24px,4vw,48px);align-items:center;
}
@media (max-width:780px){ .contact .plate{grid-template-columns:1fr} }
.contact h2{font-family:var(--display);font-weight:700;font-size:clamp(25px,3.4vw,38px);letter-spacing:-.028em;color:var(--ink);margin:14px 0 10px}
.contact p{font-size:15px;color:var(--ink-2);max-width:44ch}
.contact .acts{display:flex;flex-wrap:wrap;gap:12px}

.elsewhere{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}
.chip{
  font-size:12.5px;font-weight:600;color:var(--muted);padding:9px 15px;border-radius:999px;
  background-color:var(--paper-2);box-shadow:var(--contact),var(--edge);
  transition:color .2s,background-color .2s,transform var(--press-t) ease-out,box-shadow var(--press-t) ease-out;
}
.chip:hover{color:var(--ink);background-color:var(--paper)}
.chip:active{transform:translateY(2px);box-shadow:var(--press)}

.studio-note{font-size:13px;color:var(--dim);margin-top:clamp(22px,3vw,34px);max-width:52ch}
.studio-note a{color:var(--muted);border-bottom:1px solid var(--line)}
.studio-note a:hover{color:var(--accent);border-bottom-color:var(--accent)}

.contact-grid{
  display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(14px,2vw,22px);align-items:start;
}
@media (max-width:820px){ .contact-grid{grid-template-columns:1fr} }

.card-email,.card-good,.card-else{
  border-radius:var(--r-lg);padding:clamp(26px,3.4vw,40px);
  background-color:var(--paper-2);background-image:var(--grain);
  box-shadow:var(--contact),var(--ambient),var(--edge-hi);
}
.card-email{background-color:var(--raised);background-image:var(--grain-hi)}
.card-else{margin-top:clamp(14px,2vw,22px)}

.addr{
  display:block;margin:14px 0 22px;
  font-family:var(--display);font-weight:700;
  font-size:clamp(19px,2.6vw,30px);letter-spacing:-.02em;line-height:1.2;
  color:var(--ink);word-break:break-word;
  border-bottom:1px solid var(--line);padding-bottom:12px;
  transition:color .2s,border-color .2s;
}
.addr:hover{color:var(--accent);border-bottom-color:var(--accent)}
.card-email .acts{display:flex;flex-wrap:wrap;gap:10px}

.btn.copied{
  background-color:var(--accent);color:var(--on-accent);
  box-shadow:var(--contact),var(--accent-edge);
}

.goodfor{list-style:none;margin-top:14px;display:flex;flex-direction:column;gap:11px}
.goodfor li{
  font-size:14.5px;color:var(--ink-2);line-height:1.5;
  padding-left:20px;position:relative;
}
.goodfor li::before{
  content:"";position:absolute;left:0;top:.62em;
  width:7px;height:7px;border-radius:50%;background-color:var(--accent);opacity:.75;
}
.card-else .elsewhere{margin-top:14px}

.empty{
  padding:clamp(34px,5vw,56px);border-radius:var(--r);text-align:center;
  background-color:var(--paper-2);background-image:var(--grain);
  box-shadow:var(--contact),var(--edge);
}
.empty p{font-size:14px;color:var(--muted)}

.sr-copy{position:fixed;left:-9999px;top:0;opacity:0}

footer{border-top:1px solid var(--line);padding:34px 0 46px;margin-top:clamp(40px,6vw,80px);flex:0 0 auto}
footer .wrap{display:flex;flex-wrap:wrap;gap:14px;align-items:baseline;justify-content:space-between}
footer p{font-size:12.5px;color:var(--dim)}
footer a{color:var(--muted);border-bottom:1px solid var(--line);transition:color .2s,border-color .2s}
footer a:hover{color:var(--accent);border-bottom-color:var(--accent)}

.nf{display:grid;place-items:center;text-align:center;padding:clamp(70px,14vw,170px) 0}
.nf h1{font-family:var(--display);font-weight:900;font-size:clamp(46px,10vw,104px);letter-spacing:-.04em;color:var(--ink);line-height:1}
.nf p{font-size:16px;color:var(--muted);margin:16px 0 30px;max-width:40ch}

[data-rise]{opacity:0;transform:translateY(16px)}
[data-rise].in{opacity:1;transform:none;transition:opacity .5s var(--ease),transform .62s var(--settle)}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important}
  [data-rise]{opacity:1;transform:none}

  .deck .disc{animation:none!important}
}

.pal{
  width:38px;height:38px;border-radius:11px;flex:0 0 auto;
  display:grid;place-items:center;
  background-color:var(--paper-2);background-image:var(--grain);
  box-shadow:var(--contact),var(--edge);
  transition:transform var(--press-t) ease-out,box-shadow var(--press-t) ease-out;
}
.pal:active{transform:translateY(1px);box-shadow:var(--press)}
.pal .dot{
  width:16px;height:16px;border-radius:50%;
  background-color:var(--accent);
  box-shadow:var(--accent-edge);
  transition:background-color .35s var(--ease);
}
@media print{ .pal,.menu-btn{display:none} }
