/* EvariLABS — tokens measured from the live Squarespace site at 1440px (2026-09-21).
   Body/UI: Source Code Pro 300 16px/27.2px. Headings: Abel 400.
   Layout: content rail 1200px, section gutter 57.6px, prose column 900px.

   Section heights are VIEWPORT-RELATIVE, not fixed. Squarespace's large/medium/
   small map to 100vh / 66vh / 33vh, confirmed by measuring the live site at
   700px, 900px and 1200px viewport heights. They were first written here as
   900/600/297px because the capture ran at 1440x900 — at that one size the
   constants and the ratios agree exactly, so the parity check could not tell
   them apart. It shared the captured viewport with the measurement. */

:root{
  --font-body:"Source Code Pro",ui-monospace,SFMono-Regular,Menlo,monospace;
  --font-head:"Abel","Source Code Pro",sans-serif;
  --ink:#000;
  --paper:#fff;
  --rail:1200px;        /* section inner max-width */
  --gutter:4vw;         /* Squarespace gutter; 57.6px at 1440 */
  --prose:900px;        /* measured width of the hero paragraph */
  --head-h:108px;       /* header height, overlays the first section */
  --h-size:35.2px;      /* h2/h3 at >=1100px */
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;font-family:var(--font-body);font-weight:300;
  font-size:16px;line-height:1.7;color:var(--ink);background:var(--paper);
}
img{max-width:100%;height:auto;display:block}
a{color:inherit}

/* ---------- header (transparent, overlays hero, white faded gradient) ---------- */
.site-header{position:absolute;top:0;left:0;right:0;z-index:10;height:var(--head-h)}
.site-header::before{
  content:"";position:absolute;inset:0;opacity:.9;pointer-events:none;
  background:linear-gradient(rgb(255,255,255),rgba(0,0,0,0));
}
.header-inner{
  position:relative;z-index:1;height:100%;
  display:flex;align-items:center;justify-content:space-between;gap:24px;
  padding:28.8px var(--gutter);
}
.brand{display:block;line-height:0}
.brand img{width:193px;height:50px;object-fit:contain}
.site-nav{display:flex;align-items:center;gap:19.2px}
.site-nav a{
  font:300 16px/27.2px var(--font-body);color:var(--ink);text-decoration:none;
  padding:1.6px 0;border-bottom:1px solid transparent;
}
.site-nav a:hover,.site-nav a.active{border-bottom-color:currentColor}

/* ---------- sections ---------- */
.section{position:relative;display:flex;align-items:center;justify-content:center}
.section-h-large{min-height:100vh;padding-top:var(--head-h)}
.section-h-medium{min-height:66vh}
.section-h-small{min-height:33vh}
.section-bg{position:absolute;inset:0;overflow:hidden;z-index:0}
.section-bg img{width:100%;height:100%;object-fit:cover;object-position:50% 50%}
.section-overlay{position:absolute;inset:0;background:#000;z-index:1}
.section-inner{
  position:relative;z-index:2;width:100%;max-width:calc(var(--rail) + 2*var(--gutter));
  margin:0 auto;padding:144px var(--gutter);
}
.section-h-small .section-inner{padding:47.52px var(--gutter)}
.section-h-medium .section-inner{padding:96px var(--gutter)}
.theme-black{background:#000;color:#fff}
.theme-white{background:var(--paper);color:var(--ink)}

/* prose column, centred inside the rail */
.prose{max-width:var(--prose);margin-inline:auto}

/* ---------- type ---------- */
h1,h2,h3,h4{font-family:var(--font-head);font-weight:400;margin:0 0 .6em}
h2,h3{font-size:var(--h-size);line-height:1.333}
h4{font-size:24px;line-height:1.4}
p{margin:0 0 1.4em}
p:last-child{margin-bottom:0}
.section-inner a{text-decoration:underline;text-underline-offset:3px}

/* ---------- pieces ---------- */
.two-up{display:grid;grid-template-columns:repeat(2,1fr);gap:40px;align-items:start}
.two-up figure{margin:0}
.two-up img{width:100%;height:280px;object-fit:cover}
.cta{display:inline-block;margin-top:8px}

/* ---------- footer (white, Abel 35.2px, social right) ---------- */
.site-footer{background:var(--paper);color:var(--ink);min-height:33vh;display:flex;align-items:center}
.footer-inner{
  width:100%;max-width:calc(var(--rail) + 2*var(--gutter));margin:0 auto;
  padding:47.52px var(--gutter);
  display:flex;align-items:center;justify-content:space-between;gap:24px;
}
.footer-name{margin:0;font-family:var(--font-head);font-weight:400;font-size:35.2px;line-height:1.333}
.footer-social{color:var(--ink);display:inline-flex}
.footer-social:hover{opacity:.7}

/* ---------- responsive ---------- */
@media (max-width:1100px){ :root{--h-size:30.75px} }
@media (max-width:820px){
  :root{--h-size:27.06px}
  .section-inner{padding:96px var(--gutter)}
  .two-up{grid-template-columns:1fr;gap:28px}
}
@media (max-width:560px){
  :root{--h-size:28.96px;--gutter:6vw;--head-h:88px}
  .header-inner{padding:19px var(--gutter)}
  .brand img{width:150px;height:39px}
  .site-nav{gap:14px}
  .site-nav a{font-size:14px}
  .section-inner{padding:72px var(--gutter)}
  .footer-inner{flex-direction:column;align-items:flex-start;gap:16px}
  .footer-name{font-size:28.96px}
}

/* ---------- photometrics-ai ---------- */
h2{font-size:44.8px;line-height:1.3}
h3{font-size:var(--h-size)}
.hero-center{text-align:center}
.hero-center h2{margin-bottom:.72em}
.hero-center p{margin:0 0 16px}
.hero-center p:last-child{margin-bottom:0}
.indent{margin-left:40px}
.indent p{margin:0 0 8.6px}
.stack>p{margin:0 0 16px}
.two-up{display:grid;grid-template-columns:repeat(2,1fr);gap:34px;align-items:start;margin:102px 0 0}
.two-up figure{margin:0}
.two-up img{width:100%;height:280px;object-fit:cover;object-position:50% 50%}
.two-up h3{margin:33px 0 32px;max-width:480px}
.two-up p{max-width:480px;margin:0}
.btn-wrap{text-align:center;margin-top:34px}
.btn{
  display:inline-block;padding:17.5px 28px;
  font:500 16px/27.2px var(--font-body);color:rgb(37,53,81);
  border:1px solid rgb(37,53,81);text-decoration:none;
}
.btn:hover{background:rgb(37,53,81);color:#fff}
@media (max-width:820px){ h2{font-size:34px} .two-up{margin-top:60px} .indent{margin-left:24px} }

/* rich-text list, matching Squarespace's rte defaults */
.stack ul{margin:0 0 16px;padding-left:40px;list-style:disc}
.stack li{margin:0}
.stack li p{margin:0 0 8.6px}
.stack li::marker{font-size:14px}
.stack strong{font-weight:700}
.btn{text-decoration:none}

/* ---------- contact ---------- */
.contact-section{display:block;padding:167px 0 214px}
.contact-rail{width:min(1200px, 92vw);margin:0 auto}
/* Squarespace scales this display heading to 27.77% of the content rail */
.contact-rail h2{
  font-size:calc(0.2777 * min(1200px, 92vw));
  line-height:1;text-align:center;margin:0;white-space:nowrap;
}
.contact-lede{margin:60px 0 0}
.calendar-embed{width:100%;height:600px;border:0;display:block;margin:56px 0 0;background:#fff}
@media (max-width:767px){
  .contact-rail{width:88vw}
  .contact-rail h2{font-size:calc(0.2777 * 88vw)}
  .contact-section{padding:80px 0}
}

/* ---------- demo-boilerplate pages (/evari-plus, /evari-camera-app, /rgbd) ----------
   Measured from the live Squarespace pages at 1440px, 2026-09-21.
   h4 25.6px/34.98px, h3 35.2px/46.91px, h2 44.8px/58.20px (Abel 400). */
h4{font-size:25.6px;line-height:1.3664}

/* prose block flush to the rail edge rather than centred in it */
.prose-flush{margin-inline:0}

/* three-up: rail 1200, 3 columns, 34px gaps -> 377px images, rendered 377x240 */
.three-up{display:grid;grid-template-columns:repeat(3,1fr);gap:34px;align-items:start;margin:68px 0 0}
.three-up figure{margin:0}
.three-up img{width:100%;height:240px;object-fit:cover}
.three-up h3{margin:24px 0 32px}
.three-up p{margin:0}

/* card: 552px image beside a centred text column, alternating sides.
   Squarespace calls this the "card" image layout. */
.card{display:grid;grid-template-columns:1fr 1fr;gap:94px;align-items:center}
.card-media img{width:100%;height:auto}
.card-body{text-align:center}
.card-body h4{margin:0 0 12px}
.card-body h2{margin:0}
/* Squarespace's image-position-right: media stays first in source order for
   reading order, CSS moves it to the second column. */
.card-media-right .card-media{order:2}

@media (max-width:820px){
  .three-up{grid-template-columns:1fr;gap:28px}
  .card{grid-template-columns:1fr;gap:32px}
  .card-media-right .card-media{order:0}
}
