/* Progressive enhancement: readable HTML is the default. */
:root { --sub:#626e7c; --preview-height:44px; --header-height:64px; }
html[data-site-mode="production"] { --preview-height:0px; }
html { scroll-padding-top:calc(var(--header-height) + var(--preview-height) + 24px); }
[hidden] { display:none!important; }
body { overflow-wrap:break-word; overflow-x:clip; }
.sr-only { position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0; }
:focus-visible { outline:3px solid #126bcc;outline-offset:5px;border-radius:4px; }
.tech :focus-visible { outline-color:#91cdff; }
.skip:focus { position:fixed;left:16px;top:8px;padding:14px 20px;border-radius:12px;background:#151a24;color:#fff;z-index:1000; }
#main:focus { outline:none; }
.preview-notice { position:fixed;top:0;left:0;right:0;height:var(--preview-height);display:flex;align-items:center;justify-content:center;gap:14px;background:#edf4fe;color:#324962;font-size:12px;z-index:110; }
.preview-notice b { font:600 10px var(--mono);letter-spacing:.12em;color:#1769c4; }
.preview-notice { padding:0 16px;gap:12px; }
.hdr { top:var(--preview-height); }
.hdr .wrap { gap:16px; }
.hdr .logo { height:50px; }
.hdr nav a { white-space:nowrap; }
.menu-toggle { width:44px;min-width:44px;height:44px;padding:9px;align-items:center;justify-content:center;display:none;color:#333840;border-radius:10px; }
.menu-toggle span { position:relative;display:block;width:26px;height:26px;background:linear-gradient(currentColor,currentColor) center/22px 2px no-repeat; }
.menu-toggle span::before,.menu-toggle span::after { content:"";position:absolute;left:2px;top:5px;width:22px;height:2px;background:currentColor;transition:transform .2s,top .2s; }
.menu-toggle span::after { top:19px; }
.menu-toggle[aria-expanded="true"] span { background:none; }
.menu-toggle[aria-expanded="true"] span::before { top:12px;transform:rotate(45deg); }
.menu-toggle[aria-expanded="true"] span::after { top:12px;transform:rotate(-45deg); }
.hero-t { padding:0 24px; }
.hero-actions { display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:32px;pointer-events:auto; }
.hero-actions .btn { font-size:15px;height:50px; }
.hero-pin { padding-top:calc(var(--header-height) + var(--preview-height)); }
.hero-t .t1 .ln>span { transform:none; }
.hero-t .kick,.hero-t .sub { opacity:1; }
.motion .hero-t .t1 .ln>span { transform:translateY(110%);animation:up 1.1s var(--ease) both; }
.hero-name { padding:0 20px; }
.eq { flex-wrap:wrap; }
.timeline-wrap { position:relative; }
.tl { margin-top:0; }
.timeline-wrap { margin-top:64px; }
.app-screen-note { font-size:11px;color:var(--sub);line-height:1.6;text-align:center; }
.stores { display:flex;gap:10px;flex-wrap:wrap; }
.stores a { display:inline-flex;align-items:center;justify-content:center;background:var(--ink);color:#fff;min-height:46px;padding:0 20px;border-radius:12px;font-size:14px;font-weight:700; }
.stores a:hover { background:#000; }
.motion .bi.dim { opacity:.58; }
.rail-controls { display:flex;justify-content:flex-end;gap:8px;max-width:1180px;margin:20px auto 0;padding:0 28px; }
.rail-controls button { width:44px;height:44px;border:1px solid var(--line);border-radius:50%;font-size:20px;background:#fff;color:var(--ink); }
.rail-controls button:disabled { opacity:.35;cursor:default; }
.tech .rail-controls { padding:0; }
.tech .rail-controls button { background:transparent;border-color:#607287;color:#fff; }
.prog-row,.mrow { overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;overscroll-behavior-x:contain;scrollbar-width:thin;transform:none;will-change:auto;padding-bottom:20px; }
.prog-row { padding-top:8px;margin-top:24px; }
.mrow { padding-right:max(28px,calc(50% - 562px));margin-top:24px; }
.pg,.mcard { scroll-snap-align:start; }
.certificate-link { display:block;cursor:zoom-in; }
.certificate-link img { transition:filter .2s; }
.certificate-link:hover img { filter:brightness(1.06); }
.certificate-dialog { border:0;border-radius:18px;padding:20px;max-width:min(900px,94vw);max-height:94svh;margin:auto;color:var(--ink);background:#fff; }
.certificate-dialog::backdrop { background:#061324c9; }
.dialog-toolbar { display:flex;gap:20px;align-items:center;justify-content:space-between;margin-bottom:16px; }
.dialog-toolbar h2 { font-size:15px;line-height:1.5; }
.dialog-toolbar button { min-width:72px;min-height:44px;background:var(--gray);border-radius:10px; }
.certificate-dialog>img { width:auto;height:auto;max-height:76svh;max-width:100%;object-fit:contain;margin:auto; }
.band-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
.bd-i { min-width:0; }
.bd-i .v { font-size:clamp(28px,3.7vw,48px);white-space:nowrap; }
.metric-note { font-size:12px;line-height:1.65;color:var(--sub);margin-top:32px; }
.back-top { position:fixed;bottom:24px;right:24px;width:44px;height:44px;display:grid;place-items:center;z-index:50;background:#fff;border:1px solid var(--line);border-radius:50%;box-shadow:0 4px 18px #16244012;font-size:22px; }
.app-in-view .back-top { visibility:hidden;pointer-events:none; }
.motion .rv.in { animation:section-enter .85s var(--ease) backwards; }
.motion #patImg.rv.in { animation:certificate-enter .85s var(--ease) both; }
@keyframes section-enter { from { opacity:0;transform:translateY(32px); } to { opacity:1;transform:none; } }
@keyframes certificate-enter { from { opacity:0; } to { opacity:1; } }
/* An unenhanced or reduced-motion page never requires scroll to reveal its content. */
html:not(.hero-pinned) .hero,html:not(.statement-pinned) .state { height:auto!important; }
html:not(.hero-pinned) .hero-pin { position:relative;height:auto;min-height:calc(100svh - var(--preview-height));display:flex;flex-direction:column;justify-content:center;padding:180px 0 80px;gap:44px; }
html:not(.hero-pinned) .sym { opacity:.1;width:320px; }
html:not(.hero-pinned) .hero-name { position:relative;bottom:auto; }
html:not(.hero-pinned) .eq span,html:not(.hero-pinned) .eq-cap { opacity:1;transform:none; }
html:not(.hero-pinned) .scroll-cue { display:none; }
html:not(.statement-pinned) .state-pin { position:static;height:auto;padding:100px 0; }
html:not(.motion) .state .w { opacity:1; }
html:not(.motion) .state .w.hl { color:var(--blue); }
html:not(.motion) .bi.dim { opacity:1; }
html:not(.motion) .ti .y { color:var(--ink); }
html:not(.motion) .ti.now .y { color:var(--orange); }
html:not(.motion) .tl-line i { transform:scaleY(1); }
html:not(.motion) *,html:not(.motion) *::before,html:not(.motion) *::after { animation:none!important;transition:none!important; }
@media(min-width:1101px) { .menu-toggle { display:none!important; } }
@media(max-width:1100px) {
  :root { --header-height:56px; }
  .hdr .wrap { height:var(--header-height);padding:0 12px 0 20px;flex-wrap:wrap;gap:8px 12px; }
  .hdr .logo { height:32px; }
  .menu-toggle { display:inline-flex;margin-left:auto; }
  .hdr nav { width:100%;order:4;background:#fff;flex-wrap:wrap;padding:16px 0 20px;gap:8px;max-height:calc(100svh - 100px);overflow-y:auto; }
  .enhanced .hdr nav { display:none; }
  html.menu-open,html.menu-open body { overflow:hidden;overscroll-behavior:none; }
  .enhanced .hdr .wrap { flex-wrap:nowrap; }
  .menu-open .hdr { background:#fff; }
  .enhanced .hdr nav.is-open {
    display:flex;position:absolute;inset:100% 0 auto;width:100%;
    height:calc(100vh - var(--preview-height) - var(--header-height));
    height:calc(100dvh - var(--preview-height) - var(--header-height));
    max-height:none;box-sizing:border-box;padding:16px 20px max(32px,env(safe-area-inset-bottom));
    background:#fff;border-top:0;align-content:flex-start;flex-direction:column;flex-wrap:nowrap;gap:4px;
    overflow-y:auto;overscroll-behavior:contain;
  }
  .enhanced .hdr nav.is-open a { flex:0 0 auto;position:relative;width:100%;min-width:0;min-height:56px;display:flex;align-items:center;padding:11px 16px;font-size:20px;line-height:1.5;font-weight:600;color:#333840;border-radius:12px; }
  .enhanced .hdr nav.is-open a[aria-current="page"] { background:#edf4fe;color:#1769c4; }
  .enhanced .hdr nav.is-open a::after { content:"";width:7px;height:7px;border-right:1.5px solid #aeb7c2;border-top:1.5px solid #aeb7c2;transform:rotate(45deg);margin-left:auto; }
  .enhanced .hdr nav.is-open a[aria-current="page"]::after { border-color:#1769c4; }
  .enhanced .hdr nav.is-open a:nth-child(4) { margin-bottom:12px; }
  .enhanced .hdr nav.is-open a:nth-child(4)::before { content:"";position:absolute;left:16px;right:16px;bottom:-8px;border-bottom:1px solid #edf0f4; }
  .hdr nav a { padding:12px 18px;min-width:calc(50% - 8px);min-height:44px;font-weight:600; }
  html:not(.enhanced) .hdr { position:relative;top:var(--preview-height);margin-bottom:var(--preview-height); }
  html:not(.enhanced) .hdr .wrap { height:auto;padding-top:12px; }
  html:not(.enhanced) .hdr nav { display:flex; }
  html:not(.enhanced) .hero-pin { padding-top:80px;min-height:0; }
}
@media(max-width:1000px),(max-height:819px) {
  .hero-t .t1 { font-size:clamp(38px,6.8vw,68px);line-height:1.25; }
  .hero-t .kick { font-size:14px; }
  .hero-t .sub { font-size:17px; }
  .hero-name .eq { font-size:clamp(23px,4vw,36px);gap:10px; }
}
@media(max-width:800px) {
  .band-grid { grid-template-columns:1fr 1fr;gap:32px 0; }
  .bd-i .v { font-size:clamp(22px,4.5vw,36px); }
  .bd-i+.bd-i { padding-left:18px; }
  .bd-i:nth-child(3) { padding-left:0; }
  .bd-i .l { font-size:13px;line-height:1.5; }
}
@media(max-width:760px) {
  .wrap { padding-left:22px;padding-right:22px; }
  .preview-notice { gap:8px;font-size:11px; }
  .preview-notice b { display:none; }
  .preview-context { display:inline; }
  .hero-t .t1 { font-size:clamp(31px,7.6vw,52px); }
  .hero-t { padding:0 18px; }
  html:not(.hero-pinned) .hero-pin { padding:158px 0 60px;gap:48px;min-height:760px; }
  .hero-name .eq { gap:8px;font-size:25px;max-width:330px;margin:auto; }
  .eq .res { flex-basis:100%; }
  .eq-cap { font-size:14px;max-width:290px;margin:16px auto 0;line-height:1.6; }
  .hero-actions .btn { padding:0 18px;font-size:14px; }
  .values,.biz,.tech,.hist,.svc,.awards,.news,.contact,.band { padding:80px 0; }
  .state p { font-size:clamp(28px,5.8vw,40px);line-height:1.55; }
  .vgrid,.svc-grid,.nl { margin-top:36px; }
  .mgal { padding:24px 0 80px; }
  .mrow { padding-left:22px;padding-right:22px; }
  .mcard { width:190px; }
  .pat-dl { grid-template-columns:1fr; }
  .pat-dl dd { overflow-wrap:anywhere; }
  .progs { margin-top:70px; }
  .pg { flex-basis:260px; }
  .aw-stack { height:clamp(320px,82vw,520px); }
  .aw-grid { gap:36px; }
  .nl { padding:8px 22px; }
  .nl li a { gap:12px; }
  .nl .ar { display:none; }
  .sv { min-height:290px; }
  .sv .since { position:static;align-self:flex-end;margin-bottom:8px; }
  .back-top { right:14px;bottom:14px; }
  footer .fl a { padding:8px 0; }
}
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto!important; } html *,html *::before,html *::after { animation:none!important;transition:none!important; } }

/* Motion and pinning are independent: a 1280 x 720 notebook retains every scene. */
.rail-auto { scroll-snap-type:none;scroll-behavior:auto; }
.motion .pat-img { will-change:transform; }
.patent { grid-template-columns:minmax(220px,300px) minmax(0,1fr);gap:64px; }
.pat-img { width:min(260px,100%);max-height:370px;justify-self:center;border-radius:14px; }
.pat-img img { width:100%;height:auto;max-height:370px;object-fit:contain; }
.motion .aw-stack figure { transition:none;will-change:transform; }
.motion .contact .bigsym { will-change:transform; }
.business-wide .biz-list.ready .bi { min-height:44vh; }
.hero-pinned .hero-pin { height:100svh; }
.statement-pinned .state-pin { height:100svh;padding-top:calc(var(--header-height) + var(--preview-height)); }

@media(max-width:900px) {
  .patent { grid-template-columns:1fr;gap:44px; }
  .pat-img { width:220px;max-height:313px; }
  .pat-img img { max-height:313px; }
}
@media(max-width:760px) {
  .hero-pinned .hero { height:240svh; }
  .hero-pinned .sym { width:min(36svh,300px); }
  .hero-pinned .hero-name { bottom:8svh; }
  .hero-pinned .hero-t { padding-bottom:30px; }
  .hero-pinned .scroll-cue { bottom:24px; }
}

/* Original certificates retain their ratio; a fan is bounded by its own stage. */
#awStack { width:100%;max-width:460px;height:360px;justify-self:center; }
#awStack figure { top:24px;left:50%;width:44%;max-width:200px;aspect-ratio:1024 / 1447;border-radius:10px;transform:translateX(-50%); }
#awStack .certificate-link { aspect-ratio:1024 / 1447; }
#awStack figure img { display:block;width:100%;height:auto;aspect-ratio:1024 / 1447;object-fit:contain; }
#awStack figure:nth-child(1) { left:28%;transform:translate(-50%,16px) rotate(-9deg);z-index:1; }
#awStack figure:nth-child(2) { left:50%;transform:translateX(-50%);z-index:2; }
#awStack figure:nth-child(3) { left:72%;transform:translate(-50%,16px) rotate(9deg);z-index:3; }
.motion #awStack figure { left:50%; }
#awStack figure:focus-within { z-index:5; }
@media(max-width:760px) { #awStack { max-width:400px;height:310px; } }

/* Retain the latest branch's bounded decorations and interaction feedback. */
html:not(.app-pinned) .phone-glow { inset:10% 0; }
.motion .vgrid>*,.motion .btn,.motion .sv { transition:transform .25s var(--ease),box-shadow .25s var(--ease);transition-delay:0s; }
@media(hover:hover) {
  .motion .vgrid>*:hover,.motion .btn:hover,.motion .sv:hover { transform:translateY(-3px);box-shadow:0 16px 32px -24px #16244060; }
}
.motion .btn:focus-visible,.motion .sv:focus-visible { transform:translateY(-3px); }

/* Keep native horizontal movement without exposing OS scrollbar tracks. */
#mRow,#progRow { scrollbar-width:none;-ms-overflow-style:none; }
#mRow::-webkit-scrollbar,#progRow::-webkit-scrollbar { display:none;width:0;height:0; }
#primary-nav a[aria-current="page"] { background:var(--blue-soft);color:#155fac;font-weight:700; }

@media(max-width:1100px) {
  .motion .hdr nav.is-open { animation:mobile-menu-in .24s ease-out both; }
  .enhanced .hdr nav.is-open a:hover { background:#f5f8fc;color:#1769c4; }
}
@keyframes mobile-menu-in { from { opacity:0; } to { opacity:1; } }
