/* ====================================================================== */
/* NAIA > Assistente (HUD de voz + pergunta digitada) - porte do HUD da     */
/* aba Jarvis do gopascal-smarthome.                                        */
/*                                                                          */
/* SEGUE O TEMA: as cores saem dos tokens do site (--primary, --card-bg,    */
/* --text, --text-muted), entao a Personalizacao muda a Naia junto. O claro */
/* e o escuro so trocam a intensidade dos brilhos/sombras: o naia.js marca  */
/* data-tema="claro|escuro" pela luminancia do --card-bg do tema.          */
/* O conteudo do .na-stage e montado por js/naia.js.                        */
/* ====================================================================== */

/* a faixa "Assistente" cola no HUD, como nas outras telas com .app-card */
.page-titlebar:has(+ .na-hud) {
  margin-bottom: 0;
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
}
.page-titlebar + .na-hud { border-top-left-radius: 0; border-top-right-radius: 0; border-top: 0; }

.na-hud {
  --nc: var(--primary);
  --nc-soft: color-mix(in srgb, var(--primary) 30%, transparent);
  --nc-faint: color-mix(in srgb, var(--primary) 12%, transparent);
  --na-bg: color-mix(in srgb, var(--primary) 4%, var(--card-bg));
  --na-panel: color-mix(in srgb, var(--primary) 6%, var(--card-bg));
  --na-text: var(--text);
  --na-strong: var(--text);
  --na-dim: var(--text-muted);
  --na-grid: color-mix(in srgb, var(--primary) 7%, transparent);
  --na-glow: 0 0 0 transparent;
  --na-shade: inset 0 0 60px color-mix(in srgb, var(--primary) 6%, transparent);
  --na-user: #059669;
  --na-think: #d97706;
  --na-err: #dc2626;
  position: relative; overflow: hidden; isolation: isolate;
  min-height: calc(100vh - 13rem);
  padding: 18px 18px 10px;
  border-radius: var(--radius-lg, 16px); border: 1px solid var(--card-border);
  color: var(--na-text);
  background:
    radial-gradient(ellipse at 50% 42%, color-mix(in srgb, var(--primary) 12%, transparent), transparent 62%),
    repeating-linear-gradient(0deg, var(--na-grid) 0 1px, transparent 1px 42px),
    repeating-linear-gradient(90deg, var(--na-grid) 0 1px, transparent 1px 42px),
    var(--na-bg);
  font-family: "Rajdhani", system-ui, sans-serif; font-weight: 500;
  box-shadow: var(--na-shade);
  transition: box-shadow .4s ease, border-color .4s ease;
}
/* escuro: fundo mais fundo, brilho neon como no Jarvis */
.na-hud[data-tema="escuro"] {
  --na-bg: color-mix(in srgb, var(--primary) 6%, color-mix(in srgb, var(--card-bg) 70%, #000));
  --na-panel: color-mix(in srgb, var(--primary) 9%, transparent);
  --na-strong: #fff;
  --na-grid: color-mix(in srgb, var(--primary) 6%, transparent);
  --na-glow: 0 0 12px var(--nc-soft);
  --na-shade: inset 0 0 80px rgba(0, 0, 0, .55);
  --na-user: #50ffbe;
  --na-think: #ffb840;
  --na-err: #ff5d6c;
}
.na-hud[data-state="usuario"] { --nc: var(--na-user); --nc-soft: color-mix(in srgb, var(--na-user) 30%, transparent); }
.na-hud[data-state="pensando"],
.na-hud[data-state="processando"] { --nc: var(--na-think); --nc-soft: color-mix(in srgb, var(--na-think) 32%, transparent); }
.na-hud[data-state="erro"] { --nc: var(--na-err); --nc-soft: color-mix(in srgb, var(--na-err) 30%, transparent); }
.na-hud[data-state="falando"],
.na-hud[data-state="usuario"],
.na-hud[data-state="pensando"] { box-shadow: var(--na-shade), 0 0 30px -8px var(--nc-soft); }
/* varredura horizontal (scanline) */
.na-hud::after {
  content: ""; position: absolute; left: 0; right: 0; top: 0; pointer-events: none; z-index: -1;
  background: linear-gradient(180deg, transparent 0, var(--nc-faint) 50%, transparent 100%);
  height: 120px; animation: naScan 7s linear infinite;
}
@keyframes naScan { from { transform: translateY(-140px); } to { transform: translateY(110vh); } }

.na-stage {
  display: grid; gap: 18px; align-items: start;
  grid-template-columns: minmax(200px, 250px) minmax(0, 1fr) minmax(240px, 330px);
}
.na-col { display: grid; gap: 14px; min-width: 0; }
.na-panel {
  position: relative; padding: 12px 14px;
  background: var(--na-panel);
  border: 1px solid var(--nc-soft);
  clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 14px 100%, 0 calc(100% - 14px));
}
.na-panel::before {
  content: ""; position: absolute; left: 0; top: 0; width: 26px; height: 2px;
  background: var(--nc); box-shadow: var(--na-glow);
}
.na-panel h3 {
  margin: 0 0 8px; font: 700 .72rem/1 "Orbitron", sans-serif; letter-spacing: .18em;
  color: var(--nc);
}

.na-clock { text-align: center; }
.na-time {
  font: 700 1.9rem/1.1 "Orbitron", sans-serif; color: var(--nc);
  text-shadow: var(--na-glow); letter-spacing: .06em;
}
.na-date { display: flex; justify-content: center; align-items: baseline; gap: 8px; margin-top: 6px; }
.na-date span:first-child { font: 700 2.4rem/1 "Orbitron", sans-serif; color: var(--na-strong); }
.na-date span:last-child { font: 700 1.1rem/1 "Orbitron", sans-serif; color: var(--nc); letter-spacing: .12em; }
.na-week { margin-top: 4px; color: var(--na-dim); letter-spacing: .3em; font-size: .78rem; }

.na-gauges { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; justify-items: center; }
.na-gauge {
  --v: 0; position: relative; width: 92px; aspect-ratio: 1; border-radius: 50%;
  display: grid; place-content: center; text-align: center;
  background: conic-gradient(var(--nc) calc(var(--v) * 1%), var(--nc-faint) 0);
}
.na-gauge i { position: absolute; inset: 7px; border-radius: 50%; background: var(--na-bg); border: 1px dashed var(--nc-soft); }
.na-gauge b, .na-gauge small { position: relative; display: block; }
.na-gauge b { font: 700 .8rem/1 "Orbitron", sans-serif; letter-spacing: .15em; color: var(--nc); }
.na-gauge small { font-size: .78rem; color: var(--na-dim); margin-top: 3px; }

.na-row {
  display: flex; justify-content: space-between; gap: 8px; padding: 5px 0;
  border-bottom: 1px dashed var(--nc-faint); font-size: .86rem; letter-spacing: .12em;
}
.na-row:last-child { border-bottom: 0; }
.na-row span { color: var(--na-dim); }
.na-row em { font-style: normal; color: var(--nc); font-weight: 700; letter-spacing: .05em; text-align: right; }

.na-core { display: grid; justify-items: center; gap: 10px; min-width: 0; }
.na-reactor { position: relative; width: min(100%, 520px); aspect-ratio: 1; }
.na-reactor canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.na-center {
  position: absolute; inset: 0; display: grid; place-content: center; text-align: center;
  pointer-events: none;
}
.na-state {
  font: 700 clamp(.95rem, 2.4vw, 1.35rem)/1 "Orbitron", sans-serif; letter-spacing: .24em;
  color: var(--na-strong); text-shadow: 0 0 12px var(--nc-soft);
  padding-left: .24em;
}
.na-sub { margin-top: 6px; font-size: .8rem; color: var(--nc); letter-spacing: .2em; text-transform: uppercase; }
.na-caption {
  min-height: 2.6em; max-width: 620px; text-align: center; font-size: 1.05rem; line-height: 1.3;
  color: var(--na-strong);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.na-controls { display: flex; gap: 12px; align-items: center; }
.na-btn {
  font: 700 .85rem/1 "Orbitron", sans-serif; letter-spacing: .2em; cursor: pointer;
  color: var(--nc); background: var(--nc-faint);
  border: 1px solid var(--nc); border-radius: 999px; padding: 14px 26px;
  display: inline-flex; align-items: center; gap: 10px;
  box-shadow: 0 0 16px -6px var(--nc-soft);
  transition: background .2s, box-shadow .2s, transform .1s;
}
.na-btn:hover { background: var(--nc-soft); }
.na-btn:active { transform: scale(.97); }
.na-btn:disabled { opacity: .35; cursor: default; }
.na-main.on { color: var(--na-err); border-color: var(--na-err); background: color-mix(in srgb, var(--na-err) 10%, transparent); }
.na-mute { padding: 14px 16px; }
.na-mute.on { color: var(--na-think); border-color: var(--na-think); }
.na-hud[data-state="off"] .na-main { animation: naBreath 2.6s ease-in-out infinite; }
@keyframes naBreath { 50% { box-shadow: 0 0 26px 0 var(--nc-soft); } }

/* pergunta digitada */
.na-ask { display: flex; gap: 8px; width: min(100%, 640px); margin-top: 2px; }
.na-ask input {
  flex: 1; min-width: 0; padding: 12px 16px; border-radius: 999px;
  border: 1px solid var(--nc-soft); background: var(--card-bg); color: var(--text);
  font: 500 1rem/1.2 "Rajdhani", system-ui, sans-serif; letter-spacing: .02em; outline: none;
}
.na-ask input::placeholder { color: var(--na-dim); }
.na-ask input:focus { border-color: var(--nc); box-shadow: 0 0 14px -4px var(--nc-soft); }
.na-ask .na-btn { padding: 12px 16px; letter-spacing: 0; }

.na-log {
  list-style: none; margin: 0; padding: 0 4px 0 0; max-height: 320px; overflow-y: auto;
  font-size: .92rem; line-height: 1.3; scrollbar-width: thin; scrollbar-color: var(--nc-soft) transparent;
  overflow-wrap: anywhere;
}
.na-sub-panel .na-log { max-height: 190px; font-size: .85rem; }
.na-log li { padding: 5px 0; border-bottom: 1px dashed var(--nc-faint); animation: naIn .25s ease both; }
.na-log time { color: var(--na-dim); font-size: .72rem; margin-right: 6px; letter-spacing: .05em; }
.na-log b { font: 700 .66rem/1 "Orbitron", sans-serif; letter-spacing: .14em; margin-right: 4px; }
.na-log .na-voce b { color: var(--na-user); }
.na-log .na-ai { white-space: pre-line; }
.na-log .na-ai b { color: var(--primary); }
.na-log .na-sys b, .na-log .na-sys-line { color: var(--na-dim); }
.na-log .na-err { color: var(--na-err); }
.na-log .na-req { color: var(--na-think); }
.na-log .na-tool { color: var(--na-dim); font-family: ui-monospace, Consolas, monospace; font-size: .76rem; }
.na-log .na-ok { color: var(--na-text); }
@keyframes naIn { from { opacity: 0; transform: translateX(6px); } to { opacity: 1; transform: none; } }

.na-cfg { margin: 12px 0 0; text-align: center; font-size: .74rem; letter-spacing: .12em; color: var(--na-dim); }

@media (max-width: 1100px) {
  .na-stage { grid-template-columns: minmax(0, 1fr) minmax(240px, 320px); }
  .na-left { grid-column: 1 / -1; grid-row: 2; grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .na-hud { padding: 12px 10px 8px; min-height: 0; }
  .na-stage { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .na-left { grid-column: auto; grid-row: auto; grid-template-columns: minmax(0, 1fr); order: 3; }
  .na-right { order: 2; }
  .na-reactor { width: min(100%, 400px); }
  .na-time { font-size: 1.5rem; }
  .na-btn { padding: 13px 20px; }
  .na-ask input { font-size: 16px; }   /* sem zoom no iOS */
}
@media (prefers-reduced-motion: reduce) {
  .na-hud::after, .na-hud[data-state="off"] .na-main { animation: none; }
}

/* resposta sendo escrita (streaming do Claude): cursor piscando no fim */
.na-parcial::after {
  content: "8D"; margin-left: 2px; color: var(--nc);
  animation: na-cursor 1s steps(2) infinite;
}
@keyframes na-cursor { 50% { opacity: 0; } }

/* anexo (clipe) da pergunta digitada */
.na-ask .na-clipe { padding: 12px 14px; }
.na-anexo {
  display: inline-flex; align-items: center; gap: 6px; max-width: 42%;
  padding: 6px 10px; border-radius: 999px; border: 1px solid var(--nc-soft);
  font-size: .85rem; white-space: nowrap; overflow: hidden; color: var(--text);
}
.na-anexo[hidden] { display: none; }
.na-anexo button { border: 0; background: none; color: inherit; cursor: pointer; font-weight: 700; padding: 0 2px; }
/* respostas com lista (perguntas dos fluxos: 1) ... 2) ...) */
.na-log li { white-space: pre-line; }

/* opcoes das perguntas dos fluxos (grupo, loja, qual conta, sim/nao) */
.na-log li.na-opcoes { display: flex; flex-wrap: wrap; gap: 6px; border-bottom: 0; white-space: normal; }
.na-opcoes button {
  padding: 6px 12px; border-radius: 999px; border: 1px solid var(--nc-soft);
  background: var(--card-bg); color: var(--text); cursor: pointer;
  font: 600 .88rem/1.2 "Rajdhani", system-ui, sans-serif; text-align: left;
}
.na-opcoes button b { color: var(--nc); margin-right: 2px; }
.na-opcoes button:hover:not(:disabled) { border-color: var(--nc); box-shadow: 0 0 10px -4px var(--nc-soft); }
.na-opcoes button:disabled { opacity: .45; cursor: default; }
.na-opcoes .na-op-x { color: var(--na-dim); }

/* camera (foto da conta) */
.na-cam { position: fixed; inset: 0; z-index: 3000; background: rgba(0, 0, 0, .72);
  display: flex; align-items: center; justify-content: center; padding: 16px; }
.na-cam-box { width: min(100%, 720px); background: var(--card-bg); border-radius: 16px; padding: 12px;
  display: flex; flex-direction: column; gap: 10px; }
.na-cam-tit { font-weight: 700; color: var(--text); }
.na-cam video { width: 100%; max-height: 70vh; border-radius: 10px; background: #000; object-fit: contain; }
.na-cam-acoes { display: flex; justify-content: flex-end; gap: 8px; }

/* ---- caber na tela (27/09/2026) -------------------------------------------
   A bola (canvas) crescia so pela largura (ate 520px) e empurrava controles
   e pergunta para fora da tela em notebook; agora ela tambem respeita a
   altura. As listas da conversa acompanham a altura disponivel. */
.na-reactor { width: clamp(180px, min(100%, calc(100vh - 25rem)), 520px); }
@supports (height: 100dvh) {
  .na-reactor { width: clamp(180px, min(100%, calc(100dvh - 25rem)), 520px); }
}
.na-right .na-log { max-height: max(160px, calc((100vh - 20rem) * .6)); }
.na-right .na-sub-panel .na-log { max-height: max(90px, calc((100vh - 20rem) * .25)); }
.na-caption { min-height: 2.4em; }

@media (max-width: 760px) {
  .na-hud { padding: 10px 8px 6px; }
  .na-stage { gap: 10px; }
  .na-reactor { width: clamp(140px, min(64vw, 34vh), 280px); }
  @supports (height: 100dvh) { .na-reactor { width: clamp(140px, min(64vw, 34dvh), 280px); } }
  .na-state { font-size: .9rem; }
  .na-sub { font-size: .66rem; margin-top: 3px; }
  .na-caption { font-size: .92rem; min-height: 0; }
  .na-core { gap: 8px; }
  .na-controls { gap: 8px; }
  .na-btn { padding: 10px 16px; font-size: .72rem; letter-spacing: .14em; gap: 8px; }
  .na-mute { padding: 10px 12px; }
  .na-ask { gap: 4px; width: 100%; }
  .na-ask input { padding: 9px 10px; width: 0; min-width: 0; flex: 1 1 auto; }
  .na-ask .na-btn { padding: 9px 9px; flex: 0 0 auto; }
  /* painel da esquerda compacto: o celular ja mostra a hora */
  .na-clock { display: none; }
  .na-left { grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 10px; }
  .na-gauges { gap: 6px; padding: 8px; }
  .na-gauge { width: 58px; }
  .na-gauge b { font-size: .62rem; letter-spacing: .08em; }
  .na-gauge small { font-size: .66rem; }
  .na-sys { padding: 8px 10px; }
  .na-row { font-size: .74rem; padding: 3px 0; letter-spacing: .06em; }
  .na-right .na-log { max-height: 38vh; }
  .na-right .na-sub-panel .na-log { max-height: 20vh; }
  .na-panel { padding: 10px 11px; }
}
