:root {
  --paper:#ffffff; --surface:#fff; --ink:#24243b; --muted:#606074;
  --accent:#2d2a72; --accent-hover:#211e59; --wash:#f3f3f8; --line:#dedee9;
  --logo-blue:#2d2a72; --logo-burgundy:#942a38; --logo-gold:#eda037;
  --gutter:max(24px,calc((100vw - 1200px)/2)); --teal:#2d2a72; --teal-light:#c5c3ec;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:108px; color-scheme:light; background:var(--paper); }
body { margin:0; background:var(--paper); color:var(--ink); font-family:Inter,"Segoe UI",Arial,sans-serif; font-size:16px; line-height:1.65; }
[hidden] { display:none !important; }
img { display:block; max-width:100%; height:auto; }
button,input,textarea { font:inherit; }
button,a { -webkit-tap-highlight-color:transparent; }
a { color:inherit; text-decoration:none; }
button { cursor:pointer; }
button:disabled { cursor:default; opacity:.55; }
p,h1,h2,h3,figure { margin:0; }
h1,h2,h3 { line-height:1.13; letter-spacing:-.045em; font-weight:750; color:var(--ink); }
h1 { font-size:clamp(44px,5.3vw,76px); }
h2 { font-size:clamp(32px,3.4vw,48px); }
h3 { font-size:26px; }
h1 em { color:var(--accent); font-style:normal; }
p { overflow-wrap:break-word; }
p+p { margin-top:18px; }
:focus-visible { outline:3px solid var(--accent); outline-offset:5px; }
section,footer { scroll-margin-top:108px; }
.skip-link { position:fixed; top:8px; left:20px; z-index:300; padding:10px 20px; background:var(--ink); color:white; transform:translateY(-160%); }
.skip-link:focus { transform:none; }
.section-tag { color:var(--accent); font-size:11px; line-height:1.6; letter-spacing:.16em; text-transform:uppercase; font-weight:750; margin-bottom:18px; }
.section-space { padding:88px var(--gutter); }
.section-heading { margin-bottom:38px; }
.heading-row { display:flex; gap:36px; align-items:flex-end; justify-content:space-between; }
.heading-row>p { max-width:320px; color:var(--muted); }
.lead { font-size:22px; line-height:1.5; }
.text-link { color:var(--accent); font-weight:650; display:inline-block; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:6px; }
.text-link:hover { color:var(--accent-hover); }
.pill-button,.survey-button,.contact-button,.outline-button { display:inline-flex; align-items:center; justify-content:center; gap:24px; min-height:48px; padding:14px 24px; font-size:14px; line-height:1.4; font-weight:650; border:1px solid var(--accent); border-radius:6px; background:var(--accent); color:#fff; text-align:center; transition:background .18s; }
.pill-button:hover,.survey-button:hover,.contact-button:hover { background:var(--accent-hover); }
.outline-button,.portal-outline-button { color:var(--accent); background:transparent; }
.outline-button:hover,.portal-outline-button:hover { background:var(--wash); }
.dashboard { position:sticky; top:0; z-index:100; min-height:92px; padding:14px var(--gutter); display:flex; align-items:center; justify-content:space-between; gap:30px; background:var(--paper); border-bottom:1px solid var(--line); }
.brand { flex-shrink:0; }
.brand img { width:172px; height:65px; object-fit:cover; object-position:center 46%; }
.dashboard-links { display:flex; gap:32px; align-items:center; }
.dashboard-links>a { font-size:14px; font-weight:650; white-space:nowrap; }
.dashboard-links>a:not(.contact-button):hover,.dashboard-links>a[aria-current] { color:var(--accent); text-decoration:underline; text-underline-offset:7px; }
.contact-button { padding:12px 20px; }
.nav-toggle { display:none; width:44px; height:44px; border:1px solid var(--line); background:transparent; border-radius:6px; padding:10px; }
.nav-toggle span { display:block; height:2px; background:var(--ink); margin:4px 0; }
.nav-backdrop { position:fixed; inset:92px 0 0; background:rgba(36,36,59,.25); z-index:-1; }
.home-hero { display:grid; grid-template-columns:1.08fr 1fr; gap:54px; align-items:center; padding:66px var(--gutter) 68px; }
.hero-copy { min-width:0; }
.hero-copy h1 { margin-bottom:26px; }
.hero-lead { font-size:19px; max-width:480px; color:var(--muted); line-height:1.65; }
.hero-actions { display:flex; flex-wrap:wrap; gap:20px; align-items:center; margin-top:32px; }
.hero-actions .text-link { font-size:14px; }
.hero-visual { min-width:0; background:#fff; border:1px solid var(--line); border-radius:12px; overflow:hidden; }
.hero-visual>img { width:100%; aspect-ratio:1.5; object-fit:cover; object-position:center; }
.hero-visual figcaption { background:var(--wash); padding:22px 28px; display:grid; grid-template-columns:1fr 1fr; gap:8px 24px; align-items:center; }
.hero-visual figcaption>span { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.1em; }
.hero-visual strong { font-size:21px; line-height:1.25; letter-spacing:-.025em; grid-column:2; grid-row:1/3; }
.hero-visual small { color:var(--muted); font-size:12px; }
.values-strip { padding:21px var(--gutter); display:flex; justify-content:space-between; gap:20px; background:var(--wash); border-block:1px solid var(--line); font-size:13px; font-weight:650; }
.values-strip span::before { content:'↗'; margin-right:14px; color:var(--accent); }
.about-section { display:grid; grid-template-columns:.95fr 1.05fr; gap:80px; }
.about-copy>p:not(.lead) { color:var(--muted); }
.mission-band { padding:52px var(--gutter); background:var(--wash); border-block:1px solid var(--line); }
.mission-band h2 { font-size:clamp(28px,3vw,40px); max-width:970px; }
.mission-band>p:last-child { max-width:840px; color:var(--muted); margin-top:24px; }
.work-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px; }
.work-card { border-top:2px solid var(--accent); padding-top:24px; }
.work-number { color:var(--accent); font-size:11px; text-transform:uppercase; font-weight:750; letter-spacing:.1em; }
.work-card h3 { margin:26px 0 16px; font-size:25px; line-height:1.25; }
.work-card p { color:var(--muted); font-size:15px; }
.featured-project { display:grid; grid-template-columns:1fr 1fr; margin:0 var(--gutter); background:var(--wash); border:1px solid var(--line); border-radius:12px; overflow:hidden; }
.project-image { background:white; min-width:0; }
.project-image img { width:100%; height:100%; object-fit:cover; }
.project-copy { padding:48px; align-self:center; }
.project-copy h2 { font-size:clamp(30px,3vw,42px); }
.project-copy>p:not(.section-tag) { color:var(--muted); margin-top:24px; }
.project-copy .project-status { font-size:12px; margin:24px 0; }
.news-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px; }
.news-card { padding:30px; border:1px solid var(--line); border-radius:8px; background:#fff; }
.news-card time { color:var(--muted); font-size:12px; }
.news-card h3 { font-size:25px; line-height:1.25; margin:12px 0 18px; }
.news-card .news-body { color:var(--muted); white-space:pre-wrap; font-size:15px; }
.news-card a { display:inline-block; color:var(--accent); font-size:14px; font-weight:700; margin-top:24px; text-decoration:underline; text-underline-offset:5px; }
.news-empty { color:var(--muted); }
.join-section { padding:64px var(--gutter); background:var(--wash); color:var(--ink); display:grid; grid-template-columns:1.4fr 1fr; align-items:center; gap:64px; }
.join-section h2 { color:var(--ink); }
.join-section .section-tag { color:var(--logo-burgundy); }
.join-section p:not(.section-tag) { color:var(--muted); max-width:650px; margin-top:22px; }
.join-actions { display:flex; flex-direction:column; align-items:flex-start; gap:24px; justify-self:end; }
.join-actions .pill-button { background:var(--accent); color:#fff; border-color:var(--accent); }
.join-actions .text-link { color:var(--accent); font-size:13px; }
.join-section :focus-visible { outline-color:var(--accent); }
.feedback-section { padding:36px var(--gutter); display:flex; gap:30px; align-items:center; justify-content:space-between; border-bottom:1px solid var(--line); }
.feedback-section h2 { font-size:22px; margin-bottom:8px; }
.feedback-section p { color:var(--muted); font-size:14px; }
.feedback-section button { flex-shrink:0; }
.footer { padding:64px var(--gutter) 26px; display:grid; grid-template-columns:1.2fr .7fr 1fr; gap:40px; color:var(--ink); background:var(--paper); }
.footer-brand img { width:172px; height:65px; object-fit:cover; object-position:center 46%; margin-bottom:24px; }
.footer-brand p { color:var(--muted); font-size:14px; }
.footer-brand>span { display:block; margin-top:16px; font-size:12px; color:var(--muted); }
.footer h2 { font-size:15px; margin:8px 0 22px; letter-spacing:0; }
.footer-links,.footer-contact { display:flex; flex-direction:column; align-items:flex-start; gap:10px; }
.footer-links a,.footer-contact a { font-size:14px; overflow-wrap:anywhere; }
.footer a:hover { color:var(--accent); text-decoration:underline; text-underline-offset:4px; }
.footer-bottom { grid-column:1/-1; display:flex; align-items:start; justify-content:space-between; gap:40px; border-top:1px solid var(--line); padding-top:24px; margin-top:14px; font-size:11px; color:var(--muted); }
.footer-bottom p { max-width:770px; }
.footer-bottom>a { white-space:nowrap; }
.back-to-top { position:fixed; right:20px; bottom:20px; width:44px; height:44px; border:1px solid var(--line); border-radius:50%; background:var(--paper); color:var(--ink); z-index:60; box-shadow:0 4px 18px #24243b14; }
.scroll-progress { display:none; }
.page-intro { padding:72px var(--gutter); background:var(--wash); border-bottom:1px solid var(--line); }
.page-intro h1 { margin-bottom:26px; font-size:clamp(44px,5.3vw,68px); }
.page-intro>p:not(.section-tag) { max-width:670px; color:var(--muted); font-size:18px; }
.page-intro .text-link { margin-top:24px; }
.hand-wrap { padding:72px var(--gutter); }
.prototype-heading { max-width:870px; margin-bottom:36px; }
.prototype-heading h2 { font-size:clamp(30px,3vw,42px); margin-bottom:20px; }
.prototype-heading>p:last-child { color:var(--muted); }
.prototype-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px; align-items:start; }
.prototype-card { border:1px solid var(--line); background:white; border-radius:10px; overflow:hidden; }
.prototype-photo { height:300px; background-position:center; background-size:cover; border-bottom:1px solid var(--line); }


.prototype-card-copy { padding:30px; }
.prototype-status-row { display:flex; flex-wrap:wrap; gap:12px; justify-content:space-between; margin-bottom:20px; font-size:11px; }
.prototype-index { color:var(--accent); font-weight:750; text-transform:uppercase; letter-spacing:.08em; }
.prototype-status { color:var(--muted); }
.prototype-card h3 { margin-bottom:18px; font-size:28px; }
.prototype-summary { color:var(--muted); font-size:15px; }
.project-detail { border-top:1px solid var(--line); margin-top:24px; padding-top:18px; }
.project-detail summary { font-size:14px; font-weight:650; color:var(--accent); cursor:pointer; }
.prototype-points { list-style:none; padding:0; margin:18px 0 0; font-size:14px; color:var(--muted); }
.prototype-points li+li { margin-top:12px; }
.prototype-points strong { color:var(--ink); }
.materials-track { margin-top:32px; padding:36px; background:var(--wash); border:1px solid var(--line); border-radius:10px; display:grid; grid-template-columns:1.8fr 1fr; gap:24px 36px; }
.materials-track-label { grid-column:1/-1; font-size:11px; color:var(--accent); text-transform:uppercase; letter-spacing:.1em; font-weight:700; }
.materials-track-copy .section-tag { display:none; }
.materials-track h3 { margin-bottom:20px; }
.materials-track p { color:var(--muted); font-size:14px; }
.materials-facts { display:grid; align-content:start; gap:16px; }
.materials-facts div { border-bottom:1px solid #d7d6e4; padding-bottom:14px; }
.materials-facts span { display:block; font-size:11px; color:var(--muted); margin-bottom:4px; }
.materials-facts strong { display:block; font-size:14px; }
.prototype-research-note { display:flex; gap:12px; font-size:13px; color:var(--muted); margin-top:28px; border-left:3px solid var(--accent); padding:8px 20px; }
.project-wide-actions { display:flex; flex-wrap:wrap; gap:14px; margin-top:30px; }
.modal-overlay { position:fixed; inset:0; z-index:200; background:rgba(13,39,44,.55); display:none; align-items:center; justify-content:center; padding:24px; }
.modal-overlay.is-open { display:flex; }
.survey-modal { position:relative; width:min(100%,650px); max-height:90dvh; overflow:auto; padding:36px; border-radius:12px; background:var(--paper); }
.survey-modal h2 { font-size:30px; padding-right:32px; margin-bottom:14px; }
.modal-close { position:absolute; right:20px; top:20px; border:1px solid var(--line); width:38px; height:38px; border-radius:50%; background:white; color:var(--ink); font-size:24px; }
.modal-intro { color:var(--muted); font-size:14px; }
#survey-form label { display:block; font-size:14px; font-weight:600; margin-top:22px; }
#survey-form input:not([type=range]),#survey-form textarea { display:block; width:100%; margin-top:8px; padding:10px 12px; border:1px solid #9593ad; border-radius:5px; color:var(--ink); background:white; }
#survey-form textarea { resize:vertical; }
.slider-row { display:flex; align-items:center; gap:16px; margin-top:10px; }
.slider-row input { flex:1; min-width:0; accent-color:var(--accent); }
.slider-value { min-width:28px; text-align:center; }
.form-actions { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:12px; margin-top:28px; }
.modal-cancel { border:1px solid var(--line); border-radius:6px; padding:12px 20px; background:transparent; color:var(--ink); }
.survey-feedback { margin-top:18px; font-size:14px; }
@media(min-width:761px) and (max-width:1050px) {
 .dashboard-links { gap:22px; } .brand img { width:145px; height:55px; } .dashboard-links>a { font-size:13px; }
 .home-hero { gap:30px; } .hero-copy h1 { font-size:clamp(42px,5.3vw,58px); }
 .hero-visual figcaption { padding:20px; grid-template-columns:1fr; } .hero-visual strong { grid-column:1; grid-row:auto; }
 .about-section { gap:40px; } .project-copy { padding:30px; }
 .join-section { gap:32px; } .join-actions { justify-self:start; }
}
@media(max-width:760px) {
 html { scroll-padding-top:90px; } section,footer { scroll-margin-top:90px; }
 .dashboard { min-height:78px; padding:12px 20px; flex-wrap:wrap; gap:16px; }
 .brand img { width:145px; height:55px; }
 .nav-toggle { display:block; }
 .dashboard-links { flex-basis:100%; flex-direction:column; align-items:stretch; gap:4px; padding-block:10px; }
 .js .dashboard-links { display:none; position:absolute; left:0; right:0; top:100%; background:var(--paper); padding:16px 24px 24px; border-bottom:1px solid var(--line); }
 .js .dashboard-links.is-open { display:flex; }
 .dashboard-links>a { padding:12px 4px; font-size:16px; }
 .dashboard-links .contact-button { margin-top:8px; }
 .nav-backdrop { inset:78px 0 0; }
 body.nav-locked { overflow:hidden; }
 .home-hero { grid-template-columns:1fr; padding:44px 24px; gap:36px; }
 .hero-copy h1 { font-size:clamp(40px,9vw,65px); }
 .hero-lead { font-size:18px; max-width:600px; }
 .hero-visual { max-width:620px; }
 .hero-visual>img { aspect-ratio:1.5; object-fit:cover; }
 .hero-visual figcaption { padding:20px; }
 .hero-visual strong { font-size:19px; }
 .values-strip { padding:18px 24px; flex-wrap:wrap; justify-content:flex-start; gap:8px 24px; font-size:12px; }
 .section-space { padding:56px 24px; }
 .about-section { grid-template-columns:1fr; gap:0; }
 .section-heading { margin-bottom:28px; }
 .lead { font-size:20px; }
 .mission-band { padding:40px 24px; }
 .heading-row { flex-direction:column; align-items:start; gap:20px; }
 .work-grid { grid-template-columns:1fr; gap:30px; }
 .work-card h3 { margin-top:18px; } .work-card h3 br { display:none; }
 .featured-project { margin-inline:24px; grid-template-columns:1fr; }
 .project-image img { height:320px; object-fit:cover; } .project-copy { padding:30px 24px; }
 .news-grid { grid-template-columns:1fr; gap:20px; } .news-card { padding:24px; }
 .join-section { padding:48px 24px; grid-template-columns:1fr; gap:32px; }
 .join-actions { justify-self:start; }
 .feedback-section { padding:30px 24px; flex-direction:column; align-items:start; gap:20px; }
 .footer { padding:48px 24px 24px; grid-template-columns:1fr 1fr; gap:32px 24px; }
 .footer-brand { grid-column:1/-1; }
 .footer-bottom { flex-direction:column; gap:18px; }
 .page-intro { padding:48px 24px; } .page-intro h1 { font-size:clamp(40px,9vw,60px); }
 .hand-wrap { padding:48px 24px; } .prototype-grid { grid-template-columns:1fr; }
 .prototype-photo { height:280px; } .prototype-card-copy { padding:24px; }
 .materials-track { grid-template-columns:1fr; padding:24px; }
 .prototype-research-note { flex-direction:column; }
 .survey-modal { padding:28px 24px; } .modal-overlay { padding:12px; }
}
@media(max-width:380px) { .footer { grid-template-columns:1fr; } .hero-visual figcaption { display:block; } .hero-visual strong { display:block; margin:10px 0; } .hero-actions { align-items:stretch; flex-direction:column; } }
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { transition:none !important; animation:none !important; } }

/* Restrained secondary colours, sampled from the supplied logo. */
.hero-copy h1 em { text-decoration:underline; text-decoration-color:var(--logo-gold); text-decoration-thickness:4px; text-underline-offset:9px; }
.home-hero .section-tag,.work-number,.hero-visual figcaption>span { color:var(--logo-burgundy); }
.mission-band { border-top:2px solid var(--logo-gold); }
.join-actions .pill-button:hover { background:var(--accent-hover); }

/* Documentary project photography */
.project-image img { max-height:560px; object-position:center 58%; }
.project-gallery { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px; margin-bottom:36px; }
.project-gallery figure { overflow:hidden; border:1px solid var(--line); border-radius:10px; background:var(--wash); }
.project-gallery img { width:100%; height:auto; aspect-ratio:1.5; object-fit:cover; }
.project-gallery figcaption { padding:16px 20px; font-size:13px; color:var(--muted); }
@media(max-width:760px) { .project-gallery { gap:16px; } .project-gallery img { height:auto; } .project-gallery figcaption { padding:14px; } }
@media(max-width:480px) { .project-gallery { grid-template-columns:1fr; } .project-gallery img { height:auto; aspect-ratio:1.5; } }

.model-files { margin-top:24px; }
