/* Single Project pages — v2.44.
 * Project Containers owns the template and now composes pages differently by
 * presentation mode + content profile, rather than making every project a tall
 * sequence of identical cards.
 */
.culhane-project-single-template{
  width:100%;
  max-width:none!important;
  margin:0!important;
  padding:0!important;
}
.culhane-project-single-template>.culhane-project-public-shell,
.culhane-project-single-template .culhane-project-public-shell{
  margin-inline:auto;
}
.culhane-project-public-shell{
  display:flex;
  flex-direction:column;
  gap:clamp(1.6rem,4vw,3.5rem);
}
.culhane-project-public-shell>*{margin-block:0!important}
.culhane-project-public-shell>.culhane-project-hero{order:-20}

/* Structural groupings --------------------------------------------------- */
.culhane-project-layout-group{
  display:grid;
  gap:clamp(1rem,2.8vw,2rem);
  align-items:start;
  min-width:0;
}
.culhane-project-layout-group>.culhane-project-story,
.culhane-project-layout-group>.culhane-project-panel,
.culhane-project-layout-group>.culhane-project-custom-content,
.culhane-project-layout-group>.culhane-process-gallery,
.culhane-project-layout-group>.culhane-project-timeline,
.culhane-project-layout-group>.culhane-audio-note{
  margin:0!important;
  min-width:0;
}
.culhane-project-layout-group .culhane-project-story{
  display:block!important;
  max-width:none!important;
}
.culhane-project-layout-group .culhane-project-story header{margin-bottom:1rem}
.culhane-project-layout-group .culhane-project-story h2{max-width:none!important}

/* Case studies: narrative + facts first, proof at larger scale afterwards. */
.culhane-project-public-shell.presentation-case-study .is-case-intro{
  grid-template-columns:minmax(0,1.55fr) minmax(250px,.7fr);
}
.culhane-project-public-shell.presentation-case-study .is-case-intro>.culhane-project-story{
  border-left:4px solid var(--culhane-workshop-moss,#71835a);
}
.culhane-project-public-shell.presentation-case-study .is-case-intro>.culhane-project-panel{
  position:sticky;
  top:clamp(78px,9vw,112px);
  background:color-mix(in srgb,var(--culhane-workshop-blue,#315f80) 5%,var(--culhane-card-bg,#fffaf3))!important;
}
.culhane-project-public-shell.presentation-case-study .is-process-pair{
  grid-template-columns:minmax(0,1.45fr) minmax(260px,.55fr);
}
.culhane-project-public-shell.presentation-case-study .culhane-project-conversion-cta{
  margin-top:clamp(.5rem,2vw,1.5rem)!important;
}

/* Website case study: title beside a browser/screenshot rather than a blog hero. */
.culhane-project-public-shell.project-profile-website .culhane-project-hero.layout-image_above{
  display:grid!important;
  grid-template-columns:minmax(260px,.72fr) minmax(0,1.28fr);
  align-items:stretch;
  overflow:hidden;
}
.culhane-project-public-shell.project-profile-website .culhane-project-hero.layout-image_above .culhane-hero-text{
  grid-column:1;
  grid-row:1;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:clamp(1.5rem,4vw,3.2rem)!important;
}
.culhane-project-public-shell.project-profile-website .culhane-project-hero.layout-image_above .culhane-hero-image{
  grid-column:2;
  grid-row:1;
}
.culhane-project-public-shell.project-profile-website .culhane-project-hero.layout-image_above .culhane-hero-image img{
  min-height:440px;
  height:100%;
  max-height:680px;
}
.culhane-project-public-shell.project-profile-website>.culhane-website-frame,
.culhane-project-public-shell.project-profile-website>.culhane-showcase.culhane-website-frame{
  width:min(1320px,calc(100vw - 32px));
  max-width:none!important;
  margin-inline:50%!important;
  transform:translateX(-50%);
}

/* Identity / logo work: more like a brand board than a generic project post. */
.culhane-project-public-shell.project-profile-identity .culhane-project-hero{
  background:color-mix(in srgb,var(--culhane-workshop-lavender,#aaa0c8) 7%,var(--culhane-card-bg,#fffaf3))!important;
}
.culhane-project-public-shell.project-profile-identity .culhane-project-hero .culhane-hero-image{
  display:grid;
  place-items:center;
  min-height:clamp(300px,48vw,620px);
}
.culhane-project-public-shell.project-profile-identity .culhane-project-hero .culhane-hero-image img{
  object-fit:contain!important;
  max-width:min(78%,780px);
  max-height:520px!important;
  padding:clamp(1.5rem,5vw,4.5rem)!important;
}
.culhane-project-public-shell.project-profile-identity>.culhane-showcase{
  padding:clamp(1.2rem,3vw,2.2rem)!important;
  background:color-mix(in srgb,var(--culhane-workshop-lavender,#aaa0c8) 4%,var(--culhane-card-bg,#fffaf3))!important;
}

/* Artifact / visual work: the object leads and the explanation becomes a note. */
.culhane-project-public-shell.presentation-artifact>.culhane-showcase{margin-top:0!important}
.culhane-project-public-shell.presentation-artifact .is-artifact-note{
  grid-template-columns:minmax(0,1.4fr) minmax(230px,.6fr);
  max-width:980px;
  margin-inline:auto!important;
  width:100%;
}
.culhane-project-public-shell.presentation-artifact .is-artifact-note>.culhane-project-story{
  background:transparent!important;
  border:0!important;
  padding-inline:0!important;
}
.culhane-project-public-shell.project-profile-visual>.culhane-showcase,
.culhane-project-public-shell.project-profile-comic>.culhane-showcase{
  width:min(1280px,calc(100vw - 28px));
  max-width:none!important;
  margin-inline:50%!important;
  transform:translateX(-50%);
}
.culhane-project-public-shell.project-profile-visual .culhane-example-grid{
  display:grid!important;
  grid-template-columns:repeat(12,minmax(0,1fr))!important;
  gap:clamp(.75rem,1.8vw,1.25rem)!important;
}
.culhane-project-public-shell.project-profile-visual .culhane-example-grid>figure{grid-column:span 5}
.culhane-project-public-shell.project-profile-visual .culhane-example-grid>figure:nth-child(4n+1){grid-column:span 7}
.culhane-project-public-shell.project-profile-visual .culhane-example-grid>figure:nth-child(4n+4){grid-column:span 7}

/* Typeface projects: specimen-like, with air around the typographic object. */
.culhane-project-public-shell.project-profile-typeface .culhane-project-hero{
  border:1px solid color-mix(in srgb,currentColor 12%,transparent)!important;
  background:color-mix(in srgb,var(--culhane-workshop-ochre,#d0a84b) 5%,var(--culhane-card-bg,#fffaf3))!important;
}
.culhane-project-public-shell.project-profile-typeface .culhane-hero-text{
  padding-block:clamp(2.4rem,7vw,6rem)!important;
}
.culhane-project-public-shell.project-profile-typeface .culhane-hero-text h1{
  max-width:15ch!important;
}

/* Living tools/worlds: current state + context are equally important. */
.culhane-project-public-shell.presentation-living .is-living-intro{
  grid-template-columns:minmax(0,1.35fr) minmax(245px,.65fr);
}
.culhane-project-public-shell.presentation-living .culhane-project-metabolism{
  border-color:color-mix(in srgb,var(--culhane-workshop-ochre,#d0a84b) 38%,transparent)!important;
}
.culhane-project-public-shell.project-profile-tool .culhane-project-hero,
.culhane-project-public-shell.project-profile-world .culhane-project-hero{
  background:linear-gradient(135deg,color-mix(in srgb,var(--culhane-workshop-blue,#315f80) 7%,var(--culhane-card-bg,#fffaf3)),color-mix(in srgb,var(--culhane-workshop-moss,#71835a) 7%,var(--culhane-card-bg,#fffaf3)))!important;
}
.culhane-project-public-shell.project-profile-tool>.culhane-tool-showcase{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:end;
  gap:clamp(1rem,3vw,2rem);
}
.culhane-project-public-shell.project-profile-world .culhane-example-grid,
.culhane-project-public-shell.project-profile-world .culhane-process-strip{
  gap:clamp(.8rem,2vw,1.4rem)!important;
}

/* Editorial projects: a reading surface, not a portfolio card stack. */
.culhane-project-public-shell.presentation-editorial{
  gap:clamp(1.2rem,3vw,2.4rem);
}
.culhane-project-public-shell.presentation-editorial>.culhane-project-hero{
  max-width:900px;
  width:100%;
  margin-inline:auto!important;
}
.culhane-project-public-shell.presentation-editorial .is-editorial-reading{
  display:block;
  width:min(100%,760px);
  margin-inline:auto!important;
  padding:clamp(1.5rem,4vw,3.4rem);
  border:1px solid color-mix(in srgb,currentColor 9%,transparent);
  border-radius:clamp(.8rem,1.5vw,1.2rem);
  background:var(--culhane-card-bg,#fffaf3);
  box-shadow:0 18px 55px rgba(20,18,16,.045);
}
.culhane-project-public-shell.presentation-editorial .is-editorial-reading>.culhane-project-story,
.culhane-project-public-shell.presentation-editorial .is-editorial-reading>.culhane-project-custom-content,
.culhane-project-public-shell.presentation-editorial .is-editorial-reading>.culhane-audio-note{
  padding:0!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.culhane-project-public-shell.presentation-editorial .culhane-story-text,
.culhane-project-public-shell.presentation-editorial .culhane-project-custom-content{
  font-size:clamp(1.02rem,1.25vw,1.12rem);
  line-height:1.82;
}

/* Simple projects remain deliberately compact. */
.culhane-project-public-shell.presentation-simple .is-simple-body{
  width:min(100%,900px);
  margin-inline:auto!important;
}
.culhane-project-public-shell.presentation-simple .is-simple-body>.culhane-project-story,
.culhane-project-public-shell.presentation-simple .is-simple-body>.culhane-project-custom-content{
  max-width:var(--cpc-reading-measure);
}

/* Shared ending. */
.culhane-project-public-shell .culhane-project-wander-end{margin-top:clamp(.5rem,3vw,2rem)!important}

@media(max-width:900px){
  .culhane-project-public-shell.presentation-case-study .is-case-intro,
  .culhane-project-public-shell.presentation-case-study .is-process-pair,
  .culhane-project-public-shell.presentation-artifact .is-artifact-note,
  .culhane-project-public-shell.presentation-living .is-living-intro{
    grid-template-columns:1fr;
  }
  .culhane-project-public-shell.presentation-case-study .is-case-intro>.culhane-project-panel{position:static}
  .culhane-project-public-shell.project-profile-website .culhane-project-hero.layout-image_above{
    grid-template-columns:1fr;
  }
  .culhane-project-public-shell.project-profile-website .culhane-project-hero.layout-image_above .culhane-hero-image,
  .culhane-project-public-shell.project-profile-website .culhane-project-hero.layout-image_above .culhane-hero-text{
    grid-column:1;
  }
  .culhane-project-public-shell.project-profile-website .culhane-project-hero.layout-image_above .culhane-hero-image{grid-row:1}
  .culhane-project-public-shell.project-profile-website .culhane-project-hero.layout-image_above .culhane-hero-text{grid-row:2}
}

@media(max-width:700px){
  .culhane-project-public-shell{gap:1.4rem}
  .culhane-project-public-shell.project-profile-visual .culhane-example-grid{grid-template-columns:1fr!important}
  .culhane-project-public-shell.project-profile-visual .culhane-example-grid>figure,
  .culhane-project-public-shell.project-profile-visual .culhane-example-grid>figure:nth-child(n){grid-column:auto}
  .culhane-project-public-shell.project-profile-tool>.culhane-tool-showcase{grid-template-columns:1fr}
  .culhane-project-public-shell.presentation-editorial .is-editorial-reading{padding:1.2rem}
}

/* A grouped section with only one populated component should use the room rather
 * than inheriting the two-column slot intended for a pair. */
.culhane-project-layout-group>:only-child{grid-column:1/-1}
