/* aubjfa.com page styles. Tokens come from the design system (../../styles.css). */

:root{--page-max:1080px}
body{background:var(--ink-900)}
.skip{position:absolute;left:-9999px;top:0;z-index:100;padding:12px 18px;background:var(--bone-100);color:var(--ink-900);font-size:14px;font-weight:600}
.skip:focus{left:16px;top:16px}
.shell{max-width:var(--page-max);margin:0 auto;padding:0 32px}
header.site{position:sticky;top:0;z-index:30;background:rgba(11,14,17,.86);backdrop-filter:blur(14px);border-bottom:1px solid var(--border-hairline)}
header.site .shell{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:64px;flex-wrap:wrap}
.lockup{display:flex;align-items:baseline;gap:14px;text-decoration:none;border:0;padding:8px 0}
.lockup b{font-family:var(--font-mono);font-weight:500;font-size:16px;letter-spacing:.2em;color:var(--bone-100)}
.lockup span{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-300)}
nav.site ul{display:flex;align-items:center;gap:8px;margin:0;padding:0;list-style:none;flex-wrap:wrap}
nav.site a{font-family:var(--font-mono);display:inline-flex;align-items:center;min-height:44px;padding:0 12px;font-size:14px;color:var(--ink-100);border:0}
nav.site a:hover{color:var(--bone-100)}
.btn{font-family:var(--font-mono);display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;padding:0 22px;font-size:14px;font-weight:500;letter-spacing:-.01em;border-radius:var(--radius-2);border:1px solid var(--tide-600);background:var(--tide-500);color:#fff;text-decoration:none;transition:var(--transition-control)}
.btn:hover{background:var(--tide-600);border-color:var(--tide-700);color:#fff}
.btn.ghost{background:transparent;border-color:var(--ink-500);color:var(--bone-100)}
.btn.ghost:hover{background:rgba(244,241,234,.08);border-color:var(--ink-400)}
main>section{padding:96px 0;border-top:1px solid var(--border-hairline)}
main>section:first-child{border-top:0}
.eyebrow{font-family:var(--font-label);font-size:var(--size-sm);font-weight:var(--weight-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--tide-300);margin:0 0 20px}
h1{font-weight:200;font-size:clamp(38px,6vw,72px);line-height:1.06;letter-spacing:-.02em;color:var(--bone-100);max-width:20ch;margin:0}
h2{font-weight:200;font-size:clamp(28px,3.6vw,44px);line-height:1.1;letter-spacing:-.02em;color:var(--bone-100);max-width:24ch;margin:0}
h3{font-weight:500;font-size:18px;line-height:1.35;letter-spacing:-.01em;color:var(--bone-100);margin:0}
.lede{font-size:clamp(17px,1.6vw,var(--size-xl));line-height:1.5;color:var(--ink-100);max-width:60ch;margin:24px 0 0}
p.body{font-size:17px;line-height:1.65;letter-spacing:var(--tracking-body);color:var(--ink-100);max-width:var(--measure-prose);margin:16px 0 0}
.hero{padding:120px 0 104px;position:relative;overflow:hidden}
.hero .wash{position:absolute;inset:0;background:radial-gradient(80% 60% at 12% 0%,rgba(58,124,156,.28) 0%,rgba(11,14,17,0) 62%);pointer-events:none}
.hero .shell{position:relative}
.actions{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-top:40px}
.grid4{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;margin-top:48px}
.card{padding:28px;background:var(--ink-800);border:1px solid var(--border-hairline);border-radius:var(--radius-4)}
.card p{font-size:17px;line-height:1.65;letter-spacing:var(--tracking-body);color:var(--ink-100);margin:12px 0 0}
.card .n{font-family:var(--font-mono);display:block;font-size:11px;letter-spacing:.14em;color:var(--ink-300);margin-bottom:14px}
.two{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:56px;align-items:start}
/* Portrait. Framed 4:5 to match the source, so the shot is shown as taken
   rather than cropped to a circle. aspect-ratio reserves the box before the
   image loads, which is what keeps this from shifting layout. Grayscale is
   applied here rather than baked into the file: one source image, and it
   stays reversible. */
.portrait{margin:0;display:flex;flex-direction:column;align-items:flex-start;gap:22px}
.portrait img{display:block;width:min(100%,380px);height:auto;aspect-ratio:4/5;object-fit:cover;object-position:50% 30%;border-radius:var(--radius-media);background:var(--ink-850);filter:grayscale(1) contrast(1.06)}
.portrait figcaption{display:flex;flex-direction:column;gap:8px}
.portrait figcaption b{font-weight:500;font-size:18px;letter-spacing:-.01em;color:var(--bone-100)}
.portrait figcaption span{font-family:var(--font-label);font-size:var(--size-2xs);font-weight:var(--weight-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-300)}
.portrait figcaption a{font-size:14px;align-self:flex-start;margin-top:4px}
.pair{border-top:1px solid var(--border-hairline)}
.pair .shell{display:grid;grid-template-columns:1fr 1fr}
.pair section{padding:96px 0}
.pair section:first-child{padding-right:48px}
.pair section:last-child{padding-left:48px;border-left:1px solid var(--border-hairline)}
@media (max-width:820px){.pair .shell{grid-template-columns:1fr}.pair section{padding:64px 0}.pair section:first-child{padding-right:0}.pair section:last-child{padding-left:0;border-left:0;border-top:1px solid var(--border-hairline)}}
.contact{background:linear-gradient(180deg,var(--tide-900) 0%,var(--ink-900) 100%)}
dl.meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:28px;margin:48px 0 0}
dl.meta dt{font-family:var(--font-label);font-size:var(--size-2xs);font-weight:var(--weight-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--tide-300)}
dl.meta dd{margin:10px 0 0;font-size:16px;color:var(--bone-100)}
dl.meta a{color:var(--bone-100);border-bottom-color:rgba(244,241,234,.4)}
dl.meta a:hover{color:#fff}
footer.site{padding:40px 0;border-top:1px solid var(--border-hairline);background:var(--ink-850)}
footer.site .shell{display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;align-items:baseline}
footer.site p{font-size:12px;line-height:1.7;color:var(--ink-300);margin:0;max-width:70ch}
footer.site a{color:var(--ink-200)}
a:focus-visible,.btn:focus-visible{outline:3px solid var(--tide-300);outline-offset:3px;box-shadow:none}
@media (max-width:640px){main>section{padding:64px 0}.hero{padding:72px 0 64px}.shell{padding:0 20px}}
