:root { --bg:#0a0a0a; --surface:#111; --border:#343730; --text-primary:#f0f0f0; --text-secondary:#c5c7c3; --text-tertiary:#a9ada7;    --ease-out:cubic-bezier(.16,1,.3,1); }
* { box-sizing:border-box; }
body { margin:0; }
img { max-width:100%; }

[hidden] { display:none!important; }
html { scroll-padding-top:calc(var(--header-height,120px) + 20px); }
.motion-paused *, .motion-paused *::before, .motion-paused *::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
.motion-control { min-height:44px; padding:10px 14px; background:#111; color:#f0f0f0; border:1px solid #72766f; cursor:pointer;  }
.form-field-error { color:#f0f0f0; border-left:3px solid currentColor; padding-left:12px;  margin-top:10px; }
.form-field-error:empty { display:none; }
[aria-invalid=true] { border:2px solid #f0f0f0!important; }
.draft-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:20px; }
.draft-actions a { display:inline-flex; min-height:44px; align-items:center; text-decoration:underline; text-underline-offset:5px; }

.privacy-hint a { text-decoration:underline; text-underline-offset:4px; }
.mobile-enquiry { display:none; }
a[href^="mailto:"] { max-width:100%; min-width:0; white-space:normal; overflow-wrap:anywhere; }
a[href^="mailto:"] > span:not([aria-hidden]) { min-width:0; overflow-wrap:anywhere; }
@media (max-width:760px) { body { padding-bottom:calc(68px + env(safe-area-inset-bottom,0px)); } .mobile-enquiry { display:flex; position:fixed; z-index:90; left:max(16px,env(safe-area-inset-left,0px)); right:max(16px,env(safe-area-inset-right,0px)); bottom:calc(12px + env(safe-area-inset-bottom,0px)); min-height:44px; align-items:center; justify-content:space-between; gap:16px; padding:12px 18px; background:#f0f0f0; color:#0a0a0a; border:1px solid #0a0a0a; text-decoration:none;  } body:has(input:focus,textarea:focus,select:focus) .mobile-enquiry, body:has(dialog[open]) .mobile-enquiry, .keyboard-open .mobile-enquiry { display:none; } }
@media (max-height:520px) and (orientation:landscape) { .mobile-enquiry { display:none; } body { padding-bottom:0; } }
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; } }
@media (forced-colors:active) { :focus-visible { outline:2px solid Highlight!important; } .mobile-enquiry,.motion-control { border:1px solid ButtonText; } }

/* One shared type system for Home, inner pages and generated portfolio states. */
:root {
  --font-heading: 'Roboto Serif', 'Noto Sans Mono', serif;
  --font-text: 'Noto Sans Mono', 'Roboto Serif', monospace;
  --type-small: .875rem;
  --type-body: 1rem;
  --type-lead: 1.125rem;
  --type-title: clamp(1.5rem, 2.4vw, 2rem);
  --type-section: clamp(2rem, 3.5vw, 3rem);
  --type-display: clamp(2.5rem, 6.5vw, 5rem);
}
body {
  font-family: var(--font-text);
  font-size: var(--type-body);
  font-weight: 400;
  line-height: 1.7;
}
button, input, textarea, select { font: inherit; }
strong, b { font-weight: 700; }
h1, h2, h3, h4, h5, h6,
.nav-brand, .footer-brand, .identity-title, .portfolio-card-title {
  font-family: var(--font-heading);
  font-optical-sizing: auto;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: -.015em;
  text-transform: none;
}
h1, .hero-title, .page-title, .contact-title {
  font-size: var(--type-display);
  line-height: 1.12;
}
.hero-title { font-weight: 400; }
h2, .about-title, .section-title, .content-title, .identity-title {
  font-size: var(--type-section);
}
h3, .row-title, .project-title, .work-title, .portfolio-card-title,
.dialog-top h2, .review-finding h2, .nav-brand, .footer-brand {
  font-size: var(--type-title);
  line-height: 1.3;
}
h4, h5, h6, .legal-copy h3, .page-deck, .hero-subtitle {
  font-size: var(--type-lead);
}
.page-deck, .hero-subtitle { line-height: 1.65; }
.nav-brand, .footer-brand { letter-spacing: .04em; line-height: 1.2; }
.homepage-menu-link {
  font-family: var(--font-heading);
  font-optical-sizing: auto;
  font-size: var(--type-section);
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: -.015em;
}
.row-arrow, .homepage-menu-arrow {
  font-family: var(--font-text);
  font-size: var(--type-body);
  line-height: 1;
}
.eyebrow, .hero-label, .about-label, .meta-label, .section-number,
.utility-label, .hero-reference, .hero-scroll span, .work-year, .work-tag,
.project-kind, .fact-list dt, .row-number, figcaption, .portfolio-card-caption,
.nav-links a, .language-switch button, .home-language button,
.motion-control, .homepage-menu-pause, .homepage-menu-heading h2,
.portfolio-filters button, .privacy-hint, .footer-primary p,
.footer-links .text-link, .footer-small, .shader-test-note {
  font-size: var(--type-small);
}
.eyebrow, .hero-label, .about-label, .meta-label, .section-number {
  letter-spacing: .06em;
  text-transform: uppercase;
}
.form-field-error, .form-hint, .form-note, .draft-note, .field label,
.form-field label, .text-link, .button, .portfolio-status,
.portfolio-image-error, .portfolio-dialog-status, #portfolioDialog button,
#portfolioDialogCaption, #dialogCount {
  font-size: var(--type-body);
}
.footer-links .text-link { font-size: var(--type-small); }
/* 004: shared information and printable content. */
.form-honeypot { display:none !important; }
.rates-scroll { max-width:100%; overflow-x:auto; }
.rates-table { width:100%; border-collapse:collapse; font:inherit; }
.rates-table caption { text-align:left; padding-block:1rem; }
.rates-table th,.rates-table td { text-align:left; padding:.75rem .5rem; border-bottom:1px solid #72766f; }
.rates-table td { white-space:nowrap; }
.service-terms { margin-block:var(--space-section,4rem); }
.form-submit:disabled { cursor:wait; }
@media print {
 html,body { background:#fff !important; color:#111 !important; overflow:visible !important; }
 body::before,body::after,.noise,.cursor-dot,.cursor-ring,.mobile-enquiry,.motion-control,.homepage-menu,.site-header,.nav-track-row,.hero-scroll,.shader-test-note,iframe,.hero-image-measure,.morph-container,.morph-effects { display:none !important; }
 main,.page-main,.prose,.legal-copy,.hero-content,.about-section,.work-section,.contact-section { position:static !important; width:auto !important; max-width:none !important; min-height:0 !important; height:auto !important; padding:0 !important; margin:0 !important; transform:none !important; }
 *,*::before,*::after { color:#111 !important; background:transparent !important; text-shadow:none !important; box-shadow:none !important; animation:none !important; transition:none !important; opacity:1 !important; visibility:visible !important; filter:none !important; }
 [hidden] { display:none !important; }
 .reveal,.line-inner,[data-reveal] { transform:none !important; }
 a { text-decoration:underline !important; }
 h1,h2,h3 { break-after:avoid; }
 figure,table,.fact-list>div { break-inside:avoid; }
 p { orphans:3; widows:3; }
 .inner-footer { margin-top:2rem !important; padding:1rem 0 !important; }
 button,.draft-actions,.portfolio-more,.portfolio-retry,dialog { display:none !important; }
 .skip-link,footer,.page-end,.portfolio-filters { display:none !important; }
 body { margin:0 !important; padding:0 !important; }
 h1,.page-title { font-size:24pt !important; line-height:1.2 !important; }
 h2,h3 { font-size:14pt !important; line-height:1.3 !important; }
 p,li,dt,dd,th,td { font-size:11pt !important; line-height:1.5 !important; letter-spacing:normal !important; word-spacing:normal !important; }
 .page-intro { margin:0 0 8mm !important; }
 .page-title { margin:0 0 4mm !important; }
 .page-deck { margin:0 !important; }
 .legal-copy section { margin-block:8mm !important; padding-block:4mm !important; }
 .portfolio-grid { display:block; column-count:2; column-gap:6mm; }
 .portfolio-card,.approved-selection figure { display:inline-block; width:100%; margin:0 0 8mm; vertical-align:top; break-inside:avoid; }
 .portfolio-image-frame { height:auto; max-height:none; aspect-ratio:auto!important; }
 button.portfolio-card-link { display:block!important; border:0; padding:0; }
 .portfolio-image,.approved-selection img { width:100%; height:auto; max-height:65mm; object-fit:contain; }
 @page { margin:18mm; }
}

.managed-page-frame { overflow:hidden; }
.managed-page-frame[style] img { display:block; width:100%; height:100%!important; max-height:none!important; object-fit:cover!important; object-position:var(--crop-x,50%) var(--crop-y,50%)!important; transform:scale(var(--crop-zoom,1)); transform-origin:var(--crop-x,50%) var(--crop-y,50%); }
.managed-page-caption { font-size:var(--type-small); color:var(--text-secondary); margin-top:12px; }
