/* ============================================================
   BARGIEL.AI — /profile page
   Built 1:1 on bargiel.AI Brand System v2 (canonical/design/tokens.json).
   Light + dark, automatic. One indigo accent; cyan as a signature dot only.
   ============================================================ */

/* Tokens, reset, a11y utilities, .wrap, .eyebrow, headings, .lead, .num,
   buttons, footer meta-row, reveal and dark-mode tokens now live in
   brand-base.css (shared with the home page). This file holds only the
   /profile-specific rules. */

/* .sec-index core is in brand-base.css; /profile uses a slightly larger gap below. */
.sec-index{margin-bottom:clamp(22px,2.8vw,34px)}

/* headings, .h1/.h2/.h3, .lead, .num and the button family are in brand-base.css */


/* ============================================================
   HEADER — base .site-head / .brand / .head-row / .head-cta live in
   brand-base.css. /profile adds only the wave-to-top (transparent over the
   hero) variant + the ghost CTA's on-dark colour.
   ============================================================ */
/* wave-to-top: transparent header runs over the hero wave, glass on scroll */
body[data-wavetop="full"] .site-head{background:transparent;border-bottom-color:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
body[data-wavetop="full"] .site-head.scrolled{background:rgba(244,245,251,0.82);backdrop-filter:saturate(140%) blur(14px);-webkit-backdrop-filter:saturate(140%) blur(14px)}
/* over a dark section: dark plate + white wordmark */
.site-head.over-dark,
body[data-wavetop="full"] .site-head.scrolled.over-dark{background:rgba(7,10,20,0.86);border-bottom-color:rgba(255,255,255,0.08);backdrop-filter:saturate(140%) blur(14px);-webkit-backdrop-filter:saturate(140%) blur(14px)}
.site-head.over-dark .head-cta .btn-ghost{color:var(--tx-dk);border-color:var(--line-dk)}
body[data-wavetop="full"] .hero{margin-top:calc(-1 * (var(--head-h) + env(safe-area-inset-top)));padding-top:calc(var(--head-h) + env(safe-area-inset-top) + clamp(18px,3vw,40px))}
@media(min-width:720px){
  body[data-wavetop="full"] .hero{margin-top:calc(-1 * (var(--head-h-lg) + env(safe-area-inset-top)));padding-top:calc(var(--head-h-lg) + env(safe-area-inset-top) + clamp(18px,3vw,48px))}
}

/* ============================================================
   HERO
   ============================================================ */
.hero{position:relative;padding-top:clamp(34px,6vw,72px);padding-bottom:clamp(20px,3vw,40px);overflow:hidden}
.hero-wave{
  position:absolute;top:-22%;right:-14%;width:min(78vw,760px);aspect-ratio:1;
  opacity:.95;pointer-events:none;z-index:0;
}
@media(prefers-reduced-motion:no-preference){
  .hero-wave{animation:drift 22s linear infinite}
}
.hero-wave{position:absolute;inset:0;width:auto;height:auto;aspect-ratio:auto;background:none;opacity:1}
@keyframes drift{
  0%{transform:translateX(0)}
  50%{transform:translateX(-24px)}
  100%{transform:translateX(0)}
}

.hero-inner{position:relative;z-index:1;max-width:760px}
.hero-text{min-width:0}
.hero-eyebrow{margin-bottom:20px}
.hero .h1{margin:0;display:flex;align-items:baseline;gap:0.18em;flex-wrap:wrap}
.hero-title-line{
  font-family:var(--fm);font-size:clamp(13px,1.5vw,15px);font-weight:500;letter-spacing:0.04em;
  color:var(--tx-soft);margin-top:22px;line-height:1.5;text-wrap:balance;
}
.hero-quote{margin-top:22px}
.hero-meta{
  display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-sm) 22px;margin-top:26px;
  font-family:var(--fm);font-size:12.5px;letter-spacing:0.02em;color:var(--mu);
}
.hero-meta a{display:inline-flex;align-items:center;gap:var(--gap-xs);min-height:24px;transition:color .18s ease}
.hero-meta a:hover{color:var(--accent)}
.hero-meta .loc{display:inline-flex;align-items:center;gap:var(--gap-xs)}
.hero-meta .ic{width:14px;height:14px;flex-shrink:0;color:var(--mu);opacity:.85}
.hero-ctas{margin-top:34px}

/* ---- hero portrait figure ---- */
.hero-figure{position:relative;margin:44px 0 0;display:flex;flex-direction:column;align-items:flex-start;min-width:0}
.hero-figure-wave{
  position:absolute;z-index:0;inset:-26px -26px auto auto;width:78%;aspect-ratio:1;
  top:-26px;right:-22px;border-radius:20px;
  background:var(--grad);opacity:.16;filter:blur(2px);
  pointer-events:none;
}
/* mobile: the portrait stacks full-width, so the gradient square reads as a
   stray block behind it — hide it until the 2-column desktop hero kicks in */
@media(max-width:879px){.hero-figure-wave{display:none}}
.portrait{
  position:relative;z-index:1;width:100%;max-width:420px;aspect-ratio:1;border-radius:18px;overflow:hidden;
  border:1px solid var(--line-2);background:var(--paper3);
  box-shadow:0 36px 80px -44px rgba(11,17,51,0.55);
}
.portrait img{width:100%;height:100%;object-fit:cover;object-position:center top}
.portrait-cap{margin-top:16px;max-width:420px}
.portrait-cap .pc-line{
  font-family:var(--fm);font-size:11.5px;letter-spacing:0.04em;color:var(--mu);
  display:inline-flex;align-items:center;gap:var(--gap-xs);line-height:1.4;
}
.portrait-cap .pc-dot{width:7px;height:7px;border-radius:50%;background:#22C55E;flex-shrink:0;box-shadow:0 0 0 3px rgba(34,197,94,0.15)}
@media(min-width:880px){
  .hero{padding-bottom:clamp(32px,4vw,56px)}
  /* .hero-lower is display:contents on desktop, so its children (meta, figure) are direct grid
     items. The figure is pinned to column 2 spanning all rows; intro/meta/ctas auto-flow into
     column 1. row-gap:0 keeps the original vertical rhythm (the existing margins do the spacing),
     so the desktop 2-col hero is visually unchanged by the mobile restructure. */
  .hero-inner{max-width:var(--maxw);display:grid;grid-template-columns:1fr 0.78fr;
    grid-template-areas:"intro figure" "meta figure" "ctas figure";
    column-gap:clamp(40px,5vw,80px);row-gap:0;align-items:center}
  .hero-lower{display:contents}
  .hero-text{grid-area:intro;max-width:640px}
  .hero-meta{grid-area:meta}
  .hero-ctas{grid-area:ctas}
  .hero-figure{grid-area:figure;align-self:center;margin:0;align-items:center}
  .portrait{max-width:440px}
  .portrait-cap{align-self:stretch;max-width:440px;margin-inline:auto}
}

/* ---- mobile "framed card, tucked corner" (phones, <=719px) ----
   Intro at the top, a flex:1 lower zone holding the contact meta (top-left) and the framed
   portrait card (bottom-right, tucked into the corner), CTAs at the foot. Full-screen stage
   under the transparent header. Desktop (>=880) keeps the 2-col grid above. */
@media(max-width:719px){
  /* Full-screen hero (100svh). Intro at the top, the contact meta + framed portrait sit side by
     side in the vertical middle, CTAs pinned to the foot (justify-content distributes the three).
     The pull-quote shows on desktop but is hidden on phones to free vertical space (B, 2026-06-08). */
  .hero{min-height:100svh;padding-bottom:0;display:flex;flex-direction:column}
  .hero-inner{flex:1 1 auto;display:flex;flex-direction:column;justify-content:space-between;max-width:none}
  .hero-title-line{margin-top:clamp(18px,5vw,32px)}
  .hero-quote{display:none}
  /* meta (left) + framed portrait (right) side by side. The portrait is width-capped so the
     contact column always keeps room for the email (no overlap on narrow phones); the links may
     wrap as a last resort on very small screens. align-items:start tops both columns. */
  .hero-lower{display:grid;grid-template-columns:minmax(0,1fr) clamp(128px,38vw,180px);
    gap:var(--gap-md) 20px;align-items:start}
  .hero-meta{flex-direction:column;flex-wrap:nowrap;align-items:flex-start;gap:var(--gap-sm);margin:0;
    font-size:11px;min-width:0;align-self:start}
  .hero-meta a{min-width:0}
  .hero-meta .loc{align-items:flex-start}
  .hero-meta .loc .ic{margin-top:2px}
  .hero-figure{margin:0;align-items:flex-start}
  .portrait{width:100%;max-width:none}
  .portrait-cap{align-self:stretch;text-align:left;max-width:100%;margin-top:11px}
  .portrait-cap .pc-line{justify-content:flex-start;align-items:flex-start}
  .portrait-cap .pc-dot{margin-top:4px}
  .hero-ctas{margin-top:20px;padding-bottom:max(14px,env(safe-area-inset-bottom))}
  /* MOBILE: glass header at 48% so the wave shows through while the bar is still legible */
  body[data-wavetop="full"] .site-head{
    background:rgba(244,245,251,0.48);
    -webkit-backdrop-filter:saturate(180%) blur(20px);
    backdrop-filter:saturate(180%) blur(20px);
    border-bottom-color:transparent;
  }
}

/* very narrow phones (<=345px, e.g. iPhone SE): the long email/linkedin would reach the
   portrait in the side-by-side hero, so let them wrap there instead of overlapping. */
@media(max-width:345px){
  .hero-meta a{overflow-wrap:anywhere}
}

/* ============ HERO WAVE TREATMENTS (body[data-hero]) — split layout kept ============ */
/* hero wave — ribbon band reaching the top edge of the page (wave-to-top) */
.hero-wave{
  -webkit-mask-image:linear-gradient(180deg,#000 0%,#000 56%,transparent 86%);
          mask-image:linear-gradient(180deg,#000 0%,#000 56%,transparent 86%);
}

/* ============================================================
   TRUST STRIP — environments / logo wall
   ============================================================ */
.trust{padding-top:clamp(30px,5vw,56px);position:relative}
.trust-head{
  font-family:var(--fm);font-size:11.5px;font-weight:500;letter-spacing:0.16em;text-transform:uppercase;
  color:var(--mu);margin-bottom:20px;display:flex;align-items:center;gap:var(--gap-sm);
}
.trust-head .tick{width:18px;height:1px;background:var(--accent);flex-shrink:0}
.logo-wall{
  list-style:none;display:grid;grid-template-columns:repeat(2,1fr);gap:1px;
  background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden;
}
.lw{
  background:var(--paper2);padding:18px 20px;display:flex;flex-direction:column;gap:5px;
  transition:background .2s ease;
}
.lw:hover{background:var(--paper3)}
.lw-name{
  font-family:var(--fd);font-weight:700;font-size:1.18rem;letter-spacing:-0.01em;color:var(--tx-soft);
  line-height:1;transition:color .2s ease;
}
.lw:hover .lw-name{color:var(--ink)}
.lw-tag{font-family:var(--fm);font-size:10.5px;letter-spacing:0.05em;text-transform:uppercase;color:var(--mu)}
@media(min-width:620px){.logo-wall{grid-template-columns:repeat(3,1fr)}}
@media(min-width:920px){.logo-wall{grid-template-columns:repeat(6,1fr)}.lw{padding:22px 18px}}

/* ============================================================
   SUMMARY
   ============================================================ */
.summary-sec{padding-top:clamp(40px,6vw,70px)}
/* 01 Profile and 02 Core skills are one “about” pairing — collapse the doubled
   section gap above Core skills (summary keeps its own bottom padding). */
.summary-sec + .section{padding-top:0}
.summary-grid{display:grid;grid-template-columns:1fr;gap:clamp(28px,3.4vw,44px)}
.summary-body .lead{max-width:62ch;color:var(--tx);font-weight:400}
/* shared insert component (AI note + MBA note); 3 designs via body[data-note] */
.ai-note{max-width:60ch;margin-top:28px}
.ins-body{font-size:1rem;line-height:1.6;color:var(--tx-soft);text-wrap:pretty}
.ins-label{font-family:var(--fm);font-weight:500;letter-spacing:0.16em;text-transform:uppercase;color:var(--mu)}
.ins-icon{display:none;color:var(--pri)}
.ins-icon svg{width:20px;height:20px;display:block}

/* AI / MBA insert — inline badge (text-forward, no box) */
.ins{display:block}
.ins-icon{display:none}
.ins-label{
  display:inline;font-size:10.5px;letter-spacing:0.13em;color:var(--pri);
  border:1px solid rgba(79,70,229,0.28);background:rgba(79,70,229,0.07);border-radius:100px;padding:3px 10px;
  white-space:nowrap;margin-right:4px;
}
.ins-body{display:inline;font-size:1rem}

@media(min-width:920px){
  .summary-grid{grid-template-columns:0.34fr 0.66fr;gap:clamp(40px,5vw,72px);align-items:start}
}

/* ============================================================
   CORE SKILLS — Name aside
   ============================================================ */
.chips{display:flex;flex-wrap:wrap;gap:var(--gap-xs)}
.chip{
  font-family:var(--fb);font-size:0.92rem;line-height:1.3;color:var(--tx-soft);
  background:var(--paper3);border:1px solid var(--line);border-radius:6px;padding:8px 13px;
}
.skills-aside{display:flex;flex-direction:column}
.sk-arow{display:flex;flex-direction:column;gap:var(--gap-sm);padding:20px 0;border-top:1px solid var(--line)}
.sk-arow:first-child{border-top:none;padding-top:0}
.sk-aname{font-family:var(--fd);font-weight:700;font-size:clamp(1.05rem,1.6vw,1.22rem);letter-spacing:-0.01em;color:var(--ink);line-height:1.15}
@media(min-width:760px){
  .sk-arow{display:grid;grid-template-columns:230px 1fr;gap:30px;align-items:start}
  .sk-aname{position:sticky;top:90px}
}

/* ---- skills · Prose (label + readable comma list) ---- */
.skills-prose{display:flex;flex-direction:column}
.sk-prose{padding:22px 0;border-top:1px solid var(--line)}
.sk-prose:first-child{border-top:none;padding-top:0}
.sk-plabel{display:block;font-family:var(--fm);font-size:11.5px;font-weight:500;letter-spacing:0.14em;text-transform:uppercase;color:var(--accent);margin-bottom:10px}
.sk-pitems{margin:0;font-size:1.08rem;line-height:1.75;color:var(--tx);max-width:72ch;text-wrap:pretty}

/* ---- skills · Two-column (name left, prose items right) ---- */
.skills-twocol{display:flex;flex-direction:column}
.sk-tc{display:grid;grid-template-columns:1fr;gap:var(--gap-xs);padding:24px 0;border-top:1px solid var(--line)}
.sk-tc:first-child{border-top:none;padding-top:0}
.sk-tcname{font-family:var(--fd);font-weight:700;font-size:clamp(1.1rem,1.7vw,1.34rem);letter-spacing:-0.01em;color:var(--ink);line-height:1.15}
.sk-tcitems{margin:0;font-size:1.05rem;line-height:1.75;color:var(--tx-soft);text-wrap:pretty}
@media(min-width:760px){.sk-tc{grid-template-columns:250px 1fr;gap:36px;align-items:baseline}}

/* ---- skills · Soft chips (airier, borderless, larger) ---- */
.skills-softchips{display:grid;grid-template-columns:1fr;gap:var(--gap-md)}
.sk-scard{background:var(--paper2);border:1px solid var(--line);border-radius:14px;padding:24px 26px;display:flex;flex-direction:column;gap:var(--gap-md)}
.sk-slabel{font-family:var(--fm);font-size:11.5px;font-weight:500;letter-spacing:0.14em;text-transform:uppercase;color:var(--accent)}
.sk-schips{display:flex;flex-wrap:wrap;gap:var(--gap-sm)}
.sk-soft{font-size:1rem;line-height:1.4;color:var(--tx);background:var(--paper3);border-radius:8px;padding:10px 16px}
@media(min-width:760px){.skills-softchips{grid-template-columns:1fr 1fr}}

/* ============================================================
   EXPERIENCE
   ============================================================ */
.exp-list{display:flex;flex-direction:column;gap:var(--gap-md)}
.exp{
  background:var(--paper2);border:1px solid var(--line);border-radius:14px;overflow:hidden;
  display:grid;grid-template-columns:1fr;
  transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease;
}
.exp:hover{border-color:var(--line-2);transform:translateY(-2px);box-shadow:var(--shadow-card)}
.exp-rail{
  padding:clamp(24px,3vw,32px) clamp(24px,3vw,32px) 0;
  display:flex;flex-direction:column;gap:var(--gap-xs);
}
.exp-period{font-family:var(--fm);font-size:12px;font-weight:500;letter-spacing:0.04em;color:var(--accent)}
.exp-loc{font-family:var(--fm);font-size:11.5px;letter-spacing:0.04em;color:var(--mu);display:inline-flex;align-items:center;gap:var(--gap-xs)}
.exp-body{padding:clamp(16px,2vw,20px) clamp(24px,3vw,32px) clamp(24px,3vw,32px)}
.exp-company{font-family:var(--fd);font-weight:700;font-size:clamp(1.18rem,1.9vw,1.42rem);color:var(--ink);line-height:1.16;letter-spacing:-0.01em}
.exp-roles{margin-top:8px;display:flex;flex-direction:column;gap:3px}
.exp-role{
  font-family:var(--fm);font-size:12.5px;letter-spacing:0.02em;color:var(--tx-soft);line-height:1.45;
  display:flex;flex-wrap:wrap;gap:4px var(--gap-sm);align-items:baseline;
}
.exp-role .rp{color:var(--mu)}
.exp ul{list-style:none;margin:18px 0 0;display:flex;flex-direction:column;gap:var(--gap-sm)}
/* position:relative + padding-left + the ::before square marker are in
   brand-base.css (shared with home's .svc list). /profile keeps only its
   own type scale on the <li>. */
.exp ul li{font-size:1rem;line-height:1.55;color:var(--tx-soft);text-wrap:pretty}
@media(min-width:760px){
  .exp{grid-template-columns:200px 1fr}
  .exp-rail{padding:var(--card-pad) 8px var(--card-pad) var(--card-pad)}
  .exp-body{padding:var(--card-pad) var(--card-pad) var(--card-pad) 8px}
}

/* ============================================================
   FACTS — education / certifications / languages
   ============================================================ */
.facts-grid{display:grid;grid-template-columns:1fr;gap:var(--gap-md)}
.fact{background:var(--paper2);border:1px solid var(--line);border-radius:14px;padding:clamp(24px,3vw,32px)}
.fact-label{
  font-family:var(--fm);font-size:12px;font-weight:500;letter-spacing:0.13em;text-transform:uppercase;
  color:var(--mu);display:flex;align-items:center;gap:var(--gap-xs);margin-bottom:20px;
}
.fact-label .dot{width:6px;height:6px;border-radius:2px;background:var(--accent);flex-shrink:0}
.fact-item{padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid var(--line)}
.fact-item:last-child{padding-bottom:0;margin-bottom:0;border-bottom:none}
.fact-title{font-family:var(--fd);font-weight:600;font-size:1.04rem;color:var(--ink);line-height:1.25}
.fact-org{font-size:0.96rem;color:var(--tx-soft);margin-top:5px;line-height:1.45;text-wrap:pretty}
.fact-when{font-family:var(--fm);font-size:11.5px;letter-spacing:0.03em;color:var(--mu);margin-top:7px}
.fact-plain{font-size:1rem;color:var(--tx-soft);line-height:1.6;text-wrap:pretty}
@media(min-width:820px){.facts-grid{grid-template-columns:repeat(3,1fr)}}

/* ============================================================
   DOWNLOAD ZONE
   ============================================================ */
.download{background:var(--ink-deep);color:var(--tx-dk);position:relative;overflow:hidden}
.dl-wave{
  position:absolute;inset:0;z-index:0;pointer-events:none;display:none;
  background:url("../assets/wave-field-ink.svg") right center / cover no-repeat;
  opacity:.5;
}
.download .wrap{position:relative;z-index:1}
.download .sec-index{color:var(--mu-dk)}
.download .sec-index b{color:var(--acc)}
.download .sec-index .ln{background:var(--line-dk)}
.dl-intro{max-width:60ch;margin-bottom:clamp(40px,6vw,68px)}
.dl-intro .h2{color:#fff}
.dl-lead{margin-top:16px;color:var(--mu-dk);font-size:1.05rem;line-height:1.6;text-wrap:pretty}
.dl-cards{display:grid;grid-template-columns:1fr;gap:var(--gap-md)}
.dl-card{
  position:relative;background:rgba(255,255,255,0.03);border:1px solid var(--line-dk);border-radius:14px;
  padding:clamp(24px,3vw,30px);display:flex;flex-direction:column;gap:var(--gap-md);
  transition:border-color .2s ease,transform .2s ease,background .2s ease;
}
.dl-card:hover{border-color:rgba(255,255,255,0.28);transform:translateY(-2px);background:rgba(255,255,255,0.05)}
.dl-card.is-rec{border-color:rgba(124,140,255,0.5);background:rgba(79,70,229,0.10)}
.dl-card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-sm)}
.dl-card-label{font-family:var(--fd);font-weight:700;font-size:1.16rem;letter-spacing:-0.01em;color:#fff;line-height:1.1}
.dl-badge{
  font-family:var(--fm);font-size:10px;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;
  color:#C7CEFF;background:rgba(124,140,255,0.16);border:1px solid rgba(124,140,255,0.3);
  border-radius:100px;padding:5px 11px;white-space:nowrap;
}
.dl-card-title{font-family:var(--fm);font-size:11.5px;letter-spacing:0.03em;color:#A5B4FC;line-height:1.5}
.dl-card-blurb{font-size:0.98rem;line-height:1.55;color:var(--mu-dk);text-wrap:pretty;flex:1}
.dl-card-btns{display:flex;gap:var(--gap-sm);margin-top:4px}
.dl-card-btns .btn{flex:1;flex-direction:column;align-items:flex-start;gap:var(--gap-xs);padding:15px 18px}
.dl-card-btns .btn-pri{background:var(--pri);border-color:var(--pri)}
.dl-card-btns .btn-pri:hover{background:#6366F1;border-color:#6366F1}
.dl-btn-meta{font-size:10.5px;color:rgba(237,240,253,0.6);letter-spacing:0.04em;font-weight:400}
.download .btn-pri{background:var(--pri);border-color:var(--pri)}
.download .btn-pri:hover{background:#6366F1;border-color:#6366F1}
@media(min-width:760px){
  .dl-cards{grid-template-columns:repeat(2,1fr)}
}

/* download · rows */
.dl-rows{display:flex;flex-direction:column}
.dl-row{display:grid;grid-template-columns:1fr;gap:var(--gap-md);padding:24px 0;border-top:1px solid var(--line-dk);align-items:center}
.dl-row:first-child{border-top:none;padding-top:0}
.dl-row-main{display:flex;flex-direction:column;gap:var(--gap-xs)}
@media(min-width:760px){.dl-row{grid-template-columns:1fr 320px;gap:36px}}
/* download · rows — clear separation between the two versions via the column
   gap only (no divider line between Manager and Director). */
.dl-rowsplain{display:flex;flex-direction:column;gap:clamp(40px,7vw,56px)}
.dl-rowsplain .dl-row{border-top:none;padding:0}

/* download · spotlight (featured + alt) */
.dl-spotlight{display:flex;flex-direction:column;gap:var(--gap-md)}
.dl-hero{background:rgba(79,70,229,0.12);border:1px solid rgba(124,140,255,0.5);border-radius:16px;padding:clamp(24px,3vw,32px);display:flex;flex-direction:column;gap:var(--gap-md)}
.dl-alts{display:flex;flex-direction:column;gap:var(--gap-sm)}
.dl-alt{background:rgba(255,255,255,0.03);border:1px solid var(--line-dk);border-radius:12px;padding:18px 20px;display:grid;grid-template-columns:1fr;gap:var(--gap-md);align-items:center}
.dl-alt-main{display:flex;flex-direction:column;gap:var(--gap-xs)}
.dl-alt .dl-card-label{font-family:var(--fd);font-weight:700;font-size:1.08rem;color:#fff;letter-spacing:-0.01em;line-height:1.1}
@media(min-width:680px){.dl-alt{grid-template-columns:1fr 300px;gap:28px}}

/* ============================================================
   HIRING CTA
   ============================================================ */
.hire{background:var(--ink-deep);color:var(--tx-dk);position:relative}
.hire-wrap{display:flex;flex-direction:column;gap:22px;border-top:1px solid var(--line-dk);padding-top:clamp(44px,6vw,72px)}
.hire-copy{max-width:54ch}
.hire .h2{color:#fff}
.hire-lead{margin-top:14px;color:var(--mu-dk);font-size:1.05rem;line-height:1.6;text-wrap:pretty}
.hire-direct{margin-top:16px;font-family:var(--fm);font-size:12.5px;letter-spacing:0.02em;color:var(--mu-dk);display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-xs) var(--gap-sm)}
.hire-direct a{color:var(--tx-dk);transition:color .18s ease}
.hire-direct a:hover{color:#A5B4FC}
.hire-direct .sep{color:var(--line-dk)}
.hire .btn-pri{background:var(--pri);border-color:var(--pri)}
.hire .btn-pri:hover{background:#6366F1;border-color:#6366F1}
.hire-btn{align-self:flex-start}
@media(min-width:820px){
  .hire-wrap{flex-direction:row;align-items:center;justify-content:space-between;gap:44px}
  .hire-btn{align-self:auto;flex-shrink:0}
}
body[data-ctawide="on"] .hire-btn{width:100%;justify-content:center}
@media(min-width:820px){
  body[data-ctawide="on"] .hire-btn{width:320px;align-self:center}
}

/* ============================================================
   FOOTER
   ============================================================ */
/* footer: brand-base.css provides the shared meta-row styling.
   Profile adds a top divider (no CTA band sits above it here). */
.foot{padding-block:clamp(56px,8vw,90px) 36px}
.foot-meta{border-top:1px solid var(--line-dk);padding-top:clamp(30px,4vw,44px)}

/* STICKY MOBILE CTA — base .mobile-cta (+ .show / .btn / >=720px hide) and
   its dark glass now live in brand-base.css (shared with the home page).
   /profile has no page-specific mobile-cta variant. */

/* section shell */
.section{padding-block:clamp(44px,6vw,72px)}
.section.first{padding-top:0}
.section-head{margin-bottom:clamp(28px,4vw,44px);max-width:760px}

/* ============================================================
   SELECTED PROJECTS
   ============================================================ */
.proj-grid{display:grid;grid-template-columns:1fr;gap:var(--gap-md)}
.proj{
  background:var(--paper2);border:1px solid var(--line);border-radius:14px;
  padding:clamp(24px,3vw,32px);display:flex;flex-direction:column;gap:var(--gap-md);
  transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease;
}
.proj:hover{border-color:var(--line-2);transform:translateY(-2px);box-shadow:var(--shadow-card)}
.proj-top{display:flex;flex-direction:column;gap:var(--gap-xs)}
.proj-name{font-family:var(--fd);font-weight:700;font-size:clamp(1.3rem,2vw,1.6rem);letter-spacing:-0.01em;color:var(--ink);line-height:1.05}
.proj-client{font-family:var(--fm);font-size:11.5px;letter-spacing:0.05em;text-transform:uppercase;color:var(--accent)}
.proj-desc{font-size:1rem;line-height:1.6;color:var(--tx-soft);text-wrap:pretty;flex:1}
/* ---- outcome: shared ---- */
.proj-result{margin-top:2px}
.oc-tab{
  font-family:var(--fm);font-size:9.5px;font-weight:500;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--mu);display:block;
}

/* ---- outcome A · spotlight (default) — one hero figure + supporting line ---- */
.oc-spotlight{border-top:1px solid var(--line);padding-top:20px;display:flex;flex-direction:column;gap:var(--gap-md);align-items:flex-start}
.ocs-hero{display:flex;flex-direction:column;gap:var(--gap-xs);align-items:flex-start}
.ocs-stat{
  font-family:var(--fd);font-weight:700;font-size:clamp(2.6rem,5vw,3.3rem);line-height:1;letter-spacing:-0.03em;
  color:var(--pri);font-variant-numeric:tabular-nums;
}
.ocs-lab{font-family:var(--fb);font-size:0.98rem;line-height:1.3;color:var(--tx-soft);max-width:26ch}
.ocs-more{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gap-xs) var(--gap-md);padding-top:12px;border-top:1px solid var(--line);width:100%}
.ocs-chip{font-family:var(--fm);font-size:11px;letter-spacing:0.02em;color:var(--mu);line-height:1.5}
.ocs-chip b{font-family:var(--fd);font-weight:700;font-size:0.98rem;color:var(--ink);letter-spacing:-0.01em;margin-right:3px}
/* side-by-side cards must share one layout: subgrid makes each card span the
   same row tracks as its horizontal neighbour, so name / description / outcome
   line up across the row. */
@media(min-width:760px){
  .proj-grid{grid-template-columns:repeat(2,1fr)}
  .proj{display:grid;grid-template-rows:subgrid;grid-row:span 3}
}

/* ============================================================
   RECOMMENDATIONS
   ============================================================ */
/* Recommendations — card visuals live in brand-base.css (shared with the
   home Testimonials grid). This block owns only the grid layout. */
.rec-grid{display:grid;grid-template-columns:1fr;gap:var(--gap-md)}
@media(min-width:780px){
  .rec-grid{grid-template-columns:repeat(2,1fr)}
  .rec{display:grid;grid-template-rows:subgrid;grid-row:span 2}
}

/* ============================================================
   HOW I WORK — Band columns (inline icons)
   ============================================================ */
.hw-kicker{font-family:var(--fm);font-size:12px;font-weight:500;letter-spacing:0.13em;text-transform:uppercase;color:var(--mu);display:flex;align-items:center;gap:var(--gap-xs);margin-bottom:18px}
.hw-kicker .dot{width:6px;height:6px;border-radius:2px;background:var(--accent);flex-shrink:0}
.value-name{font-family:var(--fd);font-weight:700;font-size:1.06rem;letter-spacing:-0.01em;color:var(--ink);line-height:1.12}
.value-desc{font-size:0.95rem;line-height:1.55;color:var(--tx-soft);text-wrap:pretty}
.hw-lead{font-weight:600;color:var(--ink)}
.vi-tile{width:46px;height:46px;border-radius:11px;display:grid;place-items:center;background:linear-gradient(150deg,rgba(79,70,229,0.12),rgba(124,58,237,0.10));border:1px solid rgba(79,70,229,0.22);color:var(--pri);flex-shrink:0}
.vi-tile svg{width:23px;height:23px}

/* working lead-cards grid (2x2) */
.hw-wgrid{display:grid;grid-template-columns:1fr;gap:var(--gap-lg) 32px;margin-bottom:36px}
.hw-wcard{font-size:1.02rem;line-height:1.55;color:var(--tx-soft);border-left:2px solid var(--line);padding-left:18px;text-wrap:pretty}
.hw-wcard .hw-lead{display:block;margin-bottom:4px}
@media(min-width:680px){.hw-wgrid{grid-template-columns:1fr 1fr}}

/* band columns */
.hw-bandcols-top{margin-bottom:34px}
.hw-colpanel{display:grid;grid-template-columns:1fr;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.hw-colcell{background:var(--paper2);padding:20px 18px;display:grid;grid-template-columns:auto 1fr;column-gap:var(--gap-sm);row-gap:var(--gap-xs);align-items:center}
.hw-colcell .value-desc{font-size:0.9rem}
.hw-colcell .vi-tile{grid-column:1;grid-row:1;width:38px;height:38px;border-radius:10px}
.hw-colcell .vi-tile svg{width:20px;height:20px}
.hw-colcell .value-name{grid-column:2;grid-row:1}
.hw-colcell .value-desc{grid-column:1 / 3;grid-row:2}
@media(min-width:560px){.hw-colpanel{grid-template-columns:1fr 1fr}}
/* DESIGN CONTRACT (cards-in-a-row): same-layout cards sitting side by side in ONE
   row must line up row-for-row — corresponding parts share height. subgrid makes
   every cell adopt the panel's two row tracks (icon+name / description), so the
   icons align and the descriptions occupy one shared-height track instead of each
   cell distributing its own slack. Same house pattern as .proj / .rec / .svc / .proof.
   row-gap:0 keeps the 1px separators vertical-only; the cell restores its icon↔desc gap. */
@media(min-width:980px){
  .hw-colpanel{grid-template-columns:repeat(5,1fr);grid-template-rows:auto auto;column-gap:1px;row-gap:0}
  .hw-colcell{grid-template-rows:subgrid;grid-row:span 2;row-gap:var(--gap-xs)}
  .hw-colcell .value-desc{align-self:start}
}
/* below the 5-up desktop grid, 5 values don't tile evenly: the 2-col layout (560–979px)
   leaves an empty trailing cell — a "missing box". Span the last value across both columns
   so the grid is flush with no empty cell and all five values are kept. 1-col (<560px) is
   already full-width; desktop (>=980px, 5 columns) is one flush row. */
@media(min-width:560px) and (max-width:979.98px){.hw-colpanel .hw-colcell:last-child{grid-column:1 / -1}}

/* education note positioning (design via body[data-note]) */
.edu-note{margin-top:clamp(22px,3vw,30px);max-width:74ch}

/* ============================================================
   REVEAL + reduced motion
   (base covers reveal + the generic reduced-motion rules; profile
   adds its own page-specific targets)
   ============================================================ */
@media(prefers-reduced-motion:reduce){
  .hero-wave{animation:none!important}
  .exp:hover{transform:none!important}
}

/* ============================================================
   DARK MODE — auto
   ============================================================ */
@media(prefers-color-scheme:dark){
  /* shared tokens + heading/num colours live in brand-base.css. The header
     bg and wordmark invert MUST be re-declared here: this file's light
     .site-head rule loads after base, so the dark override has to follow it
     in source order to win. */
  /* header dark glass + wordmark invert are in brand-base.css. The wave-to-top
     variant stays here: it must follow /profile's light wavetop rules above to
     win in dark mode. */
  body[data-wavetop="full"] .site-head{background:transparent}
  body[data-wavetop="full"] .site-head.scrolled{background:rgba(7,10,20,0.82)}
  /* card titles + inline metric numbers use var(--ink) (a dark navy that
     stays dark in dark mode) — lift them to light ink on dark surfaces */
  .exp-company,.proj-name,.value-name,.sk-aname,.sk-tcname,.fact-title,
  .lw:hover .lw-name,.rec-name,.hw-lead{color:#F4F6FF}
  .ocs-chip b{color:#EAEDFB}
  /* indigo accent text sits on a dark card in dark mode — lift to the brighter
     key-number indigo so it clears WCAG AA (the flat #4F46E5 is ~2.9:1 on dark) */
  .proj-client,.ocs-stat,.ins-label{color:#A5B4FC}
  .exp-period{color:#A5B4FC}
  /* .exp ul li::before full-opacity on dark is grouped with .svc in
     brand-base.css; .fact-label .dot is /profile-only, kept here. */
  .fact-label .dot{opacity:1}
  .download{background:#04060C}
  .foot{background:#04060C}
  .hire{background:#04060C}
  .chip{background:#0B1028}
  /* .mobile-cta dark glass now lives in brand-base.css (shared). */
}
