/* =========================================================
   Javier Collado — Portfolio UX/UI
   Design system — navy + orange, editorial/poster aesthetic
   (color + type system pulled from his own PDF portfolio)
   ========================================================= */

:root{
  --bg:#FFFFFF;
  --bg-soft:#F7F4EC;
  --surface:#FFFFFF;

  --ink:#17162B;
  --ink-soft:rgba(23,22,43,.74);
  --ink-faint:rgba(23,22,43,.60);
  --line:rgba(23,22,43,.14);
  --line-strong:rgba(23,22,43,.28);

  --orange:#F49B00;
  --orange-dark:#C97E00;
  --orange-soft:#FDECC7;
  --orange-ink:#17162B;

  --navy:#17162B;
  --navy-soft:#2C2A48;

  --rust:#A14A2A;

  --tag-branding:var(--orange);
  --tag-editorial:var(--navy);
  --tag-fotografia:var(--rust);

  --radius-s:8px;
  --radius-m:16px;
  --radius-l:28px;

  --shadow-s:0 1px 2px rgba(23,22,43,.08);
  --shadow-m:0 10px 28px rgba(23,22,43,.10);
  --shadow-l:0 30px 70px rgba(23,22,43,.20);

  --transition:.16s cubic-bezier(.16,1,.3,1);
  --transition-slow:.3s cubic-bezier(.16,1,.3,1);

  --container:1180px;

  --case-space-xs:12px;
  --case-space-s:20px;
  --case-space-m:32px;
  --case-space-l:56px;
  --case-space-xl:88px;
  --mobile-dock-height:82px;

  --font-display:'Unbounded', sans-serif;
  --font-body:'Inter', sans-serif;
}

/* ---------- reset ---------- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;height:100%;overflow:hidden;}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  height:100%;
  overflow:hidden;
  opacity:1;
}
img{display:block;max-width:100%;height:auto;}
a{color:inherit;text-decoration:none;}
ul{list-style:none;}
button{font:inherit;background:none;border:none;cursor:pointer;color:inherit;}
input,textarea{font:inherit;}
::selection{background:var(--orange);color:var(--ink);}

:focus-visible{
  outline:3px solid var(--orange-dark);
  outline-offset:4px;
}

body.no-scroll{overflow:hidden;}

/* ---------- typography ---------- */
h1{
  font-family:var(--font-display);
  font-weight:800;
  line-height:1.14;
  letter-spacing:-.01em;
  text-transform:none;
}
h2,h3,h4{
  font-family:var(--font-display);
  font-weight:700;
  line-height:1.2;
  letter-spacing:0;
  text-transform:none;
}
h1,h2,h3{text-wrap:balance;}
p{text-wrap:pretty;}
.eyebrow{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-family:var(--font-body);
  font-size:.78rem;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--orange-dark);
}
.eyebrow::before{
  content:'';
  width:22px;height:2px;
  background:var(--orange);
  border-radius:2px;
}
.h-xl{font-size:clamp(2.1rem,5.6vw,4.2rem);}
.h-l{font-size:clamp(1.7rem,3.8vw,2.7rem);}
.h-m{font-size:clamp(1.3rem,2.2vw,1.7rem);}
.lede{
  font-size:clamp(1.05rem,1.6vw,1.3rem);
  color:var(--ink-soft);
  max-width:640px;
  line-height:1.6;
  font-family:var(--font-body);
  text-transform:none;
}
.mono-num{
  font-family:var(--font-display);
  font-size:.8rem;
  color:var(--ink-faint);
}

/* ---------- brand heading: text over color bar ---------- */
.brand-heading{
  position:relative;
  display:inline-block;
  padding:6px 4px;
}
.brand-heading .bar{
  position:absolute;
  left:-4px;right:-14px;
  top:14%;bottom:14%;
  background:var(--orange);
  border-radius:999px;
  z-index:0;
}
.brand-heading.bar-navy .bar{background:var(--navy);}
.brand-heading h1,
.brand-heading h2,
.brand-heading span{
  position:relative;
  z-index:1;
  font-family:var(--font-display);
  font-weight:800;
  text-transform:none;
}
.brand-heading.bar-navy h1,
.brand-heading.bar-navy h2{color:var(--bg);}

/* ---------- outline numerals ---------- */
.outline-num{
  font-family:var(--font-display);
  -webkit-text-stroke:1.5px var(--ink);
  color:transparent;
  letter-spacing:0;
}

/* ---------- layout ---------- */
.container{
  width:100%;
  max-width:var(--container);
  margin-inline:auto;
  padding-inline:28px;
}
section{position:relative;}
.section-pad{padding-block:clamp(64px,10vw,120px);}
.section-head{
  display:flex;
  flex-wrap:wrap;
  align-items:flex-end;
  justify-content:space-between;
  gap:24px;
  margin-bottom:clamp(32px,5vw,56px);
}
.section-head .lede{margin-top:12px;}
.section-heading{width:100%;}
.collapsible-section__trigger{
  width:100%;
  min-height:56px;
  display:grid;
  grid-template-columns:minmax(0,1fr) 44px;
  align-items:center;
  gap:20px;
  padding:8px 0 14px;
  border-bottom:1px solid var(--line);
  text-align:left;
}
.collapsible-section__trigger::before{display:none;}
.section-heading__copy{
  min-width:0;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:12px;
}
.section-heading__eyebrow{
  display:inline-flex;
  align-items:center;
  gap:8px;
  color:var(--orange-dark);
  font-size:.78rem;
  font-weight:700;
  letter-spacing:.12em;
  line-height:1.3;
  text-transform:uppercase;
}
.section-heading__eyebrow::before{
  content:'';
  width:22px;
  height:2px;
  flex:0 0 22px;
  border-radius:2px;
  background:var(--orange);
}
.section-heading__title{
  display:block;
  max-width:28ch;
  font-family:var(--font-display);
  font-size:clamp(1.35rem,2.5vw,1.9rem);
  font-weight:700;
  line-height:1.2;
  text-wrap:balance;
}
.collapsible-section__icon,
.timeline-toggle__icon{
  position:relative;
  display:grid;
  place-items:center;
  width:40px;
  height:40px;
  border-radius:50%;
  background:var(--bg-soft);
  color:var(--ink);
}
.collapsible-section__icon::before,
.timeline-toggle__icon::before{
  content:'';
  width:8px;
  height:8px;
  border-right:2px solid currentColor;
  border-bottom:2px solid currentColor;
  transform:translateY(-2px) rotate(45deg);
  transition:transform .18s cubic-bezier(.16,1,.3,1);
}
.collapsible-section__trigger[aria-expanded="true"] .collapsible-section__icon::before,
.timeline-toggle[aria-expanded="true"] .timeline-toggle__icon::before{
  transform:translateY(2px) rotate(225deg);
}
.collapsible-section__trigger:hover .collapsible-section__icon{background:var(--orange-soft);}
.collapsible-section__trigger:focus-visible,
.timeline-toggle:focus-visible{border-radius:var(--radius-s);}
.collapsible-section__content{padding-top:clamp(28px,4vw,44px);}
.collapsible-section__content > .section-heading__title{margin-bottom:clamp(28px,4vw,44px);}
.collapsible-section__content[hidden],
.experience-details[hidden],
.education-details[hidden]{display:none;}
.collapsible-section--enhanced{
  transition:padding-block .22s cubic-bezier(.16,1,.3,1), border-color .18s ease;
}
.collapsible-section--enhanced:not(.is-open){
  padding-top:8px;
  padding-bottom:8px;
  border-top-color:transparent;
  border-bottom-color:transparent;
}
.collapsible-section--enhanced:not(.is-open) + .collapsible-section--enhanced{
  padding-top:8px;
}
.collapsible-section--enhanced:not(.is-open) + .trajectory-section.is-open{
  border-top-color:transparent;
}
.bridge-section{padding-bottom:clamp(56px,8vw,88px);}
.collapsible-section--compact .collapsible-section__content{padding-top:20px;}
.collapsible-section--compact .collapsible-section__content > .section-heading__title{margin-bottom:20px;}
.bg-soft{background:var(--bg-soft);}
.divider{height:1px;background:var(--line);border:none;}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:15px 28px;
  border-radius:999px;
  font-weight:700;
  font-size:.95rem;
  white-space:nowrap;
  transition:transform var(--transition), box-shadow var(--transition), background var(--transition), color var(--transition), border-color var(--transition);
}
.btn-primary{
  background:var(--orange);
  color:var(--ink);
}
.btn-primary:hover{
  background:var(--ink);
  color:var(--orange);
  transform:translateY(-2px);
  box-shadow:var(--shadow-m);
}
.btn-navy{
  background:var(--navy);
  color:#fff;
}
.btn-navy:hover{
  background:var(--orange);
  color:var(--ink);
  transform:translateY(-2px);
  box-shadow:var(--shadow-m);
}
.btn-ghost{
  background:transparent;
  color:var(--ink);
  border:1.5px solid var(--line-strong);
}
.btn-ghost:hover{
  border-color:var(--ink);
  background:var(--ink);
  color:#fff;
  transform:translateY(-2px);
}
.btn-sm{padding:10px 20px;font-size:.85rem;}
.btn svg{width:16px;height:16px;flex:none;transition:transform var(--transition);}
.btn:hover svg.arrow{transform:translateX(3px);}

/* ---------- logo (shared mark, used in footer) ---------- */
.logo{
  font-family:var(--font-display);
  font-weight:700;
  font-size:1.15rem;
  text-transform:none;
  letter-spacing:0;
  display:flex;
  align-items:center;
  gap:2px;
  transition:opacity var(--transition);
}
.logo:hover{opacity:.72;}
.logo .slash{color:var(--orange);}

/* ---------- hero bits (reused inside the desktop widget) ---------- */
.hero-pills{
  display:flex;flex-wrap:wrap;gap:10px;
  margin-bottom:26px;
}
.hero-pills .pill-solid{
  display:inline-flex;align-items:center;
  padding:10px 20px;border-radius:999px;
  font-size:.85rem;font-weight:700;
  background:var(--navy);color:#fff;
}
.hero-pills .pill-outline{
  display:inline-flex;align-items:center;
  padding:9px 19px;border-radius:999px;
  font-size:.85rem;font-weight:700;
  border:1.5px solid var(--orange);color:var(--orange-dark);
}
.hero-head{max-width:820px;}
.hero-head h1{color:var(--ink);}
.desktop-widget .lede{margin-top:18px;max-width:none;}
.hero-actions{
  display:flex;flex-wrap:wrap;gap:14px;
  margin-top:38px;
}

/* tool badges — echo the Ps/Ai/Id icon-badge row from the reference portfolio */
.tool-badges{
  display:flex;flex-wrap:wrap;gap:10px;
  justify-content:center;
}
.tool-badge{
  display:inline-flex;align-items:center;gap:9px;
  padding:10px 16px 10px 10px;
  border-radius:999px;
  background:var(--bg-soft);
}
.tool-badge .sq{
  position:relative;
  width:30px;height:30px;border-radius:8px;
  background:linear-gradient(160deg,#FFC15E,var(--orange));
  color:var(--ink);
  font-family:var(--font-display);
  font-weight:700;
  font-size:.72rem;
  display:flex;align-items:center;justify-content:center;
  flex:none;
  overflow:hidden;
}
.tool-badge .sq::before{
  content:'';position:absolute;inset:0;
  background:linear-gradient(160deg, rgba(255,255,255,.45) 0%, rgba(255,255,255,0) 50%);
  pointer-events:none;
}
.tool-badge .name{font-size:.84rem;font-weight:600;color:var(--ink-soft);}

/* split word reveal */
.split-line{overflow:hidden;display:block;}
.split-line > span{display:inline-block;transform:translateY(105%);transition:transform .42s cubic-bezier(.16,1,.3,1);}
.is-loaded .split-line > span{transform:translateY(0);}

/* ---------- marquee ---------- */
.marquee{
  overflow:hidden;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  padding-block:20px;
  background:var(--navy);
}
.marquee-track{
  display:flex;
  width:max-content;
  animation:marquee 32s linear infinite;
}
.marquee:hover .marquee-track{animation-play-state:paused;}
.marquee-item{
  display:flex;align-items:center;gap:14px;
  font-family:var(--font-display);
  font-weight:600;
  text-transform:none;
  font-size:.95rem;
  padding-inline:28px;
  color:#fff;
  white-space:nowrap;
}
.marquee-item .dot{width:6px;height:6px;border-radius:50%;background:var(--orange);}
@keyframes marquee{
  from{transform:translateX(0);}
  to{transform:translateX(-50%);}
}

/* ---------- pills / badges ---------- */
.pill{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:9px 16px;
  border-radius:999px;
  font-size:.82rem;
  font-weight:600;
  background:var(--surface);
  border:1px solid var(--line);
  color:var(--ink-soft);
  transition:transform var(--transition), border-color var(--transition), color var(--transition);
}
.pill-row{display:flex;flex-wrap:wrap;gap:10px;}
.pill:hover{border-color:var(--orange);color:var(--ink);transform:translateY(-2px);}

.tag{
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-size:.76rem;
  font-weight:700;
  letter-spacing:.03em;
  text-transform:uppercase;
  padding:6px 12px;
  border-radius:999px;
  color:#fff;
}
.tag::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;filter:brightness(1.6);}
.tag-branding{background:var(--tag-branding);color:var(--ink);}
.tag-branding::before{background:var(--ink);filter:none;}
.tag-editorial{background:var(--tag-editorial);}
.tag-fotografia{background:var(--tag-fotografia);}

/* ---------- reveal ---------- */
.reveal{transition:opacity .38s cubic-bezier(.16,1,.3,1), transform .38s cubic-bezier(.16,1,.3,1);}
body.motion-ready .reveal{opacity:0;transform:translateY(18px);}
body.motion-ready .reveal.in-view{opacity:1;transform:translateY(0);}
.reveal-stagger > *{transition:opacity .34s cubic-bezier(.16,1,.3,1), transform .34s cubic-bezier(.16,1,.3,1);}
body.motion-ready .reveal-stagger > *{opacity:0;transform:translateY(16px);}
body.motion-ready .reveal-stagger.in-view > *{opacity:1;transform:translateY(0);}
.reveal-stagger.in-view > *:nth-child(1){transition-delay:.01s;}
.reveal-stagger.in-view > *:nth-child(2){transition-delay:.04s;}
.reveal-stagger.in-view > *:nth-child(3){transition-delay:.07s;}
.reveal-stagger.in-view > *:nth-child(4){transition-delay:.1s;}
.reveal-stagger.in-view > *:nth-child(5){transition-delay:.13s;}
.reveal-stagger.in-view > *:nth-child(6){transition-delay:.16s;}
.reveal-stagger.in-view > *:nth-child(7){transition-delay:.19s;}
.reveal-stagger.in-view > *:nth-child(8){transition-delay:.22s;}
.reveal-stagger.in-view > *:nth-child(9){transition-delay:.25s;}
.reveal-stagger.in-view > *:nth-child(10){transition-delay:.28s;}

/* ---------- bridge / approach section ---------- */
.bridge-grid{
  display:grid;
  grid-template-columns:1.1fr 1fr;
  gap:clamp(32px,6vw,90px);
  align-items:start;
}
.bridge-grid > *{min-width:0;}
.bridge-text p + p{margin-top:18px;}
.bridge-text p{color:var(--ink-soft);}
.bridge-list{margin-top:32px;display:flex;flex-direction:column;gap:0;}
.bridge-list li{
  display:flex;gap:20px;
  padding-block:22px;
  border-top:1px solid var(--line);
}
.bridge-list li:last-child{border-bottom:1px solid var(--line);}
.bridge-list .num{
  font-family:var(--font-display);
  font-weight:800;
  font-size:1.7rem;
  line-height:1;
  -webkit-text-stroke:1.2px var(--ink);
  color:transparent;
  padding-top:2px;
  flex:none;
  width:52px;
}
.bridge-list h4{font-size:1.05rem;font-weight:700;text-transform:none;font-family:var(--font-body);}
.bridge-list p{color:var(--ink-soft);font-size:.94rem;margin-top:4px;}

/* ---------- featured / project cards ---------- */
.project-grid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:28px;
}
.project-grid.featured{grid-template-columns:repeat(4,1fr);}
.project-card{
  display:block;
  cursor:pointer;
  border-radius:var(--radius-m);
  overflow:hidden;
  background:var(--surface);
  border:1px solid var(--line);
  transition:transform var(--transition-slow), box-shadow var(--transition-slow), border-color var(--transition);
}
.project-card:hover{
  transform:translateY(-6px);
  box-shadow:var(--shadow-l);
  border-color:transparent;
}
.project-card .thumb{
  position:relative;
  aspect-ratio:4/5;
  overflow:hidden;
  background:var(--bg-soft);
}
.project-grid.featured .project-card .thumb{aspect-ratio:3/4;}
.project-card .thumb img{
  width:100%;height:100%;object-fit:cover;
  transition:transform .32s cubic-bezier(.16,1,.3,1);
}
.project-card:hover .thumb img{transform:scale(1.06);}
.project-card .thumb .tag{position:absolute;top:14px;left:14px;}
.project-card .thumb .card-num{
  position:absolute;top:10px;right:14px;
  font-family:var(--font-display);
  font-weight:700;
  font-size:1.9rem;
  color:rgba(255,255,255,.85);
  -webkit-text-stroke:1px rgba(23,22,43,.35);
  line-height:1;
}
.project-card .thumb .expand{
  position:absolute;bottom:14px;right:14px;
  width:38px;height:38px;
  border-radius:50%;
  background:rgba(255,255,255,.92);
  display:flex;align-items:center;justify-content:center;
  transform:scale(.7);opacity:0;
  transition:transform var(--transition), opacity var(--transition);
}
.project-card:hover .thumb .expand{transform:scale(1);opacity:1;}
.project-card .thumb .expand svg{width:16px;height:16px;}
.project-card .info{padding:20px 20px 22px;}
.project-card .info h3{font-size:1.02rem;font-family:var(--font-display);font-weight:700;text-transform:none;line-height:1.3;}
.project-card .info .desc{
  font-size:.88rem;color:var(--ink-soft);
  margin-top:6px;
  text-transform:none;
  font-family:var(--font-body);
}
.project-card .info .meta-row{
  display:flex;justify-content:space-between;align-items:center;
  margin-top:14px;
  font-size:.78rem;color:var(--ink-faint);
}

/* ---------- filters ---------- */
.filter-bar{
  display:flex;flex-wrap:wrap;gap:10px;
  margin-bottom:40px;
}
.filter-btn{
  padding:11px 20px;
  border-radius:999px;
  border:1.5px solid var(--line-strong);
  font-size:.88rem;font-weight:700;
  color:var(--ink-soft);
  transition:border-color var(--transition),color var(--transition),background-color var(--transition);
}
.filter-btn:hover{border-color:var(--ink);color:var(--ink);}
.filter-btn.active{background:var(--orange);border-color:var(--orange);color:var(--ink);}
.project-card.is-hidden,.project-card[hidden]{display:none !important;}

/* ---------- mostrar más proyectos ---------- */
.projects-more{
  display:flex;align-items:center;justify-content:center;gap:10px;
  margin:36px auto 0;
  min-height:48px;padding:13px 26px;
  border:1.5px solid var(--line-strong);border-radius:999px;
  background:transparent;
  font-family:var(--font-display);font-weight:600;font-size:.78rem;
  letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink-soft);cursor:pointer;
  transition:border-color var(--transition),color var(--transition),background-color var(--transition);
}
.projects-more:hover{border-color:var(--ink);color:var(--ink);}
.projects-more__count{
  font-size:.72rem;font-weight:700;
  color:var(--orange-dark);
}

/* ---------- lightbox ---------- */
.lightbox{
  position:fixed;inset:0;z-index:400;
  display:flex;align-items:center;justify-content:center;
  padding:min(6vh,60px) min(5vw,60px);
  opacity:0;pointer-events:none;
  transition:opacity var(--transition-slow);
}
.lightbox.is-open{opacity:1;pointer-events:auto;}
.lightbox-backdrop{
  position:absolute;inset:0;
  background:rgba(23,22,43,.90);
  backdrop-filter:blur(6px);
}
.lightbox-panel{
  position:relative;
  width:100%;max-width:1100px;max-height:100%;
  background:var(--bg);
  border-radius:var(--radius-l);
  overflow:hidden;
  display:grid;
  grid-template-columns:1.15fr 1fr;
  transform:translateY(24px) scale(.98);
  transition:transform var(--transition-slow);
}
.lightbox.is-open .lightbox-panel{transform:translateY(0) scale(1);}
.lightbox-media{
  position:relative;
  background:var(--bg-soft);
  display:flex;align-items:center;justify-content:center;
  max-height:88vh;
  overflow:hidden;
}
.lightbox-media img{
  width:100%;height:100%;object-fit:contain;
  max-height:88vh;
}
.lightbox-media .lb-nav{
  position:absolute;top:50%;translate:0 -50%;
  width:44px;height:44px;border-radius:50%;
  background:rgba(255,255,255,.88);
  display:flex;align-items:center;justify-content:center;
  transition:background var(--transition);
}
.lightbox-media .lb-nav:hover{background:#fff;}
.lightbox-media .lb-nav:active{background:#f2f2f2;}
.lightbox-media .lb-prev{left:16px;}
.lightbox-media .lb-next{right:16px;}
.lightbox-media .lb-count{
  position:absolute;bottom:16px;left:16px;
  font-size:.78rem;font-weight:700;
  background:rgba(23,22,43,.65);color:#fff;
  padding:6px 12px;border-radius:999px;
}
.lightbox-info{
  padding:40px 36px;
  overflow-y:auto;
  max-height:88vh;
  position:relative;
}
.lightbox-info .lb-num{
  position:absolute;top:66px;right:30px;
  font-family:var(--font-display);
  font-weight:700;
  font-size:2rem;
  -webkit-text-stroke:1.4px var(--line-strong);
  color:transparent;
  pointer-events:none;
}
.lightbox-info .tag{margin-bottom:16px;}
.lightbox-info h3{font-family:var(--font-display);font-weight:700;text-transform:none;font-size:1.5rem;margin-bottom:14px;max-width:85%;line-height:1.25;}
.lightbox-info .desc{color:var(--ink-soft);font-size:.96rem;}
.lightbox-close{
  position:absolute;top:20px;right:20px;z-index:5;
  width:40px;height:40px;border-radius:50%;
  background:rgba(255,255,255,.92);
  display:flex;align-items:center;justify-content:center;
  transition:transform var(--transition), background var(--transition);
}
.lightbox-close:hover{transform:rotate(90deg);background:#fff;}
.lightbox-close svg{width:16px;height:16px;}

/* ---------- timeline (sobre.html) ---------- */
.trajectory-section{
  padding-block:clamp(64px,8vw,96px);
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.trajectory-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(40px,5vw,72px);
  align-items:start;
}
.trajectory-column{min-width:0;}
.trajectory-column + .trajectory-column{
  padding-left:clamp(36px,4vw,64px);
  border-left:1px solid var(--line);
}
.trajectory-column__title{
  min-height:2.4em;
  font-size:clamp(1.2rem,2vw,1.55rem);
}
.timeline{
  display:flex;
  flex-direction:column;
  gap:0;
  margin-top:var(--case-space-m);
}
.timeline-item{
  display:grid;
  grid-template-columns:minmax(90px,108px) minmax(0,1fr) 44px;
  column-gap:18px;
  align-items:start;
  padding:18px 12px;
  border-top:1px solid var(--line);
}
.timeline--experience .timeline-item{
  grid-template-columns:minmax(136px,142px) minmax(0,1fr) 44px;
  column-gap:18px;
}
.timeline-item:last-child{border-bottom:1px solid var(--line);}
.timeline-year{
  font-family:var(--font-display);
  font-weight:700;
  color:var(--orange-dark);
  font-size:.88rem;
  padding-left:0;
  white-space:nowrap;
}
.timeline-year--vertical{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  line-height:1.2;
}
.timeline-meta{
  grid-column:1;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:9px;
}
.timeline-content{grid-column:2;min-width:0;}
.timeline-title{font-size:1rem;line-height:1.3;text-transform:none;font-family:var(--font-body);font-weight:700;}
.timeline-company,
.timeline-institution,
.timeline-summary{color:var(--ink-faint);font-size:.86rem;line-height:1.45;margin-top:3px;}
.timeline-company{color:var(--ink-soft);font-weight:600;}
.timeline-summary{max-width:62ch;}
.timeline-status{
  display:inline-flex;
  margin-top:0;
  padding:5px 10px;
  border-radius:999px;
  background:var(--orange-soft);
  color:var(--ink);
  font-size:.72rem;
  font-weight:700;
}
.timeline-toggle{
  grid-column:3;
  grid-row:1;
  align-self:start;
  justify-self:end;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:44px;
  height:44px;
  padding:10px;
  margin-top:0px;
  border-radius:50%;
  color:var(--ink);
  background:transparent;
  transition:color .16s ease;
}
.timeline-toggle:hover,
.timeline-toggle:active,
.timeline-toggle[aria-expanded="true"]{background:transparent;}
.timeline-toggle:hover{color:var(--orange-dark);}
.timeline-toggle:focus-visible{
  outline:none;
  box-shadow:inset 0 -2px 0 var(--orange-dark);
}
.timeline-toggle__icon{width:18px;height:18px;background:transparent;}
.timeline-toggle__icon::before{width:6px;height:6px;border-width:1.5px;}
.experience-details{
  grid-column:1 / 3;
  grid-row:2;
  max-width:58ch;
  margin-top:4px;
  padding-top:0;
  color:var(--ink-faint);
  font-size:.82rem;
  line-height:1.5;
  text-align:left;
}
.education-details{
  max-width:58ch;
  margin-top:6px;
  color:var(--ink-faint);
  font-size:.82rem;
  line-height:1.48;
  text-align:left;
}
.education-details .timeline-institution{margin-top:0;}
.experience-details p + *,
.experience-details ul + *,
.experience-details .experience-tools + *{margin-top:16px;}
.experience-details ul{padding-left:20px;list-style:disc;}
.experience-details li + li{margin-top:8px;}
.experience-details .experience-milestones{
  display:grid;
  gap:12px;
  margin-top:0;
  padding-left:0;
  list-style:none;
}
.experience-milestones li{
  position:relative;
  display:grid;
  grid-template-columns:44px minmax(0,1fr);
  gap:10px;
  margin:0;
  padding-left:13px;
}
.experience-milestones li::before{
  content:'';
  position:absolute;
  left:0;
  top:.62em;
  width:5px;
  height:5px;
  border-radius:50%;
  background:var(--orange);
}
.experience-milestones time{
  color:var(--orange-dark);
  font-weight:700;
}
.experience-details .experience-tools{margin-top:18px;}
.experience-project-link{display:inline-flex;min-height:44px;align-items:center;color:var(--ink);font-weight:700;text-decoration:underline;text-underline-offset:4px;}
.trajectory-languages{margin-top:var(--case-space-m);}
.trajectory-languages h4{font-family:var(--font-body);font-size:1.05rem;}
.trajectory-languages .pill-row{margin-top:var(--case-space-xs);}

.hobbies-section{padding-bottom:clamp(56px,8vw,88px);}
.hobbies-copy{max-width:720px;}
.hobbies-copy p{color:var(--ink-soft);max-width:68ch;}
.hobbies-pills{margin-top:24px;}

/* ---------- about hero / photo ---------- */
.about-hero{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:clamp(32px,6vw,80px);
  align-items:center;
}
.about-hero > *{min-width:0;}
.about-photo{
  position:relative;
  border-radius:var(--radius-l);
  overflow:hidden;
  aspect-ratio:4/5;
  background:var(--bg-soft);
}
.about-photo img{width:100%;height:100%;object-fit:cover;}
.about-photo .photo-corner{
  position:absolute;bottom:0;right:0;
  background:var(--orange);
  padding:16px 22px;
  border-radius:var(--radius-l) 0 0 0;
  font-family:var(--font-display);
  font-weight:600;
  font-size:.9rem;
  color:var(--ink);
  text-transform:none;
}

/* ---------- tool grid (herramientas) ---------- */
.tools-grid{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:16px;
  align-items:stretch;
}
.tool-card{
  width:100%;
  padding:24px 18px;
  border-radius:var(--radius-m);
  background:var(--surface);
  border:1px solid var(--line);
  transition:transform var(--transition), box-shadow var(--transition);
}
.tool-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-m);}
.tool-card .sq{
  position:relative;
  width:42px;height:42px;border-radius:10px;
  background:linear-gradient(160deg,#FFC15E,var(--orange));color:var(--ink);
  font-family:var(--font-display);
  font-weight:700;
  display:flex;align-items:center;justify-content:center;
  font-size:.85rem;
  margin-bottom:16px;
  overflow:hidden;
}
.tool-card .sq::before{
  content:'';position:absolute;inset:0;
  background:linear-gradient(160deg, rgba(255,255,255,.45) 0%, rgba(255,255,255,0) 50%);
  pointer-events:none;
}
.tool-card h4{font-size:1rem;text-transform:none;font-family:var(--font-body);font-weight:700;}
.tool-card p{margin-top:8px;color:var(--ink-soft);font-size:.88rem;}

.contact-location .availability{margin-bottom:24px;}
.contact-location__copy{max-width:68ch;color:var(--ink-soft);}
.contact-location__modes{margin-top:24px;}

/* ---------- contact bar (light CTA, replaces heavy black band) ---------- */
.contact-bar{
  background:var(--orange);
  border-radius:var(--radius-l);
  padding:clamp(30px,4vw,44px) clamp(28px,5vw,52px);
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:24px;
}
.contact-bar h3{
  font-size:clamp(1.5rem,3vw,2.1rem);
  color:var(--ink);
  max-width:520px;
}
.contact-bar .links{
  display:flex;flex-wrap:wrap;gap:12px;
}
.contact-bar .btn-navy:hover{background:var(--ink);color:var(--orange);}

/* ---------- contact page ---------- */
.contact-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:clamp(32px,6vw,80px);
}
.contact-grid > *{min-width:0;}
.contact-card{
  position:relative;
  padding:30px 28px;
  border-radius:var(--radius-m);
  border:1px solid var(--line);
  background:var(--surface);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  min-width:0;
  transition:transform var(--transition), box-shadow var(--transition), border-color var(--transition);
}
.contact-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-m);border-color:transparent;}
.contact-card .left{display:flex;align-items:center;gap:16px;min-width:0;flex:1;}
.contact-card .left > div{min-width:0;}
.contact-card .icon{
  width:48px;height:48px;border-radius:50%;
  background:var(--orange-soft);color:var(--orange-dark);
  display:flex;align-items:center;justify-content:center;flex:none;
}
.contact-card .icon svg{width:20px;height:20px;}
.contact-card .label{font-size:.8rem;color:var(--ink-faint);}
.contact-card .value{
  display:block;
  font-family:var(--font-display);font-weight:600;font-size:.78rem;
  margin-top:3px;text-transform:none;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  max-width:100%;
}
.contact-card .go{
  width:36px;height:36px;border-radius:50%;
  border:1.5px solid var(--line-strong);
  display:flex;align-items:center;justify-content:center;
  transition:background var(--transition), transform var(--transition), border-color var(--transition);
}
.contact-card .go svg{width:14px;height:14px;transition:transform var(--transition);}
.contact-card:hover .go{background:var(--ink);border-color:var(--ink);}
.contact-card:hover .go svg{transform:rotate(45deg);color:var(--orange);}

.availability{
  display:inline-flex;align-items:center;gap:10px;
  padding:10px 18px;border-radius:999px;
  background:var(--orange-soft);color:var(--orange-dark);
  font-size:.85rem;font-weight:700;
  margin-bottom:24px;
}
.availability .dot{width:8px;height:8px;border-radius:50%;background:#2E7D4F;position:relative;}
.availability .dot::after{
  content:'';position:absolute;inset:-4px;border-radius:50%;
  border:1.5px solid #2E7D4F;animation:pulse 2s infinite;
}
@keyframes pulse{
  0%{transform:scale(.6);opacity:1;}
  100%{transform:scale(1.8);opacity:0;}
}

/* ---------- footer ---------- */
.site-footer{
  padding-block:56px 40px;
  border-top:1px solid var(--line);
}
.footer-top{
  display:flex;flex-wrap:wrap;
  justify-content:space-between;
  gap:32px;
  padding-bottom:36px;
}
.footer-links{display:flex;flex-wrap:wrap;gap:8px;}
.footer-links a{
  padding:8px 14px;border-radius:999px;
  font-size:.88rem;color:var(--ink-soft);
  transition:background var(--transition), color var(--transition);
}
.footer-links a:hover{background:var(--bg-soft);color:var(--ink);}
.footer-bottom{
  display:flex;flex-wrap:wrap;
  justify-content:space-between;
  gap:12px;
  padding-top:24px;
  border-top:1px solid var(--line);
  font-size:.82rem;
  color:var(--ink-faint);
}

/* ---------- in-window page hero (proyectos/sobre/contacto) ---------- */
.page-hero{
  padding-top:26px;
  padding-bottom:clamp(28px,4vw,44px);
}

/* =========================================================
   OS SIMULATION CHROME — desktop / windows / dock / iOS
   ========================================================= */

:root{
  --menubar-h:52px;
  --dock-space:96px;
}

/* ---- boot screen (index.html only) ---- */
.boot-screen{
  position:fixed;inset:0;z-index:9999;
  background:var(--ink);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:26px;
  transition:opacity .1s ease, visibility .1s ease;
  animation:bootFallback .01s linear .36s forwards;
}
.boot-screen.is-hidden{opacity:0;visibility:hidden;pointer-events:none;}
.boot-logo{
  width:clamp(190px,17vw,260px);
  display:flex;
  align-items:center;
  justify-content:center;
}
.boot-logo img{
  width:100%;
  height:auto;
  display:block;
  object-fit:contain;
}
.boot-bar{width:160px;height:3px;border-radius:999px;background:rgba(255,255,255,.14);overflow:hidden;}
.boot-bar-fill{
  height:100%;width:0%;
  background:var(--orange);border-radius:999px;
  animation:bootFill .26s cubic-bezier(.16,1,.3,1) forwards;
}
@keyframes bootFill{ to{width:100%;} }
@keyframes bootFallback{to{opacity:0;visibility:hidden;pointer-events:none;}}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    scroll-behavior:auto !important;
    transition-duration:.01ms !important;
  }
  .boot-bar-fill{animation-duration:.01ms;}
}
@media (max-width:700px){
  :root{ --menubar-h:50px; --dock-space:92px; }
}

/* ---- wallpaper: static ambient colour field ---- */
.os-wallpaper{
  position:fixed;inset:0;
  z-index:-1;
  background-color:#EE9137;
  background-image:url("img/brand/wallpaper-static.webp");
  background-repeat:no-repeat;
  background-position:center;
  background-size:cover;
  contain:strict;
}

/* ---- menu bar (macOS) ---- */
.menu-bar{
  position:fixed;top:0;left:0;right:0;z-index:250;
  height:var(--menubar-h);
  display:flex;align-items:center;justify-content:space-between;
  padding-inline:22px;
  background:rgba(253,250,244,.94);
  border-bottom:1px solid rgba(255,255,255,.45);
}
.mb-left,.mb-right{display:flex;align-items:center;gap:22px;}
.mb-left{gap:11px;}
.apple-menu-wrap{position:relative;display:flex;}
.mb-appicon{
  width:44px;height:44px;flex:none;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;
  transition:transform var(--transition);
}
.mb-appicon:hover{transform:scale(1.1);}
.mb-appicon img{width:40px;height:24px;display:block;object-fit:contain;}
.mb-appname{
  font-family:var(--font-display);font-weight:700;font-size:.84rem;color:var(--ink);
  white-space:nowrap;
  transition:opacity var(--transition);
}
.mb-appname:hover{opacity:.65;}
.mb-right{gap:16px;}

.apple-menu{
  position:absolute;top:calc(100% + 12px);left:0;
  min-width:240px;
  background:rgba(253,250,244,.97);
  border:1px solid rgba(255,255,255,.6);
  border-radius:14px;
  box-shadow:var(--shadow-l);
  padding:8px;
  opacity:0;
  visibility:hidden;
  transform:translateY(-6px) scale(.96);
  transform-origin:top left;
  pointer-events:none;
  transition:opacity .16s ease, transform .16s cubic-bezier(.4,0,.2,1), visibility .16s ease;
  z-index:300;
}
.apple-menu.is-open{opacity:1;visibility:visible;transform:translateY(0) scale(1);pointer-events:auto;}
.apple-menu a{
  display:flex;align-items:center;gap:11px;
  padding:10px 12px;border-radius:9px;
  font-family:var(--font-body);
  font-size:.86rem;font-weight:600;color:var(--ink);
  transition:background var(--transition);
}
.apple-menu a:hover{background:rgba(23,22,43,.07);}
.apple-menu svg{width:16px;height:16px;color:var(--ink-soft);flex:none;}
.apple-menu .am-sep{height:1px;background:var(--line);margin:6px 6px;}
.mb-icons{display:flex;align-items:center;gap:8px;color:var(--ink-soft);}
.mb-icons svg{width:16px;height:16px;display:block;}
.mb-clock{
  font-size:.82rem;font-weight:700;color:var(--ink);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.mb-cv{
  padding:7px 15px;border-radius:999px;
  background:var(--ink);color:#fff;
  font-size:.78rem;font-weight:700;
  transition:background var(--transition), color var(--transition);
}
.mb-cv:hover{background:var(--orange);color:var(--ink);}

/* ---- dock (macOS) ---- */
.dock-wrap{
  position:fixed;left:0;right:0;bottom:16px;z-index:250;
  display:flex;justify-content:center;
  pointer-events:none;
}
.dock{
  pointer-events:auto;
  display:flex;align-items:flex-end;gap:10px;
  padding:10px 14px;
  border-radius:22px;
  background:rgba(255,255,255,.9);
  border:1px solid rgba(255,255,255,.5);
  box-shadow:var(--shadow-l);
}
.dock-icon{
  position:relative;
  width:46px;height:46px;
  border-radius:13px;
  display:flex;align-items:center;justify-content:center;
  color:#fff;
  transition:transform .16s cubic-bezier(.4,0,.2,1);
  transform-origin:bottom center;
  flex:none;
  z-index:1;
}
.dock-icon:hover{transform:scale(1.32) translateY(-8px);z-index:5;}
.dock-icon svg{width:21px;height:21px;}
.dock-icon.c-orange{background:var(--orange);color:var(--ink);}
.dock-icon.c-navy{background:var(--navy);}
.dock-icon.c-rust{background:var(--rust);}
.dock-icon.c-ink{background:var(--ink);}
.dock-icon::after{
  content:'';position:absolute;left:50%;bottom:-9px;translate:-50% 0;
  width:4px;height:4px;border-radius:50%;background:var(--ink);
  opacity:0;transition:opacity var(--transition);
}
.dock-icon.is-active::after{opacity:1;}
.dock-sep{width:1px;align-self:stretch;background:rgba(23,22,43,.15);margin:2px 4px;}
.dock-icon[data-tip]::before{
  content:attr(data-tip);
  position:absolute;bottom:calc(100% + 16px);left:50%;
  translate:-50% 4px;
  background:rgba(23,22,43,.94);color:#fff;
  font-family:var(--font-body);font-size:.72rem;font-weight:600;
  padding:5px 11px;border-radius:7px;white-space:nowrap;
  opacity:0;pointer-events:none;
  transition:opacity .15s ease, translate .15s ease;
  transition-delay:0s;
}
.dock-icon[data-tip]:hover::before{
  opacity:1;translate:-50% 0;
  transition-delay:.3s;
}

/* ---- desktop surface (index.html) — fixed, fills exactly between menu bar and dock ---- */
.desktop-surface{
  position:fixed;
  top:var(--menubar-h);left:0;right:0;bottom:0;
  padding:32px 40px calc(var(--dock-space) + 8px);
  display:flex;
  align-items:center;
  justify-content:flex-start;
}
.desktop-widget{
  position:relative;z-index:2;
  max-width:520px;
  border-radius:var(--radius-l);
  padding:clamp(24px,3.4vw,40px);
  box-shadow:var(--shadow-l);
  background:rgba(255,255,255,.9);
  border:1px solid rgba(255,255,255,.55);
}
.desktop-icons-layer{
  position:absolute;inset:0;
  pointer-events:none;
}
.desktop-icon{
  position:absolute;
  display:flex;flex-direction:column;align-items:center;gap:8px;
  width:96px;
  cursor:pointer;
  pointer-events:auto;
  -webkit-tap-highlight-color:transparent;
  user-select:none;
  z-index:1;
}
.desktop-icon:focus-visible{outline-color:#fff;}
.desktop-icon .dtxt{
  font-size:.82rem;font-weight:600;color:#fff;
  text-shadow:0 1px 5px rgba(0,0,0,.55);
  padding:3px 8px;border-radius:6px;
  transition:background var(--transition);
  text-align:center;
}
.desktop-icon.is-selected .dtxt{background:rgba(23,22,43,.45);}
.folder-icon{
  display:block;width:72px;height:58px;
  filter:drop-shadow(0 3px 4px rgba(23,22,43,.55)) drop-shadow(0 14px 22px rgba(23,22,43,.4));
  transition:transform .18s cubic-bezier(.4,0,.2,1);
}
.desktop-icon:hover .folder-icon,
.desktop-icon.is-selected .folder-icon{transform:translateY(-3px) scale(1.05);}
.folder-icon .glyph{color:rgba(255,255,255,.94);}
.file-icon{
  display:block;width:50px;height:62px;
  filter:drop-shadow(0 3px 4px rgba(23,22,43,.5)) drop-shadow(0 14px 22px rgba(23,22,43,.35));
  transition:transform .18s cubic-bezier(.4,0,.2,1);
}
.desktop-icon:hover .file-icon{transform:translateY(-3px) scale(1.05);}
.app-icon-sq{
  position:relative;
  display:flex;align-items:center;justify-content:center;
  width:66px;height:66px;border-radius:19px;
  filter:drop-shadow(0 3px 4px rgba(23,22,43,.5)) drop-shadow(0 14px 22px rgba(23,22,43,.4));
  transition:transform .18s cubic-bezier(.4,0,.2,1);
  border:1.5px solid rgba(255,255,255,.4);
  overflow:hidden;
}
.desktop-icon:hover .app-icon-sq,
.desktop-icon.is-selected .app-icon-sq{transform:translateY(-3px) scale(1.05);}
.desktop-icon.is-pressed .app-icon-sq,
.desktop-icon.is-pressed .folder-icon,
.desktop-icon.is-pressed .file-icon{animation:iconPress .16s cubic-bezier(.16,1,.3,1);}
@keyframes iconPress{50%{transform:scale(.92);}100%{transform:scale(1.04);}}
.app-icon-sq::before{
  content:'';position:absolute;inset:0;
  background:linear-gradient(160deg, rgba(255,255,255,.4) 0%, rgba(255,255,255,0) 42%),
             radial-gradient(circle at 78% 82%, rgba(0,0,0,.18) 0%, rgba(0,0,0,0) 55%);
  pointer-events:none;
}
.app-icon-sq svg{position:relative;width:30px;height:30px;color:#fff;filter:drop-shadow(0 1px 1px rgba(0,0,0,.25));}
.app-icon-sq.c-navy{background:linear-gradient(160deg,#3A3762,var(--navy));}
.app-icon-sq.c-rust{background:linear-gradient(160deg,#C56742,var(--rust));}

/* ---- os window (proyectos / sobre / contacto) — fixed, exact fit, internal scroll ---- */
.window-wrap{
  position:fixed;
  top:var(--menubar-h);left:0;right:0;bottom:0;
  padding:22px 28px calc(var(--dock-space) + 8px);
  display:flex;
}
.window-wrap.wrap-maximized{padding:0 0 calc(var(--dock-space) - 8px);}
.window-wrap.wrap-maximized > .container{max-width:none;padding-inline:0;}
.os-window{
  width:100%;max-width:1180px;margin-inline:auto;
  height:100%;
  display:flex;flex-direction:column;
  border-radius:20px;
  background:rgb(253,252,249);
  border:1px solid rgba(255,255,255,.6);
  box-shadow:var(--shadow-l);
  overflow:hidden;
  opacity:0;
  transform:translateY(10px) scale(.97);
  transition:border-radius .28s cubic-bezier(.16,1,.3,1),
             transform .24s cubic-bezier(.4,0,.2,1),
             opacity .18s ease;
}
.os-window.win-animate-in{
  animation:windowOpen .28s cubic-bezier(.16,1,.3,1) both;
}
.os-window.is-ready{opacity:1;transform:none;}
@keyframes windowOpen{
  0%{opacity:0;transform:translateY(10px) scale(.97);}
  100%{opacity:1;transform:scale(1);}
}
@media (prefers-reduced-motion: reduce){
  .os-window{opacity:1;transform:none;}
  .os-window.win-animate-in{animation:none;}
}
.os-window.is-maximized{max-width:none;border-radius:0;}
.window-wrap.is-minimized{pointer-events:none;}
.os-window.is-minimized{
  opacity:0;
  transform-origin:center bottom;
  transform:translateY(calc(100dvh - var(--menubar-h))) scale(.08);
}
.dock-icon.is-window-minimized::after{
  width:6px;
  height:6px;
  opacity:1;
  background:var(--orange);
}
.window-titlebar{
  position:relative;flex:none;
  display:flex;align-items:center;justify-content:center;
  padding:15px 20px;
  border-bottom:1px solid var(--line);
  background:rgba(247,244,236,.6);
}
.traffic-lights{
  position:absolute;
  left:20px;
  top:50%;
  translate:0 -50%;
  display:flex;
  align-items:center;
  gap:10px;
}
.tl{
  position:relative;
  width:14px;
  height:14px;
  flex:0 0 14px;
  border-radius:50%;
  transition:filter var(--transition);
}
.tl::before{content:'';position:absolute;inset:0;border-radius:50%;}
.tl::after{content:'';position:absolute;inset:-7px;border-radius:50%;}
.tl-red::before{background:#FF5F57;}
.tl-yellow::before{background:#FEBC2E;}
.tl-green::before{background:#28C840;}
.tl:hover::before{filter:brightness(1.12);}
.window-title{font-size:.86rem;font-weight:700;color:var(--ink-soft);}
.window-body{flex:1;min-height:0;overflow-y:auto;padding:8px clamp(20px,4vw,56px) clamp(40px,6vw,64px);}
.window-footer{
  padding-top:24px;margin-top:8px;
  border-top:1px solid var(--line);
  font-size:.82rem;color:var(--ink-faint);
  display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;
}

/* ---- iOS status bar + home screen (mobile) ---- */
.ios-statusbar{
  display:none;
  position:fixed;top:0;left:0;right:0;z-index:250;
  height:var(--menubar-h);
  align-items:center;justify-content:space-between;
  padding:0 24px;
  color:#fff;
}
.ios-statusbar .ios-time{font-size:.95rem;font-weight:700;text-shadow:0 1px 3px rgba(0,0,0,.3);font-variant-numeric:tabular-nums;}
.ios-statusbar .ios-icons{display:flex;align-items:center;gap:6px;}
.ios-statusbar svg{width:17px;height:12px;color:#fff;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3));}

.ios-home{
  display:none;
  position:fixed;top:var(--menubar-h);left:0;right:0;bottom:0;
  padding:24px 24px calc(var(--dock-space) + 8px);
  overflow-y:auto;
  flex-direction:column;
}
.ios-pitch{color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.35);margin-bottom:36px;}
.ios-pitch .hero-pills{gap:8px;margin-bottom:20px;text-shadow:none;}
.ios-pitch .hero-pills span{padding:8px 12px;font-size:.68rem;}
.ios-pitch .hero-pills .pill-outline{background:rgba(23,22,43,.5);border-color:#FFC15E;color:#FFF3DD;}
.ios-pitch h1{color:#fff;font-size:clamp(1.8rem,8.4vw,2.35rem);margin-top:0;}
.ios-pitch p{color:rgba(255,255,255,.9);margin-top:14px;font-size:.91rem;line-height:1.55;max-width:39ch;}
.ios-pitch .hero-actions{gap:10px;margin-top:22px;text-shadow:none;}
.ios-pitch .btn{padding:12px 17px;font-size:.8rem;}
.ios-pitch .btn-ghost{color:#fff;border-color:rgba(255,255,255,.72);background:rgba(23,22,43,.24);}
.ios-icon{display:flex;flex-direction:column;align-items:center;gap:7px;}
.ios-icon .sq{
  position:relative;
  width:100%;aspect-ratio:1;border-radius:23%;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 14px rgba(23,22,43,.25);
  color:#fff;
  overflow:hidden;
}
.ios-icon .sq::before{
  content:'';position:absolute;inset:0;
  background:linear-gradient(160deg, rgba(255,255,255,.4) 0%, rgba(255,255,255,0) 45%),
             radial-gradient(circle at 78% 82%, rgba(0,0,0,.16) 0%, rgba(0,0,0,0) 55%);
  pointer-events:none;
}
.ios-icon .sq svg{position:relative;width:44%;height:44%;filter:drop-shadow(0 1px 1px rgba(0,0,0,.2));}
.ios-icon .sq.c-orange{background:linear-gradient(160deg,#FFC15E,var(--orange));color:var(--ink);}
.ios-icon .sq.c-navy{background:linear-gradient(160deg,#3A3762,var(--navy));}
.ios-icon .sq.c-rust{background:linear-gradient(160deg,#C56742,var(--rust));}
.ios-icon .sq.c-ink{background:linear-gradient(160deg,#3A3762,var(--ink));}
.ios-icon .itxt{font-size:.72rem;font-weight:600;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.3);text-align:center;}

.ios-dock-wrap{
  display:none;
  position:fixed;left:16px;right:16px;bottom:16px;z-index:250;
  justify-content:center;
}
.ios-dock{
  display:flex;gap:clamp(6px,2.4vw,14px);
  padding:12px clamp(10px,3vw,16px);
  border-radius:24px;
  background:rgba(255,255,255,.9);
  border:1px solid rgba(255,255,255,.45);
}
.ios-dock .ios-icon{width:clamp(46px,13.5vw,56px);}
.ios-dock .itxt{
  display:block;
  font-size:.62rem;
  margin-top:1px;
  line-height:1.15;
}
.ios-icon.is-active .sq{outline:2px solid #fff;outline-offset:2px;}

/* ---------- responsive ---------- */
@media (max-width:980px){
  .project-grid, .project-grid.featured{grid-template-columns:repeat(2,1fr);}
  .bridge-grid, .about-hero, .contact-grid{grid-template-columns:1fr;}
  .lightbox-panel{grid-template-columns:1fr;overflow-y:auto;}
  .lightbox-media{aspect-ratio:4/3;max-height:50vh;}
  .lightbox-info{max-height:none;}
  .tools-grid{grid-template-columns:repeat(2,1fr);}
  .contact-bar{flex-direction:column;align-items:flex-start;}
  .desktop-widget{max-width:420px;}
}

@media (max-width:1180px) and (min-width:981px){
  .tools-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
}

/* ---- swap macOS chrome for iOS chrome below 700px ---- */
@media (max-width:700px){
  .menu-bar, .dock-wrap, .desktop-surface{display:none;}
  .traffic-lights{display:none;}
  .ios-statusbar{display:flex;}
  .ios-home{display:flex;}
  .ios-dock-wrap{display:flex;}
}
@media (hover:none){
  .dock-icon:hover{transform:none;}
  .project-card:hover,.tool-card:hover,.contact-card:hover{transform:none;box-shadow:none;}
}
@media (min-width:701px){
  .ios-statusbar,.ios-home,.ios-dock-wrap{display:none !important;}
}

@media (max-width:640px){
  .container{padding-inline:20px;}
  .project-grid, .project-grid.featured{grid-template-columns:1fr;}
  .timeline-item{grid-template-columns:80px 1fr;}
  .tools-grid{grid-template-columns:1fr 1fr;}
  .contact-card{padding:20px 18px;gap:10px;}
  .contact-card .left{gap:12px;}
  .contact-card .icon{width:40px;height:40px;}
  .contact-card .icon svg{width:17px;height:17px;}
  .contact-card .go{width:32px;height:32px;flex:none;}
  .contact-card .go svg{width:13px;height:13px;}
  .window-wrap{padding:10px 6px calc(var(--dock-space) + 8px);}
  .os-window{border-radius:16px;}
}

/* =========================================================
   PROJECT SYSTEM — listings and reusable case studies
   ========================================================= */

.tag-ux{background:var(--orange);color:var(--ink);}
.status{
  display:inline-flex;
  align-items:center;
  min-height:28px;
  padding:5px 11px;
  border-radius:999px;
  font-size:.74rem;
  font-weight:750;
  line-height:1.15;
  color:var(--ink);
  background:var(--bg-soft);
  border:1px solid var(--line-strong);
}
.status-in-progress{background:#FFF0C9;border-color:#D68C00;}
.status-prototype{background:#E7E6FF;border-color:#575281;}
.status-planned{background:#EEEAE1;border-color:#766F61;}
.status-published{background:#E8F3E8;border-color:#4D754D;}

.project-grid{
  display:grid;
  grid-template-columns:repeat(12,minmax(0,1fr));
  gap:24px;
  align-items:stretch;
}
.project-card{
  grid-column:span 6;
  display:flex;
  flex-direction:column;
  height:100%;
  min-width:0;
  overflow:hidden;
  border-radius:var(--radius-m);
  border:1px solid var(--line);
  background:var(--surface);
  color:var(--ink);
  box-shadow:none;
  transition:transform var(--transition),border-color var(--transition),background var(--transition);
}
.project-card--visual{grid-column:span 4;}
.project-card--planned{grid-column:span 4;background:var(--bg-soft);}
.project-card:hover{
  transform:translateY(-4px);
  border-color:var(--ink);
  box-shadow:none;
}
.project-card:focus-visible{outline:3px solid var(--orange-dark);outline-offset:4px;}
.project-card .thumb{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--bg-soft);}
.project-card .thumb img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.16,1,.3,1);}
.project-card .thumb--device img{object-position:center top;}
.project-card:hover .thumb img{transform:scale(1.035);}
.project-card .thumb .tag{position:absolute;top:14px;left:14px;}
.project-card .thumb .status{position:absolute;top:14px;right:14px;}
.project-card .info{
  display:flex;
  flex:1;
  flex-direction:column;
  align-items:flex-start;
  padding:clamp(20px,2.4vw,30px);
}
.project-card .info h2{
  margin-top:9px;
  font-size:clamp(1.12rem,1.6vw,1.45rem);
  line-height:1.25;
}
.project-card .info .desc{
  margin-top:12px;
  color:var(--ink-soft);
  font-size:.94rem;
  line-height:1.6;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:4;
  overflow:hidden;
}
.card-context{font-size:.78rem;font-weight:650;color:var(--ink-faint);}
.card-labels{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px;}
.card-labels--mobile{display:none;}
.project-card__footer{
  width:100%;
  margin-top:auto;
}
.card-details{
  width:100%;
  display:grid;
  gap:12px;
  padding-top:18px;
  margin-top:18px;
  border-top:1px solid var(--line);
}
.card-details span{font-size:.8rem;color:var(--ink-soft);}
.card-details strong{display:block;margin-bottom:3px;color:var(--ink);font-size:.72rem;}
.card-link{
  display:inline-flex;
  gap:8px;
  align-items:center;
  padding-top:22px;
  font-weight:750;
  font-size:.88rem;
}
.project-card:hover .card-link span{transform:translateX(3px);}
.card-link span{transition:transform var(--transition);}

.ux-cover{
  min-height:260px;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  padding:22px;
  background:var(--navy);
  color:#fff;
  position:relative;
  overflow:hidden;
}
.ux-cover::after{
  content:'';
  position:absolute;
  width:190px;height:190px;
  right:-64px;bottom:-70px;
  border:32px solid var(--orange);
  border-radius:50%;
  opacity:.9;
}
.ux-cover-bar{position:absolute;top:18px;left:20px;display:flex;gap:6px;}
.ux-cover-bar span{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.45);}
.ux-cover-type{font-size:.7rem;font-weight:750;letter-spacing:.08em;color:rgba(255,255,255,.72);}
.ux-cover strong{position:relative;z-index:1;max-width:14ch;margin-top:14px;font-family:var(--font-display);font-size:clamp(1.35rem,2.5vw,2.15rem);line-height:1.15;}
.ux-cover-state{position:relative;z-index:1;margin-top:14px;font-size:.78rem;color:rgba(255,255,255,.78);}
.project-card--planned .ux-cover{min-height:150px;background:var(--navy-soft);}
.project-card--planned .ux-cover::after{width:120px;height:120px;border-width:20px;opacity:.55;}
.project-card--planned .info h2{
  font-size:clamp(1.05rem,1.25vw,1.2rem);
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:3;
  overflow:hidden;
}
.project-card--planned .info .desc{-webkit-line-clamp:3;}
.project-card--planned .card-context{max-width:30ch;}

.filter-bar{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:32px;}
.filter-btn{min-height:44px;}
.filter-btn[aria-pressed="true"]{background:var(--orange);border-color:var(--orange);color:var(--ink);}

/* Case study */
.window-body--case{
  scroll-padding-top:var(--case-space-l);
  padding-inline:clamp(24px,4.5vw,64px);
  padding-bottom:calc(var(--case-space-l) + env(safe-area-inset-bottom));
}
.case-study{max-width:1040px;margin-inline:auto;padding-top:var(--case-space-m);}
.case-back{
  display:inline-flex;
  min-height:44px;
  align-items:center;
  font-size:.88rem;
  font-weight:700;
  color:var(--ink-soft);
}
.case-back:hover{color:var(--ink);}
.case-hero{padding:clamp(48px,7vw,88px) 0 clamp(48px,6vw,72px);}
.case-labels{display:flex;flex-wrap:wrap;gap:var(--case-space-xs);margin-bottom:var(--case-space-m);}
.case-hero h1{
  max-width:18ch;
  font-size:clamp(2.2rem,6.2vw,5.2rem);
  line-height:1.02;
  letter-spacing:-.025em;
  overflow-wrap:anywhere;
}
.case-lede{max-width:740px;margin-top:var(--case-space-m);color:var(--ink-soft);font-size:clamp(1.05rem,1.8vw,1.3rem);line-height:1.7;}
.case-meta{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:0 var(--case-space-m);
  margin-top:var(--case-space-l);
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.case-meta-item{padding:var(--case-space-s) 0;}
.case-meta-item dt{font-size:.72rem;font-weight:750;color:var(--ink-faint);margin-bottom:8px;}
.case-meta-item dd{font-size:.9rem;color:var(--ink);line-height:1.5;}
.case-actions{display:flex;flex-wrap:wrap;gap:var(--case-space-xs);margin-top:var(--case-space-m);}
.case-cover{margin-top:var(--case-space-l);overflow:hidden;border-radius:var(--radius-m);background:var(--bg-soft);}
.case-cover--intro{margin-bottom:var(--case-space-l);}
.case-cover img{width:100%;max-height:720px;object-fit:cover;}
.case-cover--device{
  display:grid;
  place-items:center;
  padding:clamp(18px,4vw,40px);
  background:#070A12;
}
.case-cover--device img{
  width:auto;
  height:auto;
  max-width:100%;
  max-height:min(72dvh,720px);
  object-fit:contain;
}

.case-index{
  position:relative;
  display:block;
  padding-block:var(--case-space-m);
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.case-index > span{display:block;margin-bottom:var(--case-space-s);font-size:.78rem;font-weight:750;color:var(--ink-faint);}
.case-index__list{display:flex;flex-wrap:wrap;gap:10px 12px;list-style:none;padding:0;}
.case-index__list li{display:flex;min-width:0;max-width:100%;}
.case-index__link{
  display:inline-flex;
  align-items:center;
  gap:8px;
  min-height:44px;
  padding:9px 14px;
  border:1px solid var(--line);
  border-radius:999px;
  color:var(--ink-soft);
  font-size:.78rem;
  font-weight:700;
  line-height:1.25;
  max-width:100%;
  white-space:normal;
}
.case-index__link > span:last-child{min-width:0;overflow-wrap:anywhere;}
.case-index__number{color:var(--orange-dark);font-family:var(--font-display);font-size:.7rem;}
.case-index__link:hover{border-color:var(--orange-dark);color:var(--ink);}

.case-content{padding-top:var(--case-space-s);}
.case-section{
  display:grid;
  grid-template-columns:minmax(180px,.58fr) minmax(0,1.42fr);
  gap:clamp(48px,7vw,88px);
  padding-block:clamp(72px,8vw,104px);
  border-bottom:1px solid var(--line);
  scroll-margin-top:var(--case-space-m);
}
.case-section__heading{align-self:start;}
.case-section__number{display:block;margin-bottom:var(--case-space-xs);font-family:var(--font-display);font-size:.74rem;font-weight:700;color:var(--orange-dark);}
.case-section-heading h2{font-size:clamp(1.45rem,2.8vw,2.25rem);line-height:1.2;overflow-wrap:anywhere;text-wrap:balance;}
.case-section-body{width:100%;max-width:740px;color:var(--ink-soft);font-size:1rem;line-height:1.78;}
.case-section-body p + p{margin-top:var(--case-space-s);}
.case-list{display:flex;flex-direction:column;gap:16px;}
.case-list li{position:relative;padding-left:24px;}
.case-list li::before{content:'→';position:absolute;left:0;color:var(--orange-dark);font-weight:800;}
ol.case-list{counter-reset:roadmap;}
ol.case-list{list-style:none;padding-left:0;}
ol.case-list li{counter-increment:roadmap;padding:18px 0;border-bottom:1px solid var(--line);}
ol.case-list li::before{content:counter(roadmap,decimal-leading-zero);position:static;display:inline-block;width:42px;font-family:var(--font-display);font-size:.72rem;}

.decision-list,.feature-list,.iteration-list{display:flex;flex-direction:column;gap:0;}
.decision-item,.feature-item,.iteration-item{padding:var(--case-space-m) 0;border-top:1px solid var(--line);}
.decision-item:last-child,.feature-item:last-child,.iteration-item:last-child{border-bottom:1px solid var(--line);}
.decision-item h3,.feature-item h3,.iteration-item h3{font-family:var(--font-body);font-size:1.05rem;line-height:1.4;color:var(--ink);}
.decision-item p,.feature-item p,.iteration-item p{margin-top:var(--case-space-xs);}
.feature-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;}
.feature-item ul{display:flex;flex-wrap:wrap;gap:8px;margin-top:var(--case-space-s);}
.feature-item li{padding:7px 11px;border-radius:999px;background:var(--bg-soft);font-size:.8rem;color:var(--ink);}
.iteration-item > span{display:block;margin-bottom:8px;font-family:var(--font-display);font-size:.76rem;color:var(--orange-dark);}
.insight-list,.test-result-list{display:flex;flex-direction:column;gap:14px;}
.insight-item{padding:22px;border-radius:var(--radius-m);background:var(--navy);color:#fff;}
.insight-item p{font-size:1.08rem;line-height:1.65;}
.insight-item cite{display:block;margin-top:14px;color:rgba(255,255,255,.7);font-size:.78rem;font-style:normal;}
.case-media-grid,
.case-device-grid{
  display:grid;
  gap:var(--case-space-s);
  margin-block:var(--case-space-m);
}
.case-media-grid--wide{grid-template-columns:1fr;}
.case-media-grid--2{grid-template-columns:repeat(2,minmax(0,1fr));}
.case-media-grid--3{grid-template-columns:repeat(3,minmax(0,1fr));}
.case-device-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:start;}
.case-media{min-width:0;}
.case-media .case-gallery-item{
  border:1px solid var(--line);
  background:var(--bg-soft);
}
.case-media--wide .case-gallery-item{aspect-ratio:16/9;}
.case-media--device{max-width:320px;margin-inline:auto;}
.case-media--device .case-gallery-item{
  position:relative;
  aspect-ratio:auto;
  max-width:300px;
  margin-inline:auto;
  padding:7px;
  overflow:hidden;
  border:3px solid #171922;
  border-radius:38px;
  background:#05060a;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.18),0 5px 8px rgba(23,22,43,.18);
}
.case-media--device .case-gallery-item::before{
  content:'';
  position:absolute;
  z-index:2;
  top:13px;
  left:50%;
  width:27%;
  height:18px;
  border-radius:999px;
  background:#05060a;
  transform:translateX(-50%);
  pointer-events:none;
}
.case-media--device .case-gallery-item::after{
  content:'';
  position:absolute;
  z-index:2;
  left:50%;
  bottom:12px;
  width:30%;
  height:4px;
  border-radius:999px;
  background:rgba(255,255,255,.78);
  transform:translateX(-50%);
  pointer-events:none;
}
.case-media--device .case-gallery-item img{
  display:block;
  width:100%;
  height:auto;
  aspect-ratio:390/844;
  border-radius:29px;
  object-fit:contain;
}
.case-media--device .case-gallery-item:hover img{transform:none;}
.case-media--device figcaption{max-width:300px;margin:12px auto 0;text-align:center;}
.case-media figcaption,
.comparison-item figcaption{margin-top:10px;font-size:.78rem;line-height:1.5;color:var(--ink-faint);}
.comparison-list{display:flex;flex-direction:column;gap:var(--case-space-l);}
.comparison-item h3{font-family:var(--font-body);font-size:1rem;color:var(--ink);margin-bottom:var(--case-space-s);}
.comparison-item > div,
.case-comparison > div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--case-space-s);}
.comparison-item img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius-s);}
.test-result-item{padding:20px 0;border-top:1px solid var(--line);}
.test-result-item:last-child{border-bottom:1px solid var(--line);}
.test-result-item h3{font-family:var(--font-body);font-size:1rem;color:var(--ink);}
.test-result-item p{margin-top:8px;}

.case-gallery-section{grid-template-columns:1fr;gap:var(--case-space-m);}
.case-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--case-space-s);}
.case-gallery figure{min-width:0;}
.case-gallery-item{
  width:100%;
  display:block;
  overflow:hidden;
  border-radius:var(--radius-s);
  background:var(--bg-soft);
  aspect-ratio:4/3;
}
.case-gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .28s cubic-bezier(.16,1,.3,1);}
.case-gallery-item:hover img{transform:scale(1.035);}
.case-gallery figcaption{margin-top:8px;font-size:.78rem;color:var(--ink-faint);}

.case-video-section{grid-template-columns:1fr;gap:var(--case-space-m);}
.case-video-list{display:grid;gap:var(--case-space-m);}
.case-video{min-width:0;}
.case-video-frame{
  width:100%;
  overflow:hidden;
  border-radius:var(--radius-s);
  aspect-ratio:16/9;
  background:var(--ink);
}
.case-video video{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  background:var(--ink);
}
.case-video figcaption{
  display:flex;
  flex-wrap:wrap;
  gap:6px 12px;
  margin-top:12px;
  color:var(--ink-faint);
  font-size:.82rem;
  line-height:1.5;
}
.case-video figcaption strong{color:var(--ink);font-weight:700;}

.case-pagination{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--case-space-s);
  padding-block:clamp(72px,8vw,104px) var(--case-space-m);
}
.case-pagination a{display:flex;flex-direction:column;gap:10px;padding:var(--case-space-m);border-radius:var(--radius-m);background:var(--navy);color:#fff;}
.case-pagination a:last-child{text-align:right;align-items:flex-end;}
.case-pagination span{font-size:.72rem;color:rgba(255,255,255,.68);}
.case-pagination strong{max-width:28ch;font-family:var(--font-display);font-size:.92rem;line-height:1.45;}
.case-pagination a:hover{background:var(--orange);color:var(--ink);}
.case-pagination a:hover span{color:var(--ink-soft);}

.case-empty{min-height:60vh;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;max-width:680px;margin-inline:auto;}
.case-empty .outline-num{font-size:clamp(4rem,12vw,8rem);line-height:1;}
.case-empty h1{font-size:clamp(1.7rem,4vw,3rem);margin-top:18px;}
.case-empty p{max-width:60ch;margin-top:16px;color:var(--ink-soft);}
.case-empty .btn{margin-top:28px;}

/* Accessible image viewer */
.media-dialog{
  position:fixed;
  inset:0;
  width:100vw;
  height:100dvh;
  max-width:none;
  max-height:none;
  margin:auto;
  padding:clamp(16px,4vw,48px);
  border:0;
  border-radius:0;
  background:transparent;
  color:#fff;
  overflow:hidden;
  overscroll-behavior:contain;
}
.media-dialog[open]{display:grid;place-items:center;}
.media-dialog::backdrop{
  position:fixed;
  inset:0;
  background:rgba(10,9,24,.88);
}
.media-dialog-panel{
  position:relative;
  width:min(1100px,100%);
  height:min(820px,100%);
  max-height:100%;
  margin:auto;
  display:grid;
  grid-template-columns:minmax(0,1fr);
  padding:64px 18px 24px;
  border-radius:var(--radius-m);
  background:var(--navy);
  overflow:hidden;
}
.media-dialog figure{
  width:100%;
  height:100%;
  min-width:0;
  min-height:0;
  display:grid;
  grid-template-rows:minmax(0,1fr) auto;
  gap:12px;
  place-items:center;
  text-align:center;
}
.media-dialog-stage{
  width:100%;
  height:100%;
  min-width:0;
  min-height:0;
  display:grid;
  grid-template-columns:52px minmax(0,1fr) 52px;
  align-items:center;
}
.media-dialog-media{
  position:relative;
  width:100%;
  height:100%;
  min-width:0;
  min-height:0;
  display:grid;
  place-items:center;
  overflow:hidden;
}
.media-dialog img{
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  max-width:none;
  max-height:none;
  margin:auto;
  object-fit:contain;
  object-position:center;
}
.media-dialog figcaption{min-height:1.5em;color:rgba(255,255,255,.72);font-size:.8rem;text-align:center;}
.media-dialog-close{position:absolute;top:12px;right:12px;width:44px;height:44px;border-radius:50%;background:#fff;color:var(--ink);font-size:1.5rem;}
.media-dialog-nav{width:44px;height:44px;align-self:center;justify-self:center;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;}
.media-dialog-nav:hover{background:var(--orange);color:var(--ink);}
.media-viewer-open{overflow:hidden;overscroll-behavior:none;}
.media-viewer-open .window-body,
.media-viewer-open .ios-home{overflow:hidden;}

@media (max-width:980px){
  .project-grid{grid-template-columns:repeat(12,minmax(0,1fr));}
  .project-card,.project-card--visual,.project-card--planned{grid-column:span 6;}
  .trajectory-grid{grid-template-columns:1fr;gap:var(--case-space-l);}
  .trajectory-column + .trajectory-column{padding-left:0;border-left:0;padding-top:var(--case-space-l);border-top:1px solid var(--line);}
  .trajectory-column__title{min-height:0;}
  .case-section{grid-template-columns:1fr;gap:var(--case-space-m);}
  .case-section-heading{max-width:580px;}
}

@media (max-width:700px){
  .traffic-lights{left:18px;gap:9px;}
  .window-wrap{padding-bottom:calc(var(--mobile-dock-height) + 20px + env(safe-area-inset-bottom));}
  .window-body{padding-inline:24px;padding-bottom:calc(56px + env(safe-area-inset-bottom));}
  .window-body--case{padding-inline:24px;padding-bottom:calc(64px + env(safe-area-inset-bottom));}
  .ios-home{padding-inline:24px;padding-bottom:calc(var(--mobile-dock-height) + 28px + env(safe-area-inset-bottom));}
  .page-hero{padding-top:18px;padding-bottom:24px;}
  .page-hero .lede{margin-top:16px !important;font-size:.96rem;line-height:1.55;}
  .filter-bar{
    flex-wrap:wrap;
    justify-content:center;
    overflow:visible;
    margin-inline:0;
    margin-bottom:24px;
    padding:0;
    gap:8px;
  }
  .filter-btn{flex:none;min-height:40px;padding:8px 12px;font-size:.78rem;line-height:1.2;text-align:center;}
  .case-study{padding-top:8px;}
  .case-hero{padding:var(--case-space-l) 0 clamp(56px,15vw,72px);}
  .case-hero h1{max-width:100%;font-size:clamp(1.8rem,8.8vw,3rem);line-height:1.08;text-align:center;}
  .case-lede{margin-top:24px;font-size:1rem;line-height:1.68;}
  .case-labels{justify-content:center;gap:8px;margin-bottom:24px;}
  .case-actions{justify-content:center;}
  .case-index{padding-block:var(--case-space-m);}
  .case-index > span{text-align:center;margin-bottom:16px;}
  .case-index__list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
  .case-index__list li{width:100%;}
  .case-index__link{width:100%;justify-content:center;white-space:normal;padding:9px 12px;font-size:.74rem;text-align:center;}
  .case-content{padding-top:0;}
  .case-section{gap:var(--case-space-m);padding-block:clamp(56px,14vw,72px);}
  .case-section__heading{text-align:center;max-width:none;}
  .case-section__number{margin-bottom:10px;}
  .case-section-heading h2{font-size:clamp(1.4rem,6.2vw,1.9rem);}
  .case-section-body{font-size:.96rem;line-height:1.75;}
  .case-gallery{grid-template-columns:1fr;}
  .case-media-grid--2,.case-media-grid--3,.case-device-grid,.comparison-item > div,.case-comparison > div{grid-template-columns:1fr;}
  .case-media-grid,.case-device-grid{margin-block:var(--case-space-m);gap:var(--case-space-s);}
  .case-pagination{grid-template-columns:1fr;}
  .case-pagination a:last-child{text-align:left;align-items:flex-start;}
  .media-dialog{padding:12px;}
  .media-dialog-panel{width:100%;height:100%;padding:60px 4px 18px;}
  .media-dialog-stage{grid-template-columns:44px minmax(0,1fr) 44px;}
  .media-dialog-close{top:8px;right:8px;}
  .media-dialog figcaption{font-size:.74rem;}

  .hero-pills,
  .pill-row,
  .card-labels,
  .case-labels,
  .feature-item ul{justify-content:center;align-items:center;gap:8px;text-align:center;}
  .hero-pills > *,
  .pill,
  .tag,
  .status{width:auto;max-width:100%;font-size:.76rem;line-height:1.2;padding:8px 12px;text-align:center;}
  .hero-pills .pill-solid,
  .hero-pills .pill-outline{min-height:36px;padding:8px 12px;font-size:.74rem;line-height:1.2;justify-content:center;}
  .tag::before{width:5px;height:5px;}
  .availability{display:flex;width:max-content;max-width:100%;margin-inline:auto;text-align:center;}
  .contact-bar{align-items:center;text-align:center;padding:28px 22px;border-radius:var(--radius-m);}
  .contact-bar h3{font-size:clamp(1.2rem,5.8vw,1.5rem);line-height:1.25;}
  .contact-bar .links{width:100%;justify-content:center;}

  .project-card .thumb > .tag,
  .project-card .thumb > .status{display:none;}
  .card-labels--mobile{display:flex;}
  .project-card .info{align-items:stretch;}
  .project-card .info > h2{text-align:center;}
  .project-card .info .card-context{text-align:center;}
  .project-card .info .desc{display:block;overflow:visible;text-align:left;}
  .project-card--planned .info h2{display:block;overflow:visible;font-size:1.12rem;}
  .project-card--planned .info .desc{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;}
  .card-link{justify-content:center;}

  .section-heading{text-align:center;}
  .collapsible-section__trigger{
    grid-template-columns:40px minmax(0,1fr) 40px;
    gap:8px;
    min-height:64px;
    padding:10px 0 14px;
    text-align:center;
  }
  .collapsible-section__trigger::before{content:'';display:block;grid-column:1;grid-row:1;}
  .section-heading__copy{grid-column:2;grid-row:1;align-items:center;gap:10px;}
  .collapsible-section__icon{grid-column:3;grid-row:1;width:40px;height:40px;}
  .section-heading__eyebrow{justify-content:center;font-size:.72rem;letter-spacing:.1em;}
  .section-heading__title{max-width:24ch;font-size:clamp(1.2rem,5.5vw,1.55rem);line-height:1.25;}
  .collapsible-section__content{padding-top:28px;}
  .collapsible-section--compact .collapsible-section__content{padding-top:18px;}

  .trajectory-column__title{text-align:center;min-height:0;font-size:clamp(1.15rem,5vw,1.4rem);}
  .timeline{gap:0;}
  .timeline-item{
    grid-template-columns:minmax(0,1fr) 44px;
    column-gap:6px;
    row-gap:7px;
    padding:18px 8px;
    text-align:center;
  }
  .timeline--experience .timeline-item{
    grid-template-columns:minmax(0,1fr) 44px;
    column-gap:6px;
  }
  .timeline-item > .timeline-year,
  .timeline-meta{grid-column:1;grid-row:1;justify-self:center;}
  .timeline-meta{align-items:center;}
  .timeline-content{grid-column:1;grid-row:2;}
  .timeline-toggle{grid-column:2;grid-row:1 / span 2;align-self:center;justify-self:end;}
  .experience-details{grid-column:1 / -1;grid-row:3;margin-top:8px;}
  .timeline-year{padding-left:0;}
  .timeline-year--vertical{align-items:center;}
  .timeline-title,
  .timeline-company,
  .timeline-institution,
  .timeline-summary{text-align:center;}
  .timeline-summary{margin-inline:auto;}
  .timeline-status{margin-inline:auto;}
  .experience-details,
  .experience-details p,
  .experience-details ul,
  .education-details,
  .education-details p{text-align:left;}
  .trajectory-languages{text-align:center;}
  .hobbies-copy{max-width:none;}
  .hobbies-copy p,
  .contact-location__copy{text-align:left;}

  .tools-grid{grid-template-columns:1fr;gap:14px;}
  .tool-card{padding:22px 20px;text-align:center;}
  .tool-card .sq{margin:0 auto 16px;}
  .tool-card h4,
  .tool-card p{text-align:center;}
}

@media (max-width:640px){
  .project-card,.project-card--visual,.project-card--planned{grid-column:1/-1;}
  .ux-cover{min-height:210px;}
  .project-card--planned .ux-cover{min-height:132px;}
  .project-card .info{padding:20px;}
  .card-details{grid-template-columns:1fr;}
  .case-meta{grid-template-columns:1fr;}
  .case-meta-item{padding:15px 0;border-bottom:1px solid var(--line);}
  .feature-heading{flex-direction:column;gap:10px;}
  .ios-dock-wrap{left:0;right:0;bottom:max(8px,env(safe-area-inset-bottom));padding-inline:10px;}
  .ios-dock{
    width:fit-content;
    max-width:100%;
    display:grid;
    grid-template-columns:repeat(5,52px);
    align-items:start;
    gap:2px;
    padding:8px;
  }
  .ios-dock .ios-icon{width:52px;min-width:0;gap:5px;}
  .ios-dock .ios-icon .sq{width:46px;height:46px;aspect-ratio:auto;}
  .ios-dock .itxt{max-width:100%;font-size:.6rem;line-height:1.1;white-space:nowrap;text-align:center;}
  .ios-icon.is-active .sq{outline:0;box-shadow:inset 0 0 0 2px #fff,0 6px 14px rgba(23,22,43,.25);}
}

@media (max-width:430px){
  .window-title{font-size:.72rem;}
  .case-index__list{grid-template-columns:1fr;}
  .case-index__link{justify-content:center;text-align:center;}
  .timeline{margin-top:24px;}
  .trajectory-section{padding-block:56px;}
}

@media (hover:none){
  .project-card:hover{transform:none;}
  .project-card:hover .thumb img,.case-gallery-item:hover img{transform:none;}
}

@media (prefers-reduced-motion:reduce){
  .boot-screen{display:none !important;}
  .case-index{scroll-behavior:auto;}
}

/* =========================================================
   HOME — presentation + recent work Finder window
   ========================================================= */

.home-surface{
  position:fixed;
  inset:var(--menubar-h) 0 0;
  z-index:1;
  padding:28px 124px calc(var(--dock-space) + 12px) 36px;
  overflow-x:hidden;
  overflow-y:auto;
  overscroll-behavior:contain;
}
.home-stage{
  width:min(1280px,100%);
  min-height:100%;
  margin-inline:auto;
  display:grid;
  grid-template-columns:minmax(0,48fr) minmax(0,52fr);
  align-items:center;
  gap:clamp(28px,4vw,64px);
}
.home-stage > *{min-width:0;max-width:100%;}
.home-intro.desktop-widget{
  width:100%;
  max-width:none;
  padding:clamp(28px,3.2vw,46px);
  border-radius:clamp(22px,2.2vw,30px);
}
.home-intro .hero-pills{margin-bottom:clamp(22px,2.3vw,30px);}
.home-pill{
  min-height:36px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:8px 14px;
  border:1px solid rgba(23,22,43,.16);
  border-radius:999px;
  background:rgba(255,255,255,.68);
  color:var(--ink);
  font-size:.76rem;
  font-weight:750;
  line-height:1.2;
  box-shadow:var(--shadow-s);
}
.home-title{
  max-width:none;
  font-size:clamp(2.1rem,2.5vw,2.3rem);
  line-height:1.05;
  letter-spacing:-.035em;
}
.home-title .split-line > span{white-space:nowrap;}
.home-title .split-line + .split-line{margin-top:.12em;}
.home-lede{
  max-width:52ch;
  margin-top:clamp(22px,2.2vw,30px);
  color:var(--ink-soft);
  font-size:clamp(1rem,1.15vw,1.13rem);
  font-weight:500;
  line-height:1.68;
}
.home-intro .hero-actions{margin-top:clamp(26px,2.8vw,36px);}
.home-availability{
  display:flex;
  align-items:center;
  gap:9px;
  margin-top:22px;
  color:var(--ink-faint);
  font-size:.78rem;
  font-weight:650;
  line-height:1.45;
}
.home-availability__dot{
  width:8px;
  height:8px;
  flex:0 0 8px;
  border-radius:50%;
  background:#4D9A65;
  box-shadow:0 0 0 4px rgba(77,154,101,.12);
}

.recent-window{
  position:relative;
  z-index:3;
  width:100%;
  min-width:0;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.64);
  border-radius:22px;
  background:rgba(253,252,249,.97);
  box-shadow:0 34px 80px rgba(23,22,43,.28),0 8px 22px rgba(23,22,43,.14);
}
.recent-window__titlebar{
  position:relative;
  min-height:48px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:10px 20px;
  border-bottom:1px solid var(--line);
  background:rgba(247,244,236,.84);
}
.recent-window__titlebar h2{
  color:var(--ink-soft);
  font-family:var(--font-body);
  font-size:.82rem;
  font-weight:750;
  line-height:1.2;
}
.recent-window__workspace{
  min-width:0;
  display:grid;
  grid-template-columns:clamp(166px,15vw,194px) minmax(0,1fr);
}
.recent-project-list{
  min-width:0;
  padding:14px 10px;
  border-right:1px solid var(--line);
  background:rgba(247,244,236,.62);
}
.recent-project{
  position:relative;
  width:100%;
  min-width:0;
  display:grid;
  grid-template-columns:28px minmax(0,1fr);
  align-items:center;
  gap:9px;
  padding:10px 24px 10px 9px;
  border-radius:9px;
  text-align:left;
  transition:background var(--transition),box-shadow var(--transition),transform var(--transition);
}
.recent-project + .recent-project{margin-top:4px;}
.recent-project:hover{background:rgba(23,22,43,.06);}
.recent-project[aria-pressed="true"]{
  background:var(--ink);
  color:#fff;
  box-shadow:0 7px 16px rgba(23,22,43,.16);
}
.recent-project[aria-pressed="true"]::after{
  content:'\2713';
  position:absolute;
  right:9px;
  top:50%;
  translate:0 -50%;
  font-size:.68rem;
  font-weight:800;
  color:var(--orange);
}
.recent-project__icon{
  position:relative;
  width:26px;
  height:20px;
  border-radius:4px;
  background:var(--orange);
  box-shadow:inset 0 0 0 1px rgba(23,22,43,.1);
}
.recent-project__icon::before{
  content:'';
  position:absolute;
  left:3px;
  top:-3px;
  width:11px;
  height:5px;
  border-radius:3px 3px 0 0;
  background:#FFC15E;
}
.recent-project__icon--image{background:var(--rust);}
.recent-project__icon--image::before{background:#C56742;}
.recent-project__copy{min-width:0;display:block;}
.recent-project__copy strong,
.recent-project__copy small{display:block;overflow:hidden;text-overflow:ellipsis;}
.recent-project__copy strong{font-size:.74rem;font-weight:750;line-height:1.3;white-space:normal;}
.recent-project__copy small{margin-top:2px;color:currentColor;font-size:.62rem;line-height:1.3;opacity:.66;white-space:nowrap;}
.recent-project__name-short,
.recent-preview__link-label-short{display:none;}

.recent-preview{
  min-width:0;
  padding:clamp(14px,1.6vw,22px);
  transition:opacity .18s ease,transform .18s ease;
}
.recent-preview.is-changing{opacity:.25;transform:translateY(4px);}
.recent-preview__media{
  position:relative;
  width:100%;
  aspect-ratio:16/9;
  min-height:0;
  overflow:hidden;
  border:1px solid rgba(23,22,43,.12);
  border-radius:14px;
  background:var(--bg-soft);
}
.recent-preview__media--image{display:grid;place-items:center;background:#E5E1D9;}
.recent-preview__media--image img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
}
.recent-preview__media--device img{object-position:center top;}
.recent-preview__media--ux{
  isolation:isolate;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:flex-start;
  padding:clamp(22px,3vw,38px);
  background:
    radial-gradient(circle at 84% 30%,rgba(244,155,0,.3) 0 13%,transparent 13.5%),
    radial-gradient(circle at 87% 34%,transparent 0 20%,rgba(255,255,255,.12) 20.5% 22%,transparent 22.5%),
    linear-gradient(145deg,#24213E 0%,var(--ink) 64%,#11101F 100%);
  color:#fff;
}
.recent-preview__media--ux::after{
  content:'';
  position:absolute;
  z-index:-1;
  right:-8%;
  bottom:-35%;
  width:48%;
  aspect-ratio:1;
  border:clamp(14px,2vw,24px) solid rgba(244,155,0,.18);
  border-radius:50%;
}
.recent-preview__media--ux strong{
  max-width:12ch;
  margin-top:10px;
  font-family:var(--font-display);
  font-size:clamp(1.35rem,2.4vw,2.15rem);
  line-height:1.08;
}
.recent-preview__media-type{
  color:rgba(255,255,255,.68);
  font-size:.67rem;
  font-weight:750;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.recent-preview__media-status{margin-top:12px;color:rgba(255,255,255,.72);font-size:.73rem;font-weight:650;}
.recent-preview__details{padding:clamp(16px,1.8vw,24px) 2px 2px;}
.recent-preview__labels{display:flex;flex-wrap:wrap;align-items:center;gap:7px;}
.recent-preview__labels .tag,
.recent-preview__labels .status{width:auto;min-height:27px;padding:5px 10px;font-size:.67rem;line-height:1.2;}
.recent-preview__details h3{margin-top:14px;font-size:clamp(1.2rem,1.7vw,1.58rem);line-height:1.15;}
.recent-preview__details > p{margin-top:7px;color:var(--ink-soft);font-size:.84rem;font-weight:600;line-height:1.45;}
.recent-preview__tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px;}
.recent-preview__tags span{
  padding:5px 9px;
  border:1px solid var(--line);
  border-radius:999px;
  color:var(--ink-faint);
  background:var(--bg-soft);
  font-size:.65rem;
  font-weight:650;
  line-height:1.2;
}
.recent-preview__link{width:max-content;margin-top:18px;}

@media (max-width:1100px){
  .home-surface{padding-right:32px;padding-left:32px;}
  .home-stage{width:min(740px,100%);grid-template-columns:minmax(0,1fr);gap:30px;}
  .home-title{font-size:clamp(2.35rem,6vw,3.4rem);}
  .home-intro.desktop-widget{min-width:0;padding:30px;}
}

@media (max-width:920px){
  .home-surface{padding:28px 32px calc(var(--dock-space) + 18px);}
  .home-stage{width:min(740px,100%);grid-template-columns:1fr;gap:30px;}
  .home-intro.desktop-widget{max-width:none;}
  .home-title{font-size:clamp(2.35rem,6vw,3.4rem);}
}

@media (max-width:700px){
  .home-surface{
    inset:var(--menubar-h) 0 0;
    padding:8px 14px calc(var(--mobile-dock-height) + 18px + env(safe-area-inset-bottom));
    overflow-y:hidden;
  }
  .home-stage{
    height:100%;
    min-height:0;
    display:grid;
    grid-template-columns:minmax(0,1fr);
    grid-template-rows:auto auto;
    align-content:center;
    gap:10px;
  }
  .home-intro.desktop-widget{
    padding:16px 18px;
    border-radius:16px;
    background:rgba(255,255,255,.88);
    translate:0 -12px;
  }
  .home-intro .hero-pills{justify-content:center;margin-bottom:10px;gap:5px;}
  .home-pill{min-height:28px;padding:5px 9px;font-size:.64rem;text-align:center;}
  .home-title{
    max-width:none;
    font-size:clamp(1.8rem,4.8vw,2.1rem);
    line-height:1.04;
    text-align:center;
  }
  .home-title .split-line + .split-line{margin-top:.04em;}
  .home-lede{max-width:48ch;margin-top:10px;font-size:.78rem;line-height:1.42;text-align:left;}
  .home-intro .hero-actions{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    justify-content:center;
    gap:6px;
    margin-top:12px;
  }
  .home-intro .btn{min-width:0;min-height:38px;justify-content:center;padding:7px 8px;font-size:.66rem;}
  .home-availability{justify-content:center;gap:6px;margin-top:10px;font-size:.61rem;line-height:1.25;text-align:center;}
  .home-availability__dot{width:6px;height:6px;flex-basis:6px;box-shadow:0 0 0 3px rgba(77,154,101,.12);}

  .recent-window{border-radius:14px;}
  .recent-window__titlebar{min-height:34px;padding:6px 16px;}
  .recent-window__titlebar h2{font-size:.68rem;}
  .recent-window__workspace{display:block;}
  .recent-project-list{
    display:flex;
    flex-wrap:nowrap;
    justify-content:center;
    gap:4px;
    padding:5px 6px;
    border-right:0;
    border-bottom:1px solid var(--line);
  }
  .recent-project{
    width:auto;
    min-width:0;
    min-height:34px;
    flex:1 1 0;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:5px 4px;
    text-align:center;
  }
  .recent-project + .recent-project{margin-top:0;}
  .recent-project[aria-pressed="true"]{box-shadow:inset 0 0 0 1px var(--orange);}
  .recent-project[aria-pressed="true"]::after{display:none;}
  .recent-project__icon{display:none;}
  .recent-project__copy strong{font-size:.62rem;line-height:1.1;white-space:nowrap;}
  .recent-project__copy small{display:none;}
  .recent-project__name-full{display:none;}
  .recent-project__name-short{display:inline;}
  .recent-preview{
    display:grid;
    grid-template-columns:88px minmax(0,1fr);
    align-items:center;
    gap:10px;
    padding:8px;
  }
  .recent-preview__media{width:88px;height:64px;aspect-ratio:auto;border-radius:8px;}
  .recent-preview__media--ux{padding:8px;}
  .recent-preview__media--ux strong{margin-top:0;font-size:.6rem;line-height:1.15;}
  .recent-preview__media-type,
  .recent-preview__media-status{display:none;}
  .recent-preview__details{min-width:0;padding:0;}
  .recent-preview__labels{justify-content:flex-start;gap:4px;}
  .recent-preview__labels .tag{display:none;}
  .recent-preview__labels .status{min-height:20px;padding:3px 6px;font-size:.55rem;}
  .recent-preview__details h3{
    overflow:hidden;
    margin-top:5px;
    font-size:.78rem;
    line-height:1.15;
    text-align:left;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .recent-preview__details > p,
  .recent-preview__tags{display:none;}
  .recent-preview__link{display:flex;min-height:32px;margin:7px 0 0;padding:6px 9px;font-size:.62rem;}
  .recent-preview__link-label-full{display:none;}
  .recent-preview__link-label-short{display:inline;}
}

@media (max-width:430px){
  .home-surface{padding-inline:16px;}
  .home-intro.desktop-widget{padding:14px 16px;}
  .home-title{font-size:1.75rem;}
  .home-intro .hero-actions{grid-template-columns:repeat(2,minmax(0,1fr));}
  .home-intro .btn{width:100%;}
  .home-availability{align-items:center;}
  .home-availability__dot{margin-top:0;}
  .recent-project{flex:1 1 0;}
  .recent-project__copy strong{font-size:.61rem;}
}

@media (max-width:390px){
  .home-title{font-size:1.52rem;}
}

@media (max-width:340px){
  .home-surface{padding-inline:12px;}
  .home-intro.desktop-widget{padding:12px 14px;}
  .home-title{font-size:1.3rem;}
  .home-pill{padding-inline:8px;font-size:.61rem;}
  .home-lede{font-size:.74rem;line-height:1.36;}
  .home-intro .btn{font-size:.6rem;}
  .recent-project-list{gap:3px;padding-inline:5px;}
  .recent-project{flex:1 1 0;padding-inline:2px;}
  .recent-preview{grid-template-columns:78px minmax(0,1fr);gap:8px;padding:7px;}
  .recent-preview__media{width:78px;height:58px;}
}

@media (max-width:700px) and (max-height:650px){
  .home-stage{gap:8px;}
  .home-intro.desktop-widget{translate:0 -8px;}
  .home-lede{display:none;}
  .home-intro .hero-actions{margin-top:10px;}
  .home-availability{margin-top:8px;}
}

@media (max-width:700px){
  .traffic-lights{display:none;}
}

@media (max-height:720px) and (min-width:921px){
  .home-surface{padding-top:18px;padding-bottom:calc(var(--dock-space) + 8px);}
  .home-intro.desktop-widget{padding:26px 30px;}
  .home-intro .hero-pills{margin-bottom:18px;}
  .home-title{font-size:clamp(2rem,3.2vw,2.8rem);}
  .home-lede{margin-top:18px;font-size:.95rem;line-height:1.55;}
  .home-intro .hero-actions{margin-top:22px;}
  .home-availability{margin-top:16px;}
  .recent-preview{padding:13px;}
  .recent-preview__details{padding-top:12px;}
  .recent-preview__link{margin-top:13px;}
}

@media (prefers-reduced-motion:reduce){
  .recent-preview,
  .recent-project{transition:none;}
  .recent-preview.is-changing{opacity:1;transform:none;}
}

/* Long case studies only render their below-the-fold sections as they approach. */
.case-section{
  content-visibility:auto;
  contain-intrinsic-size:auto 560px;
}

/* Keep below-the-fold cards out of the first rendering pass. */
.project-grid .project-card{
  content-visibility:auto;
  contain-intrinsic-size:auto 460px;
  contain:layout paint style;
}

/* Stop non-essential ambient motion when the page is not visible. */
html.page-is-hidden .marquee-track,
html.page-is-hidden .availability .dot::after{
  animation-play-state:paused;
}

@media (prefers-reduced-data:reduce), (update:slow){
  .marquee-track,
  .availability .dot::after{
    animation:none;
  }
}
