

@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;600&display=swap');
:root{--bg:#f0efe9;--ink:#232327;--muted:#686868;--line:#d2d2cd;--yellow:#a88e00;--cyan:#0da8bd;--max:1450px;--gutter:38px;--font:'Manrope',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-weight:400;font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.site{max-width:var(--max);margin:0 auto;padding:0 var(--gutter) 0}.topbar{position:sticky;top:0;z-index:200;background:var(--bg);display:grid;grid-template-columns:1fr auto;align-items:start;gap:28px;padding:54px 0 18px;transition:padding .35s ease,box-shadow .35s ease}.topbar.scrolled{padding:16px 0 22px;box-shadow:0 1px 0 0 var(--line)}.brand{font-size:42px;line-height:1;font-weight:600;letter-spacing:.006em;text-decoration:none;color:var(--ink);transform-origin:left center;transform:translateY(var(--parallax,0px));transition:font-size .35s ease}.topbar.scrolled .brand{font-size:31px}.nav{display:flex;align-items:center;gap:46px}.nav{position:relative}.nav a{font-size:16px;font-weight:600;text-decoration:none;color:var(--cyan);line-height:1.2;transition:color .25s}.nav a:hover{color:var(--yellow)}.nav a.active{color:var(--yellow)}.nav-underline{position:absolute;height:1px;background:var(--yellow);left:0;width:0;opacity:0;pointer-events:none;transition:left .32s cubic-bezier(.4,0,.2,1),width .32s cubic-bezier(.4,0,.2,1),top .32s ease,opacity .2s}.corner-arrow{display:inline-flex!important;align-items:center;margin-left:22px}.corner-arrow img{width:25px;height:26px;display:block}.quote{margin-top:82px;font-size:18px;font-weight:600;letter-spacing:-.018em;line-height:1.34;max-width:620px}.hero-spacer{height:138px}.section-head{margin:0 0 62px;padding-bottom:39px;border-bottom:1px solid var(--line)}.page-title{font-size:48px;line-height:1.05;font-weight:600;letter-spacing:.008em;margin:0}.home-rows{display:flex;flex-direction:column;gap:72px}.portfolio-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;align-items:start}.portfolio-cell:empty{min-height:1px}.card{display:block;text-decoration:none;color:var(--ink);width:calc(var(--thumb-width, .8)*100%)}.media{overflow:hidden;background:#eee;aspect-ratio:4/5;position:relative}.media img{display:block;width:100%;height:100%;object-fit:var(--thumb-fit,cover);object-position:var(--thumb-position,50% 50%);transform:scale(var(--thumb-zoom,1));transition:transform .65s cubic-bezier(.2,.7,.2,1),filter .65s ease;filter:saturate(1)}.card:hover img{transform:scale(calc(var(--thumb-zoom,1)*1.04));filter:saturate(.08) contrast(1.03)}.card-title{font-size:18px;line-height:1.24;font-weight:600;letter-spacing:-.025em;margin:18px 0 0}.card:hover .card-title{text-decoration:underline;text-underline-offset:5px}.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:72px 24px;align-items:start}.project-head{margin-top:128px}.project-title{font-size:48px;line-height:1.04;letter-spacing:.004em;margin:0 0 38px;font-weight:600;padding-bottom:34px;border-bottom:1px solid var(--line)}.project-desc{font-size:18px;line-height:1.55;margin:0 0 66px;white-space:pre-line}.project-desc a{color:var(--ink);text-decoration:underline;text-underline-offset:3px}/* Project pages: safe editorial flow. Images stay in the document flow, never overlap.
   Per-image controls can be applied on each <figure>:
   --figure-width: 100%; --figure-align: left|center|right; --img-position; --img-zoom; --img-fit. */
.gallery{display:flex;flex-wrap:wrap;row-gap:58px;column-gap:16px;margin-top:34px;align-items:flex-end}
.gallery figure{margin:0;width:var(--figure-width,100%)!important;max-width:100%;margin-left:var(--figure-margin-left,0);margin-right:var(--figure-margin-right,0);overflow:visible}
.gallery .media-video{max-width:100%}.gallery .video-embed{aspect-ratio:16/9;background:#eee;overflow:hidden;width:100%}.gallery .video-embed iframe{width:100%;height:100%;border:0;display:block}.gallery .media-audio audio{width:100%;max-width:420px}.img-caption{display:block;font-size:13px;color:var(--muted);margin-top:8px;line-height:1.4}.pdf-download{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border:1px solid var(--ink);border-radius:999px;text-decoration:none;color:var(--ink);font-size:15px;font-weight:600;transition:background .2s,color .2s}.pdf-download:hover{background:var(--ink);color:var(--bg)}.gallery img{width:100%;max-width:100%;height:auto;display:block;object-fit:var(--img-fit,contain);object-position:var(--img-position,50% 50%);transform:scale(var(--img-zoom,1));transform-origin:var(--img-position,50% 50%)}.work-nav{display:grid;grid-template-columns:1fr 1fr;gap:32px;margin:110px 0 130px;min-height:130px}.work-nav a{text-decoration:none;color:var(--ink)}.work-nav .next{text-align:right}.work-nav strong{display:block;font-size:21px;line-height:1.05;font-weight:600;text-decoration:underline;text-underline-offset:5px;letter-spacing:-.03em}.work-nav span{display:block;font-size:15px;font-weight:600;margin-top:8px;letter-spacing:-.02em}.text-page{max-width:1120px;margin-top:132px}.text-page .section-head{margin-bottom:48px}.text-page p{font-size:19px;line-height:1.55;margin:0 0 22px}.text-page h2{font-size:24px;margin:48px 0 16px;letter-spacing:-.02em;font-weight:600}.about-bio{display:grid;grid-template-columns:1fr 1fr;gap:72px;margin-bottom:48px}.about-bio p{font-size:17px;line-height:1.45;margin:0 0 18px}.about-cv{column-count:2;column-gap:72px;margin-top:42px;border-top:1px solid var(--line);padding-top:36px}.about-cv h2{break-after:avoid;break-inside:avoid;font-size:13px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;margin:28px 0 6px}.about-cv p{break-inside:avoid;font-size:14px;line-height:1.5;margin:0 0 3px}.about-cv p strong{font-weight:700;letter-spacing:.04em;display:block;margin-top:20px;margin-bottom:4px}.contact-block{font-size:24px;line-height:1.9}.contact-block a{color:var(--ink);text-decoration:none;transition:color .25s}.contact-block a:hover{color:var(--cyan)}.footer{margin:82px calc(var(--gutter)*-1) 0;padding:48px calc(var(--gutter) + 42px) 56px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:30px;align-items:start}.footer-left{font-size:16px;line-height:1.55}.footer-left a{color:var(--ink);text-decoration:none;transition:color .25s}.footer-left a:hover{color:var(--cyan)}.footer-dot{display:block;width:9px;height:9px;border-radius:50%;background:var(--cyan);margin:0 0 30px}.footer-left p{margin:22px 0}.instagram{display:inline-block;width:28px;height:28px;line-height:1}.instagram img{width:28px;height:28px;display:block}.backtop{font-size:15px;font-weight:600;letter-spacing:-.015em;text-decoration:none;color:var(--ink);margin-top:14px;display:inline-flex;align-items:center;gap:18px;transition:color .25s}.backtop:hover{color:var(--cyan)}.backtop img{width:25px;height:26px;transform:rotate(90deg);transition:filter .25s}.backtop:hover img{filter:invert(57%) sepia(72%) saturate(500%) hue-rotate(148deg) brightness(92%)}.admin-page{max-width:1100px;margin:0 auto;padding:40px}.admin-panel{background:white;border:1px solid #ddd;padding:24px;border-radius:14px}textarea,input,select{width:100%;padding:10px;border:1px solid #bbb;border-radius:8px;font:inherit;margin:6px 0 14px}.btn{display:inline-block;background:#222;color:#fff;text-decoration:none;border:0;border-radius:999px;padding:10px 16px;font-weight:700;cursor:pointer}.layout-note{font-size:14px;color:var(--muted)}code{background:#f1f1f1;padding:2px 5px;border-radius:5px}.mob-menu-btn{display:none;flex-direction:column;justify-content:space-between;width:26px;height:18px;background:none;border:none;cursor:pointer;padding:0}.mob-menu-btn span{display:block;width:100%;height:2px;background:var(--ink);border-radius:2px}.nav-overlay{display:none;position:fixed;inset:0;background:#1c1c1c;z-index:500;flex-direction:column;justify-content:space-between;padding:32px 28px 60px;opacity:0;transition:opacity .3s ease}.nav-overlay.open{display:flex;animation:overlayIn .3s ease forwards}.nav-overlay-top{display:flex;justify-content:space-between;align-items:center}.nav-overlay-logo{width:44px;height:44px;border-radius:50%;display:block}.nav-overlay-close{background:none;border:none;cursor:pointer;font-family:var(--font);font-weight:400;font-size:16px;color:#fff;padding:0;letter-spacing:.04em}.nav-overlay-links{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding-bottom:40px}.nav-overlay-links a{font-size:42px;font-weight:400;text-decoration:none;color:#fff;letter-spacing:-.01em;line-height:1.15;opacity:0;transform:translateY(18px);transition:color .2s}.nav-overlay.open .nav-overlay-links a{animation:linkIn .35s ease forwards}.nav-overlay.open .nav-overlay-links a:nth-child(1){animation-delay:.1s}.nav-overlay.open .nav-overlay-links a:nth-child(2){animation-delay:.18s}.nav-overlay.open .nav-overlay-links a:nth-child(3){animation-delay:.26s}.nav-overlay.open .nav-overlay-links a:nth-child(4){animation-delay:.34s}.nav-overlay-links a.active{text-decoration:underline;text-underline-offset:6px}@keyframes overlayIn{from{opacity:0}to{opacity:1}}@keyframes linkIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.lb-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.88);z-index:900;align-items:center;justify-content:center}.lb-overlay.open{display:flex}.lb-img{max-width:92vw;max-height:88vh;object-fit:contain;display:block;pointer-events:none}.lb-close{position:absolute;top:20px;right:24px;background:none;border:none;color:#fff;font-size:28px;cursor:pointer;line-height:1;padding:8px 12px;opacity:.8}.lb-close:hover{opacity:1}.lb-prev,.lb-next{position:absolute;top:50%;transform:translateY(-50%);background:none;border:none;width:44px;height:44px;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:.75;user-select:none;transition:opacity .2s;font-size:0;filter:drop-shadow(0 1px 3px rgba(0,0,0,.9))}.lb-prev:hover,.lb-next:hover{opacity:1}.lb-prev{left:16px}.lb-next{right:16px}.lb-prev::before,.lb-next::before{content:'';display:block;width:13px;height:13px;border-top:2px solid #fff;border-right:2px solid #fff}.lb-prev::before{transform:rotate(-135deg) translate(-2px,2px)}.lb-next::before{transform:rotate(45deg) translate(-2px,2px)}@media(max-width:620px){.mob-menu-btn{display:flex}.nav{display:none}}@media(max-width:900px){:root{--gutter:24px}.brand{font-size:36px}.nav{gap:22px}.quote{margin-top:62px}.hero-spacer{height:84px}.section-head{padding-bottom:30px;margin-bottom:44px}.page-title{font-size:42px}.portfolio-row,.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:56px 18px}.card{width:100%}.project-head{margin-top:90px}.project-title{font-size:42px}.gallery figure,.gallery figure:nth-child(n){width:100%;max-width:100%}.about-cv{column-count:1}.footer{margin:82px calc(var(--gutter)*-1) 0;padding:48px calc(var(--gutter) + 42px) 56px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:30px;align-items:start}}@media(max-width:620px){:root{--gutter:18px}.gallery{row-gap:18px}.topbar{display:flex;justify-content:space-between;align-items:center;position:sticky;padding:24px 0 18px}.topbar.scrolled .brand{font-size:33px}.brand{font-size:33px}.nav{margin-top:24px;gap:18px;flex-wrap:wrap}.nav a{font-size:15px}.corner-arrow{display:none!important}.quote{font-size:17px;margin-top:58px}.hero-spacer{height:70px}.page-title{font-size:38px}.portfolio-row,.grid{grid-template-columns:1fr;gap:44px}.project-title{font-size:36px}.project-desc{font-size:17px}.work-nav{grid-template-columns:1fr;margin:72px 0}.work-nav .next{text-align:left}.work-nav strong{font-size:19px}.footer{margin:82px calc(var(--gutter)*-1) 0;padding:48px calc(var(--gutter) + 42px) 56px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:30px;align-items:start}.backtop{display:inline-flex;margin-top:58px}.footer-left{font-size:16px}}@media(hover:none){.card:hover img{transform:scale(var(--thumb-zoom,1));filter:saturate(1)}}
.video-section{display:grid;grid-template-columns:1fr;gap:24px;margin:0 0 54px;width:50%;min-width:640px;max-width:780px}.video-embed{aspect-ratio:16/9;background:#eee;overflow:hidden;width:100%}.video-embed iframe{width:100%;height:100%;border:0;display:block}@media(max-width:900px){.video-section{width:100%;min-width:0;max-width:none;grid-template-columns:1fr}}
/* ── Scroll reveal ── */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1);transition-delay:var(--delay,0s)}
.reveal.is-visible{opacity:1;transform:none}
/* Name fades in on load (opacity only — keeps parallax transform free) */
@keyframes brandIn{from{opacity:0}to{opacity:1}}
.brand{animation:brandIn .85s ease both}
.nav{animation:brandIn 1s ease .15s both}
.quote-line{display:block}
/* Category / section heading between portfolio rows */
.row-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:48px 0 4px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.row-heading span{font-size:28px;line-height:1.05;font-weight:600;letter-spacing:.008em}
.row-heading img{width:20px;height:21px;transform:rotate(-90deg);flex:0 0 auto}
@media(max-width:620px){.row-heading span{font-size:23px}}
/* Force a figure onto its own row (flex line break before/after) */
.gallery-break{flex-basis:100%;width:100%;height:0;margin:0;padding:0;border:0}
/* ── Multi-column text blocks (from CMS) ── */
.cols-2{column-count:2;column-gap:48px}
.cols-3{column-count:3;column-gap:40px}
.cols-2 p,.cols-3 p,.cols-2 h2,.cols-3 h2{break-inside:avoid}
@media(max-width:900px){.cols-3{column-count:2}}
@media(max-width:620px){.about-bio{grid-template-columns:1fr;gap:0}.cols-2,.cols-3{column-count:1}}
