/* Fluid, readable type across desktop, tablet and mobile. */
:root {
  --type-body: clamp(1.125rem, 1rem + .45vw, 1.5rem);
  --type-detail: clamp(1rem, .94rem + .35vw, 1.25rem);
  --type-meta: clamp(.875rem, .83rem + .2vw, 1rem);
  --type-control: clamp(1rem, .96rem + .2vw, 1.1875rem);
  --muted: #4f6063;
}
html { font-size: 100%; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { font-size: var(--type-body); line-height: 1.7; word-break: keep-all; overflow-wrap: break-word; }
.eyebrow, .hero-top, .hero-foot, .hero-foot span:last-child,
.section-caption .eyebrow, .section-caption > span:last-child,
.service-no, .about-copy .eyebrow, .process span, .process li span,
.partner-country, .partner-country span:last-child, .partner-english,
.project-meta span, .project-info-label, .next-project small,
.footer > span, .footer > a:last-child {
  font-size: var(--type-meta);
  line-height: 1.55;
  letter-spacing: .055em;
}
.hero-bottom p, .section-intro p, .service-detail p,
.about-copy p, .partner p, .archive-summary p,
.project-information p, .contact-bottom p {
  font-size: var(--type-body);
  line-height: 1.75;
  letter-spacing: -.02em;
}
.section-intro .reference-note, .archive-summary .reference-note,
.project-information .reference-note, .project-caption,
.service-detail ul, .service-ko, .process p, .process li p,
.partner-footer, .project-scopes li {
  font-size: var(--type-detail);
  line-height: 1.75;
  letter-spacing: -.01em;
}
.desktop-nav, .nav-contact, .text-link, .service-detail .text-link,
.filter, .search, .back-link, .copy-email, .compact-contact > a,
.mobile-nav a span, .toast {
  font-size: var(--type-control);
  line-height: 1.55;
}
.desktop-nav { gap: clamp(24px, 3vw, 48px); margin-right: clamp(20px, 4vw, 64px); }
.nav-contact { gap: 18px; white-space: nowrap; }
.wordmark span { font-size: var(--type-meta); }
.header { min-height: 90px; height: auto; padding-top: 20px; padding-bottom: 20px; }
.menu-toggle { flex-shrink: 0; width: 44px; height: 44px; }
.mobile-nav a { font-size: clamp(2rem, 1.5rem + 2vw, 2.5rem); }
.hero { padding-bottom: 14px; }
.hero h2 { font-size: clamp(1.75rem, 1.35rem + 1.2vw, 2.75rem); line-height: 1.4; }
.hero-bottom { gap: 28px; }
.hero-bottom p { max-width: 35em; }
.hero-top, .hero-foot, .section-caption { gap: 18px 30px; flex-wrap: wrap; }
.hero-foot { align-items: center; }
.section-heading { grid-template-columns: 1.1fr 1fr; gap: 7%; }
.section-intro, .about-copy, .project-information > div, .service-detail > * { min-width: 0; }
.section-heading h2 { line-height: 1.25; }
.section-intro .reference-note { margin-top: 24px; }
.project-meta { gap: 12px 24px; align-items: baseline; flex-wrap: wrap; }
.project-meta h3 { font-size: clamp(1.5rem, 1.15rem + 1.15vw, 2.125rem); line-height: 1.35; }
.project-meta span { max-width: none; }
.project-caption { margin-top: 12px; }
.all-work { font-size: clamp(1.125rem, 1rem + .5vw, 1.5rem); min-height: 80px; }
.service-list summary { grid-template-columns: 55px minmax(0, 1fr) 205px 25px; }
.service-list h3 { line-height: 1.2; min-width: 0; }
.service-detail { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 25px 5%; padding-top: 6px; padding-bottom: 40px; }
.service-detail ul { columns: auto; display: grid; grid-template-columns: 1fr; gap: 10px; }
.text-link { padding-top: 8px; padding-bottom: 10px; max-width: 100%; min-height: 44px; }
.about-copy h3 { font-size: clamp(1.75rem, 1.45rem + .8vw, 2.5rem); }
.about-copy p { max-width: 29em; margin-top: 28px; }
.about-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 6%; }
.process { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.process li { padding-right: 14px; padding-left: 20px; }
.process h4 { font-size: clamp(1.5rem, 1.25rem + .6vw, 2rem); line-height: 1.4; }
.process p, .process span { color: #d9dfdd; }
.partner p { margin: 30px 0; }
.partner-country { gap: 15px; flex-wrap: wrap; }
.partner-english { margin-top: 14px; }
.partner-footer { padding-top: 20px; }
.contact-bottom h3 { font-size: clamp(1.375rem, 1.1rem + .75vw, 2rem); line-height: 1.55; }
.contact-bottom { align-items: flex-start; }
.contact-bottom p, .copy-email { color: #f0dcd4; }
.email-block { flex-shrink: 0; }
.email-block > a { font-size: clamp(1.5rem, 1.2rem + 1vw, 2.25rem); }
.copy-email { margin-top: 18px; min-height: 44px; text-align: left; }
.footer { gap: 20px 32px; flex-wrap: wrap; }
.filter { padding: 12px 19px; min-height: 48px; }
.search { width: clamp(230px, 24vw, 350px); min-height: 48px; }
.archive-controls { gap: 24px; flex-wrap: wrap; }
.archive-summary .reference-note { max-width: 27em; }
.project-top .project-subtitle { font-size: clamp(1.125rem, .95rem + .7vw, 1.625rem); line-height: 1.6; }
.project-information h2 { font-size: clamp(1.625rem, 1.3rem + .8vw, 2.25rem); }
.project-scopes li { padding: 18px 0; }
.next-project h3 { font-size: clamp(1.5rem, 1.2rem + .9vw, 2.25rem); }
.toast { max-width: calc(100vw - 32px); white-space: normal; }
@media (max-width: 1100px) {
  .service-list summary { grid-template-columns: 40px minmax(0, 1fr) 180px 22px; }
  .service-detail { grid-template-columns: minmax(0, 1fr); padding-left: 60px; }
  .service-detail ul { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: none; }
  .process { grid-template-columns: 1fr; padding-bottom: 50px; }
  .process li, .process li:first-child { display: grid; grid-template-columns: 160px 80px minmax(0, 1fr); align-items: center; gap: 28px; border-left: 0; padding: 24px 0; }
  .process h4 { margin: 0; }
  .about-grid { grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); }
  .contact-bottom { flex-wrap: wrap; }
}
@media (max-width: 700px) {
  .header { min-height: 80px; padding-top: 14px; padding-bottom: 14px; gap: 12px; }
  .mobile-nav { top: 80px; }
  .header .wordmark { font-size: clamp(1.625rem, 1.1rem + 2vw, 2rem); }
  .nav-contact { font-size: 1rem; gap: 10px; }
  .hero { padding-top: 26px; min-height: 0; padding-bottom: 18px; }
  .hero-top { gap: 22px; }
  .hero-top > span { max-width: 100%; }
  .hero-edition { text-align: left; }
  .hero h1 { margin-top: 32px; }
  .hero h2 { font-size: clamp(1.75rem, 1.3rem + 2vw, 2.125rem); }
  .hero-bottom { margin-top: clamp(140px, 40vw, 210px); align-items: flex-end; flex-wrap: wrap; gap: 20px; }
  .hero-bottom > div { flex: 1 1 100%; }
  .hero-bottom p { margin-top: 20px; }
  .hero .round-link { width: 48px; height: 48px; }
  .hero-foot { gap: 12px; margin-top: 26px; align-items: flex-start; flex-direction: column; }
  .hero-art { inset: 230px -100px 170px 15%; opacity: .6; }
  .section-caption { flex-direction: column; align-items: flex-start; gap: 10px; }
  .section-heading { grid-template-columns: minmax(0, 1fr); gap: 28px; margin-bottom: 42px; }
  .section-heading h2 { font-size: clamp(2.375rem, 1.85rem + 2.5vw, 3rem); }
  .section-intro .reference-note { margin-top: 20px; }
  .project-meta { flex-direction: column; gap: 9px; align-items: flex-start; }
  .project-meta span { text-align: left; }
  .work-grid { gap: 42px; }
  .project-caption { margin-top: 10px; }
  .service-list summary { grid-template-columns: 25px minmax(0, 1fr) 20px; gap: 10px; padding: 28px 0; }
  .service-list h3 { font-size: clamp(1.625rem, 1.3rem + 1.5vw, 2rem); letter-spacing: -.03em; }
  .service-ko { margin-top: 0; }
  .service-detail { padding: 0 0 30px; gap: 20px; }
  .service-detail ul { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .service-detail .text-link { margin-top: 0; }
  .about-grid { grid-template-columns: minmax(0, 1fr); gap: 40px; }
  .about-copy h3 { margin-top: 22px; }
  .about-copy .text-link { gap: 30px; }
  .process li, .process li:first-child { grid-template-columns: 65px minmax(0, 1fr); gap: 14px 20px; align-items: start; padding: 25px 0; }
  .process li span { grid-column: 1 / -1; }
  .process li h4 { font-size: 1.5rem; line-height: 1.55; margin: 0; }
  .process li p { margin: 0; }
  .global-heading > p { font-size: clamp(1.375rem, 1.1rem + 1.4vw, 1.75rem); }
  .partner-grid { gap: 44px; }
  .partner p { margin: 26px 0; }
  .contact-bottom { gap: 32px; }
  .contact-bottom h3 { font-size: 1.375rem; }
  .contact-bottom p { margin-top: 16px; }
  .email-block { max-width: 100%; }
  .email-block > a { font-size: clamp(1.5rem, 1.1rem + 2vw, 1.875rem); }
  .footer { gap: 20px; }
  .footer .wordmark { flex-basis: 100%; }
  .footer > a:last-child { margin-left: 0; }
  .archive-summary .reference-note { max-width: 100%; }
  .archive-controls { gap: 24px; }
  .filters { gap: 10px; }
  .filter { padding: 10px 15px; }
  .search { width: 100%; }
  .project-information { gap: 30px; }
  .project-information .reference-note { margin-top: 20px; }
  .compact-contact { gap: 28px; }
}
@media (max-width: 420px) {
  .header .nav-contact { display: none; }
  .hero-top { flex-direction: column; gap: 14px; }
  .hero-edition { display: none; }
}

/* Registered company details, shared across all page footers. */
.company-footer { display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px 24px;padding-top:20px;padding-bottom:4px; }
.company-footer .wordmark { grid-column:1;grid-row:1;font-size:22px; }
.company-footer > .footer-top { grid-column:2;grid-row:1;margin:0;padding:0;font-size:12px;white-space:nowrap; }
.footer-company { grid-column:1/-1;grid-row:2;display:flex;align-items:baseline;gap:14px;min-width:0;max-width:100%;overflow-x:auto;white-space:nowrap;font-size:12px;line-height:1.4;letter-spacing:0; }
.footer-company-name { flex-shrink:0;font-size:inherit;font-weight:400;margin:0; }
.footer-company-details { display:flex;flex-shrink:0;align-items:baseline;gap:14px;margin:0; }
.footer-company-details > div { display:flex;align-items:baseline;gap:6px; }
.footer-company-details > div::before { content:"";height:.8em;border-left:1px solid var(--line);margin-right:8px; }
.footer-company-details dt { color:var(--muted);font-size:inherit; }
.footer-company-details dd { margin:0;overflow-wrap:normal; }
@media(max-width:700px) {
 .company-footer { gap:10px 18px;padding-top:16px; }
 .footer-company { font-size:11px;gap:10px; }
 .footer-company-details { gap:10px; }
 .footer-company-details > div::before { margin-right:4px; }
}
