:root {
    --paper:#f7f6f2;
    --ink:#232321;
    --muted:#65645f;
    --line:#d8d7d1;
    --purple:#6651c7;
    --lavender:#eae6f4;
    --yellow:#f2d775;
}

* {
    box-sizing:border-box;
}

html {
    scroll-behavior:smooth;
    scroll-padding-top:2rem;
}

body {
    margin:0;
    background:var(--paper);
    color:var(--ink);
    font-family:'Poppins',Arial,sans-serif;
    -webkit-font-smoothing:antialiased;
}

body:has(dialog[open]) {
    overflow:hidden;
}

a {
    color:inherit;
    text-decoration:none;
}

button {
    font:inherit;
    color:inherit;
    cursor:pointer;
}

a,button {
    touch-action:manipulation;
}

img {
    display:block;
    max-width:100%;
    height:auto;
}

figure,p,h1,h2 {
    margin:0;
}

p {
    line-height:1.8;
}

button {
    border:0;
    background:none;
}

a:focus-visible,button:focus-visible,summary:focus-visible {
    outline:3px solid var(--purple);
    outline-offset:6px;
}

.wrap {
    width:min(1280px,calc(100% - 112px));
    margin-inline:auto;
}

.eyebrow,.section-label,.section-index,.hero-art figcaption,.book-image figcaption,.photo-image figcaption,.footer-bottom {
    font-family:'Source Code Pro',monospace;
    font-size:11px;
    line-height:1.6;
    letter-spacing:.065em;
}

.eyebrow {
    font-weight:500;
    text-transform:uppercase;
}

.accent {
    color:var(--purple);
}

.site-header {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:24px;
    min-height:106px;
    border-bottom:1px solid var(--line);
}

.brand {
    display:flex;
    align-items:center;
    gap:14px;
}

.desktop-nav {
    display:flex;
    align-items:center;
    gap:26px;
    font-size:12px;
}

.desktop-nav a:hover,.text-link:hover,.footer-bottom a:hover {
    color:var(--purple);
}

.desktop-nav button {
    padding:11px 16px;
    border:1px solid var(--ink);
    border-radius:3px;
}

.desktop-nav button:hover {
    background:var(--ink);
    color:white;
}

.mobile-menu {
    display:none;
}

.hero {
    display:grid;
    grid-template-columns:1.15fr 1fr;
    gap:70px;
    align-items:center;
    padding-block:76px 66px;
}

.status-dot {
    display:inline-block;
    width:7px;
    height:7px;
    border-radius:50%;
    background:var(--purple);
    margin-right:8px;
}

.hero h1 {
    font-size:clamp(60px,6.8vw,100px);
    letter-spacing:-.075em;
    line-height:1.04;
    font-weight:500;
    margin:26px 0;
}

.hero-roles {
    font-size:16px;
    font-weight:500;
    margin-bottom:14px;
}

.intro {
    font-size:13px;
    color:var(--muted);
    max-width:455px;
}

.button {
    display:inline-flex;
    align-items:center;
    justify-content:space-between;
    gap:32px;
    padding:16px 22px;
    font-size:12px;
    font-weight:500;
    border-radius:3px;
    margin-top:27px;
    transition:background .2s,transform .2s;
}

.button:hover {
    transform:translateY(-2px);
    background:var(--purple);
    color:white;
}

.button-dark {
    background:var(--ink);
    color:white;
}

.button-light {
    background:var(--paper);
    color:var(--ink);
}

.hero-art {
    position:relative;
    padding:0 0 29px 25px;
}

.hero-art:before {
    content:'';
    position:absolute;
    inset:26px 22px 0 0;
    background:var(--lavender);
    z-index:-1;
}

.hero-art>img {
    width:100%;
    aspect-ratio:1;
    object-fit:cover;
    border-radius:2px;
}

.hero-art figcaption {
    position:absolute;
    bottom:4px;
    left:0;
    right:56px;
    background:var(--lavender);
    padding:17px 22px;
    display:flex;
    justify-content:space-between;
    align-items:center;
    font-size:10px;
}

.art-star {
    font-family:Arial,sans-serif;
    font-size:42px;
    color:var(--purple);
    line-height:1;
}

.section-index {
    display:flex;
    justify-content:space-between;
    align-items:center;
    border-top:1px solid var(--line);
    padding:21px 0;
}

.section-index a {
    letter-spacing:0;
}

.section-index a span {
    margin-left:16px;
}

.about-projects {
    display:grid;
    grid-template-columns:1.45fr 1fr;
    gap:24px;
    margin-top:18px;
    margin-bottom:80px;
}

.about-feature,.projects-feature {
    padding:30px;
    border-radius:3px;
}

.about-feature {
    background:#ecebe5;
}

.projects-feature {
    background:var(--lavender);
    display:flex;
    flex-direction:column;
}

.section-label {
    display:flex;
    justify-content:space-between;
    margin-bottom:30px;
}

.about-content {
    display:grid;
    grid-template-columns:.85fr 1fr;
    gap:28px;
    align-items:center;
}

.about-content img {
    width:100%;
    border-radius:2px;
}

h2 {
    font-size:clamp(30px,3.5vw,49px);
    font-weight:500;
    letter-spacing:-.05em;
    line-height:1.18;
}

.about-projects h2 {
    font-size:28px;
}

.about-projects p {
    font-size:12px;
    color:#55534f;
    margin:16px 0 23px;
}

.text-link {
    display:inline-flex;
    align-items:center;
    gap:22px;
    font-size:12px;
    font-weight:500;
    border-bottom:1px solid currentColor;
    padding:0 0 7px;
}

.projects-feature .text-link {
    align-self:flex-start;
    margin-top:auto;
}

.book-section {
    background:var(--yellow);
    padding-block:74px;
}

.book-grid {
    display:grid;
    grid-template-columns:.85fr 1.15fr;
    gap:80px;
    align-items:center;
}

.book-copy h2 {
    font-size:clamp(46px,5.5vw,74px);
    margin:23px 0 20px;
    line-height:1.05;
}

.book-subtitle {
    font-size:19px;
    line-height:1.5;
    max-width:350px;
    margin-bottom:20px;
}

.book-copy>p:not(.eyebrow):not(.book-subtitle) {
    font-size:13px;
    max-width:375px;
}

.book-image img {
    width:100%;
    border-radius:3px;
}

.book-image figcaption {
    text-align:right;
    margin-top:13px;
    font-size:10px;
}

.photography {
    padding-block:80px;
}

.photo-heading {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:100px;
    align-items:end;
    margin-bottom:35px;
}

.photo-heading h2 {
    margin-top:20px;
}

.photo-description p {
    font-size:13px;
    color:var(--muted);
    max-width:440px;
    margin-bottom:22px;
}

.photo-image {
    position:relative;
}

.photo-image img {
    width:100%;
    max-height:650px;
    object-fit:cover;
    object-position:center;
    border-radius:3px;
}

.photo-image figcaption {
    display:flex;
    justify-content:space-between;
    margin-top:14px;
    color:var(--muted);
    font-size:10px;
}

.career-section {
    background:#262727;
    color:#f7f6f2;
    padding-block:80px;
}

.career-content {
    max-width:760px;
    text-align:center;
}

.career-section .eyebrow {
    color:#c3b4f3;
}

.career-section h2 {
    margin:24px 0;
}

.career-subtitle {
    font-size:17px;
    margin-bottom:12px;
}

.career-subtitle+p {
    font-size:13px;
    color:#c5c6c2;
    max-width:440px;
    margin-inline:auto;
}

.footer-top {
    display:flex;
    gap:30px;
    align-items:center;
    padding:42px 0;
    border-bottom:1px solid var(--line);
}

.footer-top p {
    font-size:17px;
    letter-spacing:-.03em;
}

.footer-top .text-link {
    margin-left:auto;
}

.footer-bottom {
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:20px;
    padding:24px 0 35px;
    color:var(--muted);
    font-size:10px;
    letter-spacing:0;
}

.footer-bottom p {
    line-height:1.9;
}

.skip-link {
    position:fixed;
    top:-100px;
    left:20px;
    z-index:10;
    background:var(--ink);
    color:white;
    padding:14px;
}

.skip-link:focus {
    top:15px;
}

dialog {
    border:1px solid var(--line);
    border-radius:5px;
    background:var(--paper);
    color:var(--ink);
    padding:0;
    width:min(520px,calc(100% - 32px));
    max-height:calc(100% - 40px);
}

dialog::backdrop {
    background:rgb(20 20 25 / .65);
    backdrop-filter:blur(4px);
}

.contact-content {
    padding:44px;
    position:relative;
}

.dialog-close {
    position:absolute;
    right:14px;
    top:8px;
    font-size:30px;
    width:44px;
    height:44px;
}

.contact-content h2 {
    font-size:36px;
    margin:20px 0 30px;
}

.contact-content>a {
    display:block;
    padding:15px 0;
    border-top:1px solid var(--line);
    font-size:13px;
    overflow-wrap:anywhere;
}

.contact-content>a span {
    display:block;
    font-size:10px;
    text-transform:uppercase;
    color:var(--muted);
    margin-bottom:5px;
}

@media(min-width:1500px) {
    .hero {
        gap:110px;
    }
    .hero-art {
        max-width:540px;
    }
}

@media(max-width:1100px) {
    .wrap {
        width:calc(100% - 64px);
    }
    .desktop-nav {
        gap:17px;
    }
    .hero {
        gap:36px;
    }
    .hero h1 {
        font-size:clamp(56px,7vw,76px);
    }
    .about-projects {
        grid-template-columns:1.2fr 1fr;
    }
    .about-content {
        grid-template-columns:1fr;
    }
    .about-content img {
        width:150px;
    }
    .projects-feature h2 {
        margin-top:8px;
    }
    .book-grid {
        gap:48px;
    }
    .photo-heading {
        gap:55px;
    }
}

@media(max-width:760px) {
    .wrap {
        width:calc(100% - 40px);
    }
    .site-header {
        min-height:80px;
    }
    .brand img {
        width:36px;
        height:36px;
    }
    .desktop-nav {
        display:none;
    }
    .mobile-menu {
        display:block;
        position:relative;
    }
    .mobile-menu summary {
        cursor:pointer;
        list-style:none;
        font-size:12px;
        padding:12px 0 12px 15px;
    }
    .mobile-menu summary::-webkit-details-marker {
        display:none;
    }
    .mobile-menu summary span {
        margin-left:10px;
    }
    .mobile-menu nav {
        position:absolute;
        right:0;
        top:48px;
        width:210px;
        padding:16px;
        background:var(--paper);
        border:1px solid var(--line);
        z-index:3;
        box-shadow:0 12px 24px #23232115;
    }
    .mobile-menu nav a,.mobile-menu nav button {
        display:block;
        padding:12px;
        font-size:14px;
        width:100%;
        text-align:left;
    }
    .hero {
        grid-template-columns:1fr;
        gap:35px;
        padding-block:44px 40px;
    }
    .hero h1 {
        font-size:clamp(56px,12vw,85px);
        margin:22px 0;
    }
    .hero .eyebrow {
        font-size:9px;
        letter-spacing:.025em;
    }
    .hero-roles {
        font-size:14px;
    }
    .hero-art {
        width:100%;
        max-width:480px;
        justify-self:center;
    }
    .intro {
        max-width:100%;
    }
    .section-index {
        align-items:flex-start;
        gap:20px;
    }
    .section-index .eyebrow {
        max-width:190px;
        font-size:9px;
    }
    .section-index a {
        font-size:10px;
        white-space:nowrap;
    }
    .section-index a span {
        margin-left:6px;
    }
    .about-projects {
        grid-template-columns:1fr;
        margin-bottom:46px;
        gap:16px;
    }
    .about-feature,.projects-feature {
        padding:25px;
    }
    .about-content {
        grid-template-columns:.75fr 1fr;
        gap:22px;
    }
    .about-content img {
        width:100%;
    }
    .about-projects h2 {
        font-size:26px;
    }
    .about-projects p {
        margin:14px 0 20px;
    }
    .book-section {
        padding-block:48px;
    }
    .book-grid,.photo-heading {
        grid-template-columns:1fr;
        gap:32px;
    }
    .book-copy h2 {
        font-size:58px;
    }
    .book-subtitle {
        max-width:100%;
        font-size:18px;
    }
    .book-copy>p:not(.eyebrow):not(.book-subtitle) {
        max-width:100%;
    }
    .photography {
        padding-block:48px;
    }
    .photo-heading {
        gap:22px;
        margin-bottom:28px;
    }
    .photo-heading h2,.career-section h2 {
        font-size:38px;
    }
    .photo-image img {
        aspect-ratio:1.2;
        object-fit:cover;
    }
    .photo-image figcaption {
        font-size:9px;
        gap:14px;
    }
    .career-section {
        padding-block:48px;
    }
    .footer-top {
        flex-wrap:wrap;
        gap:18px;
        padding:30px 0;
    }
    .footer-top p {
        font-size:14px;
        flex:1;
    }
    .footer-top .text-link {
        margin-left:0;
    }
    .footer-bottom {
        align-items:flex-start;
        font-size:9px;
    }
    .footer-bottom>a {
        white-space:nowrap;
    }
    .contact-content {
        padding:36px 24px;
    }
}

@media(max-width:420px) {
    .about-content {
        grid-template-columns:1fr;
    }
    .about-content img {
        width:140px;
    }
    .hero h1 {
        font-size:58px;
    }
    .hero-roles {
        font-size:12px;
    }
    .photo-image figcaption {
        flex-direction:column;
        gap:4px;
    }
}

@media(prefers-reduced-motion:reduce) {
    html {
        scroll-behavior:auto;
    }
    *,*::before,*::after {
        transition:none!important;
    }
}

