/* Infinity Incorporation - site stylesheet
   Concept: an engineering drawing sheet. Blueprint blue, navy ink, marigold accent.
   No inline styles are used anywhere, so a strict Content-Security-Policy works. */

@font-face{font-family:"Bricolage Grotesque";src:url("../fonts/bricolage-grotesque-latin-wght-normal.woff2") format("woff2");font-weight:200 800;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("../fonts/ibm-plex-sans-latin-400-normal.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("../fonts/ibm-plex-sans-latin-600-normal.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}

:root{
  --blue:#1535D8; --navy:#07124F; --gold:#FFB81C; --mist:#EEF2FF; --sky:#C9D5FF;
  --muted:#4A5580; --rule:#C9D2F2; --field:#5C6DB8; --error:#B42318; --ok:#067647;
  --display:"Bricolage Grotesque","Segoe UI",Roboto,system-ui,sans-serif;
  --body:"IBM Plex Sans","Segoe UI",Roboto,system-ui,-apple-system,sans-serif;
  --gutter:clamp(1.25rem,4.5vw,2.75rem); --maxw:75rem; --header-h:4.25rem;
  color-scheme:light;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
*,*::before,*::after{box-sizing:inherit}
html{background:var(--navy);-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + env(safe-area-inset-top,0px) + 1rem)}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{margin:0;background:#fff;color:var(--navy);font:400 1.0625rem/1.65 var(--body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg{max-width:100%}
h1,h2,h3,h4{font-family:var(--display);margin:0;text-wrap:balance;font-weight:650;letter-spacing:-.02em}
p{margin:0 0 1em;text-wrap:pretty}
ul,ol{margin:0;padding:0}
a{color:var(--link,var(--blue));text-underline-offset:.18em;text-decoration-thickness:.07em}
a:hover{text-decoration-thickness:.16em}
:focus-visible{outline:3px solid var(--focus,var(--blue));outline-offset:3px;border-radius:2px}
::selection{background:var(--gold);color:var(--navy)}
main:focus{outline:none}

.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:1rem;top:-5rem;z-index:100;background:var(--gold);color:var(--navy);padding:.75rem 1.1rem;font-weight:600;border-radius:999px;text-decoration:none}
.skip-link:focus{top:calc(env(safe-area-inset-top,0px) + .75rem)}

/* ---------- Themes (custom properties per band) ---------- */
.theme-white{--bg:#fff;--fg:var(--navy);--fg2:var(--muted);--link:var(--blue);--rule-c:var(--rule);--focus:var(--blue)}
.theme-mist{--bg:var(--mist);--fg:var(--navy);--fg2:var(--muted);--link:var(--blue);--rule-c:#B9C5F0;--focus:var(--blue)}
.theme-blue{--bg:var(--blue);--fg:#fff;--fg2:var(--sky);--link:#fff;--rule-c:rgba(255,255,255,.3);--focus:#fff}
.theme-navy{--bg:var(--navy);--fg:#fff;--fg2:var(--sky);--link:#fff;--rule-c:rgba(255,255,255,.22);--focus:#fff}
.theme-gold{--bg:var(--gold);--fg:var(--navy);--fg2:#3A3F66;--link:var(--navy);--rule-c:rgba(7,18,79,.3);--focus:var(--navy)}
.band{background:var(--bg,#fff);color:var(--fg,var(--navy));padding-block:clamp(3.5rem,8vw,6.5rem)}
.muted{color:var(--fg2,var(--muted))}
.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter)}

/* blueprint grid: fine 24px and coarse 96px lines */
.blueprint{background-image:
  linear-gradient(rgba(255,255,255,.075) 1px,transparent 1px),
  linear-gradient(90deg,rgba(255,255,255,.075) 1px,transparent 1px),
  linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),
  linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);
  background-size:96px 96px,96px 96px,24px 24px,24px 24px;background-position:-1px -1px}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:3rem;padding:.55rem 1.6rem;border-radius:999px;border:2px solid transparent;font:600 1rem/1.2 var(--body);text-decoration:none;cursor:pointer;transition:background-color .15s,color .15s,border-color .15s}
.btn--gold{background:var(--gold);color:var(--navy);border-color:var(--gold)}
.btn--gold:hover{background:#fff;border-color:#fff;text-decoration:none}
.btn--navy{background:var(--navy);color:#fff;border-color:var(--navy)}
.btn--navy:hover{background:#fff;color:var(--navy);text-decoration:none}
.btn--line{color:var(--fg,var(--navy));border-color:currentColor;background:transparent}
.btn--line:hover{background:var(--fg,var(--navy));color:var(--bg,#fff);text-decoration:none}
.btn--blue{background:var(--blue);color:#fff;border-color:var(--blue)}
.btn--blue:hover{background:var(--navy);border-color:var(--navy);text-decoration:none}
.btn[disabled]{opacity:.6;cursor:progress}

/* ---------- Header ---------- */
.site-header{position:sticky;top:env(safe-area-inset-top,0px);z-index:50;background:var(--navy);color:#fff;border-bottom:1px solid rgba(255,255,255,.16)}
.header-in{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:var(--header-h)}
.brand{display:inline-flex;align-items:center;gap:.65rem;color:#fff;text-decoration:none;font:700 1.125rem/1 var(--display);letter-spacing:-.01em}
.brand:hover{text-decoration:none}
.brand svg{width:2.6rem;height:auto;flex:none}
.nav-toggle{appearance:none;background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.55);border-radius:999px;min-height:2.75rem;padding:0 1.15rem;font:600 .9375rem var(--body);cursor:pointer}
.nav-toggle:hover{border-color:#fff}
#site-nav{display:none;position:absolute;left:0;right:0;top:100%;background:var(--navy);border-bottom:1px solid rgba(255,255,255,.16);padding:.5rem var(--gutter) 1.75rem;max-height:calc(100vh - var(--header-h));overflow:auto}
.site-header[data-open="true"] #site-nav{display:block}
#site-nav ul{list-style:none}
#site-nav li a{display:block;padding:.95rem 0;color:#fff;text-decoration:none;font:600 1.375rem/1.2 var(--display);border-bottom:1px solid rgba(255,255,255,.14)}
#site-nav li a[aria-current="page"]{color:var(--gold)}
#site-nav .btn{margin-top:1.5rem;width:100%}
@media (min-width:60rem){
  .nav-toggle{display:none}
  #site-nav{display:flex;position:static;align-items:center;gap:2rem;padding:0;border:0;background:none;max-height:none;overflow:visible}
  #site-nav ul{display:flex;gap:1.75rem}
  #site-nav li a{padding:.4rem 0;border:0;font:500 .9375rem/1.2 var(--body);box-shadow:inset 0 -2px 0 transparent}
  #site-nav li a:hover{box-shadow:inset 0 -2px 0 rgba(255,255,255,.7)}
  #site-nav li a[aria-current="page"]{color:#fff;box-shadow:inset 0 -2px 0 var(--gold)}
  #site-nav .btn{margin:0;width:auto;min-height:2.75rem;padding-inline:1.3rem;font-size:.9375rem}
}

/* ---------- Hero ---------- */
.hero{position:relative;overflow:clip;padding-block:clamp(2.75rem,7vw,5.5rem) clamp(3rem,7vw,6rem)}
.hero-grid{display:grid;gap:2.5rem;align-items:center}
@media (min-width:56rem){.hero-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:3rem}}
.hero h1{font-size:clamp(2.3rem,1rem + 5.4vw,4.6rem);line-height:.98;letter-spacing:-.04em;font-weight:700}
.hero .lead{margin:1.5rem 0 0;max-width:34rem}
.lead{font-size:clamp(1.125rem,1.04rem + .4vw,1.3125rem);line-height:1.5;color:var(--fg2,var(--muted))}
.hero .lead{color:var(--fg)}
.hero-actions{display:flex;flex-wrap:wrap;gap:.75rem 1rem;margin-top:2rem}
.draft{margin:0}
.draft svg{display:block;width:100%;height:auto}
.draft figcaption{margin-top:.9rem;font-size:.9375rem;color:var(--sky);max-width:26rem}
.crumbs{margin:0 0 1.5rem;font-size:.9375rem}
.crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:.25rem .6rem}
.crumbs li+li::before{content:"/";margin-right:.6rem;color:var(--sky)}
.crumbs a{color:#fff}
.page-hero h1{font-size:clamp(2.1rem,1rem + 4.6vw,4rem);line-height:1.02;letter-spacing:-.035em;font-weight:700}
.page-hero .art{width:100%;max-width:19rem;height:auto;justify-self:start}
@media (min-width:56rem){.page-hero .hero-grid{grid-template-columns:minmax(0,1.5fr) minmax(0,.7fr)}.page-hero .art{justify-self:end}}
.art{fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.art .gold{stroke:var(--gold);stroke-width:3}
.art .solid{fill:var(--gold);stroke:none}

/* drafted infinity: guides fade in, the loop draws once, node lands last */
.infinity-draw .loop{stroke-dasharray:1;stroke-dashoffset:0}
@media (prefers-reduced-motion:no-preference){
  .infinity-draw .guide{animation:fade .9s ease .1s both}
  .infinity-draw .loop{animation:draw 2.8s cubic-bezier(.65,0,.35,1) .35s both}
  .infinity-draw .node{transform-box:fill-box;transform-origin:center;animation:land .5s cubic-bezier(.3,1.6,.5,1) 2.9s both}
}
@keyframes draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes land{from{opacity:0;transform:scale(.2)}to{opacity:1;transform:scale(1)}}

/* ---------- Section furniture ---------- */
.sec-head{display:grid;gap:1rem;max-width:47rem;margin-bottom:clamp(2rem,5vw,3.5rem)}
.sec-head h2,.h2{font-size:clamp(1.85rem,1.1rem + 3vw,3.25rem);line-height:1.04;letter-spacing:-.035em;font-weight:700}
.sec-head p{margin:0}
.split{display:grid;gap:2.25rem 4rem}
@media (min-width:56rem){.split{grid-template-columns:5fr 7fr;align-items:start}}
.prose{max-width:44rem}
.prose h2{font-size:clamp(1.5rem,1.15rem + 1.5vw,2.15rem);line-height:1.1;margin:2.75rem 0 1rem}
.prose h2:first-child{margin-top:0}
.prose h3{font-size:1.25rem;margin:2rem 0 .5rem}
.prose ul,.prose ol{padding-left:1.35rem;margin:0 0 1.25em}
.prose li{margin-bottom:.5em}
.prose .updated{color:var(--muted);font-size:.9375rem}
.prose address{font-style:normal}

/* service schedule: ruled rows, whole row is one link */
.schedule{list-style:none;border-bottom:1px solid var(--rule-c,var(--rule))}
.schedule li{position:relative;isolation:isolate;display:grid;gap:.5rem 2.5rem;padding:1.6rem 0;border-top:1px solid var(--rule-c,var(--rule))}
.schedule li::before{content:"";position:absolute;inset:0 -1rem;z-index:-1;border-radius:6px}
@media (min-width:56rem){.schedule li{grid-template-columns:minmax(0,5fr) minmax(0,5fr) minmax(0,2fr);align-items:baseline;padding-block:2rem}}
.schedule h3{font-size:clamp(1.4rem,1.1rem + 1.2vw,2rem);line-height:1.1;font-weight:700;letter-spacing:-.03em}
.schedule h3 a{color:var(--fg,var(--navy));text-decoration:none}
.schedule h3 a::after{content:"";position:absolute;inset:0}
.schedule p{margin:0;color:var(--fg2,var(--muted))}
.schedule .go{font-weight:600;color:var(--blue);justify-self:start}
@media (min-width:56rem){.schedule .go{justify-self:end}}
.schedule li:hover::before,.schedule li:focus-within::before{background:var(--mist)}
.schedule li:hover h3 a{text-decoration:underline;text-decoration-thickness:.07em;text-underline-offset:.15em}
.schedule--compact li{padding-block:1.15rem}
.schedule--compact h3{font-size:1.3rem}
@media (min-width:56rem){.schedule--compact li{grid-template-columns:minmax(0,4fr) minmax(0,7fr) minmax(0,1fr)}}

/* definition rows (deliverables, principles) */
.defs{margin:0;border-bottom:1px solid var(--rule-c,var(--rule))}
.defs>div{display:grid;gap:.4rem 3rem;padding:1.4rem 0;border-top:1px solid var(--rule-c,var(--rule))}
@media (min-width:48rem){.defs>div{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}}
.defs dt{font:650 1.3125rem/1.2 var(--display);letter-spacing:-.015em}
.defs dd{margin:0;color:var(--fg2,var(--muted))}
.defs dd strong{color:var(--fg,var(--navy))}

/* revision history table */
.rev{width:100%;border-collapse:collapse}
.rev thead th{padding:0 1rem .9rem 0;text-align:left;font:600 .9375rem var(--body);color:var(--muted);border-bottom:2px solid var(--navy)}
.rev tbody th,.rev tbody td{padding:1.4rem 1rem 1.4rem 0;text-align:left;vertical-align:top;border-top:1px solid var(--rule-c)}
.rev tbody th{width:8.5rem;font:700 clamp(1.6rem,1rem + 2vw,2.4rem)/1 var(--display);letter-spacing:-.03em;color:var(--blue)}
.rev tbody td:nth-child(2){width:38%;font-weight:600}
@media (max-width:47.99rem){
  .rev thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .rev,.rev tbody{display:block}
  .rev tr{display:grid;gap:.5rem;padding:1.4rem 0;border-top:1px solid var(--rule-c)}
  .rev tbody th,.rev tbody td,.rev tbody td:nth-child(2){display:block;padding:0;border:0;width:auto}
  .rev tbody td::before{content:attr(data-label);display:block;font-size:.875rem;font-weight:400;color:var(--muted)}
}

/* process steps: a real sequence, so numbered */
.steps{list-style:none;display:grid}
.steps li{position:relative;padding:1.5rem 0 1.5rem 3.75rem;border-top:1px solid var(--rule-c)}
.steps li:last-child{border-bottom:1px solid var(--rule-c)}
.steps .n{position:absolute;left:0;top:1.3rem;font:700 2.4rem/1 var(--display);color:var(--blue);letter-spacing:-.04em}
.steps h3{font-size:1.375rem;margin-bottom:.4rem}
.steps p{margin:0;color:var(--fg2,var(--muted))}
@media (min-width:60rem){
  .steps{grid-template-columns:repeat(5,minmax(0,1fr));gap:1.75rem}
  .steps li,.steps li:last-child{padding:1.25rem 0 0;border:0;border-top:3px solid var(--navy)}
  .steps .n{position:static;display:block;margin-bottom:1.25rem}
}

/* specification sheet */
.spec{margin:0;border-bottom:1px solid var(--rule-c)}
.spec>div{display:grid;gap:.5rem 2.5rem;padding:1.6rem 0;border-top:1px solid var(--rule-c)}
@media (min-width:56rem){.spec>div{grid-template-columns:minmax(0,3fr) minmax(0,5fr) minmax(0,4fr)}}
.spec dt{font:650 1.5rem/1.15 var(--display);letter-spacing:-.02em}
.spec dd{margin:0}
.spec .std{color:var(--gold);font-weight:600}
.spec .how{color:var(--fg2)}

/* audiences */
.trio{display:grid;gap:2rem 3rem}
@media (min-width:56rem){.trio{grid-template-columns:repeat(3,minmax(0,1fr))}}
.trio>div{border-top:3px solid var(--navy);padding-top:1.15rem}
.trio h3{font-size:1.4rem;margin-bottom:.5rem}
.trio p{margin:0;color:var(--muted)}

/* chips = named technologies */
.chips{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem}
.chips li{border:1.5px solid var(--navy);border-radius:999px;padding:.3rem .95rem;font-weight:600;font-size:.9375rem}

/* FAQ */
.faq{border-top:1px solid var(--rule-c,var(--rule))}
.faq-item{border-bottom:1px solid var(--rule-c,var(--rule))}
.faq-item summary{list-style:none;cursor:pointer;position:relative;padding:1.3rem 3rem 1.3rem 0;font:650 1.1875rem/1.35 var(--display);letter-spacing:-.01em}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"+";position:absolute;right:.3rem;top:1.05rem;font:400 1.9rem/1 var(--body);color:var(--link)}
.faq-item[open] summary::after{content:"\2212"}
.faq-item summary:hover{color:var(--link)}
.faq-a{max-width:44rem;padding:0 0 1.5rem;color:var(--fg2,var(--muted))}
.faq-a p:last-child{margin-bottom:0}
.faq-a a{color:var(--link)}

/* call to action band */
.cta h2{font-size:clamp(2rem,1.1rem + 3.6vw,3.75rem);line-height:1;letter-spacing:-.04em;font-weight:700;max-width:16ch}
.cta-grid{display:grid;gap:1.75rem 4rem;align-items:center}
@media (min-width:56rem){.cta-grid{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}}
.cta p{margin:0 0 1.25rem;max-width:32rem}
.cta .email{font-weight:600}

/* ---------- Forms ---------- */
.form{display:grid;gap:1.35rem}
.form-row{display:grid;gap:1.35rem}
@media (min-width:40rem){.form-row{grid-template-columns:1fr 1fr}}
.field label,.field .lbl{display:block;font-weight:600;margin-bottom:.4rem}
.field .opt{font-weight:400;color:var(--muted)}
.field input,.field select,.field textarea{width:100%;min-height:3rem;padding:.7rem .9rem;background:#fff;color:var(--navy);border:1.5px solid var(--field);border-radius:6px;font:400 1rem/1.4 var(--body)}
.field textarea{min-height:9rem;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{outline:3px solid var(--blue);outline-offset:2px;border-color:var(--blue)}
.field .hint{display:block;margin-top:.35rem;color:var(--muted);font-size:.9375rem}
.field .err{display:block;margin-top:.35rem;color:var(--error);font-weight:600;font-size:.9375rem}
.field [aria-invalid="true"]{border-color:var(--error);border-width:2px}
.check{display:grid;grid-template-columns:auto 1fr;gap:.75rem;align-items:start}
.check input{width:1.4rem;height:1.4rem;margin:.15rem 0 0;accent-color:var(--blue)}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.form-status{padding:1rem 1.15rem;border-radius:6px;border:1.5px solid;font-weight:600}
.form-status:empty{display:none}
.form-status.ok{color:var(--ok);border-color:var(--ok);background:#ECFDF3}
.form-status.bad{color:var(--error);border-color:var(--error);background:#FEF3F2}
.contact-grid{display:grid;gap:3rem 5rem}
@media (min-width:56rem){.contact-grid{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}}
.contact-side h2{font-size:1.5rem;margin-bottom:.75rem}
.contact-side ul{padding-left:1.2rem;margin:0 0 1.5rem}
.contact-side li{margin-bottom:.4rem}
.contact-side address{font-style:normal;margin-bottom:1.5rem}

/* ---------- Footer: laid out like a drawing title block ---------- */
.site-footer{padding-block:clamp(3rem,6vw,4.5rem) 2rem}
.tb{display:grid;grid-template-columns:minmax(0,1fr);gap:1px;background:var(--rule-c);border:1px solid var(--rule-c);margin-bottom:3rem}
.tb>div{background:var(--navy);padding:1rem 1.25rem}
@media (min-width:48rem){.tb{grid-template-columns:repeat(3,minmax(0,1fr))}}
.tb .k{display:block;font-size:.875rem;color:var(--fg2)}
.tb .v{display:block;font:650 1.125rem/1.35 var(--display);letter-spacing:-.01em}
.tb a{color:#fff}
.foot-cols{display:grid;gap:2rem 3rem;margin-bottom:3rem}
@media (min-width:48rem){.foot-cols{grid-template-columns:1.4fr 1fr 1fr 1fr}}
.foot-cols h2{font:600 1rem var(--body);letter-spacing:0;color:var(--fg2);margin-bottom:.75rem}
.foot-cols ul{list-style:none}
.foot-cols li{margin-bottom:.45rem}
.foot-cols a{color:#fff;text-decoration:none}
.foot-cols a:hover{text-decoration:underline}
.foot-about{color:var(--fg2);max-width:24rem}
.copy{margin:0;padding-top:1.5rem;border-top:1px solid var(--rule-c);color:var(--fg2);font-size:.9375rem}

/* preview router (only used in the single-file preview) */
.pv-page[hidden]{display:none}

@media print{.site-header,.cta,.skip-link,.nav-toggle,.hero-actions{display:none!important}.band{padding-block:1.5rem}body{font-size:11pt}a{color:inherit}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media (forced-colors:active){.btn{border:2px solid ButtonText}}

/* refinements */
.check label{margin:0;font-weight:400}
.cta .email{margin:1.25rem 0 0}
.theme-mist .schedule li:hover::before,.theme-mist .schedule li:focus-within::before{background:#fff}
.contact-side .muted{margin:0}

@media (min-width:56rem){.split>.sec-head{position:sticky;top:calc(var(--header-h) + 2rem);align-self:start}}
@media (max-width:24rem){
  .header-in{gap:.5rem}
  .brand{font-size:1rem;gap:.5rem}
  .brand svg{width:2.1rem}
  .nav-toggle{padding:0 .95rem}
}

a[href^="mailto:"]{overflow-wrap:anywhere}
.tb .v{overflow-wrap:anywhere}
@media (max-width:55.99rem){
  .hero:not(.page-hero) .draft{order:-1;max-width:17rem}
  .hero:not(.page-hero) .hero-grid{gap:1.5rem}
  .hero:not(.page-hero) .draft figcaption{font-size:.875rem}
}
