/* ==========================================================
   Claudia Kvar — Portfolio
   Palette: Warm White #F7F7F4 · Almost Black #111111 · Electric Blue #0000FF
   Type: Playfair Display (display) · Inter (body & labels)
   ========================================================== */

:root{
  --paper:#F7F7F4;
  --ink:#111111;
  --sand:#0000FF;      /* electric blue */
  --sand-soft:#C9C9FF; /* pale electric tint */
  --grey:#6E6C66;
  --line:rgba(17,17,17,.12);

  --font-display:"Playfair Display", Georgia, serif;
  --font-body:"Inter", "Neue Haas Grotesk", -apple-system, sans-serif;

  --pad:clamp(1.25rem, 5vw, 6rem);
  --section-gap:clamp(6rem, 14vh, 11rem);

  --ease:cubic-bezier(.22,.9,.28,1);
  --dur:.9s;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-body);
  font-weight:300;
  font-size:clamp(1rem, .95rem + .3vw, 1.125rem);
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
em{font-style:italic;color:var(--sand)}

h1,h2,h3{font-family:var(--font-display);font-weight:500;line-height:1.08;letter-spacing:-.01em}
h2{font-size:clamp(2.2rem, 1.4rem + 4vw, 4.5rem);margin-bottom:1.5rem}
h3{font-size:clamp(1.6rem, 1.2rem + 1.6vw, 2.6rem)}

.section{padding:var(--section-gap) var(--pad)}

/* ---------- Utilities ---------- */
.skip-link{
  position:absolute;left:-999px;top:0;background:var(--ink);color:var(--paper);
  padding:.75rem 1.25rem;z-index:200;
}
.skip-link:focus{left:0}

.eyebrow{
  font-size:.72rem;font-weight:500;letter-spacing:.28em;text-transform:uppercase;
  color:var(--grey);margin-bottom:1.25rem;
}
.eyebrow::before{
  content:"";display:inline-block;width:2.25rem;height:1px;background:var(--sand);
  vertical-align:middle;margin-right:.9rem;
}

.lead{font-size:clamp(1.15rem,1rem + .8vw,1.5rem);font-weight:400;margin-bottom:1.25rem}

/* ---------- Page veil (premium load) ---------- */
.page-veil{
  position:fixed;inset:0;background:var(--ink);z-index:150;
  transform-origin:top;pointer-events:none;
  animation:veil 1.1s var(--ease) .15s forwards;
}
@keyframes veil{to{transform:scaleY(0)}}

/* ---------- Cursor ---------- */
.cursor{
  position:fixed;top:0;left:0;width:10px;height:10px;border-radius:50%;
  background:var(--sand);pointer-events:none;z-index:180;
  transform:translate(-50%,-50%);
  transition:width .35s var(--ease),height .35s var(--ease),opacity .3s;
  opacity:0;mix-blend-mode:multiply;
}
.cursor.is-active{opacity:1}
.cursor.is-hover{width:56px;height:56px;opacity:.45}
@media (hover:none){.cursor{display:none}}

/* ---------- Header ---------- */
.site-header{
  position:fixed;top:0;left:0;right:0;z-index:100;
  display:flex;align-items:center;justify-content:space-between;
  padding:1.4rem var(--pad);
  transition:background .5s,box-shadow .5s,padding .5s;
}
.site-header.is-scrolled{
  background:rgba(247,247,244,.9);
  backdrop-filter:blur(12px);
  padding:.85rem var(--pad);
  box-shadow:0 1px 0 var(--line);
}
.wordmark{
  font-family:var(--font-display);font-size:1.3rem;font-weight:600;letter-spacing:-.01em;
}
.wordmark-dot{color:var(--sand)}
.site-nav{display:flex;gap:2.25rem;align-items:center}
.site-nav a{
  font-size:.82rem;font-weight:400;letter-spacing:.12em;text-transform:uppercase;
  position:relative;padding:.25rem 0;
}
.site-nav a::after{
  content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;
  background:var(--ink);transform:scaleX(0);transform-origin:right;
  transition:transform .45s var(--ease);
}
.site-nav a:hover::after,.site-nav a:focus-visible::after{transform:scaleX(1);transform-origin:left}
.nav-cta{
  border:1px solid var(--ink);padding:.55rem 1.3rem !important;border-radius:99px;
  transition:background .4s,color .4s;
}
.nav-cta::after{display:none}
.nav-cta:hover{background:var(--ink);color:var(--paper)}

.nav-toggle{display:none;background:none;border:0;width:2.4rem;height:2rem;cursor:pointer;flex-direction:column;justify-content:center;gap:.45rem}
.nav-toggle span{display:block;height:1.5px;background:var(--ink);transition:transform .4s var(--ease),opacity .3s}
.nav-toggle[aria-expanded="true"] span:first-child{transform:translateY(.32rem) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:last-child{transform:translateY(-.32rem) rotate(-45deg)}

.mobile-nav{
  position:fixed;inset:0;background:var(--paper);z-index:90;
  display:flex;flex-direction:column;justify-content:center;gap:1.25rem;
  padding:0 var(--pad);
  opacity:0;visibility:hidden;transition:opacity .5s var(--ease),visibility .5s;
}
.mobile-nav.is-open{opacity:1;visibility:visible}
.mobile-nav a{font-family:var(--font-display);font-size:2.4rem}


/* ---------- Language toggle ---------- */
.lang{display:flex;align-items:center;gap:.4rem;font-size:.78rem;color:var(--grey)}
.lang button{
  background:none;border:0;cursor:pointer;font:inherit;color:var(--grey);
  letter-spacing:.12em;padding:.2rem .1rem;transition:color .3s;
}
.lang button:hover{color:var(--ink)}
.lang button.is-active{color:var(--ink);font-weight:600;border-bottom:1px solid var(--sand)}
.lang-mobile{margin-top:1.5rem;font-size:1rem}
.lang-mobile button{font-size:1.1rem}

/* ---------- Image slots (real image OR curated placeholder) ---------- */
.img-slot{
  position:relative;overflow:hidden;background:
    linear-gradient(160deg,#EFEFF8 0%,#E3E3F4 45%,#C8C8EE 100%);
  background-size:cover;background-position:center;
}
.img-slot::before{ /* subtle grain texture */
  content:"";position:absolute;inset:0;opacity:.35;pointer-events:none;
  background-image:radial-gradient(rgba(17,17,17,.05) 1px, transparent 1px);
  background-size:4px 4px;
}
.img-slot.has-img::before{opacity:0}

/* Museum-style caption plate — the signature element */
.plate{
  position:absolute;left:1.25rem;bottom:1.25rem;z-index:2;
  background:rgba(247,247,244,.92);backdrop-filter:blur(6px);
  padding:.7rem 1rem .7rem .9rem;
  border-left:2px solid var(--sand);
  display:flex;flex-direction:column;gap:.15rem;
  max-width:min(75%, 24rem);
}
.plate-tl{bottom:auto;top:1.25rem}
.plate-br{left:auto;right:1.25rem}
.plate-fig{font-size:.62rem;letter-spacing:.3em;text-transform:uppercase;color:var(--sand);font-weight:500}
.plate-title{font-size:.78rem;letter-spacing:.04em;color:var(--ink);font-weight:400}

/* ---------- Hero ---------- */
.hero{
  position:relative;min-height:100svh;
  display:flex;flex-direction:column;justify-content:flex-end;
  padding:0 var(--pad) clamp(3rem,8vh,6rem);
}
.hero-media{
  position:absolute;inset:0;z-index:-1;
}
.hero-media::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(to top, rgba(247,247,244,.96) 8%, rgba(247,247,244,.55) 40%, rgba(247,247,244,.1) 75%);
}
.plate-hero{left:auto;right:1.5rem;bottom:auto;top:6.5rem}

.hero-title{
  font-size:clamp(2.9rem, 2rem + 7.5vw, 8.5rem);
  font-weight:500;letter-spacing:-.02em;margin:.5rem 0 1.5rem;
}
.hero-sub{max-width:34rem;font-size:clamp(1.05rem,1rem + .5vw,1.35rem);margin-bottom:2.25rem}
.hero-actions{display:flex;gap:1rem;flex-wrap:wrap}

.btn{
  font-size:.82rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;
  padding:1rem 2.1rem;border-radius:99px;display:inline-block;
  transition:background .4s,color .4s,border-color .4s,transform .4s var(--ease);
}
.btn:hover{transform:translateY(-2px)}
.btn-solid{background:var(--ink);color:var(--paper)}
.btn-solid:hover{background:#000}
.btn-line{border:1px solid var(--ink)}
.btn-line:hover{background:var(--ink);color:var(--paper)}

.hero-scroll{
  position:absolute;right:var(--pad);bottom:3rem;
  font-size:.68rem;letter-spacing:.3em;text-transform:uppercase;color:var(--grey);
  writing-mode:vertical-rl;display:flex;align-items:center;gap:.75rem;
}
.hero-scroll span{width:1px;height:3rem;background:var(--ink);display:block;animation:drip 2.2s var(--ease) infinite}
@keyframes drip{0%{transform:scaleY(0);transform-origin:top}45%{transform:scaleY(1);transform-origin:top}55%{transform:scaleY(1);transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}

/* ---------- About ---------- */
.about-grid{
  display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);
  gap:clamp(2.5rem,6vw,6rem);align-items:center;max-width:1400px;margin:0 auto;
}
.about-portrait{aspect-ratio:3/4;}
.about-facts{
  margin-top:2.25rem;padding-top:1.75rem;border-top:1px solid var(--line);
  display:flex;flex-wrap:wrap;gap:2.5rem;font-size:.9rem;color:var(--grey);
}
.about-facts strong{
  display:block;font-family:var(--font-display);font-size:1.5rem;font-weight:500;color:var(--ink);
}

/* ---------- Expertise / exhibition walls ---------- */
.expertise-intro{padding-bottom:0;max-width:1400px;margin:0 auto}

.exhibit{
  display:grid;align-items:end;
  gap:clamp(1.75rem,4vw,4rem);
  padding:calc(var(--section-gap)*.6) var(--pad);
  max-width:1500px;margin:0 auto;
}
.exhibit-right{grid-template-columns:minmax(0,8fr) minmax(0,4fr)}
.exhibit-left{grid-template-columns:minmax(0,4fr) minmax(0,8fr)}
.exhibit-left .exhibit-media{order:2}
.exhibit-left .exhibit-copy{order:1;text-align:right}
.exhibit-left .exhibit-copy .reveal{margin-left:auto}

.exhibit-media{aspect-ratio:16/10;width:100%}
.exhibit-wide .exhibit-media{aspect-ratio:21/9}
.exhibit-wide{grid-template-columns:1fr !important}
.exhibit-wide .exhibit-copy{order:2;text-align:left;display:flex;gap:2rem;align-items:baseline;max-width:52rem}
.exhibit-wide .exhibit-media{order:1}

.exhibit-copy p{max-width:26rem}
.exhibit-index{
  font-family:"Permanent Marker", cursive; /* Google brush-marker font, closest to the hand-painted lettering */
  font-size:clamp(3.5rem,3rem + 3vw,6rem);
  color:var(--sand);line-height:1;
  margin-bottom:.75rem;transform:rotate(-4deg);display:inline-block;
}
.exhibit-copy h3{margin-bottom:.9rem}

/* image zoom on hover */
.exhibit-media,.work{transition:none}
.img-slot{transition:background-size 1.2s var(--ease)}
.exhibit-media.has-img,.work.has-img{background-size:cover;background-position:center}
/* gentle, centre-anchored zoom so crops don't shift/reassemble on hover */
.exhibit-media.has-img:hover{background-size:auto 106%;background-position:center}
.work.has-img:hover{background-size:104%;background-position:center}


/* ---------- Tall landing-page exhibit (Fig. 05) ---------- */
.exhibit-tall{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:center}
.exhibit-tall .exhibit-copy{order:2}
.exhibit-media-tall{
  aspect-ratio:auto;height:min(78vh,760px);width:100%;
  background-size:100% auto !important;background-position:top center !important;
  border:1px solid var(--line);
}
.exhibit-media-tall:hover{background-position:bottom center !important;transition:background-position 6s linear}
@media (max-width:860px){
  .exhibit-tall{grid-template-columns:1fr}
  .exhibit-tall .exhibit-copy{order:2;text-align:left}
  .exhibit-media-tall{height:min(90vh,620px)}
}


/* ---------- Square ad-grid exhibit (Fig. 06) — full image, no crop ---------- */
.exhibit-media-square{
  aspect-ratio:16/10;width:100%;      /* match the other walls' frame height */
  background-size:contain !important;   /* show the whole 2x2 grid, letterboxed */
  background-repeat:no-repeat !important;
  background-position:center !important;
}
.exhibit-media-square:hover{background-size:contain !important} /* disable zoom crop */

/* ---------- Portfolio masonry ---------- */
.portfolio{max-width:1500px;margin:0 auto}
.portfolio-head{margin-bottom:3.5rem}
.masonry{
  columns:3;column-gap:1.5rem;
}
.work{
  display:block;width:100%;aspect-ratio:4/5;margin-bottom:1.5rem;
  break-inside:avoid;position:relative;
}
.work[data-tall]{aspect-ratio:3/4.6}
.work-meta{
  position:absolute;left:0;right:0;bottom:0;z-index:2;
  padding:2.5rem 1.25rem 1.1rem;
  background:linear-gradient(to top, rgba(17,17,17,.55), transparent);
  display:flex;flex-direction:column;gap:.1rem;
  opacity:0;transform:translateY(8px);
  transition:opacity .5s var(--ease),transform .5s var(--ease);
}
.work:hover .work-meta,.work:focus-visible .work-meta{opacity:1;transform:none}
.work-cat{font-size:.62rem;letter-spacing:.3em;text-transform:uppercase;color:var(--sand-soft)}
.work-name{font-family:var(--font-display);font-size:1.15rem;color:#fff}

/* ---------- Process timeline ---------- */
.process{max-width:1400px;margin:0 auto}
.timeline{
  margin-top:3rem;
  display:grid;grid-template-columns:repeat(4,1fr);gap:3rem 2.5rem;
  border-top:1px solid var(--line);padding-top:3rem;
}
.timeline h3{font-size:1.35rem;margin:.6rem 0 .4rem}
.timeline p{font-size:.92rem;color:var(--grey);max-width:16rem}
.step-n{
  font-size:.7rem;letter-spacing:.3em;color:var(--sand);font-weight:500;
}

/* ---------- Tools ---------- */
.tools{max-width:1400px;margin:0 auto;border-top:1px solid var(--line)}
.tools-list{
  display:flex;flex-wrap:wrap;gap:1.5rem 3.5rem;margin-top:1rem;
}
.tools-list li{
  font-family:var(--font-display);font-size:clamp(1.2rem,1rem + 1vw,1.8rem);
  color:var(--grey);transition:color .4s;
}
.tools-list li:hover{color:var(--ink)}

/* ---------- Skills cloud ---------- */
.skills{max-width:1400px;margin:0 auto}
.skills-cloud{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2.25rem;max-width:60rem}
.skills-cloud li{
  border:1px solid var(--line);border-radius:99px;
  padding:.6rem 1.35rem;font-size:.85rem;letter-spacing:.05em;
  transition:border-color .4s,background .4s,color .4s;
}
.skills-cloud li:hover{border-color:var(--sand);background:var(--sand);color:var(--paper)}

/* ---------- Contact ---------- */
.contact{
  background:var(--ink);color:var(--paper); /* ink black closing spread */
  padding:calc(var(--section-gap)*1.1) var(--pad);
  text-align:center;
}
.contact .eyebrow{color:var(--sand-soft)}
.contact .eyebrow::before{background:var(--sand-soft)}
.contact-title{
  font-size:clamp(2.6rem,1.8rem + 6vw,7rem);margin:.5rem 0 2.5rem;color:var(--paper);
}
.contact-title em{color:#5A5AFF} /* luminous electric for dark background */
.contact-mail{
  font-family:var(--font-display);font-size:clamp(1.2rem,1rem + 1.4vw,2rem);
  color:var(--paper);
  border-bottom:1px solid #5A5AFF;padding-bottom:.3rem;
  transition:color .4s,border-color .4s;
}
.contact-mail:hover{color:var(--sand-soft)}
.contact-meta{margin-top:2.25rem;font-size:.82rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(247,247,244,.55)}

/* ---------- Footer ---------- */
.site-footer{
  display:flex;justify-content:space-between;align-items:center;gap:1.5rem;flex-wrap:wrap;
  padding:2rem var(--pad);font-size:.8rem;color:var(--grey);
  border-top:1px solid var(--line);
}
.footer-note{letter-spacing:.08em}
.to-top{letter-spacing:.14em;text-transform:uppercase;font-size:.72rem}
.to-top:hover{color:var(--sand)}

/* ---------- Reveal animations ---------- */
.reveal{opacity:0;transform:translateY(28px);transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease)}
.reveal.is-in{opacity:1;transform:none}

.reveal-img{clip-path:inset(0 0 100% 0);transition:clip-path 1.2s var(--ease)}
.reveal-img.is-in{clip-path:inset(0 0 0% 0)}

.line-mask{display:block;overflow:hidden}
.line{display:block;transform:translateY(110%);transition:transform 1.1s var(--ease)}
.is-in .line, .line.is-in{transform:none}
.hero-title .line{transition-delay:.55s}
.hero-title .line-mask:nth-child(2) .line{transition-delay:.7s}

/* stagger helpers */
.timeline .reveal:nth-child(odd).is-in{transition-delay:.08s}
.tools-list .reveal:nth-child(2n).is-in{transition-delay:.08s}
.tools-list .reveal:nth-child(3n).is-in{transition-delay:.16s}

/* ---------- Focus visibility ---------- */
a:focus-visible,button:focus-visible{outline:2px solid var(--sand);outline-offset:3px}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .page-veil{display:none}
  .cursor{display:none}
  .reveal,.reveal-img,.line{opacity:1 !important;transform:none !important;clip-path:none !important;transition:none !important}
  .hero-scroll span{animation:none}
  [data-parallax]{transform:none !important}
}

/* ==========================================================
   RESPONSIVE
   ========================================================== */
@media (max-width:1100px){
  .masonry{columns:2}
  .timeline{grid-template-columns:repeat(2,1fr)}
}

@media (max-width:860px){
  .site-nav{display:none}
  .nav-toggle{display:flex}

  .about-grid{grid-template-columns:1fr;gap:3rem}
  .about-portrait{max-width:26rem}

  .exhibit,.exhibit-right,.exhibit-left{grid-template-columns:1fr}
  .exhibit-left .exhibit-media{order:1}
  .exhibit-left .exhibit-copy{order:2;text-align:left}
  .exhibit-left .exhibit-copy .reveal{margin-left:0}
  .exhibit-wide .exhibit-copy{flex-direction:column;gap:.25rem}
  .exhibit-media{aspect-ratio:4/3}
  .exhibit-wide .exhibit-media{aspect-ratio:16/10}

  .plate{left:.9rem;bottom:.9rem;padding:.55rem .8rem}
  .plate-hero{top:5.5rem;right:.9rem}
  .plate-br{right:.9rem}
  .hero-scroll{display:none}
}

@media (max-width:600px){
  .masonry{columns:1}
  .timeline{grid-template-columns:1fr;gap:2.25rem}
  .work{aspect-ratio:4/5 !important}
  .hero{padding-bottom:3.5rem}
  .site-footer{flex-direction:column;text-align:center}
}
