:root {
  --bg:#FBF9FF;--red:#DE1234;--red-hover:#EF3957;
  --dark:#746D85;--ink:#1a1720;--muted:#9e97b0;
  --faint:rgba(116,109,133,.15);
  --serif:'DM Serif Display',Georgia,serif;
  --sans:'Libre Franklin',system-ui,sans-serif;
  --lw:320px;--gap:8px;--ease:cubic-bezier(.4,0,.2,1);
  --rsec:56px;--left-content-max:450px;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden;}

/* ── Fade ── */
.fade-in{opacity:0;transition:opacity .7s var(--ease);}
.fade-in.visible{opacity:1;}
.pp-left-fade{opacity:0;transition:opacity .7s var(--ease);}
.pp-left-fade.visible{opacity:1;}
.proj-card,.gal-item{opacity:0;transition:opacity 1s var(--ease);}
.proj-card.visible,.gal-item.visible{opacity:1;}

/* ── Layout ── */
.wrap{display:flex;min-height:100vh;}
.left{width:var(--lw);flex-shrink:0;position:fixed;inset:0 auto 0 0;background:var(--bg);overflow-y:auto;padding:36px 32px 48px;display:flex;flex-direction:column;z-index:20;scrollbar-width:thin;scrollbar-color:var(--faint) transparent;}
.left::-webkit-scrollbar{width:3px;}
.left::-webkit-scrollbar-thumb{background:var(--faint);border-radius:3px;}
.right{margin-left:var(--lw);flex:1;background:var(--bg);padding:36px 28px 80px 0;}

/* ── Identity ── */
.identity{display:flex;align-items:center;gap:14px;}
.logo-slot{width:117px;height:72px;flex-shrink:0;border-radius:8px;border:none;background:transparent;display:flex;align-items:center;justify-content:center;overflow:hidden;}
.logo-slot img{width:100%;height:100%;object-fit:cover;display:block;border-radius:8px;}
.name{font-family:var(--serif);font-size:26px;line-height:1.1;letter-spacing:-.02em;color:var(--ink);text-transform:lowercase;}
.title-line{font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);margin-top:4px;}

/* ── Bio ── */
.bio-large{font-size:34px;font-weight:800;line-height:1.25;color:var(--ink);letter-spacing:-.015em;}
.accent{color:var(--red);}
.intro-block{display:flex;flex-direction:column;gap:14px;}
.mobile-bio-hardcode{font-size:34px;font-weight:800;line-height:1.25;letter-spacing:-.015em;color:var(--ink);}
.mobile-bio-accent{color:#DE1234;font-weight:800;}

/* ── Buttons ── */
.contact-cta{display:inline-block;padding:10px 20px;background:var(--ink);color:#fff;font-size:11px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;text-decoration:none;border-radius:100px;transition:background .2s,transform .15s;align-self:flex-start;cursor:pointer;border:none;font-family:var(--sans);}
.contact-cta:hover{background:var(--red);transform:translateY(-2px);}
.submit-btn{padding:10px 22px;background:var(--ink);color:#fff;font-family:var(--sans);font-size:11px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;border:none;border-radius:100px;cursor:pointer;transition:background .2s,transform .15s;align-self:flex-start;}
.submit-btn:hover{background:var(--red);transform:translateY(-2px);}
.pp-back{display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);background:none;border:none;cursor:pointer;font-family:var(--sans);padding:16px 0;transition:color .2s;}
.pp-back:hover{color:var(--red);}
.pp-back svg{transition:transform .2s;flex-shrink:0;}
.pp-back:hover svg{transform:translateX(-3px);}
.scroll-indicator{display:inline-flex;align-items:center;cursor:pointer;border:none;background:none;padding:0;margin-top:20px;align-self:flex-start;transition:opacity .2s;}
.scroll-indicator:hover{opacity:.65;}
.scroll-indicator svg{animation:bounceDown 2s ease-in-out infinite;}
@keyframes bounceDown{0%,100%{transform:translateY(0);}50%{transform:translateY(5px);}}

/* ── Left sections ── */
.left-section{padding:var(--rsec) 0;border-top:1px solid var(--faint);}
.left-section:first-of-type{border-top:none;}
.sec-label{font-size:16px;font-weight:800;letter-spacing:-.005em;color:#000;margin-bottom:12px;}
.contact-intro{font-size:14px;font-weight:300;color:var(--ink);margin-bottom:12px;line-height:1.6;}
.strength-name{font-family:var(--sans);font-size:16px;font-weight:700;line-height:1.55;color:#000;margin-bottom:6px;}
.strength-group{display:flex;flex-direction:column;gap:15px;}
.exp-list{display:flex;flex-direction:column;gap:16px;}
.exp-role{font-family:var(--sans);font-size:16px;font-weight:700;line-height:1.25;color:var(--ink);margin-bottom:4px;}
.exp-note{font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--dark);}
.exp-meta{font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--dark);margin-bottom:4px;}
.exp-desc{font-size:14px;font-weight:300;line-height:1.6;color:var(--ink);}
.headshot-slot{width:100%;aspect-ratio:3/2;border-radius:10px;border:none;display:flex;align-items:center;justify-content:center;overflow:hidden;margin-bottom:16px;background:var(--faint);}
.headshot-slot img{width:100%;height:100%;object-fit:cover;display:block;}
.contact-form{display:flex;flex-direction:column;gap:11px;}
.form-field{display:flex;flex-direction:column;gap:5px;}
.form-field label{font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);}
.form-field input,.form-field textarea{background:rgba(116,109,133,.07);border:1px solid var(--faint);border-radius:6px;padding:9px 12px;font-family:var(--sans);font-size:14px;font-weight:300;color:var(--ink);outline:none;transition:border-color .2s;resize:none;width:100%;}
.form-field input::placeholder,.form-field textarea::placeholder{color:var(--muted);}
.form-field input:focus,.form-field textarea:focus{border-color:var(--dark);}
.form-field textarea{height:90px;}
.form-note{font-size:11px;color:var(--dark);line-height:1.5;}
.left-foot{font-size:11px;color:var(--muted);padding-top:16px;border-top:1px solid var(--faint);margin-top:auto;}

/* ── Portfolio grid ── */
.portfolio-grid{column-count:2;column-gap:var(--gap);}
.proj-card{break-inside:avoid;display:block;width:100%;border-radius:10px;overflow:hidden;cursor:pointer;position:relative;background:linear-gradient(160deg,#e9e4f5,#d6d0e8);margin-bottom:var(--gap);}
.proj-card .thumb-base{display:block;width:100%;height:auto;z-index:1;position:relative;}
.proj-card .thumb-hover-wrap{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity .45s var(--ease);z-index:2;}
.proj-card:hover .thumb-hover-wrap{opacity:1;}
.proj-card .thumb-hover-wrap picture,.proj-card .thumb-hover-wrap img.thumb-hover-img{position:absolute;inset:0;width:100%;height:100%;}
.proj-card .thumb-hover-img{object-fit:cover;display:block;}
.proj-label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px;pointer-events:none;opacity:0;transition:opacity .3s var(--ease);z-index:3;}
.proj-card:hover .proj-label{opacity:1;}
.proj-title-overlay{font-family:var(--serif);font-size:26px;line-height:1.15;letter-spacing:-.01em;color:#fbf9ff;text-align:center;}
.proj-tag-overlay{font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:rgba(251,249,255,.75);text-align:center;margin-top:8px;line-height:1.6;}

/* ── Mobile-only strips (hidden on desktop) ── */
.mobile-header,.mobile-hero-strip,.mobile-grid-contact,.mobile-copyright,.mobile-about-section{display:none;}

/* ── Mobile header ── */
.mobile-header{position:sticky;top:0;z-index:30;background:var(--bg);border-bottom:1px solid var(--faint);padding:0 16px;height:56px;align-items:center;gap:10px;}
.mob-name-wrap{flex:1;min-width:0;}
.mob-name{font-family:var(--serif);font-size:28px;color:var(--red);line-height:1;letter-spacing:-.02em;}
.mob-name-link{text-decoration:none;}
.mob-name-link:hover .mob-name{color:var(--red-hover);}
.mob-header-btn{padding:8px 4px;background:none;border:none;font-family:var(--sans);font-size:11px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--red);cursor:pointer;white-space:nowrap;transition:color .2s;flex-shrink:0;}
.mob-header-btn:hover{color:var(--red-hover);}

/* ── Mobile sidebar (project pages) ── */
.mob-overlay{display:none;position:fixed;inset:0;background:rgba(26,23,32,.35);z-index:40;}
.mob-overlay.show{display:block;}
.mob-sidebar{position:fixed;inset:0 auto 0 0;width:min(var(--lw),88vw);background:var(--bg);z-index:50;overflow-y:auto;padding:14px 24px 48px;display:flex;flex-direction:column;transform:translateX(-110%);transition:transform .3s var(--ease);box-shadow:4px 0 28px rgba(116,109,133,.18);}
.mob-sidebar.open{transform:none;}
.mob-sidebar-close{position:sticky;top:0;align-self:flex-end;background:none;border:1px solid var(--faint);width:32px;height:32px;border-radius:50%;font-family:var(--sans);font-size:18px;line-height:1;color:var(--dark);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .2s,color .2s;flex-shrink:0;margin-bottom:8px;z-index:2;}
.mob-sidebar-close:hover{border-color:var(--red);color:var(--red);}
.mob-sidebar .left-section{padding:var(--rsec) 0;border-top:1px solid var(--faint);}
.mob-sidebar .left-section:first-of-type{border-top:none;padding-top:0;}

/* ── Mobile about section ── */
.mobile-about-section{flex-direction:column;gap:0;padding:0 16px;}
.mobile-about-section .left-section{padding:var(--rsec) 0;border-top:1px solid var(--faint);}
.mobile-about-section .left-section:first-of-type{border-top:1px solid var(--faint);}
.mobile-grid-contact{padding:28px 16px 16px;flex-direction:column;gap:11px;border-top:1px solid var(--faint);margin-top:20px;}
.mobile-copyright{font-size:11px;color:var(--muted);text-align:center;padding:16px;border-top:1px solid var(--faint);margin-top:8px;}

/* ── Project pages ── */
.proj-page{display:none;min-height:100vh;background:var(--bg);}
.proj-page.open{display:flex;flex-direction:column;}
.pp-inner{display:flex;flex:1;overflow:hidden;min-height:0;}
.pp-left{width:var(--lw);flex-shrink:0;height:100vh;overflow-y:auto;padding:36px 32px 48px;display:flex;flex-direction:column;background:var(--bg);scrollbar-width:thin;scrollbar-color:var(--faint) transparent;scroll-behavior:auto;}
.pp-right{flex:1;height:100vh;overflow-y:auto;padding:36px 28px 80px 0;background:var(--bg);scrollbar-width:thin;scrollbar-color:var(--faint) transparent;scroll-behavior:auto;}
.pp-left-section{padding:var(--rsec) 0;border-top:1px solid var(--faint);}
.pp-left-section:first-of-type{border-top:none;}
.pp-left-section.no-rule{border-top:none;padding-top:0;}
.pp-back-rule{border:none;border-top:1px solid var(--faint);margin:4px 0 0;}
.pp-back-spacer{height:var(--rsec);}
.pp-project-unit{display:flex;flex-direction:column;gap:20px;}
.pp-meta-block{display:flex;flex-direction:column;gap:5px;}
.pp-title{font-family:var(--serif);font-size:48px;line-height:1.02;letter-spacing:-.02em;color:var(--ink);margin-bottom:4px;}
.pp-tag{font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);margin-top:4px;}
.pp-byline{font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);margin-top:10px;}
.pp-copy-block{display:flex;flex-direction:column;gap:14px;}
.pp-section-label{font-size:16px;font-weight:800;letter-spacing:-.005em;color:#000;margin-bottom:4px;}
.pp-text{font-size:16px;font-weight:300;line-height:1.75;color:var(--ink);}
.pp-text p+p{margin-top:.8em;}
.pp-contact{display:flex;flex-direction:column;gap:11px;}
.pp-extra-section{display:flex;flex-direction:column;gap:14px;padding:0 16px;}
.pp-section-label+.pp-extra-section{margin-top:12px;}
.pp-extra-item{display:flex;flex-direction:column;gap:4px;}
.pp-extra-item-title{font-size:16px;font-weight:700;color:#000;}
.pp-extra-item-body{font-size:14px;font-weight:600;line-height:1.75;color:var(--ink);}
.pp-mobile-hero-inline{display:none;border-radius:8px;overflow:hidden;margin-bottom:20px;}
.pp-mobile-hero-inline img{display:block;width:100%;height:auto;}
.pp-mob-contact{display:none;margin-top:32px;padding-top:56px;border-top:1px solid var(--faint);flex-direction:column;gap:11px;}
.pp-mobile-header{display:none;position:sticky;top:0;z-index:30;background:var(--bg);border-bottom:1px solid var(--faint);padding:0 16px;height:56px;align-items:center;gap:10px;flex-shrink:0;}

/* ── Gallery ── */
.gallery{column-count:1;column-gap:16px;}
.gal-item{break-inside:avoid;display:block;width:100%;border-radius:8px;overflow:hidden;cursor:zoom-in;position:relative;background:linear-gradient(135deg,#e9e4f5,#d6d0e8);margin-bottom:32px;outline:2px solid transparent;outline-offset:-2px;transition:outline-color .25s var(--ease),opacity 1s var(--ease);}
.gal-item.hero{column-span:all;}
.gal-item img{display:block;width:100%;height:auto;}
.gal-item:hover{outline-color:var(--red);}
@media(min-width:1800px){.gallery{column-count:2;}.gal-item.hero{column-span:all;}}

/* ── Prev/Next ── */
.proj-nav{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:32px;}
.proj-nav-btn{display:flex;flex-direction:column;gap:4px;padding:4px 0;border:none;background:none;cursor:pointer;font-family:var(--sans);text-align:left;}
.proj-nav-btn.next{text-align:right;align-items:flex-end;}
.proj-nav-btn:hover .proj-nav-dir,.proj-nav-btn:hover .proj-nav-name{color:var(--red);}
.proj-nav-dir{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);display:flex;align-items:center;gap:5px;transition:color .2s;}
.proj-nav-dir svg{transition:transform .2s;flex-shrink:0;}
.proj-nav-btn.prev:hover .proj-nav-dir svg{transform:translateX(-3px);}
.proj-nav-btn.next:hover .proj-nav-dir svg{transform:translateX(3px);}
.proj-nav-name{font-family:var(--serif);font-size:20px;color:var(--ink);line-height:1.2;transition:color .2s;}

/* ── Lightbox ── */
.lightbox{position:fixed;inset:0;background:rgba(220,216,236,0);z-index:300;display:flex;align-items:center;justify-content:center;cursor:zoom-out;pointer-events:none;transition:background .35s var(--ease);}
.lightbox.open{pointer-events:auto;background:rgba(220,216,236,.92);}
#lb-img{max-width:92vw;max-height:88vh;object-fit:contain;border-radius:6px;display:none;will-change:transform,opacity;cursor:zoom-out;}

.pp-foot{display:none;font-size:11px;color:var(--muted);text-align:center;padding:24px 0 8px;border-top:1px solid var(--faint);margin-top:32px;}
.page-404{position:fixed;inset:0;background:var(--bg);z-index:200;display:none;}
.page-404.open{display:flex;}

/* ── Loading shimmer ── */
@keyframes shimmer {
  0%   { background-position: center 200%; }
  100% { background-position: center -200%; }
}
.loading-shimmer {
  position: fixed;
  inset: 0;
  z-index: 10;
  pointer-events: none;
  opacity: 0;
  transition: opacity .4s ease;
  background: linear-gradient(
    to bottom,
    var(--bg) 20%,
    #e1ddef 50%,
    var(--bg) 80%
  );
  background-size: 100% 200%;
  animation: shimmer 3.5s linear infinite;
}
.loading-shimmer.active {
  opacity: 1;
}

/* ══ RESPONSIVE ══ */
@media(min-width:721px) and (max-width:1024px){
  :root{--lw:50vw;}
  .wrap{display:flex;}.left{width:var(--lw);}.right{margin-left:var(--lw);padding-left:0;}
  .portfolio-grid{column-count:1;}.pp-left{width:var(--lw);}.pp-right{padding-left:0;}
}
@media(min-width:1025px) and (max-width:1600px){
  :root{--lw:33.333vw;}
  .wrap{display:flex;}.left{width:var(--lw);}.right{margin-left:var(--lw);}
  .portfolio-grid{column-count:2;}.pp-left{width:var(--lw);}
}
@media(min-width:1601px){
  :root{--lw:33.333vw;}
  .wrap{display:flex;}.left{width:var(--lw);}
  .right{margin-left:var(--lw);width:calc(var(--lw)*2);flex:none;padding-right:28px;}
  .portfolio-grid{column-count:2;column-gap:var(--gap);width:100%;}
  .pp-left{width:var(--lw);}
  .pp-right{flex:none;width:calc(var(--lw)*2);padding-right:28px;}
  .left .left-section>*,.left .left-section .intro-block,.pp-left .pp-left-section>*{max-width:var(--left-content-max);}
  .left .left-section .identity,.pp-left .pp-left-section .identity{max-width:none;}
}

/* ══ MOBILE (≤720px) ══ */
@media(max-width:720px){
  .mobile-header{display:flex;}
  .mobile-hero-strip{display:flex;padding:20px 16px 16px;flex-direction:column;gap:12px;}
  .mobile-grid-contact{display:flex;}
  .mobile-copyright{display:block;}
  .mobile-about-section{display:flex;}
  .wrap{display:block;}
  .left{display:none;}
  .right{margin-left:0;padding:0 0 40px;}
  .portfolio-grid{column-count:1;padding:20px 12px 0;}
  .proj-page.open{flex-direction:column;}
  .pp-mobile-header{display:flex;}
  .pp-foot{display:block;}
  .pp-inner{flex-direction:column!important;overflow-y:auto!important;flex:1;}
  .pp-left{width:100%;height:auto;padding:16px 18px 20px;flex-shrink:0;}
  .pp-left .pp-left-section:first-of-type{display:none;}
  .pp-back{display:none;}
  .pp-back-rule{display:none;}
  .pp-right{height:auto;flex:none;padding:0 12px 20px;}
  .pp-contact{display:none;}
  .pp-mob-contact{display:flex;}
  .pp-mobile-hero-inline{display:block;}
  .pp-right .gallery .gal-item.hero{display:none;}
  .gallery{column-count:1;}
  .gal-item.hero{column-span:unset;}
  .lightbox{padding:0;}
  .pp-back-spacer{height:0;}
  .pp-title-block-mobile-pad{padding-top:24px;}
  .page-404.open{flex-direction:column;overflow-y:auto;}
}
