:root{
  --font-display:"Cormorant Garamond", Georgia, serif;
  --font-body:"DM Sans", Arial, sans-serif;
  --ink:#191919;
  --paper:#fff;
  --soft:#f8f3f0;
  --peach:#df9575;
  --accent:#b95324;
  --max:1320px;
}
*{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;color:var(--ink);background:var(--paper);font-family:var(--font-body);line-height:1.45} img{max-width:100%;display:block} a{color:inherit} .wrap{width:min(var(--max),calc(100% - 8vw));margin:auto}.band{padding:clamp(4rem,8vw,8rem) 0}.white{background:#fff}.soft{background:var(--soft)}.peach{background:var(--peach)}
h1,h2,h3{font-family:var(--font-display);font-weight:500;line-height:.98;margin:0} h1{font-size:clamp(4rem,8vw,8.2rem);letter-spacing:-.04em} h2{font-size:clamp(3.4rem,6.5vw,6.4rem);letter-spacing:-.035em;margin-bottom:clamp(2.5rem,5vw,5rem)} h3{font-size:clamp(1.65rem,2.4vw,2.35rem);line-height:1.05} em{font-weight:400}.roman{font-style:normal}.pill{border:1.4px solid currentColor;border-radius:999px;text-decoration:none;padding:.65rem 1.35rem;display:inline-flex;align-items:center;justify-content:center;gap:.75rem;transition:.2s ease}.pill:hover{transform:translateY(-1px);background:var(--ink);color:white}.pill.small{padding:.45rem 1rem;font-size:.9rem}.hero{padding:4rem 0 0}.brand{font-family:var(--font-display);font-size:2rem;text-decoration:none;display:inline-flex;align-items:center;gap:.65rem}.brand img{width:34px;height:34px;object-fit:contain}.hero-title-row{display:flex;align-items:center;gap:1.25rem;margin-top:6rem}.hero-title-row>div{flex:0 1 auto}.hero-title-row h1{white-space:nowrap}.roles{font-size:clamp(.8rem,1.4vw,1.25rem);letter-spacing:.02em;margin:.8rem 0 0}.hero-contact{min-width:210px;padding:.9rem 1.8rem;font-size:1.12rem;flex:0 0 auto}.nav{display:grid;grid-template-columns:repeat(5,1fr);gap:1rem;margin:7rem 0 4rem}.nav .pill{white-space:nowrap}.hero-bottom{display:grid;grid-template-columns:minmax(240px,33%) 1fr;gap:4rem;align-items:center}.headshot{width:100%;max-width:390px;align-self:end}.questions{font-style:italic;font-size:clamp(1.15rem,1.8vw,1.65rem)}.questions p{margin:.4rem 0}.about-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);gap:8vw}.about-grid p{font-size:clamp(1.05rem,1.8vw,1.55rem);margin:0 0 2rem}.about-right{display:flex;align-items:flex-end;justify-content:center}.credentials{text-align:center;margin:0 0 2rem}.credentials h3{margin-bottom:1rem}.credentials p{font-size:1.15rem}.narrow{max-width:1200px}.service-list{display:grid;gap:4rem}.service{display:grid;grid-template-columns:70px minmax(0,1fr);gap:1.5rem;max-width:920px}.number{font-size:2.3rem;font-weight:300;line-height:1}.service-main>p{max-width:760px}.service h3{margin-bottom:1rem}.service details{border-top:1px solid rgba(0,0,0,.2);margin-top:1.3rem;padding-top:.8rem}.service summary{cursor:pointer;list-style:none;font-family:var(--font-display);font-size:1.35rem;display:flex;justify-content:space-between;gap:1rem}.service summary::-webkit-details-marker{display:none}.detail-body{padding-top:.8rem;max-width:780px}.keywords{font-size:.95rem}.story-box{background:#e9a98c;padding:clamp(2rem,4vw,3.5rem);margin-top:6rem;max-width:1000px}.story-box h3{font-size:2.5rem;margin-bottom:1rem}.serif-line{font-family:var(--font-display);font-size:1.5rem}.section-subhead{font-size:2.5rem;margin:0 0 2rem}.fiction-head{margin-top:7rem}.pub-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(2rem,4vw,4rem)}.pub-card img{width:100%;height:350px;object-fit:contain;object-position:center bottom;margin-bottom:1.5rem}.pub-card h3{font-size:1.6rem;text-align:center;margin-bottom:.7rem}.pub-card .subtitle{text-align:center;min-height:3rem}.pub-card p{font-size:.95rem}.pub-card a{font-style:italic}.methods-intro{font-size:clamp(1.1rem,1.8vw,1.5rem);max-width:1050px;margin:-2rem 0 5rem}.method-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem}.method-card{background:rgba(255,255,255,.18);padding:1.5rem}.method-card img{aspect-ratio:4/3;width:100%;object-fit:contain;margin-bottom:2rem}.method-card h3{margin:.6rem 0 1rem}.method-card .number{font-size:1.7rem}.project-list{display:grid;gap:6rem}.project{display:grid;grid-template-columns:1.6fr .8fr;gap:6vw;align-items:center;max-width:1100px;margin:auto}.project.reverse{grid-template-columns:.8fr 1.6fr}.project.reverse div{order:2}.project.reverse img{order:1}.project h3{margin-bottom:1rem}.project img{width:100%;max-height:260px;object-fit:contain}.contact{background:var(--accent);color:white;padding:5rem 0 3rem;min-height:80vh;display:flex;align-items:center}.contact-grid{display:grid;grid-template-columns:1fr auto;gap:4rem}.contact-main{grid-column:1/-1;text-align:center}.contact h2{font-size:clamp(4rem,9vw,9rem);margin-bottom:2rem}.light:hover{background:white;color:var(--accent)}.contact-info{grid-column:2;font-size:1.3rem}.contact-info p{margin:.25rem 0}.contact-label{font-size:3rem;font-weight:500}.contact-brand{grid-column:1;display:flex;align-items:center;gap:1rem;font-family:var(--font-display);font-size:2rem}.contact-brand img{width:44px;height:44px;object-fit:contain}
@media(max-width:850px){.wrap{width:min(100% - 2.2rem,var(--max))}.band{padding:4.5rem 0}.hero{padding-top:2rem}.brand{font-size:1.5rem}.brand img{width:28px;height:28px}.hero-title-row{display:grid;grid-template-columns:1fr;margin-top:3rem}.hero-title-row h1{white-space:normal}.hero-contact{justify-self:start}.nav{display:flex;overflow-x:auto;gap:.7rem;margin:3rem -1.1rem;padding:0 1.1rem 1rem}.nav .pill{flex:0 0 auto;font-size:.9rem}.hero-bottom{grid-template-columns:1fr;gap:2rem}.headshot{width:min(75%,330px);margin:auto}.questions{padding-bottom:4rem}.about-grid{grid-template-columns:1fr;gap:1rem}.about-grid p{font-size:1.05rem}.about-right{justify-content:flex-start}.credentials{text-align:left;margin-top:2rem}.service{grid-template-columns:45px 1fr;gap:1rem}.number{font-size:1.8rem}.pub-grid{grid-template-columns:1fr;gap:4rem}.pub-card{max-width:520px;margin:auto}.pub-card img{height:auto;max-height:430px}.pub-card .subtitle{min-height:0}.method-grid{grid-template-columns:1fr}.method-card{display:grid;grid-template-columns:110px 1fr;gap:1.2rem}.method-card img{margin:0;aspect-ratio:1/1}.project,.project.reverse{grid-template-columns:1fr;gap:1.5rem}.project.reverse div,.project.reverse img{order:initial}.project img{max-height:220px;justify-self:start}.contact{min-height:70vh}.contact-grid{grid-template-columns:1fr}.contact-main,.contact-info,.contact-brand{grid-column:1}.contact-info{font-size:1rem}.contact-label{font-size:2rem}.contact-brand{font-size:1.4rem}.fiction-head{margin-top:5rem}}
@media(max-width:520px){h1{font-size:3.8rem}.roles{line-height:1.7}.hero-title-row{gap:1.2rem}.method-card{grid-template-columns:1fr}.method-card img{max-height:220px}.story-box{margin-left:-1.1rem;margin-right:-1.1rem}.contact h2{font-size:4rem}}

/* V3 refinements */
:root{--peach:#eaae92}
.degree{display:inline-block;font-family:var(--font-body);font-size:.22em;font-style:normal;font-weight:400;letter-spacing:.02em;margin-left:.35em;vertical-align:.5em}
.service-list{gap:0}
.service{max-width:none;display:grid;grid-template-columns:minmax(0,3fr) minmax(260px,2fr);gap:clamp(2rem,6vw,6rem);padding:3rem 0;border-top:1px solid rgba(0,0,0,.18)}
.service:first-child{border-top:0;padding-top:0}
.service-heading{display:grid;grid-template-columns:64px 1fr;gap:1.2rem;align-items:start}.service-left>p{margin-left:84px;max-width:720px}.service-left details{margin-left:84px;border-top:1px solid rgba(0,0,0,.18);margin-top:1.5rem;padding-top:.8rem}.service-left summary{cursor:pointer;list-style:none;font-family:var(--font-display);font-size:1.35rem;display:flex;justify-content:space-between;gap:1rem}.service-left summary::-webkit-details-marker{display:none}.service-left details[open] summary span{transform:rotate(45deg)}.service-left summary span{transition:transform .2s ease}.service-topics{align-self:start;padding-top:.2rem}.service-topics h4{font-family:var(--font-display);font-size:1.35rem;font-weight:500;margin:0 0 .8rem}.service-topics p{font-family:var(--font-display);font-style:italic;font-size:1.1rem;line-height:1.55;margin:0;max-width:390px}
.pub-card a,.text-link{display:inline-block;text-underline-offset:.2em;text-decoration-thickness:1px;transition:opacity .2s ease,transform .2s ease}.pub-card a:hover,.text-link:hover{opacity:.58;transform:translateX(3px)}
.methods-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.9fr);gap:clamp(3rem,7vw,7rem);align-items:start}.method-list{display:grid;gap:3.5rem}.method-item{display:grid;grid-template-columns:54px 1fr;gap:1.2rem}.method-item h3{margin:.1rem 0 .8rem}.method-item p{max-width:430px}.methods-visuals{display:grid;gap:1.5rem;align-items:center;position:sticky;top:2rem}.methods-visuals img{width:100%;max-height:300px;object-fit:contain}.methods-visuals img:nth-child(2){max-height:340px}.contact-info a,.contact-brand{text-decoration:none}.contact-info a:hover,.contact-brand:hover{opacity:.72}
@media(max-width:850px){.degree{font-size:.25em;vertical-align:.45em}.service{grid-template-columns:1fr;gap:1.5rem;padding:2.5rem 0}.service-heading{grid-template-columns:44px 1fr;gap:1rem}.service-left>p,.service-left details{margin-left:60px}.service-topics{margin-left:60px}.service-topics p{max-width:620px}.methods-layout{grid-template-columns:1fr}.methods-visuals{position:static;grid-template-columns:repeat(3,1fr);gap:1rem}.methods-visuals img,.methods-visuals img:nth-child(2){max-height:220px}.method-item{grid-template-columns:44px 1fr}}
@media(max-width:520px){.service-left>p,.service-left details,.service-topics{margin-left:0}.methods-visuals{grid-template-columns:1fr}.methods-visuals img,.methods-visuals img:nth-child(2){max-height:260px}}

/* V4 refinements */
.hero-bottom{grid-template-columns:minmax(280px,38%) 1fr;gap:3.5rem}
.headshot{max-width:455px}
.questions{font-size:clamp(1.08rem,1.6vw,1.5rem)}
.credentials{text-align:left;width:100%;max-width:440px}
.credentials p{font-size:1.05rem;margin:0 0 .8rem}
.methods-intro{font-size:clamp(1rem,1.25vw,1.15rem);max-width:900px;line-height:1.55;margin:-2rem 0 4rem}
.method-list-paired{gap:0}
.method-row{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:clamp(2rem,6vw,6rem);align-items:start;padding:2.25rem 0;border-top:1px solid rgba(0,0,0,.14)}
.method-row:first-child{border-top:0;padding-top:0}
.method-image{width:230px;height:190px;object-fit:contain;justify-self:end;align-self:start}
.contact{min-height:600px;padding:3rem 0 1.5rem;align-items:stretch}
.contact-grid{min-height:540px;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr auto;gap:1rem 4rem;align-items:start}
.contact-info{grid-column:2;grid-row:1;text-align:left;font-size:1.05rem;justify-self:end;min-width:330px}
.contact-info p{margin:.12rem 0}
.linkedin-logo{display:block;width:205px;margin-bottom:.55rem}
.linkedin-logo img{width:100%;height:58px;object-fit:cover;object-position:left center}
.contact-main{grid-column:1/-1;grid-row:2;align-self:center;text-align:center}
.contact h2{font-size:clamp(4rem,7vw,7rem);margin-bottom:1.5rem}
.contact-brand{grid-column:1;grid-row:3;align-self:end;font-size:1.55rem}
.contact-brand img{width:32px;height:32px}
@media(max-width:850px){
  .hero-bottom{grid-template-columns:1fr}.headshot{width:min(82%,380px);max-width:380px}
  .credentials{max-width:none}.credentials p{font-size:1rem}
  .method-row{grid-template-columns:minmax(0,1fr) 160px;gap:1.5rem}.method-image{width:160px;height:145px}
  .contact-grid{grid-template-columns:1fr;grid-template-rows:auto 1fr auto}.contact-info{grid-column:1;grid-row:1;justify-self:end;min-width:0}.contact-main{grid-column:1;grid-row:2}.contact-brand{grid-column:1;grid-row:3}.linkedin-logo{width:175px}.linkedin-logo img{height:50px}
}
@media(max-width:520px){.method-row{grid-template-columns:1fr}.method-image{width:150px;height:130px;justify-self:start;margin-left:54px}.contact-info{justify-self:start}.linkedin-logo{width:155px}.linkedin-logo img{height:44px}}


/* V5 final cleanup */
/* The V4 paired Methods layout supersedes the older sticky visual treatment. */
.methods-visuals{position:static}

/* Keep service rows compact enough to read as one coherent offering. */
.service{padding:2.55rem 0}

/* Let the native disclosure marker state drive the single + icon treatment. */
.service-left details[open] summary span{transform:rotate(45deg)}

/* Clear keyboard focus across interactive elements. */
a:focus-visible, summary:focus-visible{
  outline:2px solid currentColor;
  outline-offset:4px;
  border-radius:3px;
}

/* CTAs stay visible until the final contact destination is chosen. */
.pending-cta{cursor:default;user-select:none}
.pending-cta:hover{background:transparent;color:inherit;transform:none}
.contact .pending-cta.light:hover{background:transparent;color:white}

/* Mobile finishing pass. */
@media(max-width:850px){
  .service{padding:2.2rem 0}
  .nav{-webkit-overflow-scrolling:touch;scrollbar-width:thin}
  .contact-info{text-align:left}
}
@media(max-width:520px){
  .wrap{width:min(100% - 1.5rem,var(--max))}
  .band{padding:3.75rem 0}
  h1{font-size:clamp(3rem,15vw,3.8rem)}
  .roles{font-size:.76rem;letter-spacing:.015em}
  .nav{margin-left:-.75rem;margin-right:-.75rem;padding-left:.75rem;padding-right:.75rem}
  .service-heading{grid-template-columns:38px 1fr}
  .service-heading .number{font-size:1.55rem}
  .service-left>p,.service-left details,.service-topics{margin-left:0}
  .service-topics p{font-size:1rem}
  .credentials p{font-size:.96rem;line-height:1.5}
  .pub-card{width:100%}
  .pub-card img{max-height:380px}
  .method-row{padding:1.9rem 0}
  .method-image{margin-left:54px;max-width:calc(100% - 54px)}
  .contact{min-height:560px}
  .contact-grid{min-height:500px}
  .contact h2{font-size:clamp(3.4rem,18vw,4.4rem)}
}

/* V7: phone navigation — show all section links instead of horizontal scrolling. */
@media(max-width:850px){
  .nav{
    display:flex;
    flex-wrap:wrap;
    justify-content:center;
    overflow:visible;
    gap:.65rem;
    margin:3rem 0;
    padding:0;
  }
  .nav .pill{
    flex:0 0 auto;
    font-size:.86rem;
    padding:.55rem 1rem;
  }
}
@media(max-width:520px){
  .nav{
    margin:2.5rem 0 3rem;
    padding:0;
    gap:.55rem;
  }
  .nav .pill{
    font-size:.8rem;
    padding:.5rem .82rem;
  }
}

/* V8 usability refinements */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.external-icon{display:inline-block;margin-left:.18em;font-style:normal;font-weight:600;transition:transform .18s ease}
a[target="_blank"]:hover .external-icon{transform:translate(.12em,-.12em)}

/* Make service disclosures clearly interactive without making them heavy. */
.service-left summary{
  justify-content:flex-start;
  width:max-content;
  max-width:100%;
  gap:.55rem;
  font-family:var(--font-body);
  font-size:1rem;
  font-weight:600;
  color:var(--accent);
  padding:.18rem 0;
}
.service-left summary span{font-size:1.35rem;font-weight:600;line-height:.8}
.service-left summary:hover{text-decoration:underline;text-underline-offset:.2em}

.back-to-top{display:none}

@media(max-width:850px){
  .hero-contact{justify-self:center}
  .back-to-top{
    display:block;
    width:max-content;
    margin:3rem auto 0;
    font-size:.82rem;
    font-weight:500;
    text-decoration:none;
    border-bottom:1px solid currentColor;
    padding-bottom:.12rem;
    opacity:.72;
  }
  .back-to-top:hover{opacity:1}
}
