/* Novorell Technologies — ESD reliability
   Tokens come from the ESD safe-operating-area plot: ink for axes, orange for the safe region,
   green for normal operation, red for the stress trace, blue from the logo. */
:root{
  --ink:#0d2740; --ink-2:#2c4560; --muted:#5b7088;
  --brand:#01a1df; --brand-deep:#0678ad;
  --paper:#f3f6f9; --white:#fff; --grid:#d6dfe8; --grid-2:#e6ecf2;
  --safe:#ffc766; --safe-tint:#ffeccb; --ok:#19b58a; --ox:#b9c9da; --fail:#e5322d; --plum:#8a1c4b;
  --display:"Bricolage Grotesque","Avenir Next","Segoe UI",system-ui,sans-serif;
  --body:"Public Sans","Segoe UI",system-ui,-apple-system,sans-serif;
  --wrap:1200px; --gut:clamp(20px,4vw,40px);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;font:400 17px/1.6 var(--body);color:var(--ink);background:var(--white);-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto;display:block}
a{color:var(--brand-deep);text-underline-offset:3px;text-decoration-thickness:1px}
a:hover{color:var(--ink)}
:focus-visible{outline:3px solid var(--brand);outline-offset:3px;border-radius:2px}
.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:#fff;padding:10px 16px;z-index:100}
.skip:focus{left:8px}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gut)}
h1,h2,h3,h4{font-family:var(--display);line-height:1.12;margin:0 0 .5em;letter-spacing:-.015em;color:var(--ink)}
h1{font-size:clamp(2.3rem,5vw,3.9rem);font-weight:700;letter-spacing:-.025em}
h2{font-size:clamp(1.7rem,3.2vw,2.5rem);font-weight:650}
h3{font-size:1.25rem;font-weight:650;letter-spacing:-.01em}
p{margin:0 0 1em}
.lede{font-size:clamp(1.1rem,1.6vw,1.3rem);line-height:1.5;color:var(--ink-2);max-width:60ch}
.measure{max-width:64ch}

/* header */
.site-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.96);backdrop-filter:blur(8px);border-bottom:1px solid var(--grid)}
.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:76px}
.brand img{height:52px;width:auto}
.nav{display:flex;align-items:center;gap:6px}
.nav>a,.nav .has-sub>a{color:var(--ink);text-decoration:none;font-weight:550;font-size:.97rem;padding:10px 12px;border-radius:3px}
.nav>a:hover,.nav .has-sub>a:hover{background:var(--paper)}
.nav [aria-current="page"]{box-shadow:inset 0 -3px 0 var(--brand)}
.has-sub{position:relative;display:flex;align-items:center}
.sub-toggle{background:none;border:0;padding:8px 6px;margin-left:-6px;cursor:pointer;color:var(--ink)}
.sub-toggle::before{content:"";display:block;width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .15s}
.sub-toggle[aria-expanded="true"]::before{transform:rotate(-135deg)}
.submenu{position:absolute;top:100%;left:0;min-width:300px;background:#fff;border:1px solid var(--grid);border-top:3px solid var(--brand);padding:8px;margin:0;list-style:none;display:none;box-shadow:0 14px 30px -12px rgba(13,39,64,.25)}
.has-sub.open .submenu{display:block}
.submenu a{display:block;padding:9px 12px;text-decoration:none;color:var(--ink);font-size:.95rem;border-radius:3px}
.submenu a:hover{background:var(--paper)}
.submenu small{display:block;color:var(--muted);font-size:.8rem;line-height:1.3}
.nav .cta{background:var(--ink);color:#fff;margin-left:8px;padding:10px 18px}
.nav .cta:hover{background:var(--brand-deep);color:#fff}
.menu-btn{display:none;background:none;border:1px solid var(--grid);border-radius:3px;padding:9px 13px;font:600 .95rem var(--body);color:var(--ink);cursor:pointer}

/* buttons */
.btn{display:inline-block;font:600 1rem var(--body);padding:13px 22px;border-radius:3px;text-decoration:none;border:2px solid var(--ink);background:var(--ink);color:#fff;cursor:pointer}
.btn:hover{background:var(--brand-deep);border-color:var(--brand-deep);color:#fff}
.btn.ghost{background:transparent;color:var(--ink)}
.btn.ghost:hover{background:var(--ink);color:#fff}
.btn.on-dark{background:#fff;color:var(--ink);border-color:#fff}
.btn.on-dark:hover{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.ghost.on-dark{background:transparent;color:#fff;border-color:#fff}
.btn.ghost.on-dark:hover{background:#fff;color:var(--ink)}
.btn-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}

/* hero (graph-paper field = measurement grid) */
.hero{background-color:var(--paper);
  background-image:linear-gradient(var(--grid-2) 1px,transparent 1px),linear-gradient(90deg,var(--grid-2) 1px,transparent 1px);
  background-size:40px 40px;border-bottom:1px solid var(--grid);overflow:hidden}
.hero .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(24px,4vw,64px);align-items:center;padding-top:clamp(40px,6vw,84px);padding-bottom:clamp(40px,6vw,84px)}
.hero h1{max-width:13ch}
.plot{margin:0}
.plot svg{width:100%;height:auto;display:block;background:var(--white);border:1px solid var(--grid)}
.plot figcaption{font-size:.88rem;color:var(--muted);margin-top:10px;max-width:56ch}
.plot text{font-family:var(--body);fill:var(--ink)}
.trace{stroke-dasharray:1;stroke-dashoffset:1;animation:draw 2.6s .4s cubic-bezier(.5,.1,.2,1) forwards}
.trace-dot{opacity:0;animation:pop .3s 2.7s forwards}
.trace-label{opacity:0;animation:pop .4s 2.9s forwards}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes pop{to{opacity:1}}

/* sections */
.section{padding:clamp(56px,8vw,104px) 0}
.pad{padding-top:clamp(48px,6vw,72px);padding-bottom:clamp(48px,6vw,72px)}
.pad.big{padding-top:clamp(56px,8vw,104px);padding-bottom:clamp(56px,8vw,104px)}
.section.tint{background:var(--paper);border-top:1px solid var(--grid);border-bottom:1px solid var(--grid)}
.section-head{max-width:760px;margin-bottom:clamp(28px,4vw,48px)}
.split{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(24px,4vw,56px);align-items:center}
.split>.a{grid-column:span 5}.split>.b{grid-column:span 7}
.split.flip>.a{grid-column:span 7;order:2}.split.flip>.b{grid-column:span 5;order:1}
.split.even>.a,.split.even>.b{grid-column:span 6}
.split.top{align-items:start}

/* power comparison */
.power{margin:28px 0 8px;display:grid;gap:14px}
.power .row{display:grid;grid-template-columns:150px 1fr;gap:14px;align-items:center;font-size:.95rem}
.power .bar{height:30px;background:var(--grid-2);position:relative;border-radius:2px}
.power .bar i{position:absolute;left:0;top:0;bottom:0;display:block;border-radius:2px}
.power .bar b{position:absolute;left:calc(var(--w) + 10px);top:50%;transform:translateY(-50%);font-weight:650;white-space:nowrap}
.power .note{color:var(--muted);font-size:.88rem;margin:0}

/* lifecycle rail */
.phases{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px;margin-bottom:6px}
.phases span{font-weight:600;font-size:.88rem;color:var(--ink-2);border-top:3px solid var(--ink);padding-top:8px}
.phases .p1{grid-column:1/3}.phases .p2{grid-column:3/5}.phases .p3{grid-column:5/7}
.phases .p2{border-color:var(--brand)}.phases .p3{border-color:var(--ok)}
.stages{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px;list-style:none;margin:0;padding:0}
.stage a{display:flex;flex-direction:column;height:100%;text-decoration:none;color:var(--ink);background:var(--white);border:1px solid var(--grid);border-radius:3px;overflow:hidden}
.stage a:hover{border-color:var(--ink)}
.stage a:hover h3{text-decoration:underline;text-decoration-color:var(--brand);text-decoration-thickness:3px;text-underline-offset:4px}
.stage .thumb{aspect-ratio:4/3;background:var(--white);border-bottom:1px solid var(--grid);overflow:hidden}
.stage .thumb img{width:100%;height:100%;object-fit:cover;object-position:top left}
.stage .txt{padding:14px 14px 18px}
.stage h3{font-size:1.05rem;margin-bottom:.35em}
.stage p{font-size:.9rem;line-height:1.45;color:var(--ink-2);margin:0}
.across{margin-top:14px;background:var(--ink);color:#fff;border-radius:3px;padding:20px 26px;display:flex;flex-wrap:wrap;gap:12px 32px;align-items:center;justify-content:space-between}
.across h3{color:#fff;margin:0 0 .15em}
.across p{margin:0;color:#c9d7e5;max-width:60ch}
.across a{color:#fff;font-weight:600}

/* figures */
.fig{margin:0}
.fig .img{background:var(--white);border:1px solid var(--grid);border-radius:2px;padding:6px}
.fig img{width:100%;cursor:zoom-in}
.fig figcaption{font-size:.9rem;color:var(--muted);margin-top:10px;line-height:1.45}
.fig.dark .img{border-color:transparent;padding:0}
.fig.photo .img{padding:0;border:0}
.fig-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(20px,3vw,36px);align-items:start}
.fig-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}

/* dark band */
.band{background:var(--ink);color:#fff;position:relative;overflow:hidden}
.band::before{content:"";position:absolute;inset:0;background:url(../img/hero_lightning.webp) center/cover;opacity:.32}
.band::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(13,39,64,.94) 30%,rgba(13,39,64,.55))}
.band>.wrap{position:relative;z-index:1}
.band h2,.band h3{color:#fff}
.band p{color:#d4e0ec}
.band a{color:#9fdcf5}
.band .btn.on-dark{color:var(--ink)}
.band .fig figcaption{color:#b9cadb}

/* page head (inner pages) */
.page-head{background:var(--paper);border-bottom:1px solid var(--grid);background-image:linear-gradient(var(--grid-2) 1px,transparent 1px),linear-gradient(90deg,var(--grid-2) 1px,transparent 1px);background-size:40px 40px}
.page-head .wrap{padding-top:clamp(36px,5vw,64px);padding-bottom:clamp(32px,4vw,52px)}
.crumbs{font-size:.88rem;color:var(--muted);margin-bottom:18px}
.crumbs a{color:var(--muted)}
.page-head h1{font-size:clamp(2rem,4.2vw,3.2rem);max-width:20ch}
.subnav{display:flex;flex-wrap:wrap;gap:8px;margin-top:26px}
.subnav a{font-size:.9rem;font-weight:550;text-decoration:none;color:var(--ink);padding:7px 14px;border:1px solid var(--grid);background:var(--white);border-radius:999px}
.subnav a:hover{border-color:var(--ink)}
.subnav a[aria-current="page"]{background:var(--ink);border-color:var(--ink);color:#fff}

/* lists */
.checks{list-style:none;margin:0 0 1.2em;padding:0}
.checks li{position:relative;padding:10px 0 10px 30px;border-top:1px solid var(--grid-2)}
.checks li:last-child{border-bottom:1px solid var(--grid-2)}
.checks li::before{content:"";position:absolute;left:4px;top:1.05em;width:11px;height:6px;border-left:2.5px solid var(--ok);border-bottom:2.5px solid var(--ok);transform:rotate(-45deg)}
.facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 40px;margin:0}
.facts div{padding:14px 0;border-top:1px solid var(--grid)}
.facts dt{font-weight:650;font-family:var(--display);font-size:1.05rem}
.facts dd{margin:.15em 0 0;color:var(--ink-2);font-size:.95rem}
.aside{background:var(--paper);border-left:4px solid var(--brand);padding:20px 24px;margin:0 0 1.2em}
.aside h3{font-size:1.05rem;margin-bottom:.4em}
.aside p:last-child{margin-bottom:0}
.tags{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 1em;padding:0;list-style:none}
.tags li{font-size:.85rem;padding:4px 12px;background:var(--white);border:1px solid var(--grid);border-radius:999px;color:var(--ink-2)}
.next{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.next a{display:block;padding:22px 24px;border:1px solid var(--grid);text-decoration:none;color:var(--ink);border-radius:3px;background:#fff}
.next a:hover{border-color:var(--ink)}
.next small{display:block;color:var(--muted);font-size:.85rem}
.next strong{font-family:var(--display);font-size:1.2rem;font-weight:650}

/* case studies */
.filters{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 32px}
.filters button{font:550 .92rem var(--body);padding:8px 16px;border:1px solid var(--grid);background:#fff;border-radius:999px;cursor:pointer;color:var(--ink)}
.filters button:hover{border-color:var(--ink)}
.filters button[aria-pressed="true"]{background:var(--ink);color:#fff;border-color:var(--ink)}
.cases{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(24px,3vw,40px)}
.case{border-top:3px solid var(--ink);padding-top:18px}
.case[hidden]{display:none}
.case h3{margin-bottom:.4em}
.case .fig{margin-bottom:16px}
.case .tags{margin-bottom:.7em}

/* contact */
form.contact{display:grid;gap:18px}
label{font-weight:600;font-size:.95rem;display:block;margin-bottom:6px}
input,select,textarea{width:100%;font:400 1rem var(--body);color:var(--ink);padding:12px 14px;border:1px solid #9fb2c4;border-radius:3px;background:#fff}
textarea{min-height:150px;resize:vertical}
.form-note{font-size:.88rem;color:var(--muted)}

/* footer */
.site-footer{background:var(--ink);color:#c9d7e5;padding:56px 0 28px;font-size:.95rem}
.site-footer a{color:#fff;text-decoration:none}
.site-footer a:hover{text-decoration:underline}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:36px}
.foot-logo{background:#fff;display:inline-block;padding:10px 14px;border-radius:3px}
.foot-logo img{height:44px;width:auto}
.site-footer h4{color:#fff;font-size:1rem;margin-bottom:.8em}
.site-footer ul{list-style:none;margin:0;padding:0}
.site-footer li{margin:0 0 .45em}
.legal{border-top:1px solid #2c4560;margin-top:36px;padding-top:20px;font-size:.85rem;color:#93a9bf}

/* lightbox */
dialog.zoom{border:0;padding:0;max-width:96vw;max-height:94vh;background:#fff;border-radius:3px}
dialog.zoom::backdrop{background:rgba(13,39,64,.82)}
dialog.zoom img{max-width:94vw;max-height:84vh;width:auto;height:auto;margin:0 auto;cursor:zoom-out}
dialog.zoom form{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:10px 16px;font-size:.9rem}
dialog.zoom button{font:600 .95rem var(--body);padding:6px 14px;border:1px solid var(--ink);background:#fff;border-radius:3px;cursor:pointer}

/* responsive */
@media (max-width:1080px){
  .stages,.phases{grid-template-columns:repeat(3,minmax(0,1fr))}
  .phases{display:none}
  .foot-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:900px){
  .menu-btn{display:block}
  .nav{display:none;position:absolute;top:100%;left:0;right:0;background:#fff;flex-direction:column;align-items:stretch;padding:12px var(--gut) 20px;border-bottom:1px solid var(--grid);gap:2px}
  .nav.open{display:flex}
  .has-sub{flex-wrap:wrap}
  .has-sub>a{flex:1}
  .submenu{position:static;display:none;width:100%;box-shadow:none;border:0;border-left:3px solid var(--brand);margin:4px 0 8px 12px;min-width:0}
  .nav .cta{margin:8px 0 0;text-align:center}
  .hero .wrap{grid-template-columns:1fr}
  .hero h1{max-width:none}
  .split>.a,.split>.b,.split.flip>.a,.split.flip>.b,.split.even>.a,.split.even>.b{grid-column:1/-1;order:0}
  .fig-grid,.fig-grid.three,.cases,.next,.facts{grid-template-columns:1fr}
}
@media (max-width:640px){
  .stages{grid-template-columns:1fr;position:relative;padding-left:22px}
  .stages::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:2px;background:var(--ink)}
  .stage{position:relative}
  .stage::before{content:"";position:absolute;left:-22px;top:18px;width:12px;height:12px;border-radius:50%;background:#fff;border:3px solid var(--ink)}
  .stage a{flex-direction:row}
  .stage .thumb{width:110px;aspect-ratio:auto;flex:none;border-bottom:0;border-right:1px solid var(--grid)}
  .power .row{grid-template-columns:1fr}
  .foot-grid{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .trace{animation:none;stroke-dashoffset:0}
  .trace-dot,.trace-label{animation:none;opacity:1}
}

/* WordPress admin bar offset for the sticky header */
.admin-bar .site-header{top:32px}
@media (max-width:782px){.admin-bar .site-header{top:46px}}
