/* =========================================================
   BigBags — global tokens
   ========================================================= */
:root{
  --black:#000;
  --ink:#0b0b0c;
  --white:#fff;

  --blue:#1a73e8;
  --blue-hi:#3f92ff;
  --blue-deep:#0b57d0;
  --rule-blue:#2a49c9;

  --paper:#f6f7f9;
  --paper-2:#eceef1;
  --line:#d7dbe0;

  --qnx:#f04537;

  --shell:1560px;
  --pad:44px;

  --hdr-ease:cubic-bezier(.22,.61,.36,1);
  --font:"Figtree","Google Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}

*,*::before,*::after{box-sizing:border-box;}

html{scroll-behavior:smooth;}

body{
  margin:0;
  font-family:var(--font);
  color:var(--ink);
  background:var(--white);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;}

svg{width:100%;height:100%;display:block;}
/* default stroke-icon styling; shapes that need fill opt out via [fill] */
.icon-btn svg,.announce svg,.lang__btn svg,.search__icon,.search__close svg,
.nav-arrow svg,.totop svg,.btn svg,.scroller svg{
  fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;
}
.playpause svg{fill:currentColor;stroke:none;}

.shell{
  width:100%;
  max-width:var(--shell);
  margin-inline:auto;
  padding-inline:var(--pad);
}

.skip-link{
  position:absolute;left:-9999px;top:0;z-index:999;
  background:var(--blue);color:#fff;padding:12px 20px;border-radius:0 0 8px 0;font-weight:600;
}
.skip-link:focus{left:0;}

:focus-visible{outline:3px solid var(--blue-hi);outline-offset:3px;border-radius:4px;}

/* =========================================================
   Announcement bar
   ========================================================= */
.announce{
  position:relative;
  background:var(--blue);
  color:#fff;
  display:flex;align-items:center;justify-content:center;
  min-height:66px;
  padding:10px 72px;
}
.announce[hidden]{display:none;}

.announce__link{
  display:inline-flex;align-items:center;gap:14px;
  font-size:19px;font-weight:600;letter-spacing:.1px;text-align:center;
}
.announce__link:hover .announce__text{text-decoration:underline;text-underline-offset:4px;}
.announce__text strong{font-weight:700;}
.announce .dot{opacity:.85;padding-inline:3px;}
.announce__chev{width:20px;height:20px;flex:none;transition:transform .25s var(--hdr-ease);}
.announce__link:hover .announce__chev{transform:translateX(4px);}

.announce__close{
  position:absolute;right:26px;top:50%;transform:translateY(-50%);
  width:34px;height:34px;color:#fff;border-radius:50%;
  display:grid;place-items:center;transition:background .2s;
}
.announce__close svg{width:22px;height:22px;}
.announce__close:hover{background:rgba(255,255,255,.18);}

/* =========================================================
   Header
   ========================================================= */
.site-header{
  position:sticky;top:0;z-index:120;
  background:var(--black);
  transition:box-shadow .3s var(--hdr-ease);
}
.site-header.is-stuck{box-shadow:0 10px 30px rgba(0,0,0,.45);}

/* utility row — holds the primary CTA, so it stays put on scroll and just compacts */
.utility{border-bottom:1px solid var(--rule-blue);}
.utility__inner{
  display:flex;justify-content:flex-end;align-items:center;gap:12px;
  padding-block:11px;
  transition:padding .3s var(--hdr-ease);
}
.site-header.is-stuck .utility__inner{padding-block:7px;}

.ubtn{
  display:inline-flex;align-items:center;gap:8px;
  height:36px;padding:0 16px;border-radius:999px;
  font-size:15px;font-weight:700;letter-spacing:.1px;white-space:nowrap;
  transition:background .2s,color .2s,border-color .2s,transform .2s var(--hdr-ease);
}
.ubtn svg{width:16px;height:16px;flex:none;}

/* Copy CA */
.ubtn--copy{border:1px solid #34363c;color:#fff;background:transparent;}
.ubtn--copy svg{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.ubtn--copy:hover{border-color:var(--blue-hi);color:var(--blue-hi);}
.ubtn--copy .ico-check{display:none;}
.ubtn--copy.is-copied{border-color:#2ea36a;color:#43d68d;}
.ubtn--copy.is-copied .ico-copy{display:none;}
.ubtn--copy.is-copied .ico-check{display:block;}

/* X */
.ubtn--x{
  width:36px;padding:0;justify-content:center;
  border:1px solid #34363c;color:#fff;
}
.ubtn--x svg{fill:currentColor;stroke:none;width:14px;height:14px;}
.ubtn--x:hover{background:#fff;color:#000;border-color:#fff;}

/* masthead */
.masthead{position:relative;}
.masthead__inner{
  display:flex;align-items:center;justify-content:space-between;gap:24px;
  padding-block:24px;
}
.brand img{height:29px;width:auto;}

.masthead__right{display:flex;align-items:center;gap:30px;}
.masthead__link{color:#fff;font-size:17px;font-weight:600;white-space:nowrap;}
.masthead__link:hover{color:var(--blue-hi);}

.icon-btn{
  color:#fff;width:34px;height:34px;border-radius:50%;
  display:grid;place-items:center;transition:background .2s,color .2s;
}
.icon-btn svg{width:23px;height:23px;}
.icon-btn:hover{background:rgba(255,255,255,.12);}

/* language */
.lang{position:relative;}
.lang__btn{
  color:#fff;font-size:17px;font-weight:600;
  display:inline-flex;align-items:center;gap:7px;padding:6px 4px;
}
.lang__btn svg{width:17px;height:17px;transition:transform .25s var(--hdr-ease);}
.lang.is-open .lang__btn svg{transform:rotate(180deg);}
.lang__btn:hover{color:var(--blue-hi);}

.lang__menu{
  position:absolute;top:calc(100% + 14px);right:0;
  min-width:180px;margin:0;padding:8px 0;list-style:none;
  background:#111214;border:1px solid #2a2c31;border-radius:10px;
  box-shadow:0 20px 44px rgba(0,0,0,.55);
  opacity:0;visibility:hidden;transform:translateY(-8px);
  transition:opacity .2s,transform .2s var(--hdr-ease),visibility .2s;
}
.lang.is-open .lang__menu{opacity:1;visibility:visible;transform:none;}
.lang__menu a{display:block;padding:11px 20px;color:#e9ecef;font-size:16px;}
.lang__menu a:hover{background:#1d1f24;color:var(--blue-hi);}

/* burger (mobile) */
.burger{display:none;width:34px;height:30px;position:relative;}
.burger span{
  position:absolute;left:2px;right:2px;height:2.5px;background:#fff;border-radius:2px;
  transition:transform .3s var(--hdr-ease),opacity .2s;
}
.burger span:nth-child(1){top:6px;}
.burger span:nth-child(2){top:14px;}
.burger span:nth-child(3){top:22px;}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(8px) rotate(45deg);}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0;}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-8px) rotate(-45deg);}

/* search drawer */
.search{border-top:1px solid #1e1f24;background:#0a0a0b;}
.search__inner{display:flex;align-items:center;gap:16px;padding-block:20px;color:#fff;}
.search__icon{width:24px;height:24px;flex:none;opacity:.7;}
.search input{
  flex:1;background:transparent;border:0;color:#fff;
  font:500 22px/1.3 var(--font);padding:6px 0;
}
.search input::placeholder{color:#7b7f87;}
.search input:focus{outline:none;}
.search__close{width:34px;height:34px;color:#fff;border-radius:50%;display:grid;place-items:center;}
.search__close svg{width:22px;height:22px;}
.search__close:hover{background:rgba(255,255,255,.12);}

/* primary nav */
.mainnav{background:var(--black);}
.mainnav__inner{display:flex;flex-wrap:wrap;gap:40px;padding-bottom:26px;}
.mainnav a{
  position:relative;color:#fff;font-size:18px;font-weight:700;letter-spacing:.1px;padding-bottom:4px;
}
.mainnav a::after{
  content:"";position:absolute;left:0;right:0;bottom:-2px;height:2.5px;
  background:var(--blue-hi);transform:scaleX(0);transform-origin:left;
  transition:transform .28s var(--hdr-ease);
}
.mainnav a:hover::after{transform:scaleX(1);}

/* =========================================================
   Hero
   ========================================================= */
.hero{
  position:relative;
  min-height:calc(100vh - 96px);
  display:flex;align-items:center;justify-content:center;
  background:#070d0e;
  overflow:hidden;
  isolation:isolate;
}
.hero__art{position:absolute;inset:0;z-index:-1;}
.hero__art img{
  width:100%;height:100%;
  object-fit:cover;object-position:50% 42%;
}
.hero__scrim{
  position:absolute;inset:0;
  background:
    radial-gradient(ellipse 70% 60% at 50% 45%, rgba(0,0,0,.30) 0%, rgba(0,0,0,.62) 100%),
    linear-gradient(180deg, rgba(0,0,0,.55) 0%, rgba(0,0,0,.20) 32%, rgba(0,0,0,.72) 100%);
}

.hero__inner{padding-block:120px;}
.hero__title{
  margin:0 auto;
  max-width:20ch;
  text-align:center;
  color:#fff;
  font-size:clamp(34px,5.2vw,74px);
  line-height:1.14;
  font-weight:400;
  letter-spacing:-.5px;
  text-wrap:balance;
  text-shadow:0 2px 30px rgba(0,0,0,.5);
}

.scroller{
  position:absolute;left:50%;bottom:34px;transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:6px;
  color:#fff;opacity:.9;
}
.scroller__dots{display:flex;flex-direction:column;gap:4px;}
.scroller__dots i{width:3px;height:3px;border-radius:50%;background:#fff;}
.scroller svg{width:18px;height:18px;animation:bob 2s ease-in-out infinite;}
@keyframes bob{0%,100%{transform:translateY(0);}50%{transform:translateY(6px);}}
.scroller:hover{opacity:1;}

/* =========================================================
   Carousel
   ========================================================= */
.showcase{background:var(--paper);padding:56px 0 44px;}

.carousel{
  position:relative;
  width:min(1400px,88%);
  margin-inline:auto;
  border-radius:16px;
  overflow:hidden;
  background:#0b0b0c;
  box-shadow:0 24px 60px rgba(10,20,40,.16);
}

.track{display:flex;transition:transform .7s var(--hdr-ease);will-change:transform;}
.track.no-anim{transition:none;}

.slide{
  position:relative;flex:0 0 100%;
  aspect-ratio:16/9.6;
  min-height:440px;
  display:flex;align-items:center;
  overflow:hidden;
}
.slide__art{position:absolute;inset:0;}
.slide__art img{width:100%;height:100%;object-fit:cover;}

/* gradient that lets each panel sit on the photo without a hard edge */
.slide__scrim{position:absolute;inset:0;}
.slide__scrim--dark{
  background:linear-gradient(90deg,
    rgba(2,8,20,.86) 0%, rgba(2,8,20,.62) 38%, rgba(2,8,20,.16) 62%, rgba(2,8,20,.30) 100%);
}
.slide__scrim--light{
  background:linear-gradient(90deg,
    rgba(244,246,248,.80) 0%, rgba(244,246,248,.46) 38%, rgba(244,246,248,0) 62%);
}

.slide__panel{
  position:relative;z-index:2;
  margin-left:6.2%;
  width:min(47%,620px);
  padding:52px 56px 56px;
  border-radius:14px;
}
.slide__panel--glass{
  background:rgba(0,0,0,.62);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  color:#fff;
}
.slide__panel--paper{
  background:rgba(226,228,231,.94);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  color:var(--ink);
}

.slide__panel h2{
  margin:0 0 22px;
  font-size:clamp(28px,3.1vw,46px);
  line-height:1.12;
  font-weight:700;
  letter-spacing:-.6px;
  text-wrap:balance;
}
.slide__panel p{
  margin:0 0 34px;
  font-size:clamp(15px,1.15vw,18px);
  line-height:1.55;
  max-width:44ch;
}
.slide__panel--glass p{color:#e8ecf1;}
.slide__panel--paper p{color:#2b3138;}
.slide__panel sup{font-size:.62em;vertical-align:super;}

/* lockup */
.lockup{display:flex;align-items:center;gap:14px;margin-bottom:56px;}
.lockup img{height:22px;width:auto;}
.lockup__rule{width:1px;height:24px;background:rgba(255,255,255,.55);}
.lockup__name{font-size:19px;font-weight:500;color:#fff;letter-spacing:.1px;}

/* QNX wordmark */
.qnx{
  font-size:40px;font-weight:700;letter-spacing:1px;color:var(--qnx);
  margin-bottom:52px;line-height:1;
}

/* buttons */
.btn{
  display:inline-flex;align-items:center;gap:12px;
  padding:15px 26px;border-radius:6px;
  font-size:17px;font-weight:700;letter-spacing:.1px;
  transition:background .22s,transform .22s var(--hdr-ease),box-shadow .22s;
}
.btn svg{width:19px;height:19px;flex:none;transition:transform .25s var(--hdr-ease);}
.btn--blue{background:var(--blue);color:#fff;}
.btn--blue:hover{background:var(--blue-deep);box-shadow:0 10px 24px rgba(11,87,208,.35);}
.btn:hover svg{transform:translateX(4px);}

/* arrows */
.nav-arrow{
  position:absolute;top:50%;transform:translateY(-50%);z-index:5;
  width:52px;height:52px;border-radius:12px;
  background:#fff;color:var(--blue);
  display:grid;place-items:center;
  box-shadow:0 6px 18px rgba(0,0,0,.22);
  transition:background .2s,transform .2s var(--hdr-ease);
}
.nav-arrow svg{width:24px;height:24px;}
.nav-arrow--prev{left:28px;}
.nav-arrow--next{right:28px;}
.nav-arrow:hover{background:#eaf1fe;}
.nav-arrow--prev:hover{transform:translateY(-50%) translateX(-3px);}
.nav-arrow--next:hover{transform:translateY(-50%) translateX(3px);}

/* play / pause */
.playpause{
  position:absolute;right:28px;bottom:28px;z-index:5;
  width:48px;height:48px;border-radius:12px;
  background:#fff;color:var(--blue);
  display:grid;place-items:center;
  box-shadow:0 6px 18px rgba(0,0,0,.22);
  transition:background .2s;
}
.playpause svg{width:22px;height:22px;grid-area:1/1;}
.playpause:hover{background:#eaf1fe;}
.playpause .ico-play{display:none;}
.playpause[data-state="paused"] .ico-pause{display:none;}
.playpause[data-state="paused"] .ico-play{display:block;}

/* dots */
.dots{display:flex;justify-content:center;align-items:center;gap:22px;padding-top:34px;}
.dots button{
  width:10px;height:10px;border-radius:50%;
  background:var(--blue);opacity:.45;
  transition:transform .25s var(--hdr-ease),opacity .25s;
}
.dots button:hover{opacity:.75;}
.dots button[aria-selected="true"]{opacity:1;transform:scale(1.35);}

/* =========================================================
   Footer
   ========================================================= */
.site-footer{background:var(--black);color:#fff;padding:112px 0 40px;}

.footer__cols{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:44px;
  padding-bottom:150px;
}
.footer__col h3{
  margin:0 0 26px;
  font-size:19px;font-weight:700;letter-spacing:.1px;line-height:1.3;
}
.footer__col ul{margin:0;padding:0;list-style:none;display:grid;gap:20px;}
.footer__col a{font-size:18px;font-weight:400;color:#f2f3f5;line-height:1.35;}
.footer__col a:hover{color:var(--blue-hi);text-decoration:underline;text-underline-offset:4px;}

.footer__rule{border:0;border-top:1px solid var(--rule-blue);margin:0 0 42px;}

.footer__bottom{
  display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;
}
/* keep the floating back-to-top button clear of the last footer link */
@media (max-width:1800px){ .footer__bottom{padding-right:76px;} }
.footer__bottom p{margin:0;font-size:17px;color:#f2f3f5;}
.footer__meta{display:flex;gap:34px;flex-wrap:wrap;}
.footer__meta a{font-size:17px;color:#f2f3f5;}
.footer__meta a:hover{color:var(--blue-hi);}

/* =========================================================
   Back to top
   ========================================================= */
.totop{
  position:fixed;right:26px;bottom:26px;z-index:110;
  width:52px;height:52px;border-radius:12px;
  background:var(--blue);color:#fff;
  display:grid;place-items:center;
  box-shadow:0 10px 26px rgba(0,0,0,.32);
  opacity:0;visibility:hidden;transform:translateY(12px);
  transition:opacity .3s,transform .3s var(--hdr-ease),visibility .3s,background .2s;
}
.totop svg{width:24px;height:24px;}
.totop.is-visible{opacity:1;visibility:visible;transform:none;}
.totop:hover{background:var(--blue-deep);}

/* =========================================================
   Responsive
   ========================================================= */
@media (max-width:1200px){
  :root{--pad:32px;}
  .mainnav__inner{gap:28px;}
  .mainnav a{font-size:16px;}
  .masthead__right{gap:22px;}
  .slide__panel{width:min(56%,560px);padding:40px 40px 44px;}
}

@media (max-width:1000px){
  .announce{min-height:58px;padding:10px 60px;}
  .announce__link{font-size:15px;gap:10px;}

  .masthead__link{display:none;}
  .burger{display:block;}

  .mainnav{
    max-height:0;overflow:hidden;
    transition:max-height .35s var(--hdr-ease);
    border-top:1px solid #1d1f24;
  }
  .mainnav.is-open{max-height:420px;}
  .mainnav__inner{flex-direction:column;gap:0;padding-block:8px 20px;}
  .mainnav a{padding:16px 0;border-bottom:1px solid #17181c;width:100%;}
  .mainnav a::after{display:none;}

  .hero{min-height:78vh;}
  .hero__inner{padding-block:90px;}

  .showcase{padding:36px 0 32px;}
  .carousel{border-radius:14px;}
  /* stack the copy under the artwork so controls never sit on the text */
  .slide{aspect-ratio:auto;min-height:0;flex-direction:column;align-items:stretch;}
  .slide__art{position:relative;inset:auto;width:100%;aspect-ratio:16/10;}
  /* panel sits below the photo here, so the legibility wash isn't needed */
  .slide__scrim{display:none;}
  .slide__panel{
    position:relative;left:auto;right:auto;bottom:auto;
    margin:0;width:100%;border-radius:0;
    padding:30px 26px 34px;
  }
  .slide__panel--glass{background:#0b0b0c;}
  .slide__panel--paper{background:#e4e6e9;}
  .lockup,.qnx{margin-bottom:22px;}
  .qnx{font-size:30px;}
  .slide__panel h2{margin-bottom:14px;}
  .slide__panel p{margin-bottom:22px;}

  /* centre the arrows on the artwork: art height = 88vw card * 10/16 */
  .nav-arrow{width:44px;height:44px;top:27.5vw;transform:none;}
  .nav-arrow--prev{left:14px;}
  .nav-arrow--next{right:14px;}
  .nav-arrow--prev:hover{transform:translateX(-3px);}
  .nav-arrow--next:hover{transform:translateX(3px);}
  .playpause{right:14px;bottom:auto;top:14px;width:42px;height:42px;}

  .site-footer{padding:64px 0 32px;}
  .footer__cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:40px 28px;padding-bottom:72px;}
}

@media (max-width:620px){
  :root{--pad:20px;}
  .announce{padding:10px 48px;min-height:54px;}
  .announce__link{font-size:13.5px;}
  .announce__close{right:12px;}
  .utility__inner{gap:18px;padding-block:11px;}
  .utility a{font-size:14px;}
  .masthead__inner{padding-block:18px;}
  .brand img{height:24px;}
  .search input{font-size:18px;}

  .hero{min-height:70vh;}
  .hero__title{font-size:32px;line-height:1.18;}

  .slide__panel{padding:24px 20px 28px;}
  .btn{width:100%;justify-content:space-between;padding:14px 20px;font-size:15px;}

  .footer__cols{grid-template-columns:1fr;gap:36px;padding-bottom:56px;}
  .footer__bottom{flex-direction:column;align-items:flex-start;gap:18px;padding-right:0;padding-bottom:52px;}
  .footer__meta{gap:22px;}
  .totop{right:14px;bottom:14px;width:46px;height:46px;}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;}
}
