@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--paper:#f8f7f3;--ink:#242620;--muted:#62655c;--line:#d8d9d1;--accent:#e5eb8a}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',Arial,sans-serif;font-size:16px;line-height:1.6}a{color:inherit;text-decoration:none}button{font:inherit}a:focus-visible,button:focus-visible{outline:3px solid #697638;outline-offset:5px}header{display:flex;justify-content:space-between;align-items:center;max-width:1440px;margin:auto;padding:28px 6%;border-bottom:1px solid var(--line)}.brand{font-family:Manrope,Arial,sans-serif;font-size:25px;font-weight:800;letter-spacing:-1.3px}.dot{color:#7a8633}nav{display:flex;align-items:center;gap:34px;font-size:14px}nav .contact{border:1px solid var(--ink);border-radius:40px;padding:9px 19px}nav .contact span{margin-left:20px}main{max-width:1440px;margin:auto;padding:0 6%}.hero{position:relative;padding:83px 0 74px}.eyebrow{font-size:11px;letter-spacing:1.8px;font-weight:600;line-height:1.5}.green{display:inline-block;width:7px;height:7px;border-radius:50%;background:#71803c;margin-right:8px}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:Manrope,Arial,sans-serif}h1{font-size:clamp(44px,6.5vw,88px);line-height:1.13;letter-spacing:-4px;font-weight:500;max-width:1050px;margin:27px 0 31px}h1 em{font-family:Georgia,serif;font-weight:400;letter-spacing:-3px}.hero-bottom{display:flex;justify-content:space-between;align-items:end;gap:40px}.hero-bottom p{max-width:500px;font-size:17px;color:var(--muted)}.text-link{font-size:14px;border-bottom:1px solid var(--ink);padding-bottom:7px;display:inline-block}.text-link span{margin-left:35px}.hero-mark{position:absolute;right:30px;top:85px;font-size:90px;color:#929c50;transform:rotate(-12deg);line-height:1}.section-heading{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:30px;margin-bottom:25px;gap:20px}.section-heading h2{font-size:26px;letter-spacing:-.8px;font-weight:500}.section-heading h2 span{color:var(--muted);font-size:14px;vertical-align:super;margin-left:5px}.section-heading>span{font-size:10px;letter-spacing:1.5px;color:var(--muted)}.filters{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:32px}.filter{border:1px solid var(--line);border-radius:25px;padding:8px 16px;font-size:12px;background:transparent;cursor:pointer}.filter[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:white}.filter:hover{border-color:var(--ink)}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:55px 32px}.project[hidden]{display:none}.project-image{display:block;position:relative;overflow:hidden;border-radius:5px;background:#e9e7e1;aspect-ratio:16/9}.project-image img{width:100%;height:100%;object-fit:cover;transition:transform .4s}.project-image:hover img{transform:scale(1.035)}.view{position:absolute;right:15px;bottom:15px;background:var(--paper);border-radius:30px;padding:8px 14px;font-size:12px;opacity:0;transform:translateY(8px);transition:.2s}.project-image:hover .view,.project-image:focus .view{opacity:1;transform:none}.project-meta{display:flex;justify-content:space-between;font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);margin:19px 0 9px;gap:12px}h3{font-size:23px;font-weight:500;line-height:1.3;letter-spacing:-.65px}h3 a{display:flex;justify-content:space-between;gap:15px}h3 span{font-size:22px}.project>p{font-size:14px;color:var(--muted);margin-top:11px;max-width:92%}.tag{display:inline-block;font-size:10px;border:1px solid var(--line);padding:4px 10px;border-radius:20px;margin-top:15px}.about{display:grid;grid-template-columns:1fr 1fr;gap:70px;padding:75px 0 90px;margin-top:90px;border-top:1px solid var(--line)}.about h2{font-size:39px;line-height:1.2;font-weight:500;letter-spacing:-1.8px;margin-top:22px}.about p{color:var(--muted);margin-bottom:20px}.skills{display:flex;flex-wrap:wrap;gap:8px;margin:25px 0 30px}.skills span{font-size:12px;background:#eceee3;padding:6px 11px;border-radius:4px}footer{background:#e9edcf;padding:58px max(6%,calc((100vw - 1268px)/2)) 25px}.footer-title{font-family:Manrope,Arial,sans-serif;font-size:clamp(30px,4.5vw,60px);line-height:1.3;letter-spacing:-2px;display:flex;justify-content:space-between;margin:21px 0 55px}.footer-bottom{border-top:1px solid #c8cfac;padding-top:23px;display:flex;justify-content:space-between;font-size:11px;gap:20px}.footer-bottom div{display:flex;gap:25px}.skip{position:absolute;top:-80px;left:20px;z-index:5;background:white;padding:10px}.skip:focus{top:10px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.case{padding-top:38px}.back{display:inline-block;font-size:13px;margin-bottom:55px}.case h1{font-size:clamp(40px,5.5vw,74px);max-width:950px;letter-spacing:-3px;margin-bottom:25px}.case-intro{font-size:21px;max-width:740px;color:var(--muted)}.facts{display:grid;grid-template-columns:1fr 1.3fr .5fr;gap:35px;margin:45px 0 35px;padding:25px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:13px}.facts span{display:block;font-size:10px;letter-spacing:1.5px;color:var(--muted);margin-bottom:8px}.case-cover{width:100%;border-radius:5px}.case-body{display:grid;grid-template-columns:1fr 2.5fr;gap:60px;padding:70px 0}.case-body aside{display:flex;flex-direction:column;gap:15px;align-self:start;position:sticky;top:30px;font-size:12px;color:var(--muted)}.case-body section{margin-bottom:45px;max-width:760px}.case-body h2{font-size:32px;font-weight:500;letter-spacing:-1px;margin:9px 0 18px}.case-body p{font-size:17px;color:var(--muted);line-height:1.85}.gallery figure{margin:0 0 42px}.gallery img{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:5px}.gallery video{display:block;width:100%;max-height:80vh;background:#e5e5df;border-radius:5px}.gallery figcaption{font-size:11px;color:var(--muted);margin-top:11px}.next-project{display:block;margin:80px 0;padding:30px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.next-project strong{display:block;font-size:28px;font-weight:500;margin-top:10px}.video-error{padding:15px;font-size:13px}.video-error a{text-decoration:underline}@media(min-width:1500px){.hero-mark{right:50px}}@media(max-width:800px){header{padding:22px 5%}main{padding:0 5%}nav{gap:20px}.hero{padding-top:55px}.hero-mark{display:none}h1{letter-spacing:-2.2px}h1 em{letter-spacing:-1.8px}.hero-bottom{align-items:start;flex-direction:column;gap:24px}.hero-bottom p{font-size:16px}.section-heading>span{display:none}.project-grid{gap:40px 22px}h3{font-size:20px}.project-meta{font-size:9px}.about{gap:30px}.about h2{font-size:32px}.facts{gap:20px}.case-body{gap:30px}.case-body aside{display:none}.case-body{grid-template-columns:1fr}.footer-bottom{flex-direction:column}.case h1{letter-spacing:-2px}}@media(max-width:540px){.brand{font-size:22px}nav{gap:16px}nav .contact{border:0;padding:0}nav .contact span{display:none}nav a{font-size:12px}.hero{padding-bottom:48px}h1{font-size:43px}.project-grid{grid-template-columns:1fr}.filters{gap:7px}.filter{font-size:11px;padding:7px 12px}.about{grid-template-columns:1fr;padding:45px 0;margin-top:55px}.about h2{font-size:33px}.footer-title{letter-spacing:-1px}.footer-bottom div{gap:20px}.facts{grid-template-columns:1fr}.case-intro{font-size:18px}.back{margin-bottom:35px}.case-body{padding:45px 0}.gallery .section-heading h2{font-size:23px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
/* Compact artefact gallery */
.case-cover>img{width:100%;display:block;border-radius:5px}.case-cover{overflow:hidden}.image-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;margin-top:28px}.gallery .image-card{margin:0}.image-preview{display:block;width:100%;height:300px;border:1px solid var(--line);background:#eeeee8;border-radius:6px;padding:18px;cursor:zoom-in;position:relative}.gallery .image-preview img{height:100%;width:100%;object-fit:contain;border:0;border-radius:0}.image-preview>span{position:absolute;right:10px;bottom:10px;font-size:11px;background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:4px 11px}.gallery .image-card figcaption{line-height:1.55;font-size:12px}.more-images{margin-top:30px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:17px 0 20px}.more-images summary{cursor:pointer;font-size:14px}.image-dialog{max-width:none;width:min(1150px,94vw);height:90vh;max-height:90vh;padding:0;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink)}.image-dialog::backdrop{background:#151910c9}.dialog-toolbar{display:flex;align-items:center;gap:14px;padding:15px 20px;border-bottom:1px solid var(--line)}.dialog-caption{flex:1;font-size:13px}.dialog-toolbar button{background:transparent;border:1px solid var(--line);padding:7px 12px;border-radius:20px;cursor:pointer;white-space:nowrap}.dialog-image-area{height:calc(90vh - 125px);overflow:auto;padding:20px;text-align:center}.gallery .dialog-image-area img{width:100%;height:100%;object-fit:contain;border:0}.image-dialog.zoomed .dialog-image-area img{width:auto;height:auto;max-width:none;min-width:100%;object-fit:initial}.dialog-hint{font-size:11px;text-align:center;padding:10px;color:var(--muted)}.gallery video{max-width:960px;margin:auto;aspect-ratio:16/10;object-fit:contain;background:#e8e8e1}.video-figure{max-width:960px;margin-left:auto!important;margin-right:auto!important}.embedded-video{display:block;width:100%;aspect-ratio:16/9;border:0;border-radius:5px}/* Covers follow the 1920 × 1080 composition in Emily's Figma file. */
.academic-cover{height:100%;width:100%;aspect-ratio:16/9;position:relative;container-type:inline-size;isolation:isolate;overflow:hidden;border-radius:2.3cqw;background:linear-gradient(115deg,#cd8cdb 0%,#a383e8 45%,#6c72eb 100%)}


.cover-artwork{position:absolute;left:7.5%;top:9%;width:77%;height:73%;overflow:hidden;border-radius:2cqw;box-shadow:0 1.7cqw 2.2cqw #34304445;background:transparent;border:0}
.project-image .cover-artwork img,.case-cover .cover-artwork img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;transform:none;border:0;background:transparent}
.project-12 .cover-artwork img{object-position:50% 0%}.project-17 .cover-artwork img{object-position:50% 30%}
.cover-university{position:absolute;right:0;top:0;width:13%;height:24%;background:#fff;border-radius:0 0 0 2.3cqw;box-shadow:0 1cqw 1.4cqw #44325e24;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:.3cqw}
.cover-university b,.case-cover .cover-university b{font-family:Georgia,serif;font-size:6cqw;line-height:1;color:#51247a}
.cover-university span,.case-cover .cover-university span{font-size:1.45cqw;line-height:1.15;text-align:center;color:#302b35}
.cover-skills{position:absolute;left:50%;bottom:5.4%;transform:translateX(-50%);display:flex;align-items:center;gap:2.2cqw;background:white;padding:1cqw 2cqw;border-radius:5cqw;box-shadow:0 1.1cqw 1.4cqw #493e6f30;white-space:nowrap}
.cover-skills>span{display:flex;align-items:center;gap:.7cqw;font-family:Arial,sans-serif;font-size:2.05cqw;font-weight:700;line-height:1.3;color:#1f1e23}
.cover-skills svg{width:3.7cqw;height:3.7cqw;flex-shrink:0}
@media(max-width:600px){.image-grid{gap:16px;grid-template-columns:1fr 1fr}.image-preview{height:190px;padding:10px}.dialog-toolbar{padding:10px;gap:7px;flex-wrap:wrap}.dialog-caption{flex-basis:100%}.image-dialog{height:92vh}.dialog-image-area{height:calc(92vh - 160px)}}
.project-image:has(.academic-cover){background:transparent;border-radius:8px}.academic-cover{border-radius:0}

/* Discipline colours: Research → orange/yellow; Design → pink; Code → blue;
   A/B testing → purple; Hotjar testing → red. Composite covers use only their disciplines. */
.academic-cover .cover-university{width:20%;height:16%;padding:2.4% 1.7%;gap:0}
.project-image .cover-university img,.case-cover .cover-university img{display:block;width:100%;height:100%;object-fit:contain;transform:none;border:0;background:transparent}
.project-17 .cover-artwork{left:17%;top:7%;width:61%;height:77%;border-radius:.6cqw}
.project-image .project-17 .cover-artwork img,.case-cover .project-17 .cover-artwork img{object-fit:contain;object-position:center}
