/* ===== Preksha Sharma — portfolio ===== */

:root{
  --bg: #f4ecdd;
  --bg-alt: #ede2cd;
  --ink: #1c1812;
  --ink-soft: #55493a;
  --paper-line: rgba(28,24,18,0.13);
  --rust: #b8632f;
  --rust-deep: #8f491f;
  --olive: #6a6f4c;
  --serif: "Fraunces", "Georgia", serif;
  --script: "Permanent Marker", "Caveat", cursive;
  --brush: "Caveat", cursive;
  --mono: "Space Mono", monospace;
  --sans: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
  --max: 1180px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}

body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.6;
  overflow-x:hidden;
  cursor:none;
}

@media (max-width: 900px){
  body{ cursor:auto; }
  .cursor-dot, .cursor-ring{ display:none; }
}

a{ color:inherit; }
img{ max-width:100%; display:block; }

/* grain overlay */
.grain{
  position:fixed; inset:0; pointer-events:none; z-index:9998;
  opacity:0.04; mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* custom cursor */
.cursor-dot, .cursor-ring{
  position:fixed; top:0; left:0; pointer-events:none; z-index:9999;
  border-radius:50%;
  transform:translate(-50%,-50%);
}
.cursor-dot{ width:6px; height:6px; background:var(--rust); }
.cursor-ring{
  width:34px; height:34px; border:1.5px solid var(--ink);
  opacity:0.5; transition:width .2s, height .2s, opacity .2s, border-color .2s;
}
.cursor-ring.active{ width:56px; height:56px; border-color:var(--rust); opacity:0.8; }

/* reveal animation */
[data-reveal]{
  opacity:0; transform:translateY(24px);
  transition:opacity .8s cubic-bezier(.2,.7,.2,1), transform .8s cubic-bezier(.2,.7,.2,1);
}
[data-reveal].in-view{ opacity:1; transform:translateY(0); }

/* "coming soon" toast for inert icons */
.soon-toast{
  position:fixed; z-index:9996; left:0; top:0;
  transform:translate(-50%,-140%);
  background:var(--ink); color:var(--bg);
  font-family:var(--mono); font-size:12.5px; letter-spacing:0.01em;
  padding:9px 16px; border-radius:100px; white-space:nowrap;
  opacity:0; pointer-events:none;
  transition:opacity .25s ease, transform .25s ease;
}
.soon-toast.show{ opacity:1; transform:translate(-50%,-160%); }

/* ---------- HERO / LANDING ---------- */
.hero{
  position:relative; min-height:100vh;
  display:flex; flex-direction:column; justify-content:flex-end;
  padding:96px clamp(20px,5vw,64px) 76px;
  overflow:hidden;
}

.hero-media{ position:absolute; inset:0; z-index:0; overflow:hidden; }
.hero-media-inner{
  position:absolute; inset:0;
  transform:scale(1.06); transition:transform .3s ease-out; will-change:transform;
}
.hero-media-inner img{
  position:absolute; inset:0;
  width:100%; height:100%; object-fit:cover; object-position:58% 28%;
}
.hero-media-inner canvas{
  position:absolute; inset:0; width:100%; height:100%; display:block;
}
.hero-scrim{
  position:absolute; inset:0;
  background:linear-gradient(100deg, rgba(244,236,221,0.32) 0%, rgba(244,236,221,0.24) 34%, rgba(244,236,221,0.1) 62%, rgba(244,236,221,0) 100%),
             linear-gradient(0deg, rgba(244,236,221,0.24) 0%, rgba(244,236,221,0) 30%);
}

.hero-inner{
  position:relative; z-index:2; max-width:var(--max); margin:0 auto; width:100%;
}
.hero-copy{ max-width:940px; margin-bottom:56px; }
.hero-menu{ display:flex; gap:clamp(24px,4vw,56px); flex-wrap:wrap; }

.hero-title{
  font-family:var(--script); font-weight:400; font-style:normal;
  font-size:clamp(38px, 5.5vw, 65px); line-height:1.4; letter-spacing:0.005em;
  margin:0; max-width:920px;
  background:linear-gradient(135deg, #050505 0%, #14213d 45%, #1d4ed8 100%);
  -webkit-background-clip:text; background-clip:text; color:transparent;
}

.hero-menu-col{ display:flex; flex-direction:column; gap:20px; flex:1; min-width:220px; }
.hero-menu-item{
  display:flex; align-items:center; gap:14px; text-decoration:none; color:var(--ink);
  padding-bottom:14px;
  transition:transform .25s ease, padding-left .25s ease, opacity .25s ease;
}
.hero-menu-item:hover{ padding-left:6px; }
.hmi-icon{
  display:block; height:32px; width:auto; max-width:52px;
  object-fit:contain; flex:0 0 auto;
  transition:transform .25s ease;
}
.hero-menu-item:hover .hmi-icon{ transform:scale(1.1); }
.hmi-label{
  font-family:var(--serif); font-weight:500; font-size:clamp(15px,1.6vw,19px); line-height:1.25;
}
.hero-menu-item.is-inert{ opacity:0.5; cursor:pointer; }
.hero-menu-item.is-inert:hover{ padding-left:0; opacity:0.75; }

@media (max-width:980px){
  .hero{ padding-top:72px; justify-content:flex-end; }
  .hero-media img{ object-position:70% 20%; }
}
@media (max-width:560px){
  .hero-menu{ flex-direction:column; gap:22px; }
}

/* ---------- text disintegration (hero title) ---------- */
.split-text{ display:inline-block; }
.word{ display:inline-block; white-space:nowrap; }
.letter{ display:inline-block; will-change:transform, opacity; transition:transform .1s linear, opacity .1s linear; }

/* mouse-trail "wipe the fog off glass" reveal effect lives entirely on the
   #heroObscuredCanvas element — it is painted and rewritten each frame by script.js. */

/* ---------- PANEL (work journey) ---------- */
.panel{ padding:100px clamp(20px,5vw,64px) 120px; max-width:var(--max); margin:0 auto; }
.panel-head{ margin-bottom:40px; }
.panel-num{ font-family:var(--mono); color:var(--rust); font-size:13px; letter-spacing:0.1em; }
.panel-num.light{ color:#e8b98a; }
.panel-head h2{
  font-family:var(--serif); font-weight:700; font-size:clamp(36px,5.2vw,58px);
  margin:10px 0 0; line-height:1.05;
}

/* work journey: sticky portrait + scrolling content */
.journey-layout{ display:grid; grid-template-columns:0.62fr 1.38fr; gap:56px; align-items:start; }
.journey-sticky-img{
  position:sticky; top:110px; margin:0; border-radius:20px; overflow:hidden;
  box-shadow:0 30px 60px rgba(28,24,18,0.18);
  aspect-ratio:1000/1173;
}
.journey-sticky-img img{ width:100%; height:100%; object-fit:cover; object-position:50% 22%; }

@media (max-width:980px){
  .journey-layout{ grid-template-columns:1fr; }
  .journey-sticky-img{ position:static; max-width:280px; margin:0 0 40px; }
}

.journey-intro{ max-width:680px; margin:56px 0 48px; }
.journey-intro p{ font-size:17.5px; color:var(--ink-soft); margin:0 0 18px; }
.journey-intro p:first-child{ font-family:var(--serif); font-size:21px; color:var(--ink); }

/* timeline */
.timeline{ position:relative; padding-left:112px; }
.timeline-line{
  position:absolute; left:66px; top:6px; bottom:6px; width:1px;
  background:var(--paper-line);
}
.tl-row{ position:relative; margin-bottom:44px; }
.tl-row:last-child{ margin-bottom:0; }
.tl-year{
  position:absolute; left:-102px; top:2px; width:42px; text-align:right;
  font-family:var(--mono); font-size:13px; color:var(--rust-deep); font-weight:700;
}
.tl-dot{
  position:absolute; left:-51px; top:8px; width:12px; height:12px; border-radius:50%;
  background:var(--bg); border:2px solid var(--rust); z-index:1;
}
.tl-row.current .tl-dot{ background:var(--rust); }

.tl-card{
  background:var(--bg-alt); border:1px solid var(--paper-line); border-radius:16px; padding:28px 32px;
  transition:box-shadow .3s ease, border-color .3s ease;
}
.tl-card:hover{ box-shadow:0 16px 34px rgba(28,24,18,0.08); border-color:rgba(184,99,47,0.3); }
.tl-card.has-media{ display:grid; grid-template-columns:132px 1fr; gap:24px; padding:24px; align-items:start; }
.tl-media{
  width:132px; height:132px; border-radius:12px; overflow:hidden; flex:0 0 auto;
  display:flex; align-items:center; justify-content:center;
}
.tl-media img{ width:100%; height:100%; object-fit:contain; object-position:center; }
.tl-media-tile{
  display:flex; align-items:center; justify-content:center;
  font-family:var(--serif); font-weight:700; font-size:32px; color:rgba(244,236,221,0.85);
  background:linear-gradient(135deg, var(--tile-a, #b8632f), var(--tile-b, #8f491f));
}
.tl-tag{ font-family:var(--mono); font-size:12px; color:var(--ink-soft); }
.tl-card h3{ font-family:var(--serif); font-weight:700; font-size:26px; margin:8px 0 3px; line-height:1.15; }
.tl-card h3 .via{ font-family:var(--sans); font-weight:400; font-size:14px; color:var(--ink-soft); }
.tl-role{ font-size:13.5px; color:var(--rust-deep); font-weight:600; margin:0 0 12px; }
.tl-card p:not(.tl-role):not(.tl-tag){ font-size:15.5px; color:var(--ink-soft); margin:0; }
.tl-card a{ color:var(--rust-deep); text-decoration-color:rgba(143,73,31,0.4); }

@media (max-width:640px){
  .tl-card.has-media{ grid-template-columns:1fr; }
  .tl-media{ width:100%; height:150px; }
}

.tl-card-pair{ display:grid; grid-template-columns:1fr 1fr; gap:22px; }
@media (max-width:800px){ .tl-card-pair{ grid-template-columns:1fr; } }

.timeline-note{
  font-family:var(--brush); font-size:22px; color:var(--rust-deep);
  margin:40px 0 0 112px; max-width:520px;
}

@media (max-width:700px){
  .timeline{ padding-left:78px; }
  .timeline-line{ left:46px; }
  .tl-year{ left:-70px; width:26px; font-size:10.5px; top:2px; }
  .tl-dot{ left:-33px; width:10px; height:10px; top:8px; }
  .tl-card{ padding:22px; }
  .timeline-note{ margin-left:78px; }
}

.journey-grid{ display:grid; grid-template-columns:repeat(2, 1fr); gap:24px; margin-top:64px; }
.journey-card{ background:var(--bg); border:1px dashed var(--paper-line); border-radius:16px; padding:28px; }
.journey-card h3{ font-family:var(--serif); font-size:19px; margin:0 0 10px; line-height:1.3; }
.jc-tag{ display:block; font-family:var(--mono); font-size:11px; color:var(--rust-deep); margin-top:4px; font-weight:400;}
.journey-card p{ font-size:14.5px; color:var(--ink-soft); margin:0; }

.journey-card.has-media{ padding:0; overflow:hidden; border-style:solid; }
.jc-media{ aspect-ratio:16/9; overflow:hidden; display:flex; align-items:center; justify-content:center; }
.jc-media img{ width:100%; height:100%; object-fit:contain; object-position:center; }
.jc-body{ padding:22px 28px 28px; }
.jc-body h3{ font-family:var(--serif); font-size:19px; margin:0 0 10px; line-height:1.3; }

@media (max-width:820px){ .journey-grid{ grid-template-columns:1fr; } }

/* ---------- AWARDS PAGE ---------- */
.back-link{
  position:fixed; top:24px; left:clamp(20px,5vw,64px); z-index:400;
  font-family:var(--mono); font-size:13px; text-decoration:none; color:var(--ink);
  background:var(--bg); border:1px solid var(--paper-line); padding:9px 16px; border-radius:100px;
  transition:border-color .25s ease, background .25s ease;
}
.back-link:hover{ border-color:var(--rust); background:var(--bg-alt); }

.awards-hero{ position:relative; min-height:78vh; display:flex; align-items:flex-end; overflow:hidden; }
.awards-hero-bg{ position:absolute; inset:0; z-index:0; }
.awards-hero-bg img{ width:100%; height:100%; object-fit:cover; object-position:50% 20%; }
.awards-scrim{
  position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(28,24,18,0.15) 0%, rgba(28,24,18,0.35) 55%, rgba(28,24,18,0.82) 100%);
}
.awards-hero-inner{ position:relative; z-index:2; padding:0 clamp(20px,5vw,64px) 64px; max-width:var(--max); margin:0 auto; width:100%; }
.awards-hero-inner h1{
  font-family:var(--serif); font-weight:700; color:#fbf6ea; font-size:clamp(42px,7vw,86px);
  margin:14px 0 22px; line-height:1.02;
}
.awards-quote{
  font-family:var(--serif); font-style:italic; color:#f0dcc0; font-size:clamp(18px,2vw,23px);
  max-width:640px; line-height:1.5; margin:0;
}

.awards-body-section{ max-width:var(--max); margin:0 auto; padding:90px clamp(20px,5vw,64px) 120px; }

.award-list{ list-style:none; margin:0 0 32px; padding:0; display:flex; flex-direction:column; gap:28px; max-width:760px; }
.award-list li{ display:flex; gap:20px; }
.award-year{ font-family:var(--mono); font-size:13px; color:var(--rust); flex:0 0 46px; padding-top:4px; }
.award-list h4{ font-family:var(--serif); font-weight:700; font-size:20px; margin:0 0 7px; }
.award-list p{ font-size:15.5px; color:var(--ink-soft); margin:0; }

.award-links{ display:flex; gap:24px; flex-wrap:wrap; margin:0 0 72px; }
.award-links a{
  font-family:var(--mono); font-size:12.5px; text-decoration:none; color:var(--rust-deep);
  border-bottom:1px solid var(--rust-deep); padding-bottom:2px;
}

.award-gallery{
  display:grid; grid-template-columns:repeat(6, 1fr); grid-auto-rows:120px; gap:16px;
  margin-bottom:80px;
}
.ag-item{ margin:0; border-radius:14px; overflow:hidden; border:1px solid var(--paper-line); position:relative; }
.ag-item img{ width:100%; height:100%; object-fit:cover; transition:transform .5s ease; }
.ag-item:hover img{ transform:scale(1.06); }
.ag-item figcaption{
  position:absolute; left:0; right:0; bottom:0; padding:10px 12px;
  font-family:var(--mono); font-size:10.5px; color:#fbf6ea;
  background:linear-gradient(0deg, rgba(28,24,18,0.75), rgba(28,24,18,0));
}
.ag-1{ grid-column:1/4; grid-row:1/4; }
.ag-2{ grid-column:4/7; grid-row:1/3; }
.ag-3{ grid-column:4/5; grid-row:3/4; }
.ag-4{ grid-column:5/7; grid-row:3/4; }
.ag-5{ grid-column:1/4; grid-row:4/6; }

@media (max-width:860px){
  .award-gallery{ grid-template-columns:repeat(2,1fr); grid-auto-rows:180px; }
  .ag-1,.ag-2,.ag-3,.ag-4,.ag-5{ grid-column:auto; grid-row:auto; }
}

.courses{ padding-top:36px; border-top:1px solid var(--paper-line); }
.courses h4{ font-family:var(--serif); font-size:18px; margin:0 0 16px; }
.courses ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
.courses li{ font-size:14.5px; color:var(--ink-soft); }
.courses li span{ font-family:var(--mono); color:var(--rust-deep); margin-right:10px; }

/* ---------- footer ---------- */
.site-footer{
  display:flex; flex-direction:column; gap:8px;
  padding:26px clamp(20px,5vw,64px); font-size:12.5px; color:var(--ink-soft);
  font-family:var(--mono); border-top:1px solid var(--paper-line);
}
.site-footer a{ text-decoration:none; color:var(--rust-deep); }
.footer-row{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px; }
.footer-links{ display:flex; gap:20px; }
.footer-credit{ font-size:10.5px; font-style:italic; opacity:0.6; }

/* social row under the hero menu */
.hero-social{ display:flex; gap:16px; margin-top:28px; }
.hero-social a{
  display:inline-flex; align-items:center; justify-content:center;
  width:36px; height:36px; border-radius:50%; border:1px solid var(--paper-line);
  color:var(--ink-soft); transition:color .2s ease, border-color .2s ease, transform .2s ease;
}
.hero-social a:hover{ color:var(--rust-deep); border-color:var(--rust); transform:translateY(-2px); }
.hero-social svg{ width:18px; height:18px; }
