@font-face{font-family:"Manrope NA";src:url("/assets/launch-gate/fonts/manrope.woff2") format("woff2");font-style:normal;font-weight:200 800;font-display:swap}
@font-face{font-family:"Chakra Petch NA";src:url("/assets/launch-gate/fonts/chakra-petch-500.woff2") format("woff2");font-style:normal;font-weight:500;font-display:swap}
.new-atlas{
  --na-ivory:#f3eee8;--na-muted:#b9a6a9;--na-ruby:#9e1729;
  --na-dock-right:max(18px,env(safe-area-inset-right,0px));--na-base-bottom:max(20px,env(safe-area-inset-bottom,0px));
  --na-footer-bottom:0px;--na-dock-bottom:max(var(--na-base-bottom),var(--na-footer-bottom));
  --na-character:96px;--na-viewport-height:100dvh;--na-keyboard-bottom:0px;
  position:fixed;inset:0;z-index:80;pointer-events:none;color:var(--na-ivory);
  font-family:"Manrope NA",Manrope,sans-serif;font-size:14px;line-height:1.65;
}
.new-atlas *{box-sizing:border-box}
.new-atlas [hidden]{display:none!important}
.new-atlas button,.new-atlas textarea,.new-atlas a{font:inherit;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.new-atlas button{cursor:var(--ki-cursor-link,pointer)}
.new-atlas :focus-visible{outline:2px solid #f6c7c9;outline-offset:4px}
.na-stage,.na-launcher{
  position:absolute;right:var(--na-dock-right);bottom:var(--na-dock-bottom);
  width:var(--na-character);height:var(--na-character);
}
.na-stage{pointer-events:none;isolation:isolate;filter:drop-shadow(0 14px 15px rgb(0 0 0/.38))}
.na-stage canvas,.na-fallback{position:relative;display:block;width:100%;height:100%;object-fit:contain}
/* The glow behind the character. At rest it holds still: like the WebGL
   scene, which renders only while its pose changes, nothing here animates
   continuously while New Atlas is idle, so the Observatory globe keeps the
   GPU. It breathes while New Atlas thinks, speaks or reacts, and pulses with
   each idle action the character performs. */
.na-halo{position:absolute;inset:-24%;border-radius:50%;pointer-events:none;
  background:radial-gradient(closest-side,rgb(196 24 52/.36),rgb(120 12 36/.13) 55%,transparent 72%);
  opacity:.4;transform:scale(.94);transition:opacity .4s,transform .4s,filter .4s}
@keyframes na-breathe{0%,100%{opacity:.36;transform:scale(.92)}50%{opacity:.62;transform:scale(1.04)}}
@keyframes na-glow{0%,100%{opacity:.4;transform:scale(.94)}35%{opacity:.85;transform:scale(1.08)}}
.new-atlas[data-pulse] .na-halo{animation:na-glow 1.7s ease-in-out 1}
.new-atlas:has(.na-launcher:hover) .na-halo{opacity:.85}
.new-atlas[data-voice="playing"] .na-halo{animation:none;opacity:calc(.5 + var(--na-voice-level,0) * .5);transform:scale(calc(.94 + var(--na-voice-level,0) * .2))}
.new-atlas[data-network="thinking"] .na-halo{animation:na-breathe 1.5s ease-in-out infinite}
.new-atlas[data-draft="rude"] .na-halo{filter:saturate(1.6) brightness(1.2)}
.new-atlas[data-mood="roast"] .na-halo{background:radial-gradient(closest-side,rgb(255 44 70/.62),rgb(170 10 36/.3) 55%,transparent 74%);animation:na-breathe .46s ease-in-out infinite}
.new-atlas[data-mood="line"] .na-halo,.new-atlas[data-mood="event"] .na-halo{background:radial-gradient(closest-side,rgb(255 214 222/.34),rgb(196 24 52/.2) 55%,transparent 74%)}
/* Thinking: three sparks orbit the character until the first token. */
.na-orbit{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .3s}
.na-orbit span{position:absolute;left:50%;top:50%;width:6px;height:6px;margin:-3px;border-radius:50%;background:#ff6a82;box-shadow:0 0 10px #ff2c4c,0 0 3px #fff}
.na-orbit span:nth-child(1){transform:rotate(0deg) translateX(calc(var(--na-character) * .54))}
.na-orbit span:nth-child(2){transform:rotate(120deg) translateX(calc(var(--na-character) * .54)) scale(.7)}
.na-orbit span:nth-child(3){transform:rotate(240deg) translateX(calc(var(--na-character) * .54)) scale(.5)}
.new-atlas[data-network="thinking"] .na-orbit{opacity:1;animation:na-orbit 1.15s linear infinite}
.new-atlas[data-network="transmitting"] .na-orbit{opacity:.55;animation:na-orbit .6s linear infinite}
@keyframes na-orbit{to{transform:rotate(360deg)}}
.na-launcher{pointer-events:auto;background:transparent;border:0;color:var(--na-ivory);padding:0;border-radius:50%;box-shadow:none}
.na-launcher-label{
  position:absolute;bottom:-8px;right:42px;white-space:nowrap;
  font-family:"Chakra Petch NA","Chakra Petch",sans-serif;font-size:11px;letter-spacing:.16em;
  text-shadow:0 2px 8px #000;opacity:.7;transition:opacity .2s;
}
.na-launcher:hover .na-launcher-label,.na-launcher:focus-visible .na-launcher-label{opacity:1;text-shadow:0 2px 8px #000,0 0 12px rgb(255 70 100/.7)}
.na-mute{
  pointer-events:auto;position:absolute;right:calc(var(--na-dock-right) - 3px);bottom:calc(var(--na-dock-bottom) - 2px);
  display:grid;place-items:center;width:36px;height:36px;padding:8px;border:1px solid rgb(192 112 127/.18);
  border-radius:50%;background:rgb(15 9 12/.86);color:#cfbabd;backdrop-filter:blur(8px);
}
.na-mute:hover{color:var(--na-ivory);border-color:rgb(216 134 146/.46)}
.na-mute svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.na-sound-off{display:none}
.new-atlas[data-muted="true"] .na-sound-off{display:block}
.new-atlas[data-muted="true"] .na-sound-waves{display:none}
.new-atlas[data-open="true"]{--na-character:128px}
.new-atlas[data-open="true"] .na-launcher-label{opacity:.78;bottom:2px}
.na-panel:not([hidden]){animation:na-panel-in .52s cubic-bezier(.16,1,.3,1) both;transform-origin:100% 100%}
@keyframes na-panel-in{from{opacity:0;transform:translate(16px,22px) scale(.94);filter:blur(5px)}}
.na-panel:not([hidden]) .na-form{animation:na-rise .55s .1s cubic-bezier(.16,1,.3,1) both}
.na-panel:not([hidden]) .na-close{animation:na-pop .4s .22s cubic-bezier(.16,1,.3,1) both}
@keyframes na-rise{from{opacity:0;transform:translateY(14px)}}
@keyframes na-pop{from{opacity:0;transform:scale(.6)}}
.na-panel{
  pointer-events:auto;position:absolute;right:calc(var(--na-dock-right) + var(--na-character) + 8px);bottom:calc(var(--na-dock-bottom) + 22px);width:min(408px,calc(100vw - var(--na-dock-right) - var(--na-character) - 48px));
  max-height:min(620px,calc(var(--na-viewport-height) - var(--na-dock-bottom) - 68px));display:flex;flex-direction:column;
  background:transparent;border:0;box-shadow:none;padding:22px 0 0;
}
.na-close{
  position:absolute;right:0;top:-18px;width:36px;height:36px;display:grid;place-items:center;
  border:1px solid rgb(191 123 134/.2);border-radius:50%;background:rgb(13 9 12/.88);
  color:#c7b5b9;font:26px/1 "Manrope NA",sans-serif!important;padding:0;backdrop-filter:blur(12px);
}
.na-close:hover{color:#fff;border-color:rgb(213 132 146/.55)}
.na-transcript{
  min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;
  scrollbar-color:#67303d transparent;display:flex;flex-direction:column;gap:16px;
  padding:8px 14px 18px 3px;mask-image:linear-gradient(to bottom,transparent,#000 12px,#000 calc(100% - 5px),transparent);
}
.na-message{
  animation:na-message-in .42s cubic-bezier(.16,1,.3,1) both;transform-origin:100% 100%;
  position:relative;max-width:100%;flex:none;border:1px solid rgb(199 99 119/.25);
  border-radius:17px 17px 4px 17px;padding:17px 20px;
  background:linear-gradient(135deg,rgb(49 19 29/.97),rgb(18 13 18/.97) 56%,rgb(32 12 23/.98));
  box-shadow:inset 0 1px rgb(255 196 211/.055),0 10px 24px rgb(0 0 0/.23);
  backdrop-filter:blur(16px);overflow-wrap:anywhere;
}
.na-message--assistant{align-self:flex-end;width:100%}
.na-message--assistant:after{
  content:"";position:absolute;right:-8px;bottom:12px;width:14px;height:14px;
  background:#200c17;border-right:1px solid rgb(199 99 119/.25);border-top:1px solid rgb(199 99 119/.25);transform:rotate(45deg);
}
@keyframes na-message-in{from{opacity:0;transform:translate(14px,12px) scale(.93)}}
@keyframes na-user-in{from{opacity:0;transform:translate(-16px,8px) scale(.95)}}
.na-message--user{
  animation-name:na-user-in;transform-origin:0 100%;
  align-self:flex-start;max-width:90%;padding:11px 17px;border-radius:15px 15px 15px 3px;
  background:linear-gradient(135deg,rgb(81 18 33/.96),rgb(54 14 27/.97));border-color:rgb(213 85 111/.33);color:#ead7da;
}
.na-message-content{white-space:pre-wrap;line-height:1.75;font-size:14px}
.na-message[data-error="true"]{border-color:#a9636f}
.na-message[data-line="roast"]{border-color:rgb(255 84 112/.55);box-shadow:inset 0 1px rgb(255 196 211/.08),0 10px 30px rgb(0 0 0/.3),0 0 28px rgb(220 24 58/.22)}
/* The turn's recorded line opens the bubble. A roast arrives hot. */
.na-line{display:flex;align-items:center;gap:11px;margin:-3px 0 12px;padding:9px 13px;border:1px solid rgb(232 150 168/.3);border-radius:10px;
  background:linear-gradient(120deg,rgb(116 20 44/.6),rgb(40 12 24/.62));color:#ffeef2;
  font-family:"Chakra Petch NA","Chakra Petch",sans-serif;font-size:14px;line-height:1.4;letter-spacing:.015em}
.na-line q{quotes:"\201C" "\201D"}
.na-line[data-kind="roast"]{border-color:rgb(255 92 118/.7);background:linear-gradient(120deg,rgb(178 18 46/.8),rgb(64 8 22/.85));
  box-shadow:0 0 24px rgb(230 30 64/.38);text-shadow:0 0 12px rgb(255 60 90/.6);animation:na-glitch .9s steps(2,end) 1}
@keyframes na-glitch{0%{text-shadow:3px 0 #ff2c55,-3px 0 rgb(255 255 255/.5);transform:translateX(2px)}25%{text-shadow:-3px 0 #ff2c55,2px 0 rgb(255 255 255/.4);transform:translateX(-2px) skewX(-4deg)}
  50%{text-shadow:2px 0 #ff2c55,-1px 0 rgb(255 255 255/.3);transform:translateX(1px)}100%{text-shadow:0 0 12px rgb(255 60 90/.6);transform:none}}
.na-wave{display:inline-flex;align-items:center;gap:2px;height:16px;flex:none}
.na-wave span{display:block;width:3px;height:28%;border-radius:2px;background:currentColor;opacity:.8}
.new-atlas[data-voice="playing"] .na-wave span{animation:na-wave .8s ease-in-out infinite}
.na-wave span:nth-child(2){animation-delay:-.15s!important}.na-wave span:nth-child(3){animation-delay:-.4s!important}
.na-wave span:nth-child(4){animation-delay:-.25s!important}.na-wave span:nth-child(5){animation-delay:-.55s!important}
@keyframes na-wave{0%,100%{height:22%}50%{height:100%}}
.na-message[data-provisional="true"]{min-height:58px}
.na-thinking{display:block;width:30px;height:8px;margin:8px 0;background:radial-gradient(circle,#d7a5b4 2px,transparent 2.5px) 0 0/10px 8px;animation:na-thinking 1.3s ease-in-out infinite}
@keyframes na-thinking{0%,100%{opacity:.3}50%{opacity:1}}
.na-sources{display:flex;flex-wrap:wrap;gap:7px 12px;margin-top:13px;padding-top:11px;border-top:1px solid rgb(200 112 132/.16)}
.na-source{color:#d8a3b0;text-decoration:underline;text-underline-offset:4px;font-size:11px;line-height:1.8;overflow-wrap:anywhere}
.na-source:hover{color:#fff1f4}
/* Typing: a scan sweeps the composer while New Atlas reads along; a rude
   draft runs hot before it is even sent. */
.na-scan{position:absolute;inset:-1px;border-radius:13px;pointer-events:none;opacity:0;transition:opacity .3s;
  background:linear-gradient(100deg,transparent 35%,rgb(255 150 172/.16) 50%,transparent 65%) 0 0/260% 100% no-repeat}
.new-atlas[data-typing="true"] .na-scan{opacity:1;animation:na-scan 1.5s linear infinite}
@keyframes na-scan{from{background-position:130% 0}to{background-position:-130% 0}}
.new-atlas[data-draft="rude"] .na-form{border-color:#ff4d6a;animation:na-hot 1s ease-in-out infinite}
.new-atlas[data-draft="rude"] .na-scan{background-image:linear-gradient(100deg,transparent 35%,rgb(255 70 96/.28) 50%,transparent 65%)}
@keyframes na-hot{0%,100%{box-shadow:0 12px 40px rgb(0 0 0/.4),0 0 22px rgb(255 40 70/.22)}50%{box-shadow:0 12px 40px rgb(0 0 0/.4),0 0 42px rgb(255 40 70/.5)}}
.new-atlas[data-draft="rude"] .na-send{background:linear-gradient(140deg,#c4293f,#6a1022)}
.new-atlas[data-draft="typing"] .na-send{box-shadow:0 0 16px rgb(226 60 96/.42)}
.na-form{
  position:relative;display:flex;align-items:flex-end;flex:none;gap:9px;
  padding:9px 9px 9px 16px;margin-right:11px;border:1px solid rgb(202 106 129/.45);
  border-radius:13px;background:linear-gradient(120deg,rgb(28 17 25/.98),rgb(13 11 17/.98));
  box-shadow:0 12px 40px rgb(0 0 0/.4),inset 0 1px rgb(255 198 211/.04);backdrop-filter:blur(16px);
}
.na-form:focus-within{border-color:#a95670;box-shadow:0 12px 40px rgb(0 0 0/.4),0 0 24px rgb(153 28 54/.1)}
.na-form textarea{
  display:block;resize:none;flex:1;min-width:0;width:100%;min-height:38px;max-height:112px;padding:7px 0;
  border:0;border-radius:0;background:transparent;color:var(--na-ivory);font-size:14px;line-height:24px;outline:none;
  box-shadow:none;scrollbar-width:thin;scrollbar-color:#67303d transparent;
}
.na-form textarea::placeholder{color:#ac8d98}
.na-form textarea:focus-visible{outline:none}
.na-send{
  display:grid;place-items:center;flex:none;width:38px;height:38px;padding:10px;
  border:1px solid rgb(226 118 143/.3);border-radius:9px;color:#f9e7ec;background:linear-gradient(140deg,#76223c,#481224);
}
.na-send:hover{background:linear-gradient(140deg,#94304c,#622038)}
.na-send{transition:box-shadow .25s,transform .2s}
.na-send:active{transform:scale(.9)}
.na-send svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.na-stop{font-size:12px!important}
.na-caption{
  position:absolute;right:calc(var(--na-dock-right) + var(--na-character) + 8px);
  bottom:calc(var(--na-dock-bottom) + var(--na-character) * .4);max-width:min(290px,calc(100vw - var(--na-dock-right) - var(--na-character) - 30px));
  padding:13px 16px;background:linear-gradient(135deg,#321321,#120e17);border:1px solid rgb(194 93 118/.34);
  border-radius:14px 14px 3px 14px;box-shadow:0 9px 28px rgb(0 0 0/.3);font-size:13px;line-height:1.6;
}
.na-caption:not([hidden]){animation:na-caption-in .38s cubic-bezier(.16,1,.3,1) both;transform-origin:100% 100%}
@keyframes na-caption-in{from{opacity:0;transform:translate(10px,10px) scale(.85)}}
.na-caption[data-kind="roast"]{border-color:#ff5470;background:linear-gradient(135deg,#6d0f22,#1d0a12);box-shadow:0 0 26px rgb(255 40 70/.38);
  font-family:"Chakra Petch NA","Chakra Petch",sans-serif;font-size:14px}
.na-caption[data-kind="event"]{border-color:rgb(255 214 222/.55);box-shadow:0 0 22px rgb(255 214 222/.18)}
.new-atlas[data-open="true"] .na-caption{right:calc(var(--na-dock-right) + 8px);bottom:calc(var(--na-dock-bottom) + var(--na-character) - 8px);max-width:min(210px,var(--na-character))}
.na-sr-only{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
@media(min-width:601px) and (max-width:960px){
  .na-panel{width:min(370px,calc(100vw - var(--na-dock-right) - var(--na-character) - 32px))}
}
@media(max-width:600px){
  .new-atlas{--na-character:72px;font-size:14px}
  .new-atlas[data-open="true"]{--na-character:96px}
  .na-mute{width:36px;height:36px;bottom:calc(var(--na-dock-bottom) + 1px);right:calc(var(--na-dock-right) + 1px)}
  .na-launcher-label{font-size:10px;bottom:-5px}
  .new-atlas[data-open="true"] .na-launcher-label{bottom:0}
  .na-panel{
    left:12px;right:12px;bottom:calc(var(--na-dock-bottom) + var(--na-character) + 8px);
    width:auto;max-height:calc(var(--na-viewport-height) - var(--na-dock-bottom) - var(--na-character) - 80px);min-height:0;padding-top:9px;
  }
  .na-transcript{gap:12px;padding-bottom:13px;padding-top:10px}
  .na-message{padding:13px 16px}
  .na-message-content{font-size:14px;line-height:1.65}
  .na-message--user{padding:10px 14px}
  .na-close{top:-29px;right:0}
  .na-form{padding:7px 7px 7px 13px;margin-right:11px}
  .na-form textarea{font-size:16px}
  .na-caption{font-size:12px;padding:10px 12px}
  .new-atlas[data-open="true"] .na-caption{left:14px;right:calc(var(--na-dock-right) + var(--na-character) + 8px);bottom:calc(var(--na-dock-bottom) + 24px);max-width:none}
  .new-atlas[data-keyboard="true"]{--na-character:64px;--na-dock-bottom:calc(var(--na-keyboard-bottom) + var(--na-composer-height,56px) + 28px)}
  .new-atlas[data-keyboard="true"] .na-panel{bottom:calc(var(--na-keyboard-bottom) + 10px);max-height:calc(var(--na-viewport-height) - 58px);padding-right:0}
  .new-atlas[data-keyboard="true"] .na-transcript{padding-right:calc(var(--na-character) + 14px);min-height:56px}
  .new-atlas[data-keyboard="true"] .na-message{padding:10px 12px}
  .new-atlas[data-keyboard="true"] .na-message-content{font-size:13px}
  .new-atlas[data-keyboard="true"] .na-close{right:auto;left:0;top:-28px}
  .new-atlas[data-keyboard="true"] .na-mute{width:32px;height:32px;bottom:calc(var(--na-dock-bottom) - 6px)}
  .new-atlas[data-keyboard="true"] .na-launcher-label{display:none}
  .new-atlas[data-keyboard="true"] .na-caption{display:none}
}
.na-fx-ring{position:fixed;left:var(--na-fx-x);top:var(--na-fx-y);width:var(--na-fx-size);height:var(--na-fx-size);border-radius:50%;
  pointer-events:none;opacity:0;border:2px solid rgb(255 128 148/.85);box-shadow:0 0 18px rgb(220 30 60/.55),inset 0 0 14px rgb(220 30 60/.35)}
.na-fx-ring--open{border-color:rgb(255 236 240/.9)}
.na-fx-ring--open-soft{border-width:1px;border-color:rgb(255 120 142/.6);box-shadow:0 0 30px rgb(220 30 60/.3)}
.na-fx-ring--close{border-width:1px;border-color:rgb(196 120 134/.6);box-shadow:none}
.na-fx-ring--roast{border-width:3px;border-color:#ff3a5c;box-shadow:0 0 30px rgb(255 30 60/.75),inset 0 0 20px rgb(255 30 60/.5)}
.na-fx-ring--line,.na-fx-ring--packet{border-width:1px;border-color:rgb(255 226 232/.8)}
.na-fx-ring--event{border-color:rgb(255 236 240/.85);box-shadow:0 0 26px rgb(255 214 222/.4)}
.na-fx-edge{position:fixed;inset:0;pointer-events:none;opacity:0;box-shadow:inset 0 0 150px 34px rgb(214 18 48/.55);
  background:radial-gradient(circle at calc(100% - 80px) calc(100% - 90px),rgb(255 40 70/.24),transparent 46%)}
.na-fx-packet{position:fixed;left:var(--na-fx-x);top:var(--na-fx-y);width:var(--na-fx-size);height:var(--na-fx-size);border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,#fff 0 22%,#ff6a82 44%,rgb(255 40 70/0) 72%);filter:drop-shadow(0 0 8px #ff3355)}
@media(prefers-reduced-motion:reduce){.new-atlas *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(forced-colors:active){
  .na-halo,.na-orbit,.na-scan,.na-fx-ring,.na-fx-edge,.na-fx-packet{display:none}
  .na-line{background:Canvas;color:CanvasText;border:1px solid CanvasText}
  .na-message,.na-form,.na-send,.na-mute,.na-close{background:Canvas;color:CanvasText;border:1px solid CanvasText;box-shadow:none}
  .na-message:after{display:none}.na-source{color:LinkText}
}
