:root{font-family:Arial,Helvetica,sans-serif;color:#161616;background:#fff;font-synthesis:none;scroll-behavior:smooth}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}a:focus-visible,button:focus-visible{outline:2px solid #174dcc;outline-offset:6px}.header{max-width:1600px;margin:auto;padding:64px 64px 58px;display:flex;justify-content:space-between;align-items:flex-start}.wordmark{font-size:38px;line-height:.99;letter-spacing:-1.9px;font-weight:750;position:relative}.star{position:absolute;font-weight:400;font-size:57px;left:calc(100% + 16px);top:-8px;line-height:1}.header nav{display:flex;gap:38px;padding-top:8px;font-size:17px}.header nav a{padding-bottom:5px;border-bottom:1px solid transparent}.header nav a:hover,.header nav .active{border-color:currentColor}main{max-width:1600px;margin:auto;padding:0 64px}.gallery-heading{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:26px}.gallery-heading h1{font-size:16px;line-height:1.5;margin:0;font-weight:400}.gallery-heading span{font-size:14px;color:#737373}.gallery{columns:3;column-gap:24px}.work{display:block;width:100%;padding:0;border:0;background:none;cursor:zoom-in;break-inside:avoid;margin:0 0 24px;position:relative}.work img{display:block;width:100%;height:auto;background:#f4f4f4;transition:opacity .22s}.work:hover img{opacity:.92}.work .label{position:absolute;bottom:0;left:0;right:0;padding:24px 16px 14px;color:white;background:linear-gradient(transparent,rgba(0,0,0,.6));font-size:14px;text-align:left;opacity:0;transition:opacity .2s}.work:hover .label,.work:focus-visible .label{opacity:1}.about{border-top:1px solid #dedede;margin-top:90px;padding:52px 0 75px;display:grid;grid-template-columns:1fr 2fr;gap:24px;scroll-margin-top:30px}.about h2{font-size:17px;font-weight:400;margin:0}.about-large{font-size:clamp(26px,3vw,43px);line-height:1.2;letter-spacing:-1.2px;margin:0 0 24px}.about p:not(.about-large){font-size:16px;color:#737373}.about a{display:inline-block;font-size:14px;border-bottom:1px solid;margin-top:18px;padding-bottom:5px}footer{max-width:1600px;margin:auto;padding:25px 64px 35px;border-top:1px solid #eee;display:flex;justify-content:space-between;font-size:13px;color:#737373}dialog{border:0;margin:0;padding:0;width:100vw;height:100dvh;max-width:none;max-height:none;background:#fff;color:#161616;overflow:hidden}dialog::backdrop{background:#fff}dialog[open]{display:flex;flex-direction:column}.viewer-bar,.viewer-bottom{display:flex;justify-content:space-between;align-items:center;padding:20px 32px;flex-shrink:0;font-size:14px}.viewer-bar button,.viewer-bottom button{border:0;background:none;cursor:pointer;padding:10px}.viewer-bar button span{font-size:24px;vertical-align:middle;margin-left:12px}.viewer-image{flex:1;min-height:0;display:flex;justify-content:center;align-items:center;padding:0 50px}.viewer-image img{max-width:100%;max-height:100%;object-fit:contain}.viewer-bottom #caption{text-align:center;padding:0 15px;color:#666}body.modal-open{overflow:hidden}@media(min-width:1700px){.header{padding-top:80px}.gallery{column-gap:30px}.work{margin-bottom:30px}}@media(max-width:850px){.header{padding:38px 28px 48px}.wordmark{font-size:31px}.star{font-size:45px}.header nav{gap:22px;font-size:16px}main{padding:0 28px}.gallery{columns:2;column-gap:18px}.work{margin-bottom:18px}footer{padding:25px 28px}.about{grid-template-columns:1fr 1.5fr}.viewer-image{padding:0 20px}}@media(max-width:520px){.header{padding:30px 20px 42px}.wordmark{font-size:27px;letter-spacing:-1.3px}.star{font-size:38px;left:calc(100% + 9px);top:-4px}.header nav{gap:18px;font-size:14px;padding-top:4px}main{padding:0 20px}.gallery-heading{margin-bottom:18px}.gallery-heading span{font-size:12px}.gallery{columns:1}.work{margin-bottom:20px}.about{margin-top:55px;grid-template-columns:1fr;gap:28px;padding-bottom:50px}.about-large{font-size:30px}.viewer-bar,.viewer-bottom{padding:12px 10px}.viewer-bottom #caption{font-size:12px}.viewer-image{padding:0 10px}footer{padding:22px 20px;font-size:12px}}@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*{transition:none!important}}

/* Portfolio revisions */
.header nav{font-family:Arial,Helvetica,sans-serif;font-weight:750;font-size:28px;letter-spacing:-1.1px;gap:30px;line-height:1.15}
.about{display:block;padding:52px 0 75px}
.about-large{width:100%;font-size:clamp(.875rem,2.9vw,2.875rem);letter-spacing:-.04em;white-space:nowrap;line-height:1.25;margin:0}
footer{justify-content:center;text-align:center}
.contact-dialog{width:min(90vw,480px);height:auto;max-height:90dvh;margin:auto;padding:48px;overflow:auto;border:1px solid #ddd}
.contact-dialog[open]{display:block}
.contact-dialog::backdrop{background:rgba(255,255,255,.85)}
.contact-dialog h2{font-size:32px;letter-spacing:-1px;margin:0 0 24px}
.contact-dialog p{font-size:16px;color:#737373;margin:0}
.contact-close{position:absolute;right:14px;top:10px;border:0;background:none;font-size:28px;cursor:pointer;padding:6px 10px}
@media(max-width:850px){.header nav{font-size:23px;letter-spacing:-.8px;gap:22px}}
@media(max-width:620px){.header{flex-direction:column;gap:32px}.header nav{font-size:24px;gap:26px}.about{padding:36px 0 50px}}
@media(max-width:360px){.header nav{font-size:22px;gap:22px}}

/* Identity and navigation */
.brand-logo{display:block;flex-shrink:0;width:360px;max-width:100%;line-height:0}
.brand-logo img{display:block;width:100%;height:auto}
.header{align-items:center}
.header nav{font-size:22px;font-weight:300;letter-spacing:-.4px;gap:30px;align-items:center}
.header nav a{position:relative;display:inline-grid;justify-items:center;border:0;padding-bottom:6px;text-decoration:none}
.header nav a::after{content:attr(data-label);font-weight:700;visibility:hidden;height:0;overflow:hidden;grid-column:1;grid-row:1}
.header nav a:hover,.header nav a:focus-visible{font-weight:700;border:0}
.header nav a.active{border:0;text-decoration:underline;text-underline-offset:8px;text-decoration-thickness:1px}
.about,footer{border:0}
@media(max-width:850px){.brand-logo{width:290px}.header nav{font-size:20px;gap:24px}}
@media(max-width:620px){.header{align-items:flex-start;gap:26px}.brand-logo{width:min(340px,100%)}.header nav{font-size:20px;gap:26px}}
@media(max-width:360px){.header nav{font-size:18px;gap:22px}}

.header nav a>span{grid-column:1;grid-row:1}

/* Persistent header and artwork hover */
:root{--header-height:160px;scroll-padding-top:calc(var(--header-height) + 20px)}
.header{position:sticky;top:0;z-index:20;background:#fff;padding:24px 64px 22px}
.work{overflow:hidden;isolation:isolate}
.work img{transition:filter .3s ease,transform .3s ease;opacity:1;transform:scale(1)}
.work::after{content:"";position:absolute;inset:0;background:rgba(38,83,176,.3);opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:1}
.work .label{inset:0;display:flex;align-items:center;justify-content:center;padding:24px;background:none;font-family:Arial,Helvetica,sans-serif;font-size:22px;font-weight:300;letter-spacing:-.4px;line-height:1.3;text-align:center;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.2);z-index:2;pointer-events:none;transition:opacity .3s ease}
.work:hover img,.work:focus-visible img{opacity:1;filter:blur(7px) brightness(.68);transform:scale(1.04)}
.work:hover::after,.work:focus-visible::after,.work:hover .label,.work:focus-visible .label{opacity:1}
.about{scroll-margin-top:0}
@media(max-width:850px){.header{padding:20px 28px}.work .label{font-size:20px}}
@media(max-width:620px){.header{padding:16px 20px;gap:18px}.brand-logo{width:280px}.work .label{font-size:20px}}
@media(max-width:360px){.work .label{font-size:18px}}

.about-large{font-size:clamp(.875rem,2.2vw,2rem);font-weight:300;letter-spacing:-.025em}

/* Four-column gallery with a clean blue overlay */
.gallery{columns:4}
.work img{transition:none}
.work:hover img,.work:focus-visible img{filter:none;transform:none;opacity:1}
.work::after{background:rgba(32,91,196,.3)}
@media(max-width:1100px){.gallery{columns:3}}
@media(max-width:850px){.gallery{columns:2}}
@media(max-width:520px){.gallery{columns:1}}

/* Read the selected order from left to right, row by row. */
.gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;columns:initial;align-items:start}
.work{margin:0;min-width:0}
@media(max-width:1100px){.gallery{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:850px){.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}}
@media(max-width:520px){.gallery{grid-template-columns:1fr;gap:20px}}
@media(min-width:1700px){.gallery{gap:30px}}

/* Masonry places each complete artwork into the shortest column. */
.gallery.masonry{position:relative;display:block;columns:initial}
.gallery.masonry .work{position:absolute;margin:0}

@media(max-width:520px){.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.work .label{font-size:14px;padding:12px;letter-spacing:0}}

/* Contact opens as a letter inside a pale blue envelope. */
.contact-dialog{width:min(760px,calc(100vw - 40px));height:auto;max-height:calc(100svh - 40px);margin:auto;padding:22px;border:0;background:#dbe7f5;box-shadow:0 24px 90px rgba(18,42,79,.2);overflow:auto;isolation:isolate}
.contact-dialog::backdrop{background:rgba(30,44,66,.28);backdrop-filter:blur(3px)}
.contact-dialog::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(34deg,transparent 49.7%,rgba(125,154,189,.25) 50%,transparent 50.3%),linear-gradient(-34deg,transparent 49.7%,rgba(125,154,189,.25) 50%,transparent 50.3%)}
.contact-letter{background:#fffdf6;padding:48px 48px 32px;text-align:center;box-shadow:0 2px 8px rgba(38,64,97,.08)}
.contact-dialog .contact-close{position:absolute;top:24px;right:27px;font-size:28px;line-height:1;padding:4px 8px;z-index:2}
.contact-dialog h2{font-family:Arial,Helvetica,sans-serif;font-size:28px;font-weight:700;line-height:1.2;letter-spacing:-.7px;margin:0 auto 24px;max-width:560px}
.contact-dialog p{font-size:18px;font-weight:300;line-height:1.6;color:#303b48;max-width:500px;margin:0 auto 16px}
.contact-email{display:inline-block;font-size:22px;font-weight:300;line-height:1.4;color:#205ab5;text-decoration:underline;text-underline-offset:5px;padding:6px 0}
.contact-email:hover{color:#12396f}
.contact-bird{position:relative;width:210px;max-width:75%;aspect-ratio:364 / 253;overflow:hidden;margin:24px auto 0}
.contact-bird img{position:absolute;display:block;width:179.12%;max-width:none;height:auto;left:-40.66%;top:-62.45%}
@media(max-width:520px){.contact-dialog{width:calc(100vw - 24px);max-height:calc(100svh - 24px);padding:12px}.contact-letter{padding:48px 20px 26px}.contact-dialog h2{font-size:25px;letter-spacing:-.6px;margin-bottom:20px}.contact-dialog p{font-size:16px}.contact-email{font-size:19px}.contact-dialog .contact-close{top:15px;right:16px}.contact-bird{width:180px;margin-top:20px}}


/* A compact white postcard, with one continuous text column. */
.contact-dialog{width:min(800px,calc(100vw - 40px));height:fit-content;min-height:0;max-height:calc(100svh - 48px);margin:auto;padding:0;background:#fff;border:1px solid #e3e3e3}
.contact-dialog::before{display:none}
.contact-letter{display:block;padding:32px 42px 18px;background:#fff;text-align:center;box-shadow:none}
.contact-dialog h2{font-size:24px;line-height:1.2;max-width:none;margin:0 0 14px}
.contact-dialog p{font-size:16px;line-height:1.55;max-width:none;width:100%;margin:0 0 8px;color:#303030}
.contact-email{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;display:inline-block;font-size:16px;font-weight:300;letter-spacing:0;color:#383838;line-height:1.5;padding:4px 0;text-underline-offset:4px;text-decoration-thickness:1px;white-space:nowrap}
.contact-email:hover{color:#205ab5}
.contact-bird{width:130px;max-width:75%;margin:12px auto 0}
.contact-dialog .contact-close{top:10px;right:12px}
@media(max-width:520px){.contact-dialog{width:calc(100vw - 28px);max-height:calc(100svh - 28px)}.contact-letter{padding:38px 24px 20px}.contact-dialog h2{font-size:22px;margin-bottom:14px}.contact-dialog p{font-size:16px}.contact-email{font-size:16px}.contact-bird{width:120px;margin-top:12px}}

.contact-text-line{display:block}
@media(max-width:520px){.contact-letter{padding:36px 16px 16px}.contact-dialog h2{font-size:20px}.contact-bird{width:100px;margin-top:8px}}

footer{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px}footer>span{grid-column:2}.footer-instagram{grid-column:3;justify-self:end;display:flex;align-items:center;justify-content:center;width:36px;height:36px;color:#737373;transition:color .2s}.footer-instagram:hover{color:#161616}.footer-instagram svg{display:block}@media(max-width:520px){footer{grid-template-columns:1fr auto;gap:8px}footer>span{grid-column:1}.footer-instagram{grid-column:2}}

footer{grid-template-columns:minmax(0,1fr) auto;text-align:left;padding-top:36px}.footer-info{grid-column:1;line-height:1.5}.footer-description{margin:0 0 4px;font-size:14px;font-weight:300;color:#161616}.footer-instagram{grid-column:2}body:has(#gallery) footer{margin-top:50px}@media(max-width:520px){footer{padding-top:24px}.footer-description{font-size:13px}body:has(#gallery) footer{margin-top:32px}}

@media(hover:hover) and (pointer:fine){html,body,body *{cursor:url("assets/star-cursor.svg") 16 16,auto}a,button,a *,button *{cursor:url("assets/star-cursor.svg") 16 16,pointer}}

@media(max-width:1050px){.header{flex-wrap:wrap;gap:18px}.header nav{gap:22px}}@media(max-width:620px){.header nav{font-size:18px;gap:20px}}@media(max-width:360px){.header nav{font-size:16px;gap:16px}}

.work .grid-video{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;background:#1b1b1b}.work .media-badge{position:absolute;left:10px;bottom:10px;z-index:2;padding:5px 8px;background:rgba(0,0,0,.58);color:#fff;font-size:12px;font-weight:300;line-height:1.3;pointer-events:none}.viewer-image video{display:block;max-width:100%;max-height:100%;object-fit:contain}.viewer-image [hidden]{display:none!important}#viewer .viewer-image{overflow:hidden}#viewer-count{font-variant-numeric:tabular-nums}

/* Keep Safari's native video size out of masonry and viewer layout. */
.gallery.masonry .work{contain:layout paint}
.work .grid-video{max-width:100%;max-height:100%;opacity:0;transition:opacity .15s ease;clip-path:inset(0)}
.work .grid-video.is-playing{opacity:1}
#viewer{width:100%;height:var(--viewer-height,100vh);height:var(--viewer-height,100dvh);max-width:100%;max-height:none;overscroll-behavior:contain}
#viewer[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto}
#viewer .viewer-bar{min-width:0;padding:calc(10px + env(safe-area-inset-top,0px)) max(12px,env(safe-area-inset-right,0px)) 10px max(12px,env(safe-area-inset-left,0px))}
#viewer .viewer-image{position:relative;display:block;min-width:0;min-height:0;width:100%;height:100%;padding:0;overflow:hidden}
#viewer .viewer-image img,#viewer .viewer-image video{position:absolute;inset:0;display:block;width:100%;height:100%;min-width:0;min-height:0;max-width:100%;max-height:100%;object-fit:contain;padding:0 20px;box-sizing:border-box}
#viewer .viewer-bottom{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0;padding:10px max(12px,env(safe-area-inset-right,0px)) calc(10px + env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px))}
#viewer .viewer-bottom #caption{min-width:0;overflow-wrap:anywhere;padding:0;line-height:1.35}
#viewer .viewer-bar button,#viewer .viewer-bottom button{min-height:44px}
@media(max-width:520px){#viewer .viewer-image img,#viewer .viewer-image video{padding:0 10px}#viewer .viewer-bottom{gap:6px;font-size:14px}#viewer .viewer-bottom button{padding:8px}#viewer .viewer-bottom #caption{font-size:13px}.work .media-badge{font-size:12px;padding:4px 6px;left:6px;bottom:6px}}
@media(prefers-reduced-motion:reduce){.work .grid-video{transition:none}}

/* A larger, continuous wall of complete illustrations. */
.work-page main{max-width:none;padding:0;width:100%}
.work-page .gallery{columns:initial;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;column-gap:0}
.work-page .work{margin:0;border:0;border-radius:0}
@media(max-width:850px){.work-page .gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:0;column-gap:0}}

/* Work is an index; Home keeps the continuous illustration wall. */
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.header nav{gap:26px;flex-wrap:wrap}
.work-index-main{padding-top:42px;padding-bottom:80px}
.category-index{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:52px 32px;max-width:1320px;margin:0 auto}
.category-card{display:block;min-width:0}
.category-cover{aspect-ratio:1;overflow:hidden;background:#f3f3f3}
.category-cover img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .3s ease}
.category-card:hover .category-cover img{transform:scale(1.025)}
.category-card h2{font-size:24px;font-weight:300;letter-spacing:-.5px;line-height:1.2;margin:18px 0 8px}
.category-card p{font-size:16px;font-weight:300;line-height:1.5;color:#626262;margin:0;max-width:27em}
.category-card:hover h2,.category-card:focus-visible h2{text-decoration:underline;text-underline-offset:5px}
.category-heading{display:flex;justify-content:space-between;align-items:baseline;gap:20px;padding:30px 0 28px}
.category-heading h1{font-size:24px;font-weight:300;letter-spacing:-.5px;margin:0}
.category-heading>a{font-size:14px;font-weight:300;text-decoration:underline;text-underline-offset:4px}
.category-page .gallery{gap:24px;grid-template-columns:repeat(4,minmax(0,1fr))}
.category-page footer{margin-top:50px}
@media(max-width:1100px){.category-page .gallery{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1000px){.category-index{grid-template-columns:repeat(2,minmax(0,1fr));gap:40px 24px}}
@media(max-width:850px){.category-page .gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}}
@media(max-width:620px){.header nav{gap:12px 14px;font-size:16px}.work-index-main{padding-top:24px;padding-bottom:50px}.category-index{grid-template-columns:1fr;gap:36px}.category-card h2{font-size:23px;margin-top:15px}.category-heading{padding:22px 0}.category-heading h1{font-size:22px}}
@media(max-width:520px){.category-page .gallery{gap:12px}}
@media(max-width:360px){.header nav{font-size:15px;gap:12px 10px}}

/* Five square category covers on desktop, with captions beneath. */
.work-index-page .category-index{grid-template-columns:repeat(5,minmax(0,1fr));max-width:none;gap:40px 28px}
.work-index-page .category-card h2{font-size:20px;color:#626262;margin-top:20px}
.work-index-page .category-card p{font-size:14px;line-height:1.5;color:#737373}
@media(max-width:1100px){.work-index-page .category-index{grid-template-columns:repeat(3,minmax(0,1fr));gap:36px 24px}}
@media(max-width:850px){.work-index-page .category-index{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 20px}}
@media(max-width:520px){.work-index-page .category-index{grid-template-columns:1fr;gap:34px}.work-index-page .category-card h2{font-size:22px;margin-top:16px}.work-index-page .category-card p{font-size:16px}}

.work-index-actions{display:flex;justify-content:flex-end;margin:0 0 28px}.work-index-actions a{font-size:16px;font-weight:300;text-decoration:underline;text-underline-offset:5px}.work-index-actions a:hover{font-weight:700}
