@import url('./colors_and_type.css');

:root{--d:#001F20;--e:#004F4B;--a:#087A70;--c:#F6F4EC;--s:#DDD3BF;--rule:rgba(0,79,75,.2)}
*{box-sizing:border-box}
html{scroll-behavior:auto}
body{margin:0;background:var(--c);color:var(--d);font-family:"DM Sans",ui-sans-serif,system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;font-size:17px;line-height:1.55;letter-spacing:0;-webkit-font-smoothing:antialiased}
a{color:var(--e)}a:hover{color:var(--a)}
h1,h2,h3{font-weight:400;margin:0;letter-spacing:0}
p{margin:0}
ul{list-style:none;margin:0;padding:0}
.wrap{max-width:1296px;margin:0 auto;padding:0 24px}
@media(min-width:900px){.wrap{padding:0 72px}}
.brow{font-size:13px;font-weight:500;text-transform:uppercase;color:var(--e)}
.btn{display:inline-flex;align-items:center;justify-content:center;height:48px;padding:0 26px;border-radius:999px;background:var(--e);color:var(--c);text-decoration:none;font-weight:500;font-size:15px;white-space:nowrap;transition:background .2s}
.btn:hover{background:var(--a);color:var(--c)}
.btn.inv{background:var(--c);color:var(--d)}.btn.inv:hover{background:#fff;color:var(--d)}
.rule{height:1px;background:var(--e);opacity:.35;margin:72px 0 0}
@media(min-width:900px){.rule{margin-top:120px}}
/* nav */
.nav{display:flex;align-items:center;justify-content:space-between;padding:24px 0;gap:16px}
.nav .mark{font-size:13px;font-weight:500;text-transform:uppercase;text-decoration:none;color:inherit;white-space:nowrap}
.nav .links{display:flex;align-items:center;gap:28px;font-size:15px}
.nav .links a{text-decoration:none;color:inherit}
.nav .links a.on{border-bottom:1px solid currentColor;padding-bottom:2px}
.nav .btn{height:40px;padding:0 20px;font-size:14px}
@media(max-width:640px){.nav .links a:not(.btn){display:none}.nav .links{gap:12px}}
.nav.light{color:var(--c)}.nav.dark{color:var(--d)}
/* hero */
.hero{position:relative;min-height:100vh;min-height:100svh;background:var(--d);color:var(--c);display:flex;flex-direction:column}
.hero picture,.hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}
.hero .wrap{position:relative;z-index:1;width:100%}
.hero .body{flex:1;display:flex;flex-direction:column;justify-content:flex-end;padding-bottom:56px;max-width:640px;gap:22px}
.hero .brow{color:var(--c);opacity:.85}
.hero h1{font-size:clamp(38px,5.2vw,68px);line-height:1.06}
.hero p.sub{font-size:clamp(15px,1.25vw,18px);opacity:.9;max-width:560px}
@media(min-width:900px){.hero .body{padding-bottom:96px}}
/* sections */
.section{padding-top:72px}
@media(min-width:900px){.section{padding-top:120px}}
.side{display:grid;gap:32px}
@media(min-width:900px){.side{grid-template-columns:320px 1fr;gap:64px}}
.stack{display:flex;flex-direction:column;gap:28px;align-items:flex-start}
.h2{font-size:clamp(28px,3vw,40px);line-height:1.15}
.lede{font-size:clamp(18px,1.5vw,22px)}
.muted{opacity:.8}
.cols{display:grid;gap:48px}
@media(min-width:900px){.cols{grid-template-columns:repeat(3,1fr);gap:56px}}
.cols>div{display:flex;flex-direction:column;gap:18px}
.cols .lead{font-size:18px}
.cols .muted{font-size:15px;opacity:.75}
.strip{display:grid;gap:32px;align-items:end}
@media(min-width:900px){.strip{grid-template-columns:1fr 1fr;gap:64px}}
.strip .exp{display:flex;flex-direction:column;gap:6px;font-size:15px}
.list li{display:grid;grid-template-columns:1fr auto;gap:8px 48px;padding:22px 0;border-bottom:1px solid var(--rule)}
.list li:last-child{border-bottom:0}
.list .t{font-size:18px}.list .m{font-size:14px;opacity:.6;white-space:nowrap}.list .d{grid-column:1/-1;font-size:15px;opacity:.7;max-width:640px}
.plus li{display:grid;grid-template-columns:20px 1fr;gap:6px 12px;padding:20px 0;border-bottom:1px solid var(--rule)}
.plus li:last-child{border-bottom:0}
.plus .g{color:var(--a);font-size:18px}.plus .t{font-size:18px}.plus .d{grid-column:2;font-size:15px;opacity:.7;max-width:600px}
.study{margin-top:72px;height:clamp(150px,22vw,320px);border-radius:8px;background:var(--d) url('assets/speaking-light-study.jpg') center/cover}
@media(min-width:900px){.study{margin-top:96px}}
.about{display:grid;gap:40px;align-items:start}
@media(min-width:900px){.about{grid-template-columns:400px 1fr;gap:88px}}
.about img{width:100%;max-width:400px;aspect-ratio:4/5;object-fit:cover;border-radius:8px;display:block}
.about .text{display:flex;flex-direction:column;gap:22px;max-width:720px}
.textlink{color:var(--e);text-decoration:none;font-weight:500;font-size:15px;border-bottom:1px solid rgba(0,79,75,.4);padding-bottom:4px;white-space:nowrap}
.booking{margin:96px 0 72px;background:#fff;border-radius:12px;padding:40px 28px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:32px}
@media(min-width:900px){.booking{margin:140px 0 96px;padding:72px}}
.booking .txt{display:flex;flex-direction:column;gap:14px;flex:1 1 auto}
footer{border-top:1px solid var(--rule);padding:32px 0 44px;display:flex;flex-direction:column;gap:18px;font-size:13px}
footer .row{display:flex;justify-content:space-between;gap:16px 24px;flex-wrap:wrap}
footer .row a{text-decoration:none;color:inherit}
footer .pv{font-size:12px;opacity:.6;max-width:760px}
.page{display:none}.page.on{display:block}
/* tablet · 768 to 1023 (iPad portrait, small laptops) */
@media(min-width:768px) and (max-width:1023px){
.wrap{padding:0 48px}
.cols{grid-template-columns:repeat(2,1fr);gap:48px}
.side{grid-template-columns:220px 1fr;gap:48px}
.strip{grid-template-columns:1fr 1fr}
.about{grid-template-columns:320px 1fr;gap:56px}
.hero .body{padding-bottom:72px}
.hero img{object-position:70% center}
}
/* iPad landscape and small desktop · 1024 to 1279 */
@media(min-width:1024px) and (max-width:1279px){.wrap{padding:0 56px}.side{grid-template-columns:260px 1fr}}
/* large desktop · 1600+ */
@media(min-width:1600px){body{font-size:18px}.wrap{max-width:1360px}}
/* short landscape phones */
@media(max-height:500px) and (orientation:landscape){.hero{min-height:560px}.hero h1{font-size:34px}}
/* fallbacks */
@supports not (aspect-ratio:1){.about img{height:500px}}
@media(prefers-reduced-motion:reduce){.btn{transition:none}}
@media print{.hero{min-height:auto;padding:48px 0}.hero picture{display:none}.hero{background:#004F4B}.btn{border:1px solid currentColor}}

/* Approved spacing and navigation refinements. Personal website only. */
body {font-size:16px;line-height:1.5}
.wrap {max-width:1296px;padding-inline:24px}
@media(min-width:900px){.wrap{padding-inline:72px}}
h1,h2,h3 {letter-spacing:0;font-weight:400}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid #087A70;outline-offset:5px}
.hero a:focus-visible{outline-color:#F6F4EC}
.nav .links a.btn{color:var(--c)}
.nav .links a.btn.inv{color:var(--d)}
.nav .links a.btn:hover{color:var(--c)}
.nav .links a.btn.inv:hover{color:var(--d)}
.nav .btn,.btn{min-height:48px;height:auto;padding:12px 24px}
.hero {min-height:760px}
.hero::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,31,32,.72),rgba(0,31,32,.12));pointer-events:none}
.hero .wrap{z-index:1}
.hero .body{max-width:1296px;justify-content:center;gap:24px;padding-block:64px}
.hero .body>*{max-width:560px}
.hero h1{font-size:48px;line-height:72px}
.hero p.sub{font-size:18px;line-height:28px;opacity:1}
.section{padding-top:80px}
.rule{margin-top:40px}
.rule+.section{padding-top:40px}
.stack{gap:24px}
.stack>.btn{margin-top:8px}
.cols{gap:40px}
.cols>div{gap:18px}
.cols .muted,.plus .d,.list .d{font-size:16px;opacity:1}
.muted{opacity:1}
.side{grid-template-columns:240px minmax(0,1fr);gap:48px}
.study{height:180px;margin-top:48px}
.about{grid-template-columns:360px minmax(0,1fr);gap:56px}
.about .text{gap:20px}
.about .title{grid-column:2;grid-row:1}
.about img{grid-column:1;grid-row:1 / span 2;object-position:center top}
.about .text{grid-column:2;grid-row:2}
.about{row-gap:24px}
.about .title .brow{margin-bottom:16px}
.textlink{white-space:normal;overflow-wrap:anywhere}
.booking{margin:80px 0 64px;padding:48px;gap:24px}
.research{margin-top:32px;max-width:720px}
.research summary{cursor:pointer;text-decoration:underline;text-underline-offset:4px}
.research p{margin-top:16px}
.exp .credit{font-size:11px;opacity:.8;white-space:nowrap;margin-left:6px}
.skip{position:absolute;top:-100px;left:16px;z-index:5;background:var(--c);padding:12px}
.skip:focus{top:12px}
@media(max-width:899px){
 .side,.about{grid-template-columns:1fr;gap:24px}
 .about .title,.about img,.about .text{grid-column:auto;grid-row:auto}
 .about .title{order:0}.about img{order:1;max-width:300px}.about .text{order:2}
 .cols{grid-template-columns:1fr;gap:32px}
 .hero{min-height:0}.hero .body{padding-block:64px;min-height:600px}
 .hero img{object-position:center}
}
@media(max-width:640px){
 .section{padding-top:48px}.rule{margin-top:24px}.rule+.section{padding-top:24px}
 .nav{flex-wrap:wrap;padding-block:20px;gap:16px}.nav .mark{width:100%}
 .nav .links{width:100%;gap:20px;flex-wrap:wrap}
 .nav .links a:not(.btn){display:inline-block}
 .nav .links .btn{margin-left:auto;padding:12px 16px}
 .hero .body{padding-block:48px;min-height:0}.hero h1{font-size:40px;line-height:1.25}
 .hero p.sub{font-size:16px;line-height:24px}
 .study{height:120px;margin-top:32px}
 .booking{padding:24px;margin:48px 0;gap:24px}.booking .btn{width:100%}
 .list li{column-gap:16px}.list .t{min-width:0}
}

.side>.research{grid-column:2}
@media(max-width:899px){.side>.research{grid-column:1}}

.service-intro{font-size:14px;line-height:22px;font-weight:400;color:var(--e);margin-bottom:-8px}

.service-credentials{font-size:12px;line-height:20px;color:var(--e)}
.service-credentials p+p{margin-top:6px}
.service-credentials a{color:inherit;text-underline-offset:3px}
.service-credentials small{font-size:11px;white-space:nowrap}
.service-credentials a:hover{color:var(--d)}

/* Match green-button lettering to the cream button surface in every state. */
.btn:not(.inv),.btn:not(.inv):hover,.btn:not(.inv):focus-visible,.nav .links a.btn:not(.inv),.nav .links a.btn:not(.inv):hover{color:#F6F4EC;-webkit-text-fill-color:#F6F4EC;opacity:1}
.btn.inv{background:#F6F4EC}

/* Two-column service table, matching the supplied editorial reference. */
.services-table-section{margin-top:80px}
.services-table{width:100%;border-collapse:collapse;table-layout:fixed;text-align:left;border-top:1px solid var(--rule)}
.services-table tr{border-bottom:1px solid var(--rule)}
.services-table th,.services-table td{vertical-align:top;padding:44px 0}
.services-table th{width:28.5%;padding-right:32px;font-size:13px;line-height:24px;font-weight:400;text-transform:uppercase;color:var(--e)}
.services-table h3{font-size:24px;line-height:1.4;margin:0 0 20px;font-weight:400}
.services-table td p{max-width:660px;font-size:16px;line-height:1.6;color:#405a59}
@media(max-width:650px){
 .services-table-section{margin-top:48px}
 .services-table,.services-table tbody,.services-table tr,.services-table th,.services-table td{display:block;width:100%}
 .services-table th{padding:28px 0 14px}.services-table td{padding:0 0 28px}
 .services-table h3{font-size:22px;margin-bottom:16px}
}

/* Personal identity: selected JD monogram with live, accessible wordmark. */
.nav .mark{display:inline-flex;align-items:center;gap:12px;font-weight:300;letter-spacing:0;min-height:44px}
.nav .mark span{font-size:14px;line-height:1.2}

/* Selected appearances use the same two-column table as homepage services. */
.appearances-section>h2{margin-bottom:28px}
.appearances-table th a{color:inherit;text-underline-offset:4px}
.appearances-table th a:hover{color:var(--a)}
.appearance-year{display:block;margin-top:8px;font-size:12px;line-height:20px;font-weight:400}

.research summary{font-size:13px;line-height:1.5}
footer .footer-linkedin{display:inline-flex;align-items:center;gap:8px;min-height:24px}
.footer-linkedin svg{flex:none}
.recognition-table h3{font-size:20px;margin:0}
.recognition-table h3 a{color:inherit;text-underline-offset:4px}
.recognition-table h3+p{margin-top:12px}

@media(max-width:480px){.nav .links{column-gap:20px;row-gap:16px}.nav .links .btn{flex-basis:100%;margin-left:0}}
