/* ╔══════════════════════════════════════════════════════╗
   ║  OBSIDIAN REFRACTIVE — Litehat Command Center       ║
   ║  #000000 Absolute Black • Ouroboros • Wizard         ║
   ║  Speech Bubbles • Particle Dust • Vault Nodes        ║
   ║  Kinetic Typography • Settings Cog • Mobile           ║
   ╚══════════════════════════════════════════════════════╝ */

:root{
--indigo:#6366F1;--cyan:#06B6D4;--emerald:#10B981;--crimson:#EF4444;
--glass-bg:rgba(255,255,255,.025);--glass-border:rgba(255,255,255,.05);
--text:#e8e8f0;--text2:#8989a0;--text3:#55556a;
--rxl:24px;--rlg:16px;--rmd:12px;--rsm:8px;
--sans:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,sans-serif;
--mono:'SF Mono','Fira Code','Cascadia Code',Consolas,monospace;
--ease:cubic-bezier(.4,0,.2,1);
}

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%;width:100%;background:#000;color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;overflow:hidden}
::selection{background:rgba(99,102,241,.45);color:#fff}

/* ── SHELL ── */
.app-shell{display:flex;flex-direction:column;height:100vh;height:100dvh;width:100%;max-width:720px;margin:0 auto;position:relative;overflow:hidden}

/* ═══════════════ HEADER ═══════════════ */
.athanor-header{flex-shrink:0;display:flex;flex-direction:column;align-items:center;padding:1rem 1rem .5rem;position:relative;z-index:10;transition:opacity .6s var(--ease),transform .6s var(--ease)}
.athanor-header.dimmed{opacity:.22;transform:translateY(-8px);pointer-events:none}
.header-title{font-size:.78rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;background:linear-gradient(135deg,var(--indigo),var(--cyan),var(--emerald));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.header-subtitle{font-size:.62rem;color:var(--text3);letter-spacing:.12em;text-transform:uppercase;margin-top:.1rem}

/* Header actions */
.header-actions{position:absolute;top:.85rem;right:.75rem;display:flex;align-items:center;gap:.35rem;z-index:12}
.header-action-btn{width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);color:var(--text2);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.85rem;transition:all .15s var(--ease)}
.header-action-btn:hover{border-color:rgba(99,102,241,.3);color:var(--text);box-shadow:0 0 8px rgba(99,102,241,.15)}
.user-avatar-img{width:26px;height:26px;border-radius:50%;border:1.5px solid rgba(99,102,241,.3);display:none;object-fit:cover}
.auth-btn{font-size:.7rem;font-weight:600;padding:.3rem .7rem;border-radius:20px;background:linear-gradient(135deg,var(--indigo),var(--cyan));color:#fff;border:none;cursor:pointer;transition:all .15s var(--ease)}
.auth-btn:hover{transform:scale(1.04);box-shadow:0 0 12px rgba(99,102,241,.25)}

/* ═══════════════ KINETIC OUROBOROS ═══════════════ */
.ouroboros-ring{position:relative;width:52px;height:52px;flex-shrink:0;margin-bottom:.3rem}
.ouroboros-ring svg{width:100%;height:100%}
.ouroboros-ring.idle #ob-body{animation:ob-idle 12s linear infinite;transform-origin:26px 26px}
.ouroboros-ring.forging #ob-body{animation:ob-forge .75s linear infinite;transform-origin:26px 26px}
@keyframes ob-idle{to{transform:rotate(360deg)}}
@keyframes ob-forge{0%{transform:rotate(0) scale(1)}25%{transform:rotate(90deg) scale(1.05)}50%{transform:rotate(180deg) scale(1)}75%{transform:rotate(270deg) scale(1.05)}to{transform:rotate(360deg) scale(1)}}

/* Ouroboros sparks */
.ouroboros-sparks{position:absolute;inset:-20px;pointer-events:none;z-index:5;opacity:0;transition:opacity .3s var(--ease)}
.ouroboros-sparks.active{opacity:1}
.spark{position:absolute;width:3px;height:3px;border-radius:50%;left:50%;top:50%;animation:spark-burst .6s ease-out forwards;will-change:transform,opacity}
.spark.indigo{background:var(--indigo);box-shadow:0 0 6px var(--indigo),0 0 12px var(--cyan)}
.spark.cyan{background:var(--cyan);box-shadow:0 0 6px var(--cyan),0 0 12px var(--emerald)}
.spark.emerald{background:var(--emerald);box-shadow:0 0 6px var(--emerald),0 0 12px var(--indigo)}
@keyframes spark-burst{0%{transform:translate(0,0) scale(1)}to{transform:translate(var(--sx),var(--sy)) scale(0);opacity:0}}

/* ═══════════════ CHESHIRE WIZARD ═══════════════ */
.cheshire-wizard{width:28px;height:28px;animation:levitate 4s ease-in-out infinite}
@keyframes levitate{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}
.cheshire-wizard .crimson-eye{fill:var(--crimson);animation:eye-pulse 1.2s ease-in-out infinite;filter:drop-shadow(0 0 4px var(--crimson)) drop-shadow(0 0 8px rgba(239,68,68,.6))}
@keyframes eye-pulse{0%,to{opacity:.7}50%{opacity:1;filter:drop-shadow(0 0 8px var(--crimson)) drop-shadow(0 0 16px rgba(239,68,68,.8))}}
.cheshire-wizard .cheshire-teeth polygon{transform-origin:center;transition:transform .15s var(--ease)}

/* ═══════════════ CHAT STREAM ═══════════════ */
.chat-stream{flex:1;overflow-y:auto;padding:.5rem .75rem;display:flex;flex-direction:column;gap:.2rem;-webkit-overflow-scrolling:touch;scroll-behavior:smooth;
  background:
    radial-gradient(ellipse 30% 20% at 30% 20%,rgba(99,102,241,.04) 0%,transparent 70%),
    radial-gradient(ellipse 25% 25% at 70% 60%,rgba(6,182,212,.03) 0%,transparent 70%),
    radial-gradient(ellipse 20% 15% at 50% 80%,rgba(16,185,129,.03) 0%,transparent 70%),
    #000}
.chat-stream::-webkit-scrollbar{width:3px}
.chat-stream::-webkit-scrollbar-thumb{background:rgba(99,102,241,.2);border-radius:3px}

/* Messages */
.msg{max-width:88%;padding:.5rem .8rem;border-radius:var(--rmd);font-size:.82rem;line-height:1.45;animation:msg-in .25s var(--ease);word-break:break-word}
@keyframes msg-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.msg.user{align-self:flex-end;background:rgba(99,102,241,.08);border:1px solid rgba(99,102,241,.15);color:var(--text);border-bottom-right-radius:var(--rsm)}

/* Thought-stream */
.thought-stream-msg{align-self:flex-start;max-width:92%;padding:.45rem .7rem;border-radius:var(--rmd);font-size:.72rem;line-height:1.5;animation:msg-in .25s var(--ease);word-break:break-word;background:rgba(6,182,212,.04);border:1px solid rgba(6,182,212,.12);color:var(--text2);font-style:italic;border-bottom-left-radius:var(--rsm)}
.thought-stream-msg .ts-icon{display:inline-block;margin-right:.35rem;animation:spark-flicker .7s var(--ease) infinite}
@keyframes spark-flicker{0%,to{opacity:.5;transform:scale(.95)}50%{opacity:1;transform:scale(1.08)}}
/* System alerts (non-italic, indigo accent) */
.thought-stream-msg.system{background:rgba(99,102,241,.06);border:1px solid rgba(99,102,241,.15);font-style:normal;color:var(--indigo)}

/* Wizard greeting */
.wizard-greeting{display:flex;align-items:flex-start;gap:.5rem;max-width:100%;padding:0;background:none;border:none}
.wizard-greeting .cheshire-container{display:block;width:28px;height:28px;flex-shrink:0}
.wizard-msg-body{display:flex;flex-direction:column;gap:.1rem;flex:1;min-width:0}
.wizard-name{font-size:.7rem;font-weight:700;color:var(--indigo);letter-spacing:.03em}
.wizard-text{font-size:.78rem;color:var(--text2);line-height:1.4}

/* ═══════════════ SPEECH BUBBLE ═══════════════ */
.speech-bubble{
  position:absolute;top:8px;left:50%;transform:translateX(-50%);
  background:rgba(0,0,0,.85);border:1.5px solid var(--crimson);
  border-radius:12px;padding:6px 14px;color:var(--text);
  font-family:var(--mono);font-size:.68rem;white-space:nowrap;
  pointer-events:none;z-index:20;
  text-shadow:0 0 8px rgba(239,68,68,.4);
  animation:bubble-glitch-in .3s var(--ease);
  opacity:1;transition:opacity .4s var(--ease);
}
.speech-bubble.fading{opacity:0}
.speech-bubble::after{
  content:'';position:absolute;bottom:-6px;left:50%;transform:translateX(-50%);
  width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;
  border-top:6px solid var(--crimson);
}
@keyframes bubble-glitch-in{
  0%{opacity:0;transform:translateX(-50%) translateY(6px);text-shadow:2px 0 var(--cyan),-2px 0 var(--crimson)}
  50%{opacity:.7;transform:translateX(-50%) translateY(-2px);text-shadow:2px 0 var(--cyan),-2px 0 var(--crimson)}
  100%{opacity:1;transform:translateX(-50%) translateY(0)}
}

/* ═══════════════ PORTAL ═══════════════ */
.portal-container{margin:.4rem 0;border:1px solid var(--glass-border);border-radius:var(--rxl);overflow:hidden;background:#fff;position:relative;transition:all .35s var(--ease);display:none;min-height:280px;max-height:58vh;box-shadow:0 0 40px rgba(99,102,241,.08),0 0 80px rgba(6,182,212,.04)}
.portal-container.active{display:block}
.portal-frame{width:100%;height:100%;min-height:280px;border:none;display:block}
.portal-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.9);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:opacity .4s;z-index:2}
.portal-overlay.hidden{opacity:0;pointer-events:none}
.portal-loading-text{color:var(--text2);font-size:.82rem;display:flex;flex-direction:column;align-items:center;gap:.5rem}
.pl-icon{font-size:2.5rem;animation:levitate 1.2s ease-in-out infinite}

/* ═══════════════ INPUT BAR ═══════════════ */
.chat-input-section{flex-shrink:0;padding:.4rem .75rem .7rem;position:relative;z-index:5}
.chat-input-glass{display:flex;align-items:flex-end;gap:.5rem;background:rgba(255,255,255,.025);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.05);border-radius:var(--rlg);padding:.5rem .8rem;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}
.chat-input-glass:focus-within{border-color:rgba(99,102,241,.35);box-shadow:0 0 24px rgba(99,102,241,.06),inset 0 1px 0 rgba(255,255,255,.02)}
#chat-input{flex:1;background:transparent;border:none;color:var(--text);font-family:var(--sans);font-size:.88rem;line-height:1.4;resize:none;outline:none;max-height:100px;padding:.15rem 0}
#chat-input::placeholder{color:var(--text3)}

/* Send btn — Google AI Studio style */
.send-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:#1a1a1e;border:1.5px solid rgba(255,255,255,.08);cursor:pointer;flex-shrink:0;transition:all .15s var(--ease);overflow:visible}
.send-btn:hover:not(:disabled){border-color:rgba(99,102,241,.4);box-shadow:0 0 12px rgba(99,102,241,.25);transform:scale(1.06)}
.send-btn:active:not(:disabled){transform:scale(.94)}
.send-btn:disabled{opacity:.3;cursor:not-allowed}
.send-btn .bolt-icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center}
.send-btn .bolt-icon svg{width:14px;height:14px}
.send-btn .bolt-icon svg path{fill:#e8e8f0;transition:fill .15s}
.send-btn:hover:not(:disabled) .bolt-icon svg path{fill:#fff}
.send-btn.sending .bolt-icon svg{animation:bolt-pulse .6s ease-in-out infinite}
@keyframes bolt-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(.82);opacity:.5}}

/* ═══════════════ RESULT BAR ═══════════════ */
.result-preview-bar{flex-shrink:0;display:none;align-items:center;justify-content:space-between;padding:.45rem .85rem;background:rgba(16,185,129,.05);border-top:1px solid rgba(16,185,129,.1);gap:.5rem;flex-wrap:wrap}
.result-preview-bar.visible{display:flex}
.rp-text{font-size:.74rem;color:var(--emerald);font-weight:600}
.rp-actions{display:flex;gap:.4rem}
.rp-btn{display:flex;align-items:center;gap:.25rem;padding:.3rem .7rem;border-radius:var(--rsm);font-size:.72rem;font-weight:600;cursor:pointer;transition:all .15s var(--ease);border:none;color:#fff}
.rp-btn.preview-btn{background:linear-gradient(135deg,var(--indigo),var(--cyan))}
.rp-btn.publish-btn{background:linear-gradient(135deg,var(--emerald),var(--cyan))}
.rp-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 14px rgba(99,102,241,.3)}
.rp-btn:disabled{opacity:.45;cursor:not-allowed}

/* ═══════════════ KINETIC TYPOGRAPHY ═══════════════ */
.kinetic-layer{position:absolute;bottom:80px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:.25rem;pointer-events:none;z-index:15;width:90%;max-width:600px}
.kinetic-fragment{font-family:var(--mono);font-size:.68rem;color:var(--indigo);opacity:0;transform:translateY(8px);transition:opacity .3s var(--ease),transform .3s var(--ease);text-align:center;text-shadow:0 0 12px rgba(99,102,241,.4);letter-spacing:.04em}
.kinetic-fragment.animate{opacity:1;transform:translateY(0)}
.kinetic-fragment.fade{opacity:0;transform:translateY(-4px)}
.kinetic-fragment:hover{text-shadow:0 0 2px var(--indigo),0 0 4px var(--indigo),0 0 8px var(--indigo),0 0 16px var(--cyan);color:var(--cyan)}

/* ═══════════════ TOASTS ═══════════════ */
.toast-container{position:fixed;bottom:.75rem;right:.75rem;display:flex;flex-direction:column;gap:.4rem;z-index:1000;pointer-events:none}
.toast{padding:.55rem .9rem;border-radius:var(--rmd);background:rgba(0,0,0,.88);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--glass-border);color:var(--text);font-size:.76rem;animation:toast-in .3s var(--ease);max-width:320px}
.toast.error{border-color:rgba(239,68,68,.3)}
.toast.success{border-color:rgba(16,185,129,.3)}
@keyframes toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* ═══════════════ VAULT DRAWER ═══════════════ */
.vault-drawer{position:fixed;top:0;right:0;width:320px;height:100vh;height:100dvh;background:#000;border-left:1px solid rgba(255,255,255,.04);z-index:200;transform:translateX(100%);transition:transform .35s var(--ease);display:flex;flex-direction:column;overflow:hidden}
.vault-drawer.open{transform:translateX(0)}
.vault-drawer-header{padding:1.25rem 1rem;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.04);flex-shrink:0}
.vault-drawer-title{font-size:.85rem;font-weight:700;background:linear-gradient(135deg,var(--indigo),var(--cyan),var(--emerald));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.vault-drawer-close{width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);color:var(--text2);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.9rem;transition:all .15s var(--ease)}
.vault-drawer-close:hover{border-color:rgba(239,68,68,.3);color:var(--crimson)}
.vault-nodes{flex:1;overflow-y:auto;padding:.75rem;display:flex;flex-direction:column;gap:.5rem}
.vault-node{display:flex;align-items:center;gap:.65rem;padding:.65rem .85rem;background:rgba(255,255,255,.015);border:1px solid rgba(255,255,255,.03);border-radius:var(--rmd);cursor:pointer;transition:all .2s var(--ease);animation:node-slide-in .35s var(--ease) backwards;position:relative;overflow:hidden}
.vault-node::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 80% 80% at 50% 50%,rgba(99,102,241,.08) 0%,transparent 70%);opacity:0;transition:opacity .3s var(--ease)}
.vault-node:hover{transform:translateX(-4px);border-color:rgba(99,102,241,.2);box-shadow:0 0 20px rgba(99,102,241,.08)}
.vault-node:hover::before{opacity:1}
@keyframes node-slide-in{from{opacity:0;transform:translateX(16px)}to{opacity:1;transform:translateX(0)}}
.vault-node-icon{font-size:1.4rem;flex-shrink:0}
.vault-node-name{flex:1;font-size:.8rem;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vault-node-status{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.vault-node-status.live{background:var(--emerald);box-shadow:0 0 6px var(--emerald)}
.vault-node-status.building{background:#F59E0B;box-shadow:0 0 6px #F59E0B;animation:st-pulse .8s infinite}
.vault-node-status.failed{background:var(--crimson);box-shadow:0 0 6px var(--crimson)}
.vault-node-status.pending{background:var(--text3)}
@keyframes st-pulse{0%,to{opacity:1}50%{opacity:.3}}
.vault-empty{padding:2rem 1rem;text-align:center;color:var(--text3);font-size:.78rem;font-style:italic}

/* ═══════════════ SETTINGS PANEL ═══════════════ */
.settings-panel{position:fixed;bottom:0;left:0;right:0;background:#000;border-top:1px solid rgba(255,255,255,.04);z-index:190;transform:translateY(100%);transition:transform .35s var(--ease);max-height:60vh;overflow-y:auto;display:flex;flex-direction:column}
.settings-panel.open{transform:translateY(0)}
.settings-header{padding:1rem;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.04);flex-shrink:0}
.settings-title{font-size:.85rem;font-weight:700;color:var(--text)}
.settings-close{width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);color:var(--text2);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s var(--ease)}
.settings-close:hover{border-color:rgba(239,68,68,.3);color:var(--crimson)}
.settings-body{padding:1rem;display:flex;flex-direction:column;gap:.75rem}
.settings-section-title{font-size:.72rem;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:.06em;margin-bottom:.25rem}
.token-row{display:flex;align-items:center;justify-content:space-between;padding:.55rem .75rem;background:rgba(255,255,255,.015);border:1px solid rgba(255,255,255,.03);border-radius:var(--rsm);font-size:.78rem;gap:.4rem}
.token-row button{background:none;border:none;color:var(--crimson);cursor:pointer;font-size:.7rem;padding:.2rem;flex-shrink:0}
.token-type{font-size:.65rem;padding:.1rem .45rem;border-radius:10px;background:rgba(99,102,241,.12);color:var(--indigo);text-transform:uppercase;font-weight:600}
.settings-input{width:100%;padding:.55rem .75rem;background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.06);border-radius:var(--rsm);color:var(--text);font-family:var(--sans);font-size:.8rem;outline:none;transition:border-color .15s}
.settings-input:focus{border-color:rgba(99,102,241,.3)}
.settings-select{width:100%;padding:.55rem .75rem;background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.06);border-radius:var(--rsm);color:var(--text);font-family:var(--sans);font-size:.8rem;outline:none;cursor:pointer;appearance:none}
.settings-btn{padding:.55rem 1rem;background:linear-gradient(135deg,var(--indigo),var(--cyan));border:none;border-radius:var(--rsm);color:#fff;font-weight:600;font-size:.78rem;cursor:pointer;transition:all .15s var(--ease);align-self:flex-start}
.settings-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(99,102,241,.25)}

/* ═══════════════ SETTINGS COG ═══════════════ */
.settings-cog{position:fixed;bottom:1rem;right:1rem;width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.04);color:var(--text3);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:150;opacity:0;transition:opacity .3s var(--ease),border-color .15s,color .15s;font-size:1rem}
.settings-cog.visible,.settings-cog:hover{opacity:1;border-color:rgba(99,102,241,.25);color:var(--text);box-shadow:0 0 12px rgba(99,102,241,.1)}
.settings-cog-menu{display:none;position:absolute;bottom:44px;right:0;background:#000;border:1px solid rgba(255,255,255,.08);border-radius:var(--rmd);padding:.75rem;min-width:200px;flex-direction:column;gap:.5rem;z-index:151}
.settings-cog:hover .settings-cog-menu{display:flex}
.cog-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.68rem;color:var(--text2);font-family:var(--mono)}
.cog-row input[type=range]{width:80px;accent-color:var(--indigo)}

/* ═══════════════ PARTICLE DUST ═══════════════ */
.particle-dust{position:fixed;inset:0;pointer-events:none;z-index:1;overflow:hidden}
.dust-particle{position:absolute;width:1.5px;height:1.5px;background:rgba(255,255,255,.15);border-radius:50%;animation:dust-rise linear forwards;will-change:transform,opacity}
@keyframes dust-rise{0%{transform:translateY(0) translateX(0);opacity:.3}70%{opacity:.15}to{transform:translateY(-110vh) translateX(var(--dx));opacity:0}}

/* ═══════════════ RESPONSIVE ═══════════════ */
@media(min-width:640px){
  .app-shell{max-width:720px}
  .chat-stream{padding:.5rem 1rem}
  .chat-input-section{padding:.4rem 1rem .7rem}
  .msg{max-width:82%}
  .thought-stream-msg{max-width:82%}
  .portal-container{max-height:52vh}
  .vault-drawer{width:360px}
}
@media(min-width:1024px){
  .app-shell{max-width:780px}
}
@media(max-width:480px){
  .send-btn{width:42px;height:42px}
  .bolt-icon svg{width:18px;height:18px}
  #chat-input{font-size:.92rem}
  .header-action-btn{width:36px;height:36px;font-size:1rem}
  .ouroboros-ring{width:42px;height:42px}
}
