*,*::before,*::after{box-sizing:border-box}a:visited{color:inherit}:root{--bg:#080b10;--bg-card:#111820;--bg-card2:#161f2c;--border:rgba(255,255,255,0.08);--border-h:rgba(0,196,230,0.28);--cyan:#00c4e6;--cyan-dim:#009ab8;--cyan-soft:rgba(0,196,230,0.08);--white:#f0f4f8;--mid:#8a9bb0;--muted:#4a5a6a;--green:#22c55e;--amber:#f59e0b;--radius:12px;--radius-sm:7px}.cpubld-header{position:relative;z-index:1}.cpubld-site-nav{position:sticky;top:0;z-index:200;padding:.75rem 1rem;display:flex;align-items:center;justify-content:center}.cpubld-nav-inner{width:100%;max-width:1100px;background:rgba(10,14,21,.92);backdrop-filter:blur(20px) saturate(1.5);border:1px solid var(--border);border-radius:50px;padding:.45rem .55rem .45rem 1.25rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem}.cpubld-nav-logo{display:flex;align-items:center;gap:.5rem;text-decoration:none;flex-shrink:0}.cpubld-nav-logo-mark{width:30px;height:30px;background:var(--cyan);border-radius:7px;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:12px;color:var(--bg);box-shadow:0 0 10px rgba(0,196,230,.35);flex-shrink:0}.cpubld-nav-logo-name{font-weight:800;font-size:1rem;letter-spacing:.04em;color:var(--white)}.cpubld-nav-logo-name em{font-style:normal;color:var(--cyan)}.cpubld-nav-links{display:none;list-style:none;align-items:center;gap:0;margin:0;padding:0}.cpubld-nav-links a{font-size:.82rem;font-weight:500;color:var(--mid);text-decoration:none;padding:.5rem .85rem;border-radius:50px;transition:color .18s,background .18s;white-space:nowrap}.cpubld-nav-links a:hover{color:var(--white);background:rgba(255,255,255,.05)}.cpubld-nav-links a.active{color:var(--cyan)}.cpubld-nav-right{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.cpubld-btn-account{display:inline-flex;align-items:center;justify-content:center;font-family:"HelveticaNeue","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.82rem;font-weight:700;padding:.55rem 1.1rem;min-height:48px;background:var(--cyan);color:var(--bg);border:none;border-radius:50px;cursor:pointer;text-decoration:none;transition:background .18s,box-shadow .18s;white-space:nowrap}.cpubld-btn-account:hover{background:var(--cyan-dim);box-shadow:0 0 14px rgba(0,196,230,.3)}.cpubld-nav-hamburger{display:flex;align-items:center;justify-content:center;min-height:48px;min-width:48px;background:transparent;border:1px solid var(--border);border-radius:8px;color:var(--white);font-size:1.1rem;cursor:pointer;transition:border-color .18s}.cpubld-nav-hamburger:hover{border-color:var(--cyan);color:var(--cyan)}.cpubld-m-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.72);backdrop-filter:blur(6px);z-index:299}.cpubld-m-overlay.open{display:block}.cpubld-m-drawer{position:fixed;top:0;right:0;bottom:0;width:min(300px,88vw);background:#0c1018;border-left:1px solid var(--border);z-index:300;transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column}.cpubld-m-drawer.open{transform:translateX(0)}.cpubld-m-drawer-head{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--border);flex-shrink:0}.cpubld-m-drawer-close{min-width:48px;min-height:48px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--border);border-radius:7px;color:var(--muted);font-size:1rem;cursor:pointer}.cpubld-m-drawer-body{flex:1;overflow-y:auto;padding:.5rem 0}.cpubld-m-link{display:flex;align-items:center;min-height:52px;font-size:1rem;font-weight:500;color:var(--white);text-decoration:none;padding:0 1.25rem;border-bottom:1px solid rgba(255,255,255,.05);transition:color .14s,background .14s}.cpubld-m-link:hover,.cpubld-m-link.active{color:var(--cyan);background:var(--cyan-soft)}.cpubld-m-label{font-family:"HelveticaNeue","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.6rem;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);padding:.85rem 1.25rem .25rem}.cpubld-m-sub{font-size:.92rem;color:var(--mid);padding-left:2rem;min-height:46px}.cpubld-m-drawer-foot{padding:1rem 1.25rem;border-top:1px solid var(--border);flex-shrink:0}.cpubld-m-cta{display:block;text-align:center;text-decoration:none;min-height:52px;line-height:52px;font-family:"HelveticaNeue","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1rem;font-weight:700;background:var(--cyan);color:var(--bg);border-radius:var(--radius-sm);transition:background .18s}.cpubld-m-cta:hover{background:var(--cyan-dim)}.cpubld-site-ticker{overflow:hidden;white-space:nowrap;background:rgba(0,196,230,.05);border-bottom:1px solid var(--border)}.cpubld-ticker-inner{display:inline-flex;animation:cpubld-tick 35s linear infinite}.cpubld-ticker-item{font-family:"HelveticaNeue","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.72rem;letter-spacing:.1em;color:var(--mid);padding:.5rem 2rem;text-transform:uppercase}.cpubld-ticker-item::before{content:"◆";margin-right:2rem;color:var(--cyan);opacity:.5}@keyframes cpubld-tick{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}@media(min-width:900px){.cpubld-nav-links{display:flex}.cpubld-nav-hamburger{display:none}}
/* Site-wide sticky-header fix: the header's own box is only as tall as
   its content (nav pill + promo ticker), so position:sticky on the nav
   alone had nowhere to "stick" -- once the user scrolled past the
   header's own short height, its containing block had already scrolled
   out of view and took the "stuck" nav with it. Switching the whole
   header to position:fixed pins it to the viewport regardless of the
   surrounding page height (the JS below compensates by pushing the main
   content down by the header's rendered height so nothing is covered). */
.cpubld-header{position:fixed!important;top:0!important;left:0!important;right:0!important;width:100%!important;z-index:200!important}
.cpubld-site-nav{position:relative;top:auto}
/* WP admin-bar fix: the admin toolbar is also fixed to the viewport top
   with a higher z-index (99999), so when an admin is logged in it was
   rendering on top of / covering the first 32-46px of this fixed header.
   Push the header down by the admin bar's height whenever it's present;
   the JS below already re-measures header height for content padding,
   so no other offset needs to change. */
body.admin-bar .cpubld-header{top:32px!important}
@media screen and (max-width:782px){body.admin-bar .cpubld-header{top:46px!important}}
/* Header cart icon (opens WPC Fly Cart). Same 48px touch target + ghost-border language as the hamburger button */
.cpubld-nav-cart{position:relative;display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;flex-shrink:0;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--white);text-decoration:none;cursor:pointer;transition:border-color .18s,color .18s,background .18s}
.cpubld-nav-cart:hover,.cpubld-nav-cart:focus-visible{border-color:var(--border-h);color:var(--cyan);background:var(--cyan-soft);outline:none}
.cpubld-nav-cart:visited{color:var(--white)}
.cpubld-nav-cart-ic{display:block}
.cpubld-cart-count{position:absolute;top:2px;right:0;min-width:19px;height:19px;padding:0 5px;border-radius:50px;background:var(--cyan);color:var(--bg);font-family:"HelveticaNeue","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.62rem;font-weight:800;line-height:19px;text-align:center;box-shadow:0 0 0 2px #0a0e15;transform:scale(1);transition:transform .2s cubic-bezier(.2,.7,.3,1)}
.cpubld-cart-count[data-count="0"]{transform:scale(0)}
@media(max-width:520px){.cpubld-btn-account{padding:.55rem .85rem;font-size:.76rem}.cpubld-nav-right{gap:.35rem}.cpubld-nav-inner{padding-left:.9rem}}
@media(max-width:380px){.cpubld-nav-logo-name{display:none}}