/* ZERO.BIM Tools theme. AEC / blueprint direction. Light only.
   No dark mode (the site is always light). No em dashes anywhere.
   Palette + type matched to zerobim.eu (paper #FAF9F5, ink #171B14, lime #CCEF57;
   Archivo / Public Sans / IBM Plex Mono). */

:root{
  --paper:#FAF9F5;                   /* main-site paper */
  --panel:#FFFFFF;
  --panel-2:#F1F1EA;
  --sunk:#ECEDE4;
  --ink:#171B14;                     /* main-site ink */
  --muted:#5A6053;
  --faint:#8C9184;
  --line:#E4E4DA;
  --line-2:#D3D4C7;
  --grid:rgba(23,27,20,.055);        /* blueprint hairlines */
  --brand:#CCEF57;                   /* main-site lime */
  --brand-deep:#33660F;              /* readable green for text and lines */
  --brand-ink:#1C3A07;               /* text on lime */
  --ok:#2F6B4F; --ok-soft:#E7F1EA;
  --warn:#8C5D0C; --warn-soft:#F6EDDA;
  --display:"Archivo",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;
  --sans:"Public Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  --wrap:1120px; --radius:14px;
  color-scheme:light;
}

*{box-sizing:border-box}
html,body{margin:0}
html{scroll-behavior:smooth}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,.brand .wordmark{font-family:var(--display)}
a{color:var(--brand-deep)}
img{max-width:100%}
[hidden]{display:none!important}
::selection{background:var(--brand);color:var(--brand-ink)}

.wrap{max-width:var(--wrap);margin:0 auto;padding-inline:22px}
.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--brand-deep);margin:0 0 14px;display:flex;align-items:center;gap:8px}
.eyebrow::before{content:"";width:22px;height:1px;background:var(--brand-deep);display:inline-block}

/* ---------------- top nav ---------------- */
.nav{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--paper) 90%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.nav .inner{max-width:var(--wrap);margin:0 auto;padding:11px 22px;display:flex;align-items:center;gap:16px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}
.brand .logo{height:26px;width:auto;display:block}
.brand .wordmark{font-weight:800;font-size:19px;letter-spacing:-.02em}
.brand .wordmark .dot{color:var(--brand-deep)}
.brand .kit{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);padding-left:10px;border-left:1px solid var(--line-2)}
.nav .sp{flex:1}
.nav .navlink{font-size:14px;color:var(--muted);text-decoration:none}
.nav .navlink:hover{color:var(--ink)}
.nav .gh{display:inline-flex;color:var(--muted)}
.nav .gh:hover{color:var(--ink)}

/* language switcher */
.lang{display:inline-flex;border:1px solid var(--line-2);border-radius:100px;overflow:hidden}
.lang button{font:inherit;font-family:var(--mono);font-size:11px;letter-spacing:.05em;text-transform:uppercase;padding:5px 10px;border:0;background:transparent;color:var(--muted);cursor:pointer}
.lang button[aria-pressed="true"]{background:var(--brand-deep);color:#fff}

/* ---------------- blueprint hero ---------------- */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}
.hero .grid-bg{position:absolute;inset:0;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:34px 34px;mask-image:radial-gradient(ellipse 90% 80% at 70% 20%,#000 40%,transparent 100%);pointer-events:none}
.hero .inner{position:relative;max-width:var(--wrap);margin:0 auto;padding:56px 22px 44px;display:grid;grid-template-columns:1.05fr .95fr;gap:44px;align-items:center}
@media (max-width:860px){.hero .inner{grid-template-columns:1fr;gap:30px;padding-top:40px}}
.hero h1{font-size:clamp(32px,5.2vw,52px);line-height:1.02;letter-spacing:-.03em;margin:0 0 16px;text-wrap:balance;font-weight:800}
.hero .lede{font-size:19px;color:var(--muted);margin:0 0 24px;max-width:52ch}
.chips-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:26px}
.vchip{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:100px;padding:6px 12px}
.vchip svg{color:var(--brand-deep)}
.hero .cta{display:flex;flex-wrap:wrap;gap:12px}

/* ---------------- buttons ---------------- */
.btn{font:inherit;font-weight:600;font-size:15px;border-radius:11px;padding:12px 22px;text-decoration:none;display:inline-flex;align-items:center;gap:8px;border:1px solid transparent;cursor:pointer;transition:filter .15s,border-color .15s,transform .1s}
.btn.primary{background:var(--brand);color:var(--brand-ink);border-color:var(--brand-deep)}
.btn.primary:hover{filter:brightness(1.04)}
.btn.ghost{background:var(--panel);color:var(--ink);border-color:var(--line-2)}
.btn.ghost:hover{border-color:var(--brand-deep)}
.btn:active{transform:translateY(1px)}

/* ---------------- how-it-works animated flow ---------------- */
.flowcard{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px;position:relative}
.flowcard .cardlabel{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);position:absolute;top:12px;right:16px}
.howflow{display:flex;align-items:stretch;gap:0;margin-top:6px}
@media (max-width:520px){.howflow{flex-direction:column}}
.fnode{flex:1;min-width:0;background:var(--panel-2);border:1px solid var(--line);border-radius:11px;padding:14px 12px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px;position:relative}
.fnode .ico{width:38px;height:38px;border-radius:9px;background:var(--panel);border:1px solid var(--line);display:grid;place-items:center;color:var(--brand-deep)}
.fnode .ft{font-family:var(--mono);font-size:11px;letter-spacing:.03em;color:var(--ink);font-weight:600}
.fnode .fs{font-size:11px;color:var(--muted);line-height:1.3}
.fnode.tool{background:linear-gradient(180deg,#fff, #F6FBEE);border-color:var(--brand-deep)}
.fnode.tool .ico{background:var(--brand);border-color:var(--brand-deep);color:var(--brand-ink)}
.fstack{flex:1;display:flex;flex-direction:column;gap:8px}
.fstack .fnode{flex:1}
.fconn{flex:0 0 34px;position:relative;align-self:center;height:2px;background:var(--line-2);margin:0 -1px;min-width:34px}
@media (max-width:520px){.fconn{flex-basis:24px;width:2px;height:24px;min-width:2px}}
.fconn .pulse{position:absolute;top:50%;left:0;width:8px;height:8px;border-radius:50%;background:var(--brand-deep);transform:translate(-50%,-50%);box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 55%,transparent);animation:flow 2.4s linear infinite}
@media (max-width:520px){.fconn .pulse{top:0;left:50%;animation:flowv 2.4s linear infinite}}
.fconn.delay .pulse{animation-delay:1.2s}
@keyframes flow{0%{left:0;opacity:0}12%{opacity:1}88%{opacity:1}100%{left:100%;opacity:0}}
@keyframes flowv{0%{top:0;opacity:0}12%{opacity:1}88%{opacity:1}100%{top:100%;opacity:0}}
.fnode.tool .ico{animation:pulsebox 2.4s ease-in-out infinite}
@keyframes pulsebox{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--brand) 60%,transparent)}50%{box-shadow:0 0 0 7px transparent}}
.flowcaption{font-size:13px;color:var(--muted);text-align:center;margin-top:16px}
.flowcaption b{color:var(--ink)}
@media (prefers-reduced-motion:reduce){.pulse,.fnode.tool .ico{animation:none!important}}

/* ---------------- home hero: 3D tool-lattice canvas ---------------- */
.heroviz{position:relative;background:linear-gradient(180deg,#FFFFFF,#FBFBF6);border:1px solid var(--line);border-radius:var(--radius);padding:14px 14px 16px;overflow:hidden;box-shadow:0 24px 60px -40px rgba(23,27,20,.5)}
.heroviz .cardlabel{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);position:absolute;top:13px;right:16px;z-index:2}
.heroviz .cardlabel::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--brand-deep);margin-right:7px;vertical-align:middle;box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 55%,transparent)}
.heroviz canvas{display:block;width:100%;height:340px}
@media (max-width:860px){.heroviz canvas{height:300px}}
@media (max-width:520px){.heroviz canvas{height:250px}}
.heroviz .flowcaption{margin-top:8px}

/* ---------------- trust strip ---------------- */
.trust{border-bottom:1px solid var(--line);background:var(--panel)}
.trust .inner{max-width:var(--wrap);margin:0 auto;padding:16px 22px;display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
@media (max-width:720px){.trust .inner{grid-template-columns:repeat(2,1fr)}}
.trust .item{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--muted)}
.trust .item svg{color:var(--brand-deep);flex:none}
.trust .item b{color:var(--ink);font-weight:600}

/* ---------------- sections ---------------- */
.section{padding-block:52px}
.section h2{font-size:clamp(24px,3.6vw,32px);letter-spacing:-.02em;margin:0 0 8px;font-weight:800;text-wrap:balance}
.section .sub{font-size:16px;color:var(--muted);margin:0 0 26px;max-width:60ch}

/* toolbar */
.toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:22px}
.search{flex:1;min-width:220px;display:flex;align-items:center;gap:9px;background:var(--panel);border:1px solid var(--line-2);border-radius:12px;padding:11px 15px}
.search:focus-within{border-color:var(--brand-deep)}
.search input{border:0;background:transparent;color:var(--ink);font:inherit;font-size:15px;width:100%;outline:none}
.search svg{flex:none;color:var(--faint)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{font:inherit;font-size:13px;padding:8px 14px;border-radius:100px;border:1px solid var(--line-2);background:var(--panel);color:var(--muted);cursor:pointer;white-space:nowrap}
.chip[aria-pressed="true"]{background:var(--brand);border-color:var(--brand-deep);color:var(--brand-ink);font-weight:600}

/* tool grid */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px}
.card{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px;text-decoration:none;color:inherit;position:relative;overflow:hidden;transition:border-color .15s,transform .12s,box-shadow .18s}
.card::after{content:"";position:absolute;left:0;top:0;height:3px;width:0;background:var(--brand);transition:width .25s}
.card:hover{border-color:var(--brand-deep);transform:translateY(-3px);box-shadow:0 14px 34px -22px rgba(16,19,15,.5)}
.card:hover::after{width:100%}
.card .toprow{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}
.icon{width:44px;height:44px;border-radius:11px;background:var(--sunk);display:grid;place-items:center;color:var(--brand-deep)}
.status{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;padding:4px 10px;border-radius:100px;white-space:nowrap}
.status.available{background:var(--ok-soft);color:var(--ok)}
.status.beta{background:var(--warn-soft);color:var(--warn)}
.status.soon{background:var(--sunk);color:var(--faint)}
.card h3{font-size:19px;margin:0 0 7px;letter-spacing:-.01em;font-weight:700}
.card .blurb{font-size:14px;color:var(--muted);margin:0 0 18px;flex:1}
.card .meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tag{font-family:var(--mono);font-size:10.5px;letter-spacing:.03em;padding:3px 8px;border-radius:6px;background:var(--sunk);color:var(--muted)}
.ver{font-family:var(--mono);font-size:11px;color:var(--faint);margin-left:auto}
.card .open{margin-top:16px;font-weight:600;font-size:14px;color:var(--brand-deep);display:inline-flex;align-items:center;gap:6px}
.card:hover .open .ar{transform:translateX(3px)}
.card .open .ar{transition:transform .15s}
.empty{grid-column:1/-1;text-align:center;color:var(--faint);padding:44px 0;font-size:15px}

/* steps strip (how our tools work) */
.steps3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
@media (max-width:760px){.steps3{grid-template-columns:1fr}}
.step{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px}
.step .k{font-family:var(--mono);font-size:12px;color:var(--brand-deep);letter-spacing:.08em}
.step h4{font-size:16px;margin:8px 0 6px;font-weight:700}
.step p{font-size:14px;color:var(--muted);margin:0}

/* CTA band */
.ctaband{background:var(--ink);color:#fff;border-radius:var(--radius);padding:34px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px}
.ctaband h3{font-size:24px;margin:0 0 6px;letter-spacing:-.01em}
.ctaband p{margin:0;color:#c7ccc0;font-size:15px;max-width:52ch}

/* ---------------- detail page ---------------- */
.detail-head .inner{display:grid;grid-template-columns:1.02fr .98fr;gap:38px;align-items:center;padding-block:44px 10px}
@media (max-width:820px){.detail-head .inner{grid-template-columns:1fr;gap:26px}}
.pills{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;align-items:center}
.detail-head h1{font-size:clamp(30px,4.6vw,44px);letter-spacing:-.025em;margin:0 0 12px;font-weight:800}
.detail-head .sub{font-size:18px;color:var(--muted);margin:0 0 24px;max-width:60ch}
.detail-body{max-width:780px}
.detail-body h2{font-size:24px;letter-spacing:-.01em;margin:38px 0 12px;font-weight:800}
.detail-body p{margin:0 0 14px;color:var(--muted);max-width:68ch}
.detail-body ul{margin:0 0 14px;padding-left:20px;color:var(--muted)}
.detail-body li{margin-bottom:8px}
.detail-body strong{color:var(--ink)}
.steps-ol{counter-reset:s;list-style:none;padding:0}
.steps-ol li{counter-increment:s;position:relative;padding-left:40px;margin-bottom:13px;color:var(--muted)}
.steps-ol li::before{content:counter(s);position:absolute;left:0;top:-1px;width:26px;height:26px;border-radius:8px;background:var(--panel);border:1px solid var(--line-2);color:var(--brand-deep);font-family:var(--mono);font-size:12px;font-weight:600;display:grid;place-items:center}

.privacy-strip{display:flex;gap:11px;align-items:flex-start;background:var(--ok-soft);border:1px solid color-mix(in srgb,var(--ok) 28%,transparent);border-radius:12px;padding:15px 17px;font-size:14px;margin:24px 0}
.privacy-strip b{color:var(--ok)}
.privacy-strip svg{flex:none;color:var(--ok);margin-top:1px}

.changelog{border-left:2px solid var(--line-2);padding-left:18px}
.rel{margin-bottom:16px}
.rel .v{font-family:var(--mono);font-size:13px;color:var(--ink);font-weight:700}
.rel .d{font-family:var(--mono);font-size:11px;color:var(--faint);margin-left:8px}
.rel ul{margin:7px 0 0}

.faq details{border:1px solid var(--line);border-radius:12px;background:var(--panel);padding:2px 17px;margin-bottom:10px}
.faq summary{cursor:pointer;font-weight:600;padding:15px 0;list-style:none;position:relative;padding-right:24px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:0;top:14px;color:var(--brand-deep);font-weight:700;font-size:18px}
.faq details[open] summary::after{content:"\2013"} /* short dash marker only, not copy */
.faq details p{padding-bottom:15px;margin:0;color:var(--muted)}

/* community */
.reactions{display:flex;align-items:center;gap:10px;margin:14px 0 18px;flex-wrap:wrap}
.react-btn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line-2);background:var(--panel);border-radius:100px;padding:9px 16px;font:inherit;font-size:14px;color:var(--ink);cursor:pointer}
.react-btn:hover{border-color:var(--brand-deep)}
.react-btn[aria-pressed="true"]{background:var(--brand);border-color:var(--brand-deep);color:var(--brand-ink);font-weight:600}
.react-btn .n{font-variant-numeric:tabular-nums;color:var(--muted)}
.react-hint{font-size:13px;color:var(--faint)}
.giscus{margin-top:12px}

/* ---------------- legal / doc pages ---------------- */
.doc{max-width:72ch;padding-block:40px 20px}
.doc h1{font-size:32px;letter-spacing:-.02em;font-weight:800}
.doc h2{font-size:19px;margin:30px 0 8px;font-weight:700}
.doc p,.doc li{color:var(--muted)}
.doc .updated{font-family:var(--mono);font-size:12px;color:var(--faint);margin-bottom:26px}

/* ---------------- footer ---------------- */
footer.site{border-top:1px solid var(--line);background:var(--panel);margin-top:20px}
footer.site .inner{max-width:var(--wrap);margin:0 auto;padding:30px 22px 60px;display:flex;flex-wrap:wrap;gap:20px 40px;justify-content:space-between}
footer.site .note{max-width:44ch;font-size:13px;color:var(--faint);line-height:1.6}
footer.site .note b{color:var(--muted)}
footer.site .links{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:flex-start}
footer.site .links a{color:var(--muted);text-decoration:none;font-size:13.5px}
footer.site .links a:hover{color:var(--ink)}
