@font-face{font-family:"Chakra Petch";src:url("assets/fonts/ChakraPetch-Medium.ttf") format("truetype");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Chakra Petch";src:url("assets/fonts/ChakraPetch-Bold.ttf") format("truetype");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Chakra Petch";src:url("assets/fonts/ChakraPetch-MediumItalic.ttf") format("truetype");font-weight:500;font-style:italic;font-display:swap}

:root{
    --bg-page:#232527; --bg-panel:#2b2e31; --bg-bar:#1b1d1f; --line:#101112;
    --text:#e6e6e6; --text-dim:#9aa0a4;
    --red:#f44336; --green:#4CAF50; --orange:#FF9800;
    --hi:#4a4e52; --mid:#3a3e42; --lo:#2e3236; --press-hi:#26292c; --press-lo:#3a3e42;
    --radius:6px;
    --shadow-up:inset 0 1px 0 rgba(255,255,255,.1),inset 0 -1px 0 rgba(0,0,0,.35),0 3px 5px rgba(0,0,0,.45),0 1px 2px rgba(0,0,0,.4);
    --shadow-down:inset 0 3px 6px rgba(0,0,0,.55),inset 0 1px 2px rgba(0,0,0,.5),0 1px 1px rgba(0,0,0,.35);
    --edge:80px;

    --fs-sm:1rem;
    --fs-md:1.2rem;
    --fs-lg:1.4rem;
}

*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0;overflow-x:hidden;overflow-x:clip}
[hidden]{display:none!important}
body{font-family:"Chakra Petch",system-ui,"Segoe UI",Roboto,Arial,sans-serif;font-size:var(--fs-md);font-weight:500;background:var(--bg-page);color:var(--text);line-height:1.5;padding-bottom:132px}
html.newsletter-hidden body{padding-bottom:0}
strong,b{font-weight:700}
em{font-style:italic}
.hidden{display:none!important}

.text-sm{font-size:var(--fs-sm)}
.text-md{font-size:var(--fs-md)}
.text-lg{font-size:var(--fs-lg)}

.btn{appearance:none;-webkit-appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:.5em;font:inherit;color:var(--text);text-decoration:none;user-select:none;cursor:pointer;border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(180deg,var(--hi),var(--mid) 48%,var(--lo));box-shadow:var(--shadow-up);transition:background .12s,box-shadow .12s,transform .06s,filter .12s}
.btn:hover{filter:brightness(1.09)}
.btn:focus-visible{outline:2px solid #7db3ff;outline-offset:2px}
.btn:active,.btn.is-active{transform:translateY(2px);filter:none;background:linear-gradient(180deg,var(--press-hi),var(--press-lo));box-shadow:var(--shadow-down)}
.btn:disabled{cursor:not-allowed;color:#83878b;transform:none;filter:grayscale(.4);background:linear-gradient(180deg,#3a3d40,#333639);box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}

.btn-sm{padding:6px 12px;font-size:var(--fs-sm)}
.btn-md{padding:10px 20px;font-size:var(--fs-md)}
.btn-lg{padding:12px 26px;font-size:var(--fs-lg)}

.btn.is-glowing{color:#fff;border-color:#2e7d32;filter:none;background:linear-gradient(180deg,#57b35c,#3f9144);animation:glow 1.6s ease-in-out infinite}
@keyframes glow{
    0%,100%{box-shadow:0 0 10px rgba(76,175,80,.55),inset 0 1px 0 rgba(255,255,255,.25),0 2px 4px rgba(0,0,0,.4)}
    50%   {box-shadow:0 0 20px rgba(76,175,80,.9), inset 0 1px 0 rgba(255,255,255,.25),0 2px 4px rgba(0,0,0,.4)}
}

.btn-logo{height:1em;width:auto;display:block}

header + a {
    display: block;
    width: fit-content;
    max-width: 100%;
    margin: 40px auto 0;
}

header + a img {
    display: block;
    max-width: 100%;
    height: auto;
}

#site-header{position:sticky;top:0;z-index:90;display:flex;justify-content:space-between;align-items:flex-start;padding:12px 18px 14px;background:var(--bg-bar);border-bottom:1px solid var(--line)}
.conn-row{display:flex;align-items:center;gap:14px;padding-top:4px}
.status-label{font-size:var(--fs-md);letter-spacing:.4px;white-space:nowrap}
.status-red{color:var(--red)}
.status-green{color:var(--green)}
.header-right{display:flex;flex-direction:column;align-items:center;gap:2px}

.brand-heading{margin: 0;padding: 0;font-size: inherit;font-weight: inherit;line-height: inherit;display: flex;flex-direction: column;align-items: center;gap: 2px;}

#viya-logo{height:52px;width:auto;display:block}
.brand-sub{color:var(--text-dim);font-size:var(--fs-sm);white-space:nowrap;margin-left:24px}

.header-bottom{position:absolute;left:0;right:0;bottom:0;transform:translateY(50%);z-index:95;display:flex;justify-content:center;pointer-events:none}
#btn-viyaware{pointer-events:auto}
#btn-viyaware:active{transform:translateY(2px)}

#hero{display:grid;grid-template-columns:minmax(0,10fr) minmax(0,11fr);gap:32px;align-items:center;max-width:1600px;margin:0 auto;padding:64px 24px 40px;transition:opacity .25s ease}
#hero.fade-out{opacity:0}

#viewer-container{position:relative;min-width:0;width:100%;height:clamp(420px,calc(100vh - 290px),780px)}
#viewer-container canvas{display:block}
#viewer-loading{position:absolute;top:50%;left:50%;width:64px;height:64px;transform:translate(-50%,-50%);pointer-events:none}
.viewer-error{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:20px;text-align:center;color:var(--text-dim);font-size:var(--fs-md)}

#info-column{display:flex;flex-direction:column;gap:30px;max-width:620px}
.info-block{display:flex;flex-direction:column;align-items:flex-start;gap:12px}
.info-copy{margin:0;font-size:var(--fs-md);line-height:1.65}

.page-view{max-width:1100px;margin:0 auto;padding:64px 24px 40px;opacity:0;transition:opacity .25s ease}
.page-view.visible{opacity:1}
.view-note{color:var(--text-dim);font-size:var(--fs-md)}

.modal-overlay{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.55);opacity:0;visibility:hidden;transition:opacity .2s,visibility 0s .2s}
.modal-overlay.open{opacity:1;visibility:visible;transition:opacity .2s}
.modal-card{width:min(440px,calc(100vw - 32px));padding:22px 24px;background:var(--bg-panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 18px 50px rgba(0,0,0,.55)}
.modal-card h2{margin:0 0 14px;font-size:var(--fs-lg)}
.connect-steps{margin:0 0 18px;padding-left:22px;display:grid;gap:8px}
.step-detail{color:var(--text-dim);font-size:var(--fs-md)}
.modal-status{display:flex;align-items:center;gap:10px;font-size:var(--fs-md)}
.modal-status.searching{color:var(--orange)}
.modal-status.found{color:var(--green)}
.pulse-dot{flex:none;width:10px;height:10px;border-radius:50%;background:currentColor}
.modal-status.searching .pulse-dot{animation:pulse 1.2s ease-out infinite}
@keyframes pulse{
    0%  {box-shadow:0 0 0 0   rgba(255,152,0,.55)}
    70% {box-shadow:0 0 0 9px rgba(255,152,0,0)}
    100%{box-shadow:0 0 0 0   rgba(255,152,0,0)}
}
.modal-actions{display:flex;gap:12px;margin-top:18px}

#newsletter-footer{position:fixed;left:0;right:0;bottom:0;z-index:80;background:var(--bg-bar);border-top:1px solid var(--line);transform:translateY(0);transition:transform .35s ease;will-change:transform}
html.newsletter-hidden #newsletter-footer{transform:translateY(102%)}
.footer-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px 16px;max-width:1400px;margin:0 auto;padding:14px 24px 16px}
#newsletter-blurb{flex-basis:100%;margin:0;text-align:center;font-size:var(--fs-md)}
#newsletter-form{display:flex;align-items:center;gap:12px}
#newsletter-form label{color:var(--text-dim);white-space:nowrap;font-size:var(--fs-md)}
#newsletter-email{width:min(340px,42vw);padding:9px 12px;font:inherit;font-size:var(--fs-md);color:var(--text);background:#141516;border:1px solid var(--line);border-radius:var(--radius)}
#newsletter-email:focus{outline:1px solid #666}
.footer-buttons{display:flex;gap:10px}
#btn-hide-newsletter{position:absolute;top:8px;right:var(--edge)}
.newsletter-message{flex-basis:100%;margin:0;text-align:center;font-size:var(--fs-md)}
.newsletter-message:empty{display:none}
.newsletter-message.ok{color:var(--green)}
.newsletter-message.err{color:var(--red)}

#newsletter-show-tab{position:fixed;right:var(--edge);bottom:0;z-index:79;border-bottom-left-radius:0;border-bottom-right-radius:0;transform:translateY(110%);visibility:hidden;transition:transform .35s,visibility 0s .35s}
html.newsletter-hidden #newsletter-show-tab{transform:translateY(0);visibility:visible;transition:transform .35s}

.scroll-strip{position:fixed;top:0;bottom:0;width:40px;z-index:60;touch-action:pan-y;display:none;background:transparent}
.scroll-strip.left{left:0}
.scroll-strip.right{right:0}

@media (max-width:1023.98px),(orientation:portrait){
    .scroll-strip{display:block}

    #site-header{display:grid;grid-template-columns:minmax(0,1fr);grid-template-areas:"logo" "conn" "toggle";gap:12px;justify-items:center;padding:12px 48px 14px;text-align:center}
    .header-right{grid-area:logo;order:0;align-items:center;text-align:center}
    .header-left{grid-area:conn;order:0;width:100%}
    .header-bottom{grid-area:toggle;position:static;transform:none;display:block;pointer-events:auto;text-align:center}
    #site-header .btn-lg{padding:10px 18px;font-size:var(--fs-md);white-space:nowrap}
    .conn-row{flex-direction:row;flex-wrap:wrap;gap:8px 10px;padding-top:0;align-items:center;justify-content:center}
    .status-label{white-space:normal;text-align:center}
    .brand-sub{margin-left:0}

    #hero{grid-template-columns:1fr;gap:22px;padding:16px 16px 28px;display:flex;flex-direction:column;}
    #viewer-container{height:min(52vh,460px)}
    #info-column{max-width:620px;margin:0 auto}
    .info-block{align-items:center;text-align:center}

    .footer-inner{flex-direction:column;padding:12px 14px 14px}
    #newsletter-form{flex-direction:column;align-items:center;width:100%;max-width:420px}
    #newsletter-email{width:100%}
    .footer-buttons{justify-content:center}
    #btn-hide-newsletter{position:static}

    body{padding-bottom:250px}
    html.newsletter-hidden body{padding-bottom:0}
}

#view-viyaware.page-view{max-width:1400px}
.vwe-root{position:relative;display:flex;flex-direction:column;gap:80px;max-width:1200px;margin:0 auto;width:100%}
.vwe-back{position:sticky;top:12px;z-index:20;align-self:flex-start}
.vwe-top,.vwe-bottom{display:grid;grid-template-columns:minmax(0,019fr) minmax(0,012fr);gap:32px;align-items:start}
.vwe-gallery-col{display:flex;flex-direction:column;gap:12px;min-width:0}
.vwe-slideshow{position:relative;overflow:hidden;aspect-ratio:4/3;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.vwe-slides{position:absolute;inset:0}
.vwe-slide{position:absolute;inset:0;width:100%;height:100%;object-fit:scale-down;opacity:0;transition:opacity .6s ease;pointer-events:none}
.vwe-slide.is-active{opacity:1}
.vwe-zone{position:absolute;top:0;bottom:0;width:50%;background:none;border:0;cursor:pointer;padding:0}
.vwe-zone-prev{left:0}
.vwe-zone-next{right:0}
.vwe-zone:focus-visible{outline:2px solid #7db3ff;outline-offset:-2px}
.vwe-dots{position:absolute;left:0;right:0;bottom:10px;display:flex;justify-content:center;gap:8px}
.vwe-dot{width:8px;height:8px;border-radius:50%;border:1px solid var(--line);background:rgba(0,0,0,.35);cursor:pointer;padding:0}
.vwe-dot.is-active{background:#fff}
.vwe-caption{margin:0;text-align:center;color:var(--text-dim);font-size:var(--fs-md);line-height:1.5;height:4.8em;overflow:hidden}
.vwe-overview-col{display:flex;flex-direction:column;gap:18px;min-width:0}
.vwe-overview-col p{margin:0;font-size:var(--fs-md);line-height:1.6}
.vwe-cap-col{display:flex;flex-direction:column;gap:12px;min-width:0}
.vwe-cap-col h3,.vwe-lib-col h3{margin:0;font-size:var(--fs-lg)}
.vwe-cap-col p{margin:0;font-size:var(--fs-md);line-height:1.6;color:var(--text)}
.vwe-lib-col{display:flex;flex-direction:column;gap:10px;min-width:0}
.vwe-lib-sub{margin:0;color:var(--text-dim);font-size:var(--fs-md)}
.vwe-lib{display:flex;flex-direction:column;gap:10px}
.vwe-cat{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--bg-panel)}
.vwe-cat-head{width:100%;justify-content:flex-start;gap:10px}
.vwe-cat-dot{flex:none;width:12px;height:12px;border-radius:50%;border:1px solid #000}
.vwe-chev{margin-left:auto;color:var(--text-dim)}
.vwe-cat-body{display:flex;flex-direction:column;gap:8px;padding:10px;background:var(--bg-panel)}
.vwe-cat-body[hidden]{display:none}
.vwe-node{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.vwe-node-head{width:100%;justify-content:space-between;gap:10px;text-align:left}
.vwe-node-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vwe-inspector{padding:12px 14px;display:flex;flex-direction:column;gap:10px;background:var(--bg-page);border-top:1px solid var(--line)}
.vwe-inspector[hidden]{display:none}
.vwe-insp-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.vwe-insp-head h4{margin:0;font-size:var(--fs-md)}
.vwe-tag{padding:2px 10px;border-radius:20px;font-size:var(--fs-sm);border:1px solid var(--line)}
.vwe-blurb{margin:0;color:var(--text-dim);font-size:var(--fs-md)}
.vwe-ports{display:flex;flex-direction:column;gap:4px}
.vwe-port{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm)}
.vwe-sock{flex:none;width:11px;height:11px;border-radius:50%;border:1px solid #000}
.vwe-params-title{margin:4px 0 0;color:var(--text-dim);font-size:var(--fs-sm)}
.vwe-params{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}
.vwe-params li{display:flex;flex-direction:column;gap:2px;background:var(--bg-panel);border:1px solid var(--line);border-radius:4px;padding:6px 10px}
.vwe-param-name{font-size:var(--fs-sm)}
.vwe-param-val{color:var(--text-dim);font-size:var(--fs-sm)}
.vwe-empty{color:var(--text-dim);font-size:var(--fs-sm)}

@media (max-width:1023.98px),(orientation:portrait){
    .vwe-back{top:8px}

    .vwe-root{padding:0 20px;gap:30px}
    .vwe-top,.vwe-bottom{display:contents}
    .vwe-overview-col{order:1}
    .vwe-gallery-col{order:2}
    .vwe-cap-col{order:3}
    .vwe-lib-col{order:4}
    .vwe-caption{height:6.4em}
}

@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

@media (max-width:659.98px),(max-width:1023.98px) and (max-height:500px) and (orientation:landscape){
    :root{--fs-sm:.7rem;--fs-md:.84rem;--fs-lg:1rem;--edge:48px}
    .btn-sm{padding:4px 8px}
    .btn-md{padding:7px 14px}
    .btn-lg{padding:8px 18px}
    #site-header{grid-template-columns:auto auto minmax(0,1fr);grid-template-areas:"left status logo" "toggle toggle toggle";gap:6px 5px;align-items:center;padding:10px 14px 10px;text-align:left}
    .header-left{display:contents}
    .conn-row{display:contents}
    #site-header #btn-connect{grid-area:left;justify-self:start;padding:6px 6px;font-size:var(--fs-sm)}
    #site-header #btn-connect .btn-logo{height:.8em}
    .status-label{grid-area:status;font-size:var(--fs-sm);line-height:1.3;white-space:normal;text-align:left;min-width:0}
    #conn-status-text{display:block;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .header-right{grid-area:logo;align-items:center;text-align:center;min-width:0;justify-self:right}
    #viya-logo{height:26px}
    .brand-sub{font-size:.5rem;overflow:hidden;text-overflow:ellipsis;max-width:100%;margin-left:7px}
    .header-bottom{grid-area:toggle;text-align:center}
    #site-header #btn-viyaware{padding:6px 6px;font-size:var(--fs-sm)}
    #hero{gap:16px;padding:12px 16px 20px}
    #info-column{gap:20px}
    .info-block{gap:8px}
    .page-view{padding:32px 16px 24px}
    .modal-card{padding:16px 18px}
    .modal-card h2{margin:0 0 10px}
    .connect-steps{margin:0 0 12px}
    .modal-actions{margin-top:12px}
    .footer-inner{gap:8px 12px;padding:10px 14px 12px}
    #newsletter-form{gap:8px}
    #newsletter-email{padding:7px 10px}
    body{padding-bottom:210px}
    .vwe-root{gap:20px}
    .vwe-overview-col{gap:12px}
    .vwe-cap-col{gap:8px}
    .vwe-lib-col{gap:8px}
    .vwe-inspector{padding:8px 10px}
}
