*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#f8f5ef;color:#322d32;font:17px/1.65 system-ui,sans-serif}main,header,footer{max-width:1120px;margin:auto;padding:24px clamp(20px,5vw,66px)}header,nav,.langs{display:flex;align-items:center;gap:18px}header{justify-content:space-between;border-bottom:1px solid #c9beb6}a{color:inherit;text-underline-offset:5px}nav a,.langs a{text-decoration:none}.langs [aria-current]{border-bottom:2px solid #783751}.grid{display:grid;grid-template-columns:1.15fr 1fr;gap:7%;align-items:center}section{padding:58px 0;border-bottom:1px solid #cebfbb}h1,h2,h3{font-family:Georgia,serif;font-weight:400;line-height:1.06;margin:.3em 0}h1{font-size:clamp(52px,8vw,100px);letter-spacing:-.055em}h2{font-size:clamp(36px,5vw,60px);letter-spacing:-.04em}small,figcaption{font-size:13px;color:#735562}figure{margin:0}img{width:100%;display:block;border-radius:3px}figcaption{margin-top:8px}.btn{display:inline-block;background:#603149;color:white;padding:11px 20px;margin:9px 8px 6px 0;border-radius:30px;text-decoration:none}details{border-bottom:1px solid #cbbeba;padding:15px 0}summary{cursor:pointer;font-weight:600}li{margin:12px 0}.pair{display:grid;grid-template-columns:2fr 1fr;gap:20px;margin-top:24px}.pair img{height:260px;object-fit:cover}.pair figure:last-child img{object-position:50% 65%}footer{padding-bottom:60px}a:focus-visible,summary:focus-visible{outline:3px solid #946900}@media(max-width:700px){.grid{grid-template-columns:1fr;gap:25px}nav{display:none}section{padding:36px 0}.pair img{height:180px}.pair{gap:10px}header{gap:6px}.hero img{max-height:440px;object-fit:cover;object-position:50% 35%}}

form{margin-top:35px;padding:clamp(18px,4vw,40px);background:#eee6dd;border-radius:5px;max-width:740px}form h3{font-size:32px}label{display:block;margin:16px 0;font-weight:550}input,select,textarea{display:block;width:100%;padding:12px;margin-top:5px;border:1px solid #a89996;border-radius:4px;font:inherit;color:inherit;background:#fffcf8}textarea{resize:vertical}button.btn{font:inherit;border:0;cursor:pointer}form small{display:block}
.scene{margin:25px 0}.scene img{max-height:380px;object-fit:cover;object-position:50% 38%}

/* Editorial layout and photographic mounts */
:root{--ink:#402d38;--rule:#c9b8a5;--gold:#94774d}
body{background:linear-gradient(90deg,#f3eee6,#faf7f1 20%,#faf7f1 80%,#f3eee6)}
main,header,footer{max-width:1600px;padding-inline:clamp(20px,5vw,84px)}
header{padding-block:22px;border-bottom:3px double var(--rule)}
header strong{font:600 clamp(19px,2vw,27px) Georgia,serif;color:var(--ink)}
header strong:before{content:'❧';color:var(--gold);margin-right:.5em}
nav a:hover,.langs a:hover{color:#86425e;text-decoration:underline}
section{padding-block:clamp(42px,6vw,96px);border-color:var(--rule)}
.grid{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:clamp(32px,7vw,112px)}
h1,h2,h3{color:var(--ink)}h1{font-size:clamp(54px,7vw,112px)}p{max-width:62ch}
section small:first-child{letter-spacing:.09em;font-size:12px}
figure{background:#fffcf6;border:1px solid var(--rule);padding:clamp(8px,1vw,16px);box-shadow:0 10px 26px #46372a10}
figure img{border-radius:0}figcaption{padding:3px 4px 0;font-family:Georgia,serif;font-style:italic;font-size:15px}
.hero>img{width:88%;justify-self:center;border-radius:48% 48% 3px 3px;aspect-ratio:4/4.7;object-fit:cover;border:8px solid #fcf9f3;outline:1px solid var(--rule);box-shadow:0 18px 48px #42293920}
details{padding:18px 0}summary{color:var(--ink)}details[open] summary{color:#783751}
#contact form{max-width:850px;border-top:3px double var(--gold)}
@media(min-width:1000px){#contact{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:7%;align-items:start}#contact>*{grid-column:1}#contact .btn{justify-self:start}#contact form{grid-column:2;grid-row:2/span 7;width:100%;margin:0}.pair img{height:clamp(270px,25vw,380px)}}
@media(max-width:700px){.grid{grid-template-columns:1fr;gap:26px}.hero>img{max-width:380px}.langs{gap:7px}}
.degree{display:inline-flex;align-items:center;gap:14px;text-decoration:none;margin:15px 0;color:#65394c;font:24px Georgia,serif}.degree small{display:block;margin-top:5px;font:13px system-ui,sans-serif}
.skills{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(245px,100%),1fr));gap:14px;margin-top:30px}.skills details{aspect-ratio:1;padding:18px;background:#fffcf7;border:1px solid #cbbcb0;border-top:3px solid #84556a}.skills summary{list-style:none;display:grid;gap:8px;position:relative}.skills summary:after{content:"+";position:absolute;right:0;color:#795766}.skills details[open] summary:after{content:"−"}.skills strong{font:23px/1.12 Georgia,serif}.skills span,.skills p{font:15px/1.4 system-ui}.skills details[open]{background:#f1e7df}.skills small{color:#795766}
.campus{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:24px}.campus img{aspect-ratio:3/2;object-fit:cover}@media(max-width:650px){.campus{grid-template-columns:1fr}}

section{padding-block:clamp(28px,3.6vw,58px)}.campus{margin-top:0}
.skills{gap:12px}.skill{position:relative;display:flex;flex-direction:column;gap:10px;text-align:left;aspect-ratio:auto;background:#fffcf6;color:var(--ink);border:1px solid var(--rule);border-top:3px solid #89596f;border-radius:5px;padding:20px;cursor:pointer;transition:background .22s,box-shadow .22s}.skill:after{content:'↗';position:absolute;right:16px;top:12px;color:#795766}.skill:hover,.skill:focus-visible{background:#f5ebe4;box-shadow:0 4px 16px #42293914}.skill strong{overflow-wrap:anywhere}
dialog{color:var(--ink);background:#fffaf4;border:1px solid var(--rule);border-radius:12px;width:min(560px,92vw);max-height:85vh;padding:clamp(24px,4vw,42px);box-shadow:0 24px 90px #20151e33}dialog[open]{animation:reveal .32s ease-out}dialog::backdrop{background:#30233066}dialog h2{font-size:clamp(28px,4vw,42px);padding-right:26px}.close{position:absolute;top:10px;right:10px;border:0;border-radius:50%;width:42px;height:42px;background:#eee5df;color:var(--ink);font-size:24px;cursor:pointer}dt{color:#76425b;font-weight:650;margin-top:13px}dd{margin:2px 0 0}@keyframes reveal{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.pair img,.scene img{height:auto;max-height:none;object-fit:contain}.pair{align-items:start}.pair figure:last-child img{max-height:480px}.pair{grid-template-columns:1.55fr 1fr}
#contact{display:block}#contact>a{display:inline-block;margin-right:12px}.contact-pair{display:grid;grid-template-columns:1fr 1fr;gap:clamp(15px,3vw,45px);align-items:start;margin-top:24px}#contact .contact-pair>*{grid-area:auto;margin:0}.contact-pair img{height:auto}.contact-pair form{width:100%}
@media(max-width:700px){.contact-pair{grid-template-columns:1fr}.skill{aspect-ratio:auto;min-height:145px}.pair{grid-template-columns:1fr}.pair figure:last-child{max-width:340px}header{flex-wrap:wrap}nav{order:3;display:flex;flex-wrap:wrap;gap:12px;width:100%;font-size:14px}}
.career{list-style:none;padding:0;margin:24px 0 0}.career li{display:grid;grid-template-columns:minmax(110px,22%) 1fr;gap:16px;border-top:1px solid var(--rule);margin:0;padding:17px 0}.career h3{font-size:clamp(22px,2.3vw,32px)}.career p{margin:.4em 0 0}.career small{padding-top:6px}@media(max-width:560px){.career li{grid-template-columns:1fr;gap:3px}}
.career-toggle>summary{display:flex;justify-content:space-between;align-items:center;gap:1em}.career-toggle summary:after{content:'+';font-size:30px}.career-toggle[open] summary:after{content:'−'}.year img{width:auto;height:auto;max-width:108px;max-height:52px;margin-top:8px}.badge{align-self:flex-start;padding:3px 9px;border-radius:3px}.badge b{font-size:17px}.group0{background:#eee3e9}.group1{background:#e3ece5}.group2{background:#efe7d9}.group3{background:#dee7ef}.campus{max-width:550px;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.campus figure{padding:5px}.campus figcaption,.talk-gallery figcaption{font-size:13px}.talk-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(5px,1vw,16px);max-width:780px}.talk-gallery figure{padding:6px}.zoom{border:0;padding:0;background:#ece6df;width:100%;cursor:zoom-in}.zoom img{width:100%;height:clamp(85px,12vw,155px);object-fit:contain}.viewer{width:fit-content;max-width:94vw;padding:14px}.viewer img{width:auto;max-width:100%;max-height:70vh;object-fit:contain}.viewer p{margin:8px 0 0}

.year img{display:block;object-fit:contain;object-position:left center;width:106px;height:45px}.year img[src$="qyzpu.svg"]{filter:brightness(0)}.bristol-name{display:block;width:max-content;margin-top:8px;text-decoration:none;font:16px/1 Georgia,serif;color:#452c35}.bristol-name b{font-size:26px}

.skill-sheet{width:min(660px,94vw);padding:clamp(20px,4vw,36px);border-top:4px solid #82546b}.sheet-category{display:inline-block;background:#ece3d8;padding:4px 12px;border-radius:16px;color:#563f45;letter-spacing:.04em}.skill-sheet h2{margin:16px 0 20px}.skill-sheet dl{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0}.skill-sheet dl>div{padding:14px 16px;background:#f0e9e2;border-radius:6px}.skill-sheet dt{margin:0 0 5px;font-size:13px;letter-spacing:.04em}.skill-sheet dd{line-height:1.45}.skill-sheet dl>div:nth-child(n+3){grid-column:1/-1}.skill-sheet dl>div:nth-child(3){padding-left:14px;border-left:3px solid #b3a188;background:transparent}.skill-sheet dl>div:last-child{background:#543849;color:white}.skill-sheet dl>div:last-child dt{color:#efd9be}.skill-sheet .discuss{margin:16px 0 0}.skill-sheet::backdrop{backdrop-filter:blur(3px)}@media(max-width:480px){.skill-sheet dl{grid-template-columns:1fr;gap:6px}.skill-sheet dl>div{padding:10px 12px}}
.programme{list-style:none;padding:0;margin:18px 0}.programme li{display:flex;gap:16px;align-items:baseline;padding:12px 0;border-top:1px solid var(--rule);margin:0}.programme li>span{font:italic 20px Georgia,serif;color:#885b66}.programme h3{font-size:clamp(20px,1.7vw,27px);line-height:1.2}.programme small{font:12px system-ui;color:#705664}.programme li:last-child{border-bottom:1px solid var(--rule)}
@media(min-width:950px){#talks{display:grid;grid-template-columns:1fr 1.12fr;column-gap:6%;align-content:start;align-items:start}#talks>small,#talks>h2,#talks>p,#talks>.talk-gallery{grid-column:1}#talks>.programme{grid-column:2;grid-row:1/span 5;margin:0}#talks>.talk-gallery{align-self:start}#talks .zoom img{height:clamp(90px,9vw,138px)}}

@media(min-width:901px){
  #about{align-items:end;row-gap:18px;grid-template-rows:1fr auto}
  #about>figure{grid-column:1;grid-row:1/3}
  #about>div:not(.campus){grid-column:2;grid-row:1}
  #about>.campus{grid-column:2;grid-row:2;width:100%}
}
.case-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:24px}.case-steps article{border-top:2px solid #ad929d;padding-top:12px}.case-steps h3{font-size:26px}.skill-filters{display:flex;gap:8px;flex-wrap:wrap;margin-top:20px}.skill-filters button{padding:8px 14px;border-radius:30px;border:1px solid var(--rule);background:none;color:var(--ink);font:inherit;cursor:pointer}.skill-filters [aria-pressed=true]{color:white;background:#543849}.skill[hidden]{display:none}.profile-link{display:inline-block;grid-column:1;justify-self:start;margin-top:15px;font-weight:600}@media(max-width:700px){.case-steps{grid-template-columns:1fr;gap:10px}}

.skill{min-width:0;min-height:145px;border-top-width:2px}
.skill:has(.group1){border-top-color:#839d8a}
.skill:has(.group2){border-top-color:#b19670}
.skill:has(.group3){border-top-color:#8498ad}
.skill-filters button:focus-visible{outline:2px solid #76445e;outline-offset:3px}

header{position:sticky;top:0;z-index:5;background:#faf7f1f7;border-bottom:1px solid var(--rule);padding-block:10px;min-height:60px}
header strong{font-size:clamp(18px,1.55vw,23px)}header nav{gap:clamp(12px,1.6vw,26px)}
#contents a{padding:6px 0;border-bottom:1px solid transparent;font-size:15px}
#contents [aria-current]{border-color:#6c3b55;color:#61364d}
.menu-toggle{display:none}section,form{scroll-margin-top:68px}
.hero>div>p{font-size:clamp(19px,1.55vw,25px);max-width:42ch}
.cover-meta{display:flex;flex-wrap:wrap;gap:4px 12px;margin:20px 0;font-size:14px;color:#64525c}
.cover-meta span+span{padding-left:12px;border-left:1px solid var(--rule)}
#student-voice{background:#543849;color:#fff7f3;padding:clamp(24px,4vw,58px);border-radius:6px}
#student-voice h2,#student-voice h3{color:inherit}#student-voice h2{max-width:22ch;margin:12px 0 28px}
#student-voice small{color:#ead2b8}#student-voice .case-steps{grid-template-columns:repeat(2,minmax(0,1fr))}
.programme .invite{display:inline-block;color:#74475d;font-size:14px;padding:5px 0;text-underline-offset:4px}
@media(max-width:1060px){
 header{flex-wrap:nowrap;gap:10px;padding-inline:clamp(12px,3vw,32px)}header .langs{margin-left:auto;gap:4px;font-size:14px}
 header strong:before{display:none}.menu-toggle{display:block;padding:7px 9px;border:1px solid var(--rule);border-radius:5px;color:var(--ink);background:transparent;font:inherit;font-size:14px}
 header nav{display:none}.menu-open nav{display:grid;position:absolute;inset:100% 0 auto;width:auto;background:#faf7f1;padding:12px 20px;box-shadow:0 9px 16px #30263012;gap:4px}
 #contents a{justify-self:start}.menu-open #contents a{width:100%}
}
@media(max-width:650px){#student-voice .case-steps{grid-template-columns:1fr}.cover-meta{display:grid}.cover-meta span+span{padding:0;border:none}}

#contact a:has(.contact-icon),#enquiry button:has(.contact-icon){display:inline-flex;align-items:center;gap:.55em;vertical-align:middle}
.contact-icon{width:1.25em;height:1.25em;flex:none}
#contact a[rel="me"]{padding-block:9px;text-underline-offset:4px}

.review-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:28px}.review-card{display:flex;flex-direction:column;padding:clamp(20px,3vw,34px);background:#fffcf8;border:1px solid #cebfbb;border-radius:8px;text-decoration:none}.review-card:hover{border-color:#783751}.review-card strong{font:normal 1.45rem Georgia,serif}.review-card blockquote,.review-page blockquote{margin:1.2em 0;font:normal 1.25rem/1.55 Georgia,serif}.review-card span{margin-top:auto;color:#603149;text-decoration:underline}.review-page{max-width:840px}.review-tools{display:flex;justify-content:space-between}.review-page article{margin:10vh 0}.review-page h1{font-size:clamp(36px,7vw,68px)}@media(max-width:650px){.review-grid{grid-template-columns:1fr}}
.review-avatar{width:76px;height:76px;border-radius:50%;object-fit:cover;margin-bottom:14px}.review-page .review-avatar{width:96px;height:96px}
