/* ── Local fonts ───────────────────────────────────────────────── */
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:300;font-display:swap;src:url(fonts/ibm-plex-mono-300.woff2) format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/ibm-plex-mono-400.woff2) format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/ibm-plex-mono-500.woff2) format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/ibm-plex-mono-600.woff2) format('woff2');}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:300;font-display:swap;src:url(fonts/ibm-plex-sans-300.woff2) format('woff2');}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/ibm-plex-sans-400.woff2) format('woff2');}

:root{
  --bg:#1a1d21;--bg2:#1e2228;--bg3:#23282e;
  --line:rgba(90,115,138,0.15);--line2:rgba(90,115,138,0.25);
  --dim:rgba(185,208,224,0.82);--mid:rgba(215,232,245,0.96);
  --bright:#ddeaf4;--accent:#4e85a8;
  --crit:#c85050;--high:#b07038;--med:#8a8030;--low:#426850;
  --mono:"IBM Plex Mono",monospace;--sans:"IBM Plex Sans",sans-serif;
  --sw:248px;
}
html.light{
  --bg:#e8ecf0;--bg2:#dfe4e9;--bg3:#d4dae0;
  --line:rgba(60,80,100,0.12);--line2:rgba(60,80,100,0.22);
  --dim:rgba(20,30,40,0.85);--mid:#0e1418;
  --bright:#050a0e;--accent:#1e5a80;
}
html.light body{color-scheme:light;}
html.light aside{background:rgba(224,230,236,0.97);border-right-color:var(--line2);}
html.light .mob-toggle{background:var(--bg2);border-color:var(--line2);}
html.light .pill.off{background:rgba(160,160,160,.15);border-color:rgba(120,120,120,.3);}
html.light .pill.off::after{background:rgba(70,85,100,0.5);}
html.light .svc-nav-arr{background:var(--bg2);}
html.light .pgp-block{background:var(--bg2);border-color:var(--line2);}
html.light .about-sec-img{filter:grayscale(1);opacity:0.82;}
html.light .sb{background:var(--bg2);}
html.light .adv-row:hover{background:rgba(46,109,148,0.06);}
html.light .lb-card{background:var(--bg2);}
html.light .cap-item::before{opacity:.8;}
*{margin:0;padding:0;box-sizing:border-box;}
html,body{width:100%;min-height:100%;background:var(--bg);color:var(--mid);font-family:var(--sans);font-weight:300;font-size:18.6px;line-height:1.82;overflow-x:hidden;}
#bug-canvas{position:fixed;top:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none;}
#shell{position:relative;z-index:10;display:flex;min-height:100vh;}

/* sidebar */
aside{width:var(--sw);min-height:100vh;background:rgba(22,25,29,0.97);backdrop-filter:blur(16px);border-right:1px solid var(--line);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;overflow:hidden;}
.s-logo{padding:16px 16px 14px;border-bottom:1px solid var(--line);cursor:pointer;flex-shrink:0;display:flex;align-items:center;gap:10px;}
.s-logo img{width:36px;height:36px;object-fit:contain;flex-shrink:0;opacity:0.82;}
.s-logo-text{}
.s-logo-name{font-family:var(--mono);font-size:15.4px;font-weight:600;color:var(--bright);line-height:1;white-space:nowrap;letter-spacing:.01em;}
nav{flex:1;padding:10px 0;overflow-y:auto;overflow-x:hidden;min-height:0;}
.ni{display:flex;align-items:center;gap:8px;padding:8px 20px;font-family:var(--mono);font-size:14.4px;letter-spacing:.06em;color:var(--dim);cursor:pointer;transition:color .15s,background .15s;user-select:none;position:relative;}
.ni:hover{color:var(--mid);background:rgba(78,133,168,.07);}
.ni.active{color:var(--bright);}
.ni.active::before{content:"";position:absolute;left:0;top:22%;bottom:22%;width:2px;background:var(--accent);border-radius:2px;}
.na{margin-left:auto;font-size:9.6px;transition:transform .2s;opacity:.4;}
.ni.open .na{transform:rotate(90deg);}
.nsub{overflow:hidden;max-height:0;transition:max-height .25s ease;}
.nsub.open{max-height:400px;}
.nsi{display:flex;align-items:center;gap:7px;padding:6px 20px 6px 32px;font-family:var(--mono);font-size:13.2px;letter-spacing:.05em;color:var(--dim);cursor:pointer;transition:color .15s;}
.nsi:hover{color:var(--mid);}
.nsi.active{color:var(--accent);}
.s-util{padding:12px 20px;border-top:1px solid var(--line);flex-shrink:0;}
.s-util-row{display:flex;align-items:center;gap:8px;padding:5px 0;font-family:var(--mono);font-size:13.2px;letter-spacing:.05em;color:var(--dim);cursor:pointer;transition:color .15s;text-decoration:none;}
.s-util-row:hover{color:var(--mid);}
.s-toggle{display:flex;align-items:center;gap:8px;padding:6px 0;font-family:var(--mono);font-size:13.2px;letter-spacing:.05em;color:var(--dim);cursor:pointer;transition:color .15s;user-select:none;}
.s-toggle:last-of-type{border-bottom:1px solid var(--line);margin-bottom:8px;padding-bottom:10px;}
.s-toggle:hover{color:var(--mid);}
.pill{width:26px;height:13px;background:rgba(78,133,168,.3);border:1px solid var(--accent);border-radius:7px;position:relative;transition:background .2s;flex-shrink:0;}
.pill::after{content:"";position:absolute;top:2px;left:2px;width:7px;height:7px;background:var(--accent);border-radius:50%;transition:transform .2s;}
.pill.off{background:rgba(70,70,70,.2);border-color:rgba(90,90,90,.3);}
.pill.off::after{transform:translateX(13px);background:var(--dim);}

/* content */
#content{margin-left:var(--sw);flex:1;display:flex;flex-direction:column;}
main{flex:1;max-width:1060px;padding:52px 48px 120px;}
.page{display:none;animation:fi .18s ease;}
.page.active{display:block;}
@keyframes fi{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* typography */
.eyebrow{font-family:var(--mono);font-size:10.8px;letter-spacing:.2em;color:var(--accent);text-transform:uppercase;margin-bottom:15px;}
.page-title{font-family:var(--mono);font-weight:400;font-size:clamp(24px,3.1vw,36px);color:var(--bright);line-height:1.2;margin-bottom:12px;}
.page-sub{font-size:15.2px;color:var(--dim);max-width:600px;line-height:1.82;margin-bottom:36px;}
.sec-lbl{font-family:var(--mono);font-size:11.5px;font-weight:600;letter-spacing:.18em;color:var(--accent);text-transform:uppercase;margin-bottom:16px;display:flex;align-items:center;gap:11px;}
.sec-lbl::after{content:"";flex:1;height:1px;background:var(--line2);}

/* stat blocks */
.stat-blocks{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-bottom:44px;}
.sb{background:var(--bg2);padding:20px 18px;}
.sb-n{font-family:var(--mono);font-size:28.8px;font-weight:300;color:var(--bright);line-height:1;margin-bottom:4px;}
.sb-l{font-family:var(--mono);font-size:9.6px;letter-spacing:.15em;color:var(--dim);text-transform:uppercase;margin-bottom:6px;}
.sb-d{font-size:15.2px;color:var(--dim);line-height:1.6;}


/* advisory list */
/* ── Advisory list ─────────────────────────────────────────────────
   Grid columns: date | ZSL-ID | title (fills remaining) | severity
   To adjust column widths change the px values in grid-template-columns.
   Title column gets all leftover space; text clips with ellipsis.
   ------------------------------------------------------------------ */
.adv-list{list-style:none;width:100%;}
.adv-list .adv-row:last-child{border-bottom:none;}
.adv-row{
  border-bottom:1px solid var(--line);
  list-style:none;
  transition:background .12s;
}
.adv-row:hover{background:rgba(78,133,168,.05);}
.adv-row:has(+ .adv-year-sep){border-bottom:none;}
.adv-row-link{
  display:grid;
  grid-template-columns:78px 110px 1fr 68px;
  column-gap:10px;
  width:100%;align-items:center;
  text-decoration:none;color:inherit;
  /*padding:8px 6px;box-sizing:border-box;*/
}
.adv-row-link:hover .adv-id,
.adv-row-link:hover .adv-ttl{color:var(--bright);}
.adv-date{font-family:var(--mono);font-size:12.5px;color:var(--dim);white-space:nowrap;overflow:hidden;}
.adv-id{font-family:var(--mono);font-size:12.5px;color:var(--accent);white-space:nowrap;overflow:hidden;}
.adv-ttl{font-size:15.2px;color:var(--mid);transition:color .15s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;}
.sev{display:inline-flex;align-items:center;justify-content:center;width:68px;height:19px;font-family:var(--mono);font-size:9px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:#eeeef4;border-radius:2px;justify-self:end;}
.sev-critical{background:rgba(108,56,172,0.80);}
.sev-high    {background:rgba(182,48,48,0.76);}
.sev-medium  {background:rgba(182,106,18,0.80);}
.sev-low     {background:rgba(36,116,64,0.76);}

/* ── Advisory search + filter ───────────────────────────────────── */
.adv-search-bar{margin-bottom:10px;width:100%;}
.adv-search-input{
  display:block;width:100%;box-sizing:border-box;
  background:var(--bg2);border:1px solid var(--line2);
  padding:9px 14px;
  font-family:var(--mono);font-size:13.2px;color:var(--bright);
  outline:none;transition:border-color .15s;
}
.adv-search-input::placeholder{color:var(--dim);}
.adv-search-input:focus{border-color:var(--accent);}
.adv-filter-row{display:flex;gap:7px;margin-bottom:18px;flex-wrap:wrap;}
.filter-btn{
  font-family:var(--mono);font-size:10.8px;
  padding:4px 10px;border:1px solid var(--line2);
  background:transparent;color:var(--dim);
  cursor:pointer;letter-spacing:.06em;
  transition:color .15s,border-color .15s,background .15s;
}
.filter-btn:hover{color:var(--mid);}
.filter-btn.on{color:var(--accent);border-color:var(--accent);background:rgba(78,133,168,.08);}
.adv-count{font-family:var(--mono);font-size:11.4px;color:var(--dim);margin-bottom:12px;letter-spacing:.04em;}

/* detail */
#adv-file-wrap{margin-top:-10px;}
#adv-file-wrap .adv-wrap{padding:0;margin:0;max-width:none;}
#adv-file-wrap p,#adv-file-wrap .adv-body-p{max-width:none;}
#lb-file-wrap{margin-top:-10px;}
#lb-file-wrap .lb-wrap{padding:0;margin:0;max-width:none;}
#lb-file-wrap p{max-width:none;}

.adv-back{font-family:var(--mono);font-size:10.8px;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);cursor:pointer;margin-bottom:28px;display:block;transition:color .15s;border:none;background:none;text-decoration:none;}
.adv-back:hover{color:var(--bright);}
.adv-d-id{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--accent);letter-spacing:.12em;margin-bottom:8px;}
.adv-d-title{font-family:var(--mono);font-weight:400;font-size:clamp(14px,2vw,21px);color:var(--bright);line-height:1.32;margin-bottom:26px;}
.meta-grid{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);margin-bottom:28px;}
.mc{padding:11px 15px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);}
.mc:nth-child(2n){border-right:none;}
.mk{font-family:var(--mono);font-size:9.6px;letter-spacing:.15em;color:var(--dim);text-transform:uppercase;margin-bottom:3px;}
.mv{font-size:15.2px;color:var(--mid);line-height:1.5;}
.detail-2col{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);margin-bottom:24px;}
.detail-cell{background:var(--bg2);padding:16px 15px;}
.dc-t{font-family:var(--mono);font-size:9.6px;letter-spacing:.15em;text-transform:uppercase;color:var(--dim);margin-bottom:8px;padding-bottom:5px;border-bottom:1px solid var(--line);}
.dc-b{font-size:15.2px;color:var(--mid);line-height:1.7;}
.adv-sec{margin-bottom:22px;}
.adv-sec-t{font-family:var(--mono);font-size:9.6px;letter-spacing:.15em;text-transform:uppercase;color:var(--dim);margin-bottom:8px;padding-bottom:5px;border-bottom:1px solid var(--line);}
.adv-sec /* ── Design system: body text = --mid 15.2px, links = --accent ── */
p{font-size:15.2px;color:var(--mid);line-height:1.82;margin-bottom:1em;max-width:720px;}
a{color:var(--accent);text-decoration:none;transition:color .15s;}
a:hover{color:var(--bright);}
.code-block{background:rgba(0,0,0,.42);border:1px solid var(--line);padding:13px 15px;font-family:var(--mono);font-size:13.2px;color:var(--mid);line-height:1.65;overflow-x:auto;white-space:pre;margin-top:6px;}

/* pub grid */
.pub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:20px;margin-bottom:40px;}
.pub-card{background:var(--bg2);border:1px solid var(--line2);cursor:pointer;display:flex;flex-direction:column;transition:border-color .2s,background .2s,filter .2s;overflow:hidden;filter:saturate(0.5) brightness(0.8);}
.pub-card:hover{border-color:var(--accent);background:var(--bg3);filter:saturate(1) brightness(1);}
.pub-thumb{width:100%;aspect-ratio:16/9;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:center;overflow:hidden;background:var(--bg3);}
.pub-thumb-img img{width:100%;height:100%;object-fit:cover;display:block;}
/* papers layout */
#page-papers .pub-thumb-img img{
  width:100%;
  height:100%;
  object-fit:contain;
}

#page-papers .pub-thumb{
  aspect-ratio:auto;
  padding:12px;
}

#page-presentations .pub-thumb-img img{
  width:100%;
  height:100%;
  object-fit:contain;
}

#page-presentations .pub-thumb{
  aspect-ratio:auto;
  padding:12px;
}

.pub-info{padding:14px 15px 16px;flex:1;display:flex;flex-direction:column;gap:4px;}
.pub-type{font-family:var(--mono);font-size:9.6px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);}
.pub-title{font-size:15.2px;color:var(--mid);line-height:1.42;flex:1;}
.pub-meta{font-family:var(--mono);font-size:11px;color:var(--dim);margin-top:6px;}
.pub-venue{font-size:11px;color:var(--dim);margin-top:2px;font-family:var(--mono);}
.pub-author{font-family:var(--mono);font-size:10.4px;color:var(--dim);margin-top:2px;}
.pdf-wrap{display:flex;flex-direction:column;align-items:center;gap:8px;}
.pdf-icon{width:36px;height:46px;background:rgba(78,133,168,.1);border:1px solid var(--line2);}
.pdf-fallback,.pdf-label{font-family:var(--mono);font-size:10px;color:var(--dim);}
.pdf-icon-lg{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--accent);letter-spacing:.1em;}
.pdf-fname{font-family:var(--mono);font-size:9px;color:var(--dim);}

/* media */
.media-list{list-style:none;}
.media-row{border-bottom:1px solid var(--line);display:grid;grid-template-columns:160px 1fr 72px;column-gap:16px;align-items:baseline;transition:background .15s;text-decoration:none;}
.media-row-link{cursor:pointer;}
.media-row-link:hover{background:rgba(78,133,168,.04);}
.media-row-link:hover .media-src{color:var(--bright);}
.media-row-link:hover .media-title{color:var(--bright);}
.media-src{font-family:var(--mono);font-size:12.5px;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .15s;padding:5px 0;}
.media-title{font-size:14.5px;color:var(--mid);line-height:1.4;min-width:0;transition:color .15s;padding:5px 0;}
.media-title .media-nolink{color:var(--dim);}
.media-date{font-family:var(--mono);font-size:12px;color:var(--dim);justify-self:end;white-space:nowrap;padding:5px 0;}

/* services */

/* about */

/* contact */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:transparent;border:1px solid var(--line);margin-bottom:28px;}
.cc{background:transparent;padding:18px 16px;border:1px solid var(--line);min-width:0;}
.ck{font-family:var(--mono);font-size:9.6px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);margin-bottom:4px;}
.cv{font-size:15.2px;color:var(--mid);line-height:1.5;word-wrap:break-word;overflow-wrap:break-word;word-break:break-word;}
.cv a{color:var(--accent);text-decoration:none;}
.cv a:hover{color:var(--bright);}
.pgp-block{background:transparent;border:1px solid var(--line);padding:14px 16px;font-family:var(--mono);font-size:11.4px;color:var(--dim);line-height:1.7;white-space:pre-wrap;word-break:break-all;margin-top:7px;}
@media(max-width:860px){
  .contact-grid{grid-template-columns:1fr;}
}
@media(max-width:700px){
  .pgp-block{font-size:10px;}
}

/* footer */
footer{border-top:1px solid var(--line);padding:15px 48px;display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:12.6px;color:var(--dim);letter-spacing:.07em;}
footer a{color:var(--dim);text-decoration:none;transition:color .15s;}
.footer-links{display:flex;gap:20px;}
.footer-links a:hover{color:var(--accent);}
footer a:hover{color:var(--mid);}

/* mobile */
.mob-toggle{display:none;}
.mob-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:99;backdrop-filter:blur(2px);}
@media(max-width:700px){
  aside{transform:translateX(-100%);transition:transform .25s ease;}
  aside.open{transform:none;}
  aside.open~.mob-overlay{display:block;}
  #content{margin-left:0;}
  main{padding:48px 14px 80px;}
  .mob-toggle{display:flex;position:fixed;top:11px;left:11px;z-index:300;background:var(--bg2);border:1px solid var(--line2);padding:8px 12px;cursor:pointer;font-family:var(--mono);font-size:14px;color:var(--mid);border-radius:3px;-webkit-tap-highlight-color:transparent;}
  .ni{padding:12px 20px;font-size:15px;}
  .nsi{padding:10px 20px 10px 32px;font-size:14px;}
  .s-toggle{padding:10px 0;}
  /* advisory list: stack vertically */
  .adv-row-link{grid-template-columns:1fr auto;grid-template-rows:auto auto;row-gap:2px;}
  .adv-date{grid-column:1;font-size:11px;}
  .adv-id{grid-column:1;font-size:11px;}
  .adv-ttl{grid-column:1/-1;white-space:normal;font-size:14px;line-height:1.5;}
  .sev{grid-column:2;grid-row:1/3;align-self:center;width:auto;padding:0 8px;font-size:8px;height:18px;}
  .pub-grid{grid-template-columns:1fr 1fr;}
  .stat-blocks{grid-template-columns:1fr 1fr;}
  .svc-nav-arr{width:48px;height:48px;font-size:32px;}
  .about-title{margin-bottom:28px;}
  .sec-lbl{font-size:10px;}
  /* footer stack */
  footer{flex-direction:column;gap:8px;padding:15px 14px;text-align:center;}
  .footer-links{justify-content:center;}
  /* social links wrap */
  .social-lnk{font-size:10px;}
  /* media references stack */
  .media-row{grid-template-columns:1fr auto;grid-template-rows:auto auto;row-gap:0;}
  .media-src{grid-column:1;font-size:11px;}
  .media-title{grid-column:1/-1;white-space:normal;font-size:13.5px;}
  .media-date{grid-column:2;grid-row:1;font-size:11px;}
  /* code blocks scroll */
  .code-block{font-size:11.5px;}
}
@media(max-width:480px){
  main{padding:44px 10px 70px;}
  .stat-blocks{grid-template-columns:1fr;}
  .pub-grid{grid-template-columns:1fr;}
  .about-sec-img{width:100px;}
  footer{font-size:11px;}
}

/* ── About / Home intro ────────────────────────────────────────────
   Edit text directly in the HTML section page-home > .about-intro
   ------------------------------------------------------------------ */
.about-intro{padding-bottom:40px;margin-bottom:36px;}
.about-eyebrow{font-family:var(--mono);font-size:10.8px;letter-spacing:.22em;color:var(--accent);text-transform:uppercase;margin-bottom:14px;}
.about-title{font-family:var(--mono);font-weight:400;font-size:clamp(19px,2.4vw,28px);color:var(--bright);line-height:1.22;margin-bottom:42px;letter-spacing:-.01em;}
.about-body p{font-size:15.6px;color:var(--mid);line-height:1.85;margin-bottom:1em;}
.about-body p:last-child{margin-bottom:0;}
.about-body h3{font-family:var(--mono);font-size:13.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:2em 0 .7em;padding-bottom:6px;border-bottom:1px solid var(--line);}
.about-body h3:first-child{margin-top:0;}
.about-sec{display:flex;gap:20px;align-items:flex-start;justify-content:space-between;}
.about-sec p{flex:1;min-width:0;}
.about-sec-img{flex-shrink:0;width:165px;height:auto;border-radius:2px;opacity:0.77;filter:grayscale(0.7) sepia(0.3) hue-rotate(170deg);pointer-events:none;margin-left:auto;}
@media(max-width:700px){.about-sec{padding-right:0;}.about-sec-img{position:static;width:105px;display:block;margin-left:auto;margin-top:-10px;}}

/* capabilities grid */
.cap-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin-bottom:40px;}
.cap-item{font-family:var(--mono);font-size:13.2px;letter-spacing:.04em;color:var(--dim);padding:7px 0;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;transition:color .2s;}
.cap-item::before{content:"\25A0";font-size:7.5px;color:var(--accent);opacity:.6;}
.cap-item:hover{color:var(--bright);}
@media(max-width:768px){.cap-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:480px){.cap-grid{grid-template-columns:1fr;}.cap-item{font-size:12.5px;padding:9px 0;}}

/* recent-from-lab grid */
.recent-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:44px;}
.rc{display:flex;flex-direction:column;gap:7px;padding:16px 18px 14px;
    background:var(--bg2);border:1px solid var(--line2);border-radius:3px;
    text-decoration:none;cursor:pointer;transition:border-color .15s,background .15s;}
.rc:hover{background:var(--bg3);border-color:rgba(78,133,168,.35);}
.rc-badge{font-family:var(--mono);font-size:7.8px;font-weight:700;letter-spacing:.12em;
          text-transform:uppercase;display:inline-flex;align-items:center;justify-content:center;
          width:68px;height:18px;border-radius:2px;color:#eeeef4;flex-shrink:0;}
.rc-blog{background:rgba(55,95,158,0.70);}
.rc-paper{background:rgba(40,126,112,0.70);}
.rc-title{font-family:var(--sans);font-size:15.2px;color:var(--bright);line-height:1.45;flex:1;}
.rc-meta{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.04em;}
/* sidebar social icons */
.s-socials{display:flex;flex-direction:row;flex-wrap:wrap;gap:6px;padding-top:8px;}
.s-soc{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;color:var(--dim);text-decoration:none;border-radius:3px;transition:color .15s,background .15s;}
.s-soc:hover{color:var(--bright);}
.s-soc svg{flex-shrink:0;opacity:.7;}
.s-soc:hover svg{opacity:1;}

/* lablog */
.blog-post{border-top:1px solid var(--line);padding:32px 0 12px;margin-bottom:20px;}
.bp-meta{display:flex;align-items:center;gap:12px;margin-bottom:12px;}
.bp-date{font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:.08em;}
.bp-tag{font-family:var(--mono);font-size:8px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;background:rgba(55,95,158,0.55);color:#dde8f4;border-radius:2px;padding:2px 8px;}
.bp-title{font-family:var(--mono);font-size:18px;font-weight:500;color:var(--bright);line-height:1.3;margin-bottom:20px;}
.bp-body p{font-size:15.2px;color:var(--mid);line-height:1.82;max-width:700px;margin-bottom:1em;}
.bp-body p:last-child{margin-bottom:0;}
.bp-body strong{color:var(--mid);font-weight:600;}

/* advisory year separator */
.adv-year-sep{
  font-family:var(--mono);font-size:11px;font-weight:700;
  letter-spacing:.32em;text-transform:uppercase;
  color:var(--accent);
  padding:22px 0;
  border-bottom:none;
  cursor:default;
  list-style:none;
  display:flex;align-items:center;gap:18px;
}
.adv-year-sep::after{
  content:"";flex:1;height:3px;
  background:repeating-linear-gradient(
    90deg,
    rgba(78,133,168,0.55) 0px,
    rgba(78,133,168,0.55) 6px,
    transparent 6px,
    transparent 13px
  );
}

/* site history */
.hist-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;margin-bottom:28px;}
@media(max-width:640px){.hist-grid{grid-template-columns:1fr 1fr;}}
.hist-card{background:var(--bg2);border:1px solid var(--line2);display:flex;flex-direction:column;text-decoration:none;transition:border-color .15s,background .15s;overflow:hidden;}
.hist-card:hover{border-color:var(--accent);}
.hist-year{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.16em;color:var(--accent);padding:14px 18px 10px;text-transform:uppercase;}
.hist-thumb{border:1px solid var(--line2);width:100%;aspect-ratio:16/9;background:var(--bg3);display:flex;align-items:center;justify-content:center;overflow:hidden;border-bottom:1px solid var(--line2);}
.hist-thumb img{width:100%;height:100%;object-fit:contain;opacity:.7;}
.hist-thumb-placeholder{font-family:var(--mono);font-size:22px;color:var(--line2);border:1px dashed var(--line);margin:0 14px;border-radius:2px;}
.hist-label{font-size:15.2px;color:var(--dim);padding:12px 18px 18px;line-height:1.65;}
.hist-card:hover{border-color:var(--accent);background:var(--bg3);}
.hist-v-label{font-family:var(--mono);font-size:15.2px;color:var(--dim);letter-spacing:.04em;}
.hist-thumb-current .hist-v-label{font-family:var(--mono);font-size:15.2px;color:var(--dim);letter-spacing:.04em;}

/* svc card more link */
/* svc tags */
.social-lnk{font-family:var(--mono);font-size:10px;color:var(--dim);text-decoration:none;letter-spacing:.1em;transition:color .15s;}.social-lnk:hover{color:var(--bright);}

/* advisory detail extra */
.poc-file-row{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--bg2);
  border:1px solid var(--line2);border-radius:3px;margin-top:6px;}
.poc-link{font-family:var(--mono);font-size:13.5px;color:var(--accent);text-decoration:none;letter-spacing:.04em;}
.poc-link:hover{color:var(--bright);}
.poc-ext{font-family:var(--mono);font-size:9px;color:var(--dim);letter-spacing:.14em;
  border:1px solid var(--line2);padding:1px 5px;border-radius:2px;margin-left:auto;}
.adv-timeline{width:100%;border-collapse:collapse;margin-top:4px;}
.adv-timeline tr{border-bottom:1px solid var(--line);}
.adv-timeline tr:last-child{border-bottom:none;}
.tl-entry{display:flex;gap:16px;padding:0;}
.tl-date{font-family:var(--mono);font-size:13.5px;color:var(--dim);white-space:nowrap;min-width:90px;flex-shrink:0;line-height:1.82;}
.tl-text{font-family:var(--sans);font-size:15.2px;color:var(--mid);line-height:1.82;}
.cl-entry{display:flex;gap:16px;padding:0;}
.cl-date{font-family:var(--mono);font-size:13.5px;color:var(--dim);min-width:90px;flex-shrink:0;line-height:1.82;}
.cl-text{font-family:var(--sans);color:var(--mid);font-size:15.2px;line-height:1.82;}
.adv-refs{display:flex;flex-direction:column;gap:6px;margin-top:4px;}
.adv-ref-row{font-size:13.5px;color:var(--dim);font-family:var(--mono);}
.adv-body-p{font-size:15.2px;color:var(--dim);line-height:1.82;}
.adv-footer{margin-top:26px;padding-top:12px;border-top:1px solid var(--line);
  font-family:var(--mono);font-size:9px;color:var(--dim);letter-spacing:.06em;}

/* lablog grid */
.lb-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:32px;}
@media(max-width:700px){.lb-grid{grid-template-columns:1fr;}}
.lb-card{border:1px solid var(--line2);border-radius:3px;padding:18px 20px 16px;
  display:flex;flex-direction:column;gap:0;transition:border-color .15s;}
.lb-card:hover{border-color:rgba(78,133,168,0.45);}
.lb-card-top{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.lb-cat{font-family:var(--mono);font-size:9px;font-weight:600;letter-spacing:.18em;
  text-transform:uppercase;border:1px solid;padding:2px 7px;border-radius:2px;}
.lb-date{font-family:var(--mono);font-size:11px;color:var(--dim);}
.lb-card-title{font-size:16px;color:var(--bright);font-family:var(--mono);font-weight:400;line-height:1.3;margin-bottom:8px;}
.lb-card-title:hover{color:var(--accent);}
.lb-card-excerpt{font-size:15.2px;color:var(--dim);line-height:1.78;margin:10px 0 14px;}
.lb-card-foot{display:flex;align-items:center;justify-content:space-between;
  padding-top:10px;border-top:1px solid var(--line);}
.lb-author{font-family:var(--mono);font-size:11.4px;color:var(--dim);}
.lb-read{font-family:var(--mono);font-size:11.4px;color:var(--accent);cursor:pointer;transition:color .15s;}
.lb-read:hover{color:var(--bright);}
/* lablog entry */
.lb-entry-meta{display:flex;align-items:center;gap:12px;margin-top:6px;flex-wrap:wrap;}
.lb-entry-body{font-size:15.2px;color:var(--mid);line-height:1.82;}
.lb-entry-body p{margin-bottom:16px;}
.lb-body-h{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--accent);
  letter-spacing:.12em;text-transform:uppercase;margin:24px 0 8px;
  padding-bottom:6px;border-bottom:1px solid var(--line);}
.lb-code{background:var(--bg2);border:1px solid var(--line2);border-radius:3px;
  padding:14px 16px;font-family:var(--mono);font-size:11.5px;color:var(--mid);
  line-height:1.7;overflow-x:auto;white-space:pre;margin:0 0 16px;}

/* services inline */

/* work list (projects / tools) */
.work-list{display:flex;flex-direction:column;gap:0;}
.wl-item{padding:20px 0;border-bottom:1px solid var(--line);}
.wl-item:last-child{border-bottom:none;}
.wl-hd{display:flex;align-items:center;gap:12px;margin-bottom:6px;flex-wrap:wrap;}
.wl-title{font-family:var(--mono);font-size:15.2px;font-weight:600;color:var(--bright);text-decoration:none;letter-spacing:.02em;transition:color .15s;}
a.wl-title:hover{color:var(--accent);}
.wl-tag{font-family:var(--mono);font-size:9px;color:var(--dim);letter-spacing:.14em;text-transform:uppercase;
  border:1px solid var(--line2);padding:1px 7px;border-radius:2px;margin-left:auto;}
.wl-desc{font-size:15.2px;color:var(--mid);line-height:1.82;margin:0;max-width:680px;}


/* ── Services ────────────────────────────────────────────────── */
/* gears */
/* panels */

/* ── Services ─────────────────────────────────────────────────── */
.svc-wrap{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:start;margin-bottom:40px;}
.svc-fig{position:relative;}
.svc-g{fill-rule:evenodd;stroke-linejoin:round;stroke-linecap:butt;}
.svc-g-big{fill:rgba(85,145,175,0.14);stroke:rgba(120,190,225,0.70);stroke-width:0.9;}
.svc-g-med{fill:rgba(70,125,155,0.11);stroke:rgba(100,170,205,0.55);stroke-width:0.8;}
.svc-g-sml{fill:rgba(60,110,140,0.09);stroke:rgba(85,150,185,0.42);stroke-width:0.75;}
.svc-tick-ring{fill:none;stroke:rgba(78,133,168,0.16);stroke-width:0.7;stroke-dasharray:2 4;}
.svc-shaft{stroke:rgba(78,133,168,0.14);stroke-width:1;stroke-dasharray:3 5;fill:none;}
.svc-axle{fill:rgba(100,185,225,0.58);stroke:rgba(78,133,168,0.3);stroke-width:0.7;}
.svc-axle-core{fill:rgba(10,14,20,0.95);}
.pcb-via{fill:rgba(78,133,168,0.26);stroke:rgba(78,133,168,0.45);stroke-width:0.7;}
.pcb-via-hole{fill:rgba(14,18,24,0.92);}
.pcb-trace{stroke:rgba(78,133,168,0.16);stroke-width:0.8;fill:none;}
.pcb-trace-l{stroke:rgba(78,133,168,0.12);stroke-width:0.8;fill:none;}
.pcb-pad{fill:rgba(78,133,168,0.14);stroke:rgba(78,133,168,0.28);stroke-width:0.6;}
/* dots */
.svc-dots{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap;align-items:center;}
.svc-dot{
  width:20px;height:20px;border-radius:50%;
  border:1.5px solid rgba(var(--dot-rgb),0.4);
  background:rgba(var(--dot-rgb),0.08);
  cursor:pointer;
  position:relative;
  transition:border-color .15s,background .15s,box-shadow .15s,transform .12s;
  display:flex;align-items:center;justify-content:center;
}
.svc-dot:hover{
  border-color:rgba(var(--dot-rgb),0.8);
  background:rgba(var(--dot-rgb),0.16);
  transform:scale(1.15);
}
.svc-dot.active{
  border-color:rgba(var(--dot-rgb),1);
  background:rgba(var(--dot-rgb),0.22);
  box-shadow:0 0 10px rgba(var(--dot-rgb),0.5);
}
.svc-dot-inner{
  width:7px;height:7px;border-radius:50%;
  background:rgba(var(--dot-rgb),0.5);
  transition:background .15s;
}
.svc-dot.active .svc-dot-inner{
  background:rgba(var(--dot-rgb),1);
  box-shadow:0 0 6px rgba(var(--dot-rgb),0.8);
}
/* nav arrows */
.svc-nav-row{display:flex;align-items:center;gap:14px;margin-bottom:20px;}
.svc-nav-arr{
  font-family:var(--mono);font-size:28px;line-height:1;
  color:var(--accent);background:rgba(78,133,168,0.06);border:1.5px solid var(--accent);
  width:42px;height:42px;border-radius:3px;display:flex;align-items:center;justify-content:center;
  cursor:pointer;transition:color .15s,border-color .15s,background .15s,transform .1s;padding:0;
}
.svc-nav-arr:hover{color:var(--bright);border-color:var(--bright);background:rgba(78,133,168,0.14);transform:scale(1.06);}
.svc-nav-arr:active{transform:scale(0.96);}
.svc-nav-counter{font-family:var(--mono);font-size:12px;color:var(--mid);letter-spacing:.12em;flex:1;text-align:center;}
/* panels */
.svc-right{min-width:0;}
.svc-panel{display:none;animation:fi .18s ease;}
.svc-panel.active{display:block;}
.svc-panel-hd{display:flex;align-items:baseline;gap:12px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--line);}
.svc-hex{font-family:var(--mono);font-size:11px;letter-spacing:.06em;flex-shrink:0;}
.svc-panel-name{font-family:var(--mono);font-size:16px;font-weight:600;color:var(--bright);letter-spacing:.02em;}
.svc-panel p{font-size:15.2px;color:var(--mid);line-height:1.82;margin-bottom:1em;max-width:none;}
.svc-panel p:last-of-type{margin-bottom:0;}
@media(max-width:760px){.svc-wrap{grid-template-columns:1fr;}}