/* Scoped portfolio stage v8. Do not replace existing site.css. */
.portfolio-stage-v8{--dark:#0d1416;--acid:var(--lime,#c8f21f);border-top:1px solid var(--line);isolation:isolate}
.portfolio-stage-v8 *{box-sizing:border-box}
.portfolio-stage-v8 .portfolio-v8-heading{padding:70px 7% 42px;max-width:1600px;margin:0 auto}
.portfolio-stage-v8 .portfolio-v8-heading h2{font-size:clamp(40px,5.1vw,76px);line-height:1.04;letter-spacing:-.06em;margin:0 0 18px}
.portfolio-stage-v8 .portfolio-v8-heading-desc{font-size:15px;max-width:620px;color:var(--muted);line-height:1.6}
.portfolio-stage-v8 .stage{width:100%;}
.portfolio-stage-v8 .sticky{height:100dvh;min-height:540px}
.portfolio-stage-v8 .archive{max-width:1600px}
.portfolio-stage-v8 .archive h2{line-height:1.08}
.portfolio-stage-v8 .visual-backdrop,.portfolio-stage-v8 .visual-foreground{object-fit:contain}
.portfolio-stage-v8 .caption-slide a{color:inherit}
@media(max-width:1100px),(hover:none) and (pointer:coarse){.portfolio-stage-v8 .stage{height:auto!important;min-height:0!important}.portfolio-stage-v8 .stage>.sticky{display:none!important}.portfolio-stage-v8 .mobile-stories{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.portfolio-stage-v8 .mobile-story{min-width:0}.portfolio-stage-v8 .mobile-story-image{aspect-ratio:16/9!important}}
@media(max-width:700px){.portfolio-stage-v8 .mobile-stories{display:block!important}.portfolio-stage-v8 .portfolio-v8-heading{padding:48px 6% 16px}}
@media(prefers-reduced-motion:reduce){.portfolio-stage-v8 .visual,.portfolio-stage-v8 .caption-slide,.portfolio-stage-v8 .mobile-story{transition:none!important;animation:none!important}}
.portfolio-stage-v8 .tag{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.13em;color:var(--muted)}
.portfolio-stage-v8 .stage{height:400vh;position:relative;background:#e5e5db}
.portfolio-stage-v8 .sticky{position:sticky;top:0;height:100vh;min-height:610px;overflow:hidden;display:grid;grid-template-columns:minmax(290px,36%) minmax(0,64%)}
.portfolio-stage-v8 .stage-copy{padding:clamp(30px,5vw,86px);padding-right:3vw;display:flex;flex-direction:column;justify-content:space-between;background:var(--paper);z-index:2}
.portfolio-stage-v8 .stage-copy h2{font-size:clamp(34px,4vw,67px);line-height:1.04;letter-spacing:-.06em;max-width:450px;margin:16px 0 0;font-weight:600}
.portfolio-stage-v8 .caption-stack{position:relative;min-height:248px}
.portfolio-stage-v8 .caption-slide{position:absolute;inset:auto 0 0;opacity:0;transform:translateY(25px);filter:blur(6px);transition:opacity .42s ease,transform .6s ease,filter .6s ease;pointer-events:none}
.portfolio-stage-v8 .caption-slide.active{opacity:1;filter:none;transform:translateY(0);pointer-events:auto}
.portfolio-stage-v8 .overline{text-transform:uppercase;letter-spacing:.11em;color:#676c5e;font-size:10px;font-weight:750}
.portfolio-stage-v8 .slide-title{font-size:clamp(30px,3vw,52px);letter-spacing:-.055em;line-height:1.04;margin:12px 0}
.portfolio-stage-v8 .caption-slide p{font-size:13px;line-height:1.65;color:#606359;max-width:300px}
.portfolio-stage-v8 .visit-link{display:inline-flex;align-items:center;justify-content:space-between;gap:40px;margin-top:18px;font-size:12px;font-weight:700;border-bottom:1px solid;padding-bottom:8px}
.portfolio-stage-v8 .count-row{display:flex;align-items:center;gap:16px;font-size:12px;font-weight:700}
.portfolio-stage-v8 .count-row .count{font-feature-settings:"tnum";width:52px}
.portfolio-stage-v8 .track{flex:1;height:2px;background:#c9cdc0;overflow:hidden;max-width:220px}
.portfolio-stage-v8 .track div{height:100%;width:0;background:#111;transition:width .1s linear}
.portfolio-stage-v8 .stage-image{position:relative;isolation:isolate;background:#0c1213}
.portfolio-stage-v8 .visual{position:absolute;inset:0;opacity:0;transform:scale(1.075);filter:blur(12px);will-change:opacity,transform,filter}
.portfolio-stage-v8 .visual:first-child{opacity:1;transform:scale(1);filter:blur(0)}
.portfolio-stage-v8 .visual img{display:block;height:100%;width:100%;object-fit:cover;object-position:center}
.portfolio-stage-v8 .visual-shade{position:absolute;inset:0;background:linear-gradient(180deg,transparent 60%,#0005)}
.portfolio-stage-v8 .image-stamp{position:absolute;left:30px;top:30px;border-radius:100px;background:#f5f3eced;color:#222;font-size:10px;text-transform:uppercase;letter-spacing:.13em;padding:12px 17px;font-weight:750;z-index:3}
.portfolio-stage-v8 .big-num{position:absolute;bottom:-.1em;right:.04em;font-weight:800;line-height:1;letter-spacing:-.09em;font-size:clamp(120px,26vw,410px);color:#ffffff20;pointer-events:none;z-index:3}
.portfolio-stage-v8 .phase{position:absolute;left:30px;bottom:28px;color:#fff;font-size:10px;text-transform:uppercase;letter-spacing:.13em;font-weight:700;z-index:3}
.portfolio-stage-v8 .archive{max-width:1450px;padding:90px clamp(22px,7vw,115px) 120px;margin:0 auto}
.portfolio-stage-v8 .archive-top{display:flex;justify-content:space-between;align-items:center;gap:26px;margin-bottom:24px}
.portfolio-stage-v8 .archive h2{font-size:clamp(38px,5vw,72px);letter-spacing:-.06em;margin:10px 0}
.portfolio-stage-v8 .toggle{background:var(--dark);color:white;border:0;padding:16px 22px;border-radius:3px;font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap}
.portfolio-stage-v8 .toggle span{font-size:19px;vertical-align:-2px;margin-left:10px}
.portfolio-stage-v8 .archive-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px 20px;margin-top:25px}
.portfolio-stage-v8 .archive-grid[hidden]{display:none}
.portfolio-stage-v8 .archive-image{aspect-ratio:1.55;background:#ddd;overflow:hidden}
.portfolio-stage-v8 .archive-image img{width:100%;height:100%;object-fit:cover;transition:transform .55s ease}
.portfolio-stage-v8 .archive-card:hover img{transform:scale(1.055)}
.portfolio-stage-v8 .archive-card-bottom{display:flex;justify-content:space-between;gap:12px;margin:14px 0 4px;font-weight:650;font-size:14px}
.portfolio-stage-v8 .archive-card small{color:var(--muted);font-size:11px}
.portfolio-stage-v8 .mini-tag{background:#edf0e5;padding:8px 12px;border-radius:20px;color:#465044;font-size:11px;font-weight:700}
@media (max-width:1100px){.portfolio-stage-v8 .stage{height:360vh}
.portfolio-stage-v8 .sticky{min-height:0;grid-template-columns:1fr;grid-template-rows:44vh minmax(0,1fr)}
.portfolio-stage-v8 .stage-copy{grid-row:2;grid-column:1;padding:24px 7vw 28px}
.portfolio-stage-v8 .stage-copy h2{font-size:30px;margin:6px 0}
.portfolio-stage-v8 .stage-image{grid-row:1;grid-column:1}
.portfolio-stage-v8 .image-stamp{top:16px;left:18px}
.portfolio-stage-v8 .big-num{font-size:180px}
.portfolio-stage-v8 .phase{bottom:17px;left:18px}
.portfolio-stage-v8 .caption-stack{min-height:140px}
.portfolio-stage-v8 .caption-slide{bottom:0}
.portfolio-stage-v8 .slide-title{font-size:30px;margin:6px 0}
.portfolio-stage-v8 .caption-slide p{font-size:12px;margin:6px 0}
.portfolio-stage-v8 .visit-link{margin-top:7px}
.portfolio-stage-v8 .archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.portfolio-stage-v8 .archive{padding-top:70px}
.portfolio-stage-v8 .archive-top{align-items:flex-start;flex-direction:column}}
@media (max-width:500px){.portfolio-stage-v8 .stage-copy{padding-top:20px}
.portfolio-stage-v8 .stage-copy h2{font-size:26px}
.portfolio-stage-v8 .slide-title{font-size:27px}
.portfolio-stage-v8 .caption-stack{min-height:160px}
.portfolio-stage-v8 .archive-grid{grid-template-columns:1fr}
.portfolio-stage-v8 .archive-top{gap:20px}}
@media (prefers-reduced-motion:reduce){.portfolio-stage-v8 .visual, .portfolio-stage-v8 .caption-slide{filter:none!important;transform:none!important}}
.portfolio-stage-v8 .mobile-stories{display:none}
@media (max-width:1100px){.portfolio-stage-v8 .stage{height:auto!important;min-height:0!important;background:var(--paper)}
.portfolio-stage-v8 .stage>.sticky{display:none!important}
.portfolio-stage-v8 .mobile-stories{display:block;padding:22px clamp(18px,5vw,42px) 36px}
.portfolio-stage-v8 .mobile-story{margin:0 0 36px;background:var(--paper);opacity:1;transform:none}
.portfolio-stage-v8 .mobile-story-image{position:relative;overflow:hidden;aspect-ratio:4/3;background:#e4e5dc;border-radius:5px}
.portfolio-stage-v8 .mobile-story-image img{height:100%;width:100%;object-fit:cover;display:block}
.portfolio-stage-v8 .mobile-story-number{position:absolute;top:15px;left:15px;background:#f5f3eced;padding:10px 14px;border-radius:50px;font-size:11px;font-weight:750;letter-spacing:.06em}
.portfolio-stage-v8 .mobile-story-info{padding:20px 4px 8px}
.portfolio-stage-v8 .mobile-story-info .slide-title{font-size:clamp(28px,7vw,42px);font-weight:650;line-height:1.05;letter-spacing:-.05em;margin:10px 0}
.portfolio-stage-v8 .mobile-story-info p{color:#606359;font-size:14px;line-height:1.55;max-width:34em}
.portfolio-stage-v8 .mobile-story-info .visit-link{font-size:13px;margin-top:10px}}
@media (max-width:1100px) and (prefers-reduced-motion:no-preference){.portfolio-stage-v8 .mobile-story{transition:opacity .6s ease,transform .7s cubic-bezier(.2,.65,.3,1)}
.portfolio-stage-v8 .mobile-story.is-pending{opacity:.25;transform:translateY(22px)}}
@media  (min-width:801px) and (max-width:1100px){.portfolio-stage-v8 .mobile-stories{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 20px;padding:42px clamp(28px,5vw,66px) 48px}
.portfolio-stage-v8 .mobile-story{min-width:0;margin:0}
.portfolio-stage-v8 .mobile-story-image{aspect-ratio:4/3}
.portfolio-stage-v8 .mobile-story-info{padding-top:16px}
.portfolio-stage-v8 .mobile-story-info .slide-title{font-size:clamp(28px,3.5vw,39px)}
.portfolio-stage-v8 .stage-copy{display:none}}
@media  (min-width:1101px) {.portfolio-stage-v8 .stage-image{background:#e1e1d8;}
.portfolio-stage-v8 .stage-image .visual{display:flex;align-items:center;justify-content:center;padding:clamp(30px,4.4vw,80px) clamp(30px,4.8vw,82px);isolation:isolate;}
.portfolio-stage-v8 .stage-image .visual-backdrop{position:absolute;inset:-35px;width:calc(100% + 70px);height:calc(100% + 70px);object-fit:cover;filter:blur(45px) saturate(.75) brightness(.8);opacity:.48;z-index:-1;pointer-events:none;}
.portfolio-stage-v8 .stage-image .visual-foreground{position:relative;display:block;width:100%;height:100%;max-height:min(72vh,850px);object-fit:contain;object-position:center;border:1px solid rgba(255,255,255,.22);box-shadow:0 22px 65px rgba(0,0,0,.22);z-index:1;}
.portfolio-stage-v8 .stage-image .visual-shade{background:linear-gradient(180deg,rgba(0,0,0,.12),transparent 18%,transparent 76%,rgba(0,0,0,.14));pointer-events:none;z-index:2;}
.portfolio-stage-v8 .stage-image .image-stamp{top:20px;left:22px;}
.portfolio-stage-v8 .stage-image .phase{bottom:17px;left:24px;text-shadow:0 1px 7px #0008;}
.portfolio-stage-v8 .stage-image .big-num{z-index:2;font-size:clamp(96px,18vw,240px);}}
@media  (min-width:1101px){.portfolio-stage-v8 .stage-image .visual{padding:clamp(16px,2.8vw,54px)!important}
.portfolio-stage-v8 .stage-image .visual-foreground{width:100%;height:auto;max-height:82vh;aspect-ratio:16/9;object-fit:contain!important;border:1px solid #ffffff50;border-radius:5px;box-shadow:0 30px 100px #0005}
.portfolio-stage-v8 .stage-image .visual-backdrop{filter:blur(58px) saturate(.8) brightness(.9);opacity:.38}}
@media  (max-width:1100px){.portfolio-stage-v8 .mobile-story-image{aspect-ratio:16/9!important}
.portfolio-stage-v8 .mobile-story-image img{object-fit:contain!important;background:#e9e5dd}}
@media  (hover:none) and (pointer:coarse) and (min-width:1101px){.portfolio-stage-v8 .stage{height:auto!important;min-height:0!important;background:var(--paper)}
.portfolio-stage-v8 .stage>.sticky{display:none!important}
.portfolio-stage-v8 .mobile-stories{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 20px;padding:42px clamp(28px,5vw,66px) 48px}
.portfolio-stage-v8 .mobile-story{min-width:0;margin:0;background:var(--paper);opacity:1;transform:none;transition:opacity .6s ease,transform .7s cubic-bezier(.2,.65,.3,1)}
.portfolio-stage-v8 .mobile-story.is-pending{opacity:.25;transform:translateY(22px)}
.portfolio-stage-v8 .mobile-story-image{position:relative;overflow:hidden;aspect-ratio:16/9;background:#e9e5dd;border-radius:5px}
.portfolio-stage-v8 .mobile-story-image img{height:100%;width:100%;object-fit:contain;display:block}
.portfolio-stage-v8 .mobile-story-number{position:absolute;top:15px;left:15px;background:#f5f3eced;padding:10px 14px;border-radius:50px;font-size:11px;font-weight:750;letter-spacing:.06em}
.portfolio-stage-v8 .mobile-story-info{padding:16px 4px 8px}
.portfolio-stage-v8 .mobile-story-info .slide-title{font-size:clamp(28px,3.5vw,39px);font-weight:650;line-height:1.05;letter-spacing:-.05em;margin:10px 0}
.portfolio-stage-v8 .mobile-story-info p{color:#606359;font-size:14px;line-height:1.55;max-width:34em}
.portfolio-stage-v8 .mobile-story-info .visit-link{font-size:13px;margin-top:10px}}
@media  (hover:none) and (pointer:coarse) and (min-width:1101px) and (prefers-reduced-motion:reduce){.portfolio-stage-v8 .mobile-story{transition:none!important}}
.portfolio-stage-v8 .archive-disclosure{margin-top:0;position:relative;z-index:1}
.portfolio-stage-v8 .archive-disclosure summary.toggle{display:inline-flex;align-items:center;justify-content:center;gap:16px;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:manipulation;min-height:48px;white-space:normal;list-style:none;-webkit-tap-highlight-color:transparent}
.portfolio-stage-v8 .archive-disclosure summary.toggle::-webkit-details-marker{display:none}
.portfolio-stage-v8 .archive-disclosure summary.toggle::marker{content:""}
.portfolio-stage-v8 .archive-disclosure .open-label{display:none}
.portfolio-stage-v8 .archive-disclosure .toggle-mark::before{content:"+";font-size:19px;line-height:1}
.portfolio-stage-v8 .archive-disclosure[open] .closed-label{display:none}
.portfolio-stage-v8 .archive-disclosure[open] .open-label{display:inline}
.portfolio-stage-v8 .archive-disclosure[open] .toggle-mark::before{content:"−"}
.portfolio-stage-v8 .archive-disclosure .archive-grid{margin-top:25px}
@media (max-width:1100px){.portfolio-stage-v8 .archive-disclosure summary.toggle{width:100%;padding:19px 22px;justify-content:space-between;font-size:14px;min-height:58px}}
/* v8.2: consistent monochrome project arrows on Safari/iOS and desktop */
.portfolio-stage-v8 .project-arrow-icon {
  display: inline-block;
  flex: none;
  vertical-align: middle;
  color: currentColor;
  transition: transform 180ms ease;
}
@media (hover: hover) and (pointer: fine) {
  .portfolio-stage-v8 a:hover .project-arrow-icon,
  .portfolio-stage-v8 a:focus-visible .project-arrow-icon {
    transform: translate(2px, -2px);
  }
}
@media (prefers-reduced-motion: reduce) {
  .portfolio-stage-v8 .project-arrow-icon { transition: none; }
}

/* v8.5: keep featured thumbnail counters legible in dark theme. */
.portfolio-stage-v8 .mobile-story-number {
  color: #20231f;
  background-color: rgba(245, 243, 236, 0.94);
}

/* v8.6: featured stage respects the site's light/dark theme.
   The previous scoped --paper/--ink/--muted/--line declarations
   recursively referred to themselves and invalidated theme-dependent colors. */
.portfolio-stage-v8 .stage { background: var(--paper); }
.portfolio-stage-v8 .stage-copy { background: var(--paper); color: var(--ink); }
.portfolio-stage-v8 .stage-copy h2,
.portfolio-stage-v8 .stage-copy .slide-title { color: var(--ink); }
.portfolio-stage-v8 .stage-copy .overline,
.portfolio-stage-v8 .stage-copy .caption-slide p { color: var(--muted); }
:root[data-mode="dark"] .portfolio-stage-v8 .track { background:#555e53; }
:root[data-mode="dark"] .portfolio-stage-v8 .track div { background:#dce6d7; }
:root[data-mode="dark"] .portfolio-stage-v8 .archive .mini-tag { color:#20231f; }

/* v8.7: section headline appears once above the stage; project caption occupies the left stage column. */
@media (min-width:1101px) { .portfolio-stage-v8 .stage-copy { justify-content:flex-end; gap:clamp(18px,3vh,36px); } }
