:root {
  color-scheme:light;
  --background:#f5f5f3;
  --surface:#fff;
  --panel:#e9edeb;
  --ink:#1f2429;
  --muted:#505d63;
  --accent:#0e7481;
  --border:#cdd4d3;
  --soft:#e0e5e3;
  --wash:#dfece8;
  --alert:#995114;
  --scene-scrim:linear-gradient(100deg,rgba(245,245,243,.96),rgba(245,245,243,.83) 44%,rgba(245,245,243,.25));
  --hero-scrim:linear-gradient(90deg,rgba(245,245,243,.97),rgba(245,245,243,.78) 38%,rgba(245,245,243,.05) 75%);
  --max:1280px;
  --gutter:clamp(22px,5vw,80px);
}
html[data-theme=dark] {
  color-scheme:dark;
  --background:#08090b;
  --surface:#0b0d0f;
  --panel:#14201f;
  --ink:#f8f8f2;
  --muted:#afc0c5;
  --accent:#bffff4;
  --border:#394d49;
  --soft:#243331;
  --wash:#162b27;
  --alert:#ffca80;
  --scene-scrim:linear-gradient(100deg,rgba(8,9,11,.96),rgba(8,9,11,.83) 44%,rgba(8,9,11,.4));
  --hero-scrim:linear-gradient(90deg,rgba(8,9,11,.8),rgba(8,9,11,.4) 38%,rgba(8,9,11,.05) 75%);
}
* {
  box-sizing:border-box;
}
html {
  scroll-behavior:smooth;
  scroll-padding-top:100px;
}
body {
  margin:0;
  background:var(--background);
  color:var(--ink);
  font-family:'Schibsted Grotesk',system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,p,figure,dl,dd {
  margin:0;
}
a {
  color:inherit;
  text-decoration:none;
}
button {
  font:inherit;
  color:inherit;
  cursor:pointer;
}
button,a,summary {
  -webkit-tap-highlight-color:transparent;
}
button {
  background:none;
  border:0;
}
a:focus-visible,button:focus-visible,summary:focus-visible {
  outline:2px solid var(--accent);
  outline-offset:5px;
}
a:hover {
  color:var(--accent);
}
[hidden] {
  display:none!important;
}
html[data-lang=en] [data-l=es],html[data-lang=es] [data-l=en] {
  display:none!important;
}
::selection {
  background:var(--wash);
}
.header {
  min-height:82px;
  padding:18px var(--gutter);
  display:flex;
  align-items:center;
  gap:32px;
  border-bottom:1px solid var(--border);
  background:var(--background);
  position:sticky;
  top:0;
  z-index:10;
}
.brand {
  display:flex;
  align-items:center;
  gap:9px;
  font-size:19px;
  font-weight:600;
  letter-spacing:-.03em;
  white-space:nowrap;
}
.brand svg {
  width:29px;
  height:29px;
  fill:none;
  stroke:var(--accent);
  stroke-width:1.5;
}
.brand>span {
  font-size:10px;
  align-self:flex-start;
}
.desktop-nav {
  display:flex;
  gap:24px;
  margin-left:auto;
  font-size:13px;
}
.preferences {
  display:flex;
  gap:16px;
  align-items:center;
}
.languages {
  display:flex;
  align-items:center;
  gap:4px;
  font:11px 'IBM Plex Mono',monospace;
}
.languages button {
  padding:10px 4px;
  color:var(--muted);
}
.languages button[aria-pressed=true] {
  color:var(--accent);
  text-decoration:underline;
  text-underline-offset:6px;
}
.theme-button {
  font-size:22px;
  width:32px;
  height:36px;
}
.menu-button {
  display:none;
}
.mobile-nav {
  position:fixed;
  top:81px;
  left:0;
  right:0;
  z-index:9;
  padding:24px var(--gutter);
  background:var(--surface);
  border-bottom:1px solid var(--border);
}
.mobile-nav a {
  display:block;
  padding:18px 0;
  border-bottom:1px solid var(--soft);
}
.skip {
  position:fixed;
  top:-100px;
  left:20px;
  z-index:20;
  padding:16px;
  background:var(--surface);
}
.skip:focus {
  top:90px;
}
.eyebrow {
  font:11px/1.6 'IBM Plex Mono',monospace;
  letter-spacing:.09em;
  text-transform:uppercase;
  color:var(--accent);
}
.lead {
  font-size:clamp(17px,1.6vw,21px);
  line-height:1.55;
  color:var(--muted);
  max-width:49ch;
}
h1 {
  font-size:clamp(48px,5.7vw,86px);
  font-weight:400;
  letter-spacing:-.065em;
  line-height:1.04;
}
h2 {
  font-size:clamp(32px,3.65vw,53px);
  font-weight:400;
  letter-spacing:-.045em;
  line-height:1.12;
}
h3 {
  font-size:20px;
  font-weight:500;
  letter-spacing:-.025em;
  line-height:1.35;
}
.button {
  display:inline-flex;
  align-items:center;
  justify-content:space-between;
  gap:28px;
  padding:17px 22px;
  min-height:54px;
  background:var(--accent);
  color:var(--surface);
  font-size:13px;
  font-weight:500;
}
.button:hover {
  color:var(--surface);
  filter:brightness(.9);
}
html[data-theme=dark] .button {
  color:#08090b;
}
.text-link {
  display:inline-flex;
  align-items:center;
  gap:20px;
  border-bottom:1px solid var(--border);
  padding:12px 0;
  font-size:13px;
}
.actions {
  display:flex;
  gap:26px;
  align-items:center;
  flex-wrap:wrap;
}
.caption {
  font-size:12px;
  line-height:1.6;
  color:var(--muted);
  max-width:88ch;
}
.hero {
  --scene:url("site/assets/terracity/generated-alucard/01-hero/desktop-plate.webp");
}
html[data-theme=dark] .hero {
  --scene:url("site/assets/terracity/generated/01-hero/desktop-plate.webp");
}
.case {
  --scene:url("site/assets/terracity/generated-alucard/03-measurement/desktop-plate.webp");
}
html[data-theme=dark] .case {
  --scene:url("site/assets/terracity/generated/03-measurement/desktop-plate.webp");
}
.workspace {
  --scene:url("site/assets/terracity/generated-alucard/05-city-operations/desktop-plate.webp");
}
html[data-theme=dark] .workspace {
  --scene:url("site/assets/terracity/generated/05-city-operations/desktop-plate.webp");
}
.method {
  --scene:url("site/assets/terracity/generated-alucard/02-reality-layer/desktop-plate.webp");
}
html[data-theme=dark] .method {
  --scene:url("site/assets/terracity/generated/02-reality-layer/desktop-plate.webp");
}
.confidence {
  --scene:url("site/assets/terracity/generated-alucard/06-evidence-confidence/desktop-plate.webp");
}
html[data-theme=dark] .confidence {
  --scene:url("site/assets/terracity/generated/06-evidence-confidence/desktop-plate.webp");
}
.engage {
  --scene:url("site/assets/terracity/generated-alucard/08-close/desktop-plate.webp");
}
html[data-theme=dark] .engage {
  --scene:url("site/assets/terracity/generated/08-close/desktop-plate.webp");
}
.hero,.chapter {
  position:relative;
  isolation:isolate;
  background:var(--background);
}
.hero::before,.chapter::before {
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  pointer-events:none;
  background-image:linear-gradient(180deg,transparent 30%,var(--background)),var(--scene-scrim),var(--scene);
  background-size:cover;
  background-position:center,center,70% center;
}
.hero::before {
  background-image:var(--hero-scrim),var(--scene);
  background-position:center,70% center;
}
.hero {
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:flex-start;
  min-height:calc(100svh - 82px);
  padding:100px var(--gutter) 80px;
}
.hero-copy {
  padding:18px 0 60px;
  max-width:660px;
  z-index:1;
}
.hero-copy .eyebrow {
  margin-bottom:28px;
}
.hero h1 {
  max-width:none;
  text-wrap:balance;
}
.hero .lead {
  margin-top:26px;
  max-width:36ch;
  font-size:18px;
}
.hero .actions {
  margin-top:32px;
}
.hero-caption {
  max-width:40ch;
  margin-top:auto;
}
.hero-baseline {
  width:100%;
  display:flex;
  justify-content:space-between;
  padding:25px 0 0;
  font:10px 'IBM Plex Mono',monospace;
  letter-spacing:.08em;
  color:var(--muted);
}
.chapter {
  padding:110px var(--gutter);
  min-height:90svh;
  border-top:1px solid var(--border);
}
.chapter>* {
  max-width:var(--max);
  margin-left:auto;
  margin-right:auto;
}
.chapter-heading {
  display:grid;
  grid-template-columns:1fr;
  gap:22px;
  margin-bottom:48px;
}
.chapter-heading>.eyebrow {
  padding-top:9px;
}
.chapter-heading h2 {
  max-width:23ch;
}
.chapter-heading .lead {
  margin-top:22px;
}
.case-board {
  background:var(--background);
  border:1px solid var(--border);
}
.parcel-pair {
  display:grid;
  grid-template-columns:1fr 1fr;
}
.parcel-view {
  padding:26px 38px;
  border-right:1px solid var(--border);
}
.parcel-view:last-child {
  border:0;
}
.parcel-view>p:last-child {
  font-size:17px;
  margin-top:10px;
}
.parcel-view svg {
  display:block;
  width:100%;
  height:260px;
  margin:8px 0;
}
.plot {
  fill:var(--surface);
  stroke:var(--border);
  stroke-width:1.5;
}
.building {
  fill:var(--soft);
  stroke:var(--muted);
  stroke-width:1.5;
}
.roof,.ground-line {
  fill:none;
  stroke:var(--muted);
  stroke-width:1;
}
.courtyard {
  fill:var(--background);
  stroke:var(--border);
  stroke-dasharray:4 4;
}
.pool {
  fill:var(--wash);
  stroke:var(--accent);
  stroke-width:2;
}
.water {
  fill:none;
  stroke:var(--accent);
  stroke-width:1;
}
.measurement {
  fill:none;
  stroke:var(--accent);
  stroke-width:1.5;
}
.case-result {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:25px;
  padding:28px 38px;
  border-top:1px solid var(--border);
  background:var(--wash);
}
.case-result strong {
  font-size:38px;
  line-height:1.2;
  font-weight:500;
  letter-spacing:-.045em;
  display:block;
  margin-top:8px;
}
.case-result>p {
  font-size:13px;
  display:flex;
  align-items:center;
  gap:8px;
}
.status-dot {
  width:6px;
  height:6px;
  display:inline-block;
  border-radius:50%;
  background:var(--alert);
}
.case>.caption {
  margin-top:14px;
}
.two-notes {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:64px;
  margin-top:44px;
}
.two-notes p {
  font-size:15px;
  line-height:1.65;
  color:var(--muted);
  margin-top:14px;
  max-width:56ch;
}
.demo-shell {
  border:1px solid var(--border);
  background:var(--surface);
}
.demo-toolbar {
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:12px 20px;
  gap:20px;
  border-bottom:1px solid var(--border);
}
.view-buttons {
  display:flex;
  gap:18px;
}
.view-buttons button {
  font-size:13px;
  padding:12px 0;
  border-bottom:2px solid transparent;
}
.view-buttons button[aria-pressed=true] {
  color:var(--accent);
  border-bottom-color:var(--accent);
}
.demo-mark {
  font:10px 'IBM Plex Mono',monospace;
  color:var(--muted);
}
iframe[data-demo] {
  display:block;
  width:100%;
  height:650px;
  border:0;
  background:var(--background);
}
.demo-footer {
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:32px;
  margin-top:15px;
}
.demo-footer .caption {
  max-width:72ch;
}
.demo-footer a {
  white-space:nowrap;
  padding-top:0;
}
.steps {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  padding:0;
  list-style:none;
  gap:28px;
  margin-top:56px;
}
.steps li {
  border-top:1px solid var(--accent);
  padding:24px;
  background:var(--background);
}
.steps span {
  font:12px 'IBM Plex Mono',monospace;
  color:var(--accent);
}
.steps h3 {
  margin-top:32px;
}
.steps p {
  font-size:15px;
  color:var(--muted);
  line-height:1.6;
  margin-top:14px;
}
details {
  margin-top:44px;
  border-top:1px solid var(--border);
  border-bottom:1px solid var(--border);
  padding:21px 0;
}
summary {
  cursor:pointer;
  font-size:15px;
}
details>p {
  margin:20px 0 0;
  max-width:75ch;
  line-height:1.65;
  color:var(--muted);
}
.portfolio {
  padding:32px;
  background:var(--background);
  border-top:1px solid var(--border);
  border-bottom:1px solid var(--border);
}
.metrics {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  margin:32px 0 22px;
  gap:32px;
}
.metrics>div {
  display:flex;
  flex-direction:column;
  gap:12px;
}
.metrics dd {
  order:-1;
  font-variant-numeric:lining-nums tabular-nums;
  font-size:clamp(38px,5vw,72px);
  font-weight:400;
  letter-spacing:-.06em;
}
.metrics dt {
  font-size:14px;
  color:var(--muted);
}
.equation {
  display:flex;
  align-items:center;
  gap:24px;
  border-top:1px solid var(--border);
  margin-top:36px;
  padding-top:25px;
  font:12px/1.8 'IBM Plex Mono',monospace;
}
.equation p {
  max-width:52ch;
  color:var(--muted);
}
.equation strong {
  font-weight:500;
  color:var(--accent);
}
.engage {
  padding-top:110px;
  padding-bottom:110px;
}
.engage>.eyebrow,.engage>h2,.engage>.lead,.engage>.button,.engage>.email {
  max-width:800px;
  margin-left:auto;
  margin-right:auto;
  display:block;
}
.engage h2 {
  margin-top:25px;
  max-width:800px;
  font-size:clamp(38px,5.1vw,72px);
  letter-spacing:-.055em;
}
.engage>.lead {
  margin-top:24px;
}
.engage .two-notes {
  max-width:800px;
  margin-top:36px;
}
.engage>.button {
  display:flex;
  max-width:800px;
  margin-top:38px;
}
.engage>.email {
  font-size:13px;
  margin-top:18px;
  color:var(--muted);
}
footer {
  display:flex;
  justify-content:space-between;
  gap:24px;
  padding:30px var(--gutter);
  font-size:12px;
  color:var(--muted);
  border-top:1px solid var(--border);
}
@media(max-width:1100px) {
  .desktop-nav {
    gap:16px;
    font-size:12px;
  }
  .header {
    gap:18px;
  }
  .preferences {
    gap:10px;
  }
  .hero {
    gap:24px;
    padding-top:48px;
  }
  .hero .lead {
    font-size:17px;
  }
  .hero .actions {
    gap:14px;
  }
  .hero .button {
    padding:16px;
  }
  .chapter-heading {
    grid-template-columns:1fr;
    gap:28px;
  }
}
@media(max-width:900px) {
  .desktop-nav {
    display:none;
  }
  .preferences {
    margin-left:auto;
  }
  .menu-button {
    display:block;
    font-size:12px;
    padding:10px 0;
  }
  .hero {
    padding-top:40px;
  }
  .hero h1 {
    font-size:55px;
  }
  .hero .actions {
    align-items:flex-start;
    flex-direction:column;
  }
  .chapter {
    padding-top:70px;
    padding-bottom:70px;
  }
  .chapter-heading {
    grid-template-columns:1fr;
    gap:20px;
  }
  .chapter-heading h2 {
    max-width:24ch;
  }
  .steps {
    grid-template-columns:1fr 1fr;
    gap:32px;
  }
  .two-notes {
    gap:32px;
  }
  .demo-footer {
    flex-direction:column;
    gap:12px;
  }
}
@media(max-width:600px) {
  .hero::before,.chapter::before {
    background-image:linear-gradient(var(--background),transparent 45%,var(--background)),var(--scene-scrim),var(--scene);
    background-position:center,center,65% center;
  }

  html {
    scroll-padding-top:90px;
  }
  .header {
    min-height:72px;
    padding-top:15px;
    padding-bottom:15px;
    gap:12px;
  }
  .brand {
    font-size:17px;
    gap:5px;
  }
  .brand svg {
    width:24px;
  }
  .preferences {
    gap:10px;
  }
  .languages {
    font-size:10px;
  }
  .theme-button {
    width:24px;
    font-size:20px;
  }
  .mobile-nav {
    top:71px;
  }
  .hero {
    padding-top:64px;
    padding-bottom:30px;
    min-height:calc(100svh - 72px);
  }
  .hero-copy {
    padding:0 0 36px;
  }
  .hero h1 {
    font-size:clamp(48px,13vw,68px);
    max-width:11ch;
  }
  .hero-copy .eyebrow {
    font-size:10px;
    margin-bottom:23px;
  }
  .hero .lead {
    font-size:17px;
    max-width:35ch;
    margin-top:23px;
  }
  .hero .actions {
    flex-direction:row;
    align-items:center;
    margin-top:26px;
    gap:16px;
  }
  .hero .button {
    font-size:12px;
    gap:12px;
  }
  .hero .text-link {
    font-size:12px;
  }
  .hero-baseline {
    padding:20px 0 26px;
    font-size:9px;
  }
  .chapter {
    padding-top:56px;
    padding-bottom:56px;
  }
  .chapter-heading {
    margin-bottom:30px;
    gap:17px;
  }
  .chapter-heading .lead {
    font-size:17px;
    margin-top:17px;
  }
  .parcel-view {
    padding:17px 12px;
  }
  .parcel-view svg {
    height:165px;
    margin:0;
  }
  .parcel-view>p:last-child {
    font-size:13px;
    line-height:1.5;
  }
  .parcel-view .eyebrow {
    font-size:9px;
  }
  .case-result {
    flex-wrap:wrap;
    padding:22px;
    gap:20px;
  }
  .case-result strong {
    font-size:34px;
  }
  .case-result>p {
    max-width:140px;
    font-size:12px;
    line-height:1.5;
  }
  .case-result>.text-link {
    width:100%;
    justify-content:space-between;
  }
  .two-notes {
    grid-template-columns:1fr;
    gap:27px;
    margin-top:32px;
  }
  h3 {
    font-size:19px;
  }
  .demo-toolbar {
    padding:8px 14px;
  }
  .demo-mark {
    display:none;
  }
  .view-buttons {
    gap:18px;
  }
  .view-buttons button {
    font-size:12px;
  }
  iframe[data-demo] {
    height:650px;
  }
  .steps {
    grid-template-columns:1fr;
    gap:20px;
    margin-top:35px;
  }
  .steps h3 {
    font-size:20px;
    margin-top:20px;
  }
  .steps p {
    font-size:14px;
  }
  .metrics {
    gap:15px;
  }
  .metrics dd {
    font-size:clamp(30px,9vw,38px);
  }
  .metrics dt {
    font-size:12px;
    line-height:1.5;
  }
  .portfolio {
    padding:24px 16px;
  }
  .equation {
    flex-direction:column;
    align-items:flex-start;
    gap:12px;
  }
  .equation>span {
    transform:rotate(90deg);
  }
  .engage h2 {
    font-size:44px;
  }
  .engage>.button {
    font-size:13px;
    gap:20px;
  }
  .engage .two-notes {
    margin-top:28px;
  }
  footer {
    flex-wrap:wrap;
    font-size:11px;
    line-height:1.6;
  }
  footer>span {
    display:none;
  }
}
@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto;
  }
}
