/* Hallmark · shape: author monograph · genre: editorial · theme: custom · job: hire · idea: "A personal body of work unfolds through the rhythm of time" · vibe: "literary intimate composed monochrome human"
 * paper: oklch(98% 0 0) · accent: oklch(24% 0 0) · display: Bodoni Moda · body: Manrope · hero: editorial portrait spread · nav: single rule · footer: colophon · imagery: original website archive · signature: nine-stage typographic cycle
 * axes: light/high-contrast-serif/neutral · posture: Restrained · modes: light+dark · v2.0.0 */
/* Hallmark · pre-emit critique: P4 H4 E4 S5 R4 V4 · weakest: H, long source copy moved into meaningful native disclosures */
@font-face{font-family:"Bodoni Moda";src:url("assets/bodoni-moda-latin.woff2") format("woff2");font-weight:400 500;font-style:normal;font-display:swap}
@font-face{font-family:"Manrope";src:url("assets/manrope-latin.woff2") format("woff2");font-weight:400 600;font-style:normal;font-display:swap}
html{scroll-behavior:smooth}
body{font-weight:400}
button,a{-webkit-tap-highlight-color:transparent}
button{color:inherit;cursor:pointer}
button:disabled{opacity:.5;cursor:not-allowed}
a{transition:color var(--dur-short) var(--ease-out)}
a:hover{color:var(--color-muted)}
svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.4;flex-shrink:0}
figure{margin:0}
h1,h2,h3{font-weight:400;letter-spacing:var(--tracking-display)}
h2{font-size:var(--text-section);line-height:1.16}
h3{font-size:var(--text-title);line-height:1.3}
.section{padding-block:var(--section-gap-s)}
.skip-link{position:fixed;top:0;left:var(--gutter);padding:var(--space-md);background:var(--color-ink);color:var(--color-paper);z-index:var(--z-tooltip);transform:translateY(-150%)}
.skip-link:focus{transform:translateY(0)}
.site-header{position:relative;z-index:var(--z-sticky-nav);background:var(--color-paper)}
.header-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);min-height:100px;border-bottom:1px solid var(--color-rule)}
.wordmark{font-family:var(--font-display);font-size:32px;letter-spacing:-.035em;white-space:nowrap;text-decoration:none;color:var(--color-ink)}
.wordmark-period{padding-left:var(--space-3xs)}
.desktop-nav,.header-actions{display:flex;align-items:center;gap:var(--space-xl)}
.desktop-nav a,.header-contact{font-size:13px;text-decoration:none;min-height:44px;display:inline-flex;align-items:center}
.desktop-nav a{position:relative}
.desktop-nav a::after{content:"";position:absolute;bottom:var(--space-xs);left:0;right:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform var(--dur-short) var(--ease-out)}
.desktop-nav a:hover::after,.desktop-nav a[aria-current="location"]::after{transform:scaleX(1)}
.header-actions{gap:var(--space-lg)}
.header-contact{gap:var(--space-sm)}
.header-contact svg{width:17px;height:17px}
.icon-button{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:var(--space-xs);border:1px solid var(--color-rule);border-radius:50%;background:transparent;transition:background-color var(--dur-short) var(--ease-out)}
.icon-button:hover{background:var(--color-paper-2)}
.menu-toggle{display:none}
.hero{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.9fr);column-gap:var(--space-2xl);padding-top:var(--space-2xl)}
.hero-copy{align-self:center;padding-bottom:var(--space-lg)}
.hero h1{font-size:clamp(3.4rem,6.15vw,6rem);line-height:1.08;letter-spacing:-.04em;text-wrap:initial}
.hero-intro{margin-top:var(--space-lg);max-width:34ch;font-size:17px;line-height:1.7;color:var(--color-ink-2)}
.hero-actions{display:flex;align-items:center;gap:var(--space-xl);margin-top:var(--space-xl);flex-wrap:wrap}
.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xl);min-height:52px;padding:var(--space-md) var(--space-lg);background:var(--color-ink);color:var(--color-paper);border:1px solid var(--color-ink);font-size:13px;font-weight:500;text-decoration:none;transition:background-color var(--dur-short) var(--ease-out),transform var(--dur-short) var(--ease-out)}
.button:hover{background:var(--color-ink-2);color:var(--color-paper);transform:translateY(-2px)}
.button:active{transform:translateY(0)}
.button svg{width:19px;height:19px}
.text-link{display:inline-flex;align-items:center;min-height:44px;font-size:13px;text-underline-offset:6px}
.hero-note{display:flex;align-items:center;gap:var(--space-md);margin-top:var(--space-2xl);font-size:12px;color:var(--color-muted)}
.fine-line{width:40px;height:1px;background:var(--color-rule)}
.hero-portrait{padding-top:var(--space-xs)}
.portrait-frame{position:relative;aspect-ratio:1/1.09;overflow:hidden;background:var(--color-paper-2)}
.portrait-frame img{position:absolute;width:254.5%;max-width:none;height:auto;left:-16.4%;top:-160%;filter:grayscale(1)}
.hero-portrait figcaption{display:flex;justify-content:space-between;gap:var(--space-md);padding-top:var(--space-md);font-size:11px;color:var(--color-muted)}
.hero-portrait figcaption span:first-child{color:var(--color-ink)}
.hero-bottom{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--color-rule);margin-top:var(--space-2xl);padding-block:var(--space-lg);font-size:12px;color:var(--color-muted)}
.scroll-cue{display:flex;align-items:center;gap:var(--space-lg);text-decoration:none;min-height:44px}
.scroll-cue svg{width:18px;height:18px}
.section-heading{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-3xl);align-items:start}
.section-heading>p{font-size:17px;line-height:1.8;max-width:45ch;color:var(--color-ink-2);padding-top:var(--space-xs)}
.about-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-3xl);margin-top:var(--space-2xl)}
.large-copy{font-family:var(--font-display);font-size:30px;line-height:1.35;max-width:20ch}
.prose{color:var(--color-ink-2);font-size:15px;line-height:1.85}
.prose p+p{margin-top:var(--space-lg)}
.prose .text-link{margin-top:var(--space-lg);color:var(--color-ink)}
.clock-section{background:var(--color-night);color:var(--color-night-ink);padding-block:var(--space-3xl)}
.clock-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-3xl);align-items:center}
.clock-visual img{width:100%;aspect-ratio:1;object-fit:contain;filter:grayscale(1)}
.image-note{font-size:12px;margin-top:var(--space-lg);color:var(--color-night-muted)}
.clock-copy h2{font-size:clamp(2.5rem,4.5vw,4.5rem);line-height:1.12}
.clock-copy p{max-width:42ch;color:var(--color-night-muted);margin-top:var(--space-lg);font-size:15px;line-height:1.85}
.clock-copy p:first-of-type{font-size:19px;color:var(--color-night-ink);max-width:28ch}
.clock-copy .text-link{margin-top:var(--space-lg);color:var(--color-night-ink)}
.cycle{display:flex;align-items:start;justify-content:space-between;gap:var(--space-xs);border-top:1px solid var(--color-rule);border-bottom:1px solid var(--color-rule);padding-block:var(--space-xl);margin-top:var(--space-2xl)}
.cycle>span{font-family:var(--font-display);font-size:clamp(2rem,5vw,4.5rem);line-height:1.2;min-width:0;color:var(--color-muted)}
.cycle .cycle-end{color:var(--color-ink)}
.cycle small{display:block;font-family:var(--font-body);font-size:12px;margin-top:var(--space-xs)}
.concept-details{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-3xl);margin-top:var(--space-2xl)}
.concept-details>div>p{font-size:15px;line-height:1.85;color:var(--color-ink-2);max-width:42ch;margin-top:var(--space-lg)}
.concept-details h3{font-size:28px}
details{border-bottom:1px solid var(--color-rule)}
summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);cursor:pointer;list-style:none;min-height:64px;font-size:15px;padding-block:var(--space-md)}
summary::-webkit-details-marker{display:none}
summary:hover{color:var(--color-muted)}
summary svg{width:18px;height:18px;transition:transform var(--dur-short) var(--ease-out)}
details[open] summary svg{transform:rotate(45deg)}
details>div{padding-bottom:var(--space-lg);font-size:14px;color:var(--color-ink-2);line-height:1.85}
details p+p{margin-top:var(--space-md)}
.recognition-section{background:var(--color-paper-2);color:var(--color-ink);padding-block:var(--space-3xl)}
.recognition-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-3xl)}
.recognition-intro>p{max-width:32ch;color:var(--color-ink-2);margin-top:var(--space-lg);font-size:15px;line-height:1.85}
.recognition-intro>.text-link{margin-top:var(--space-lg)}
.recognition-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);padding-block:var(--space-lg);text-decoration:none;border-bottom:1px solid var(--color-rule)}
.recognition-item:first-child{padding-top:0}
.recognition-item small{font-size:11px;color:var(--color-muted)}
.recognition-item h3{font-size:27px;margin-block:var(--space-xs)}
.recognition-item p{font-size:12px;color:var(--color-ink-2)}
.recognition-item>svg{transition:transform var(--dur-short) var(--ease-out)}
.recognition-item:hover>svg{transform:translate(3px,-3px)}
.gallery-heading{max-width:48rem;margin-bottom:var(--space-2xl)}
.gallery-heading p{color:var(--color-ink-2);margin-top:var(--space-lg);font-size:15px}
.gallery-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:var(--space-2xl);align-items:center}
.image-link{display:block;position:relative;overflow:hidden}
.image-link img{transition:transform var(--dur-long) var(--ease-out);filter:grayscale(1)}
.image-link:hover img{transform:scale(1.025)}
.gallery-stage>.image-link{aspect-ratio:1.1}
.gallery-stage img{width:100%;height:100%;object-fit:cover;object-position:50% 36%}
.enlarge-icon{position:absolute;bottom:var(--space-md);right:var(--space-md);display:grid;place-items:center;width:40px;height:40px;background:var(--color-paper);color:var(--color-ink);border-radius:50%}
figcaption{font-size:12px;color:var(--color-muted);margin-top:var(--space-md)}
.gallery-story h3{font-size:34px}
.gallery-story>p{font-size:14px;line-height:1.85;max-width:40ch;color:var(--color-ink-2);margin-top:var(--space-md)}
.story-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md);margin-top:var(--space-xl)}
.story-pair img{width:100%}
.gallery-story .small-note{font-size:11px}
.quote-section{padding-block:var(--space-xl) var(--space-3xl);text-align:center}
blockquote{font-family:var(--font-display);font-size:clamp(1.9rem,3.5vw,3.4rem);line-height:1.4;max-width:29ch;margin:0 auto;text-wrap:balance}
.quote-section>p{margin-top:var(--space-xl);font-size:12px}
.quote-section>p span{display:block;color:var(--color-muted);font-size:11px;margin-top:var(--space-xs)}
.journal{border-top:1px solid var(--color-rule)}
.journal-heading{display:flex;justify-content:space-between;align-items:center;gap:var(--space-lg);margin-bottom:var(--space-2xl)}
.journal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-xl)}
.journal-card{text-decoration:none}
.journal-image{overflow:hidden;aspect-ratio:1.8;background:var(--color-paper-2)}
.journal-image img{width:100%;height:100%;object-fit:cover;filter:grayscale(1);transition:transform var(--dur-long) var(--ease-out)}
.journal-card:hover img{transform:scale(1.035)}
.journal-content{padding-top:var(--space-lg)}
.journal-content time{font-size:11px;color:var(--color-muted)}
.journal-content h3{font-size:30px;max-width:27ch;margin-top:var(--space-sm)}
.journal-content p{font-size:14px;line-height:1.8;color:var(--color-ink-2);max-width:45ch;margin-top:var(--space-md)}
.read-link{display:flex;align-items:center;gap:var(--space-lg);margin-top:var(--space-lg);font-size:12px}
.read-link svg{width:16px;height:16px}
.contact-section{background:var(--color-paper-2);color:var(--color-ink);padding-block:var(--space-3xl)}
.contact-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,.6fr);gap:var(--space-2xl);align-items:center}
.contact-grid h2{font-size:clamp(2.4rem,4vw,4rem)}
.contact-grid p{margin-top:var(--space-lg);font-size:15px;color:var(--color-ink-2);line-height:1.85}
.contact-actions{display:flex;align-items:start;flex-direction:column;gap:var(--space-md)}
.contact-actions>a:not(.button){font-size:14px;min-height:32px;display:flex;align-items:center;text-underline-offset:5px}
.contact-actions .button{margin-bottom:var(--space-xs)}
.site-footer{padding-block:var(--space-xl) var(--space-lg)}
.footer-main{display:flex;align-items:center;justify-content:space-between;gap:var(--space-xl)}
.footer-main nav{display:flex;gap:var(--space-xl);font-size:12px}
.footer-main nav a{text-decoration:none;min-height:44px;display:flex;align-items:center}
.back-top{display:flex;align-items:center;gap:var(--space-md);font-size:12px;text-decoration:none;min-height:44px}
.back-top svg{width:16px;height:16px}
.footer-bottom{display:flex;justify-content:space-between;gap:var(--space-lg);margin-top:var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--color-rule);font-size:11px;color:var(--color-muted)}
.gallery-dialog{max-width:min(100% - 32px,1100px);width:100%;max-height:94dvh;background:var(--color-paper);color:var(--color-ink);padding:var(--space-lg);border:1px solid var(--color-rule)}
.gallery-dialog::backdrop{background:var(--color-overlay)}
.dialog-top{display:flex;justify-content:space-between;align-items:center;gap:var(--space-lg);margin-bottom:var(--space-md)}
.dialog-top p{font-size:14px;max-width:65ch}
#dialog-image{max-height:70dvh;max-width:100%;width:auto;margin:auto;object-fit:contain}
.dialog-bottom{display:flex;justify-content:space-between;align-items:center;gap:var(--space-lg);margin-top:var(--space-md);font-size:12px}
.dialog-error{padding:var(--space-xl)}
body:has(.gallery-dialog[open]){overflow-y:hidden}
.hero-copy,.hero-portrait{animation:settle 700ms var(--ease-out) both}
.hero-portrait{animation-delay:90ms}
@keyframes settle{from{opacity:.35;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.arrive{animation:arrive 650ms var(--ease-out) both}
@keyframes arrive{from{opacity:.4;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1600px){:root{--container:1440px;--gutter:64px}.hero{padding-top:var(--space-3xl)}}
@media(max-width:1100px){.desktop-nav{gap:var(--space-lg)}.header-actions{gap:var(--space-sm)}.hero{column-gap:var(--space-xl)}.hero h1{font-size:clamp(3.2rem,6vw,5rem)}.hero-actions{gap:var(--space-lg)}.section-heading,.about-body,.clock-grid,.concept-details,.recognition-grid{gap:var(--space-xl)}.hero-note{margin-top:var(--space-xl)}}
@media(max-width:900px){.desktop-nav{display:none}.menu-toggle:not([hidden]){display:inline-flex}.header-inner{min-height:82px}.header-contact{font-size:12px}.mobile-menu:not([hidden]){display:flex;flex-direction:column;padding-block:var(--space-lg);border-bottom:1px solid var(--color-rule)}.mobile-menu a{padding-block:var(--space-sm);font-size:20px;text-decoration:none;min-height:48px}.hero h1{font-size:clamp(2.7rem,6.2vw,4.3rem)}.hero-intro{font-size:15px}.hero-actions{gap:var(--space-md)}.hero-note{display:none}.hero-bottom{margin-top:var(--space-xl)}.gallery-grid{gap:var(--space-xl)}.footer-main{flex-wrap:wrap}}
@media(max-width:760px){.hero{grid-template-columns:minmax(0,1fr);padding-top:var(--space-xl);gap:var(--space-xl)}.hero-copy{padding-bottom:0}.hero h1{font-size:clamp(3.1rem,10vw,5rem)}.hero-intro{font-size:16px;max-width:35ch}.hero-actions{margin-top:var(--space-lg);gap:var(--space-lg)}.hero-portrait{max-width:540px;width:100%;justify-self:center;padding-top:0}.portrait-frame{aspect-ratio:1.1}.portrait-frame img{top:-192%}.hero-bottom{margin-top:0;padding-block:var(--space-md);gap:var(--space-md);font-size:10px}.hero-bottom .scroll-cue{font-size:11px;gap:var(--space-xs)}.hero-bottom .scroll-cue svg{width:14px}.section-heading,.about-body,.clock-grid,.concept-details,.recognition-grid,.gallery-grid,.contact-grid{grid-template-columns:minmax(0,1fr);gap:var(--space-xl)}.section-heading>p{font-size:16px;padding-top:0;max-width:52ch}.about-body{margin-top:var(--space-xl)}.large-copy{font-size:28px;max-width:24ch}.clock-section,.recognition-section,.contact-section{padding-block:var(--space-2xl)}.clock-copy{grid-row:1}.clock-visual{max-width:520px;justify-self:center}.clock-copy h2{font-size:48px}.clock-copy p{max-width:50ch}.cycle{margin-top:var(--space-xl);padding-block:var(--space-lg)}.cycle>span{font-size:clamp(1.9rem,6.5vw,3.5rem)}.cycle small{font-size:10px}.concept-details{margin-top:var(--space-xl)}.recognition-item:first-child{padding-top:var(--space-lg);border-top:1px solid var(--color-rule)}.gallery-heading{margin-bottom:var(--space-xl)}.gallery-stage>.image-link{aspect-ratio:1}.gallery-story{padding-top:var(--space-lg)}.story-pair{max-width:500px}.quote-section{padding-block:var(--space-xl) var(--space-2xl)}.journal-heading{align-items:start;flex-direction:column;gap:var(--space-md);margin-bottom:var(--space-xl)}.journal-grid{grid-template-columns:minmax(0,1fr);gap:var(--space-2xl)}.journal-content h3{font-size:30px;max-width:30ch}.contact-actions{gap:var(--space-xs)}.contact-actions .button{margin-bottom:var(--space-lg)}.footer-main{gap:var(--space-lg)}.footer-main>.wordmark{width:100%;font-size:36px}.footer-main nav{gap:var(--space-lg)}.footer-bottom{flex-direction:column;gap:var(--space-xs);margin-top:var(--space-lg)}.gallery-dialog{padding:var(--space-md)}.dialog-top p{font-size:12px}#dialog-image{max-height:65dvh}}
@media(max-width:380px){.header-actions{gap:var(--space-xs)}.header-contact{display:none}.wordmark{font-size:29px}.hero h1{font-size:2.8rem}.hero-actions{align-items:stretch;flex-direction:column;gap:var(--space-xs)}.hero-actions>.button{width:100%}.hero-actions>.text-link{justify-content:center}.footer-main nav{gap:var(--space-md)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-copy,.hero-portrait,.arrive{animation:none}*,*::before,*::after{transition-duration:0.01ms!important;animation-duration:0.01ms!important;animation-iteration-count:1!important}}
