/* AI Architect Assistant — UI kit styles (depends on ../../colors_and_type.css) */
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg-0);color:var(--fg-1);font-family:var(--font-body);overflow:hidden}
#root{height:100vh}

.app{display:grid;grid-template-columns:64px 1fr 360px;grid-template-rows:minmax(0,1fr);height:100vh;background:var(--bg-0)}
.app > *{min-height:0}

/* ---------- Icon rail ---------- */
.rail{background:var(--bg-1);border-right:1px solid var(--line);display:flex;flex-direction:column;
  align-items:center;padding:14px 0;gap:6px}
.rail .logo{width:40px;height:40px;border-radius:12px;background:#0a0e15;display:flex;align-items:center;justify-content:center;
  box-shadow:var(--inset-hairline),var(--glow-blue-sm);margin-bottom:14px;overflow:hidden}
.rail .logo img{width:30px;filter:drop-shadow(0 0 5px rgba(91,184,255,.7))}
.rail button{width:42px;height:42px;border:0;background:transparent;border-radius:12px;color:var(--fg-3);
  display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--dur) var(--ease-out)}
.rail button:hover{background:var(--bg-3);color:var(--fg-2)}
.rail button.active{color:var(--gr8-cyan);background:rgba(46,155,255,.12);box-shadow:inset 0 0 0 1px rgba(46,155,255,.4)}
.rail button.active svg{filter:drop-shadow(0 0 5px rgba(91,184,255,.8))}
.rail .spacer{flex:1}
.rail .avatar{width:34px;height:34px;border-radius:50%;object-fit:cover;box-shadow:var(--inset-hairline)}

/* ---------- Canvas region ---------- */
.canvas-wrap{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}
.topbar{height:56px;display:flex;align-items:center;gap:14px;padding:0 20px;border-bottom:1px solid var(--line);
  background:rgba(12,17,24,.6);backdrop-filter:blur(14px);z-index:5}
.topbar .title{font-family:var(--font-display);font-weight:600;font-size:15px}
.topbar .crumb{font-family:var(--font-mono);font-size:11px;color:var(--fg-3);letter-spacing:.04em}
.topbar .seg{display:flex;gap:2px;background:var(--bg-2);border-radius:var(--r-pill);padding:3px;box-shadow:var(--inset-hairline)}
.topbar .seg button{border:0;background:transparent;color:var(--fg-3);font-family:var(--font-mono);font-size:11px;
  letter-spacing:.06em;padding:6px 13px;border-radius:var(--r-pill);cursor:pointer;text-transform:uppercase}
.topbar .seg button.on{background:var(--gr8-blue);color:#04111f;box-shadow:var(--glow-blue-sm)}
.topbar .right{margin-left:auto;display:flex;align-items:center;gap:10px}

.canvas{flex:1;position:relative;overflow:hidden;
  background:
    radial-gradient(120% 90% at 50% 38%,rgba(28,70,120,.35),transparent 62%),
    var(--bg-0)}
/* isometric floor grid */
.grid-floor{position:absolute;inset:-20%;
  background-image:
    repeating-linear-gradient(60deg,rgba(91,184,255,.10) 0 1px,transparent 1px 46px),
    repeating-linear-gradient(-60deg,rgba(91,184,255,.10) 0 1px,transparent 1px 46px);
  transform:perspective(900px) rotateX(58deg) scale(1.4);transform-origin:center 60%;
  mask-image:radial-gradient(70% 60% at 50% 45%,#000 30%,transparent 80%)}

.scene{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.model{transform-style:preserve-3d;transform:rotateX(58deg) rotateZ(-45deg);animation:spin 28s linear infinite}
@keyframes spin{to{transform:rotateX(58deg) rotateZ(315deg)}}
.cube{position:absolute;transform-style:preserve-3d}
.face{position:absolute;border:1px solid rgba(127,224,255,.55);background:rgba(46,155,255,.05);
  box-shadow:0 0 8px rgba(91,184,255,.25) inset}
.scan{position:absolute;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--gr8-cyan),transparent);
  box-shadow:0 0 14px var(--gr8-blue-glow);animation:scan 4s var(--ease) infinite;opacity:.8}
@keyframes scan{0%{top:14%}50%{top:78%}100%{top:14%}}

.cv-label{position:absolute;top:16px;left:20px;font-family:var(--font-mono);font-size:11px;
  color:var(--gr8-blue-glow);letter-spacing:.12em;text-transform:uppercase;display:flex;align-items:center;gap:8px}
.pulse{width:7px;height:7px;border-radius:50%;background:var(--gr8-cyan);box-shadow:var(--glow-blue-sm);animation:pl 1.4s infinite}
@keyframes pl{50%{opacity:.3}}

/* variant strip */
.variants{position:absolute;left:0;right:0;bottom:0;display:flex;gap:12px;padding:14px 20px;z-index:4;
  background:linear-gradient(0deg,rgba(7,9,13,.92),transparent)}
.variant{width:118px;height:78px;border-radius:var(--r-md);flex:none;cursor:pointer;position:relative;overflow:hidden;
  background:radial-gradient(120% 120% at 30% 20%,#13314f,#080d15);box-shadow:var(--inset-hairline);
  transition:all var(--dur) var(--ease-out)}
.variant:after{content:"";position:absolute;inset:14px;
  background:repeating-linear-gradient(60deg,transparent 0 8px,rgba(127,224,255,.34) 8px 9px),
             repeating-linear-gradient(-60deg,transparent 0 8px,rgba(127,224,255,.22) 8px 9px)}
.variant .vn{position:absolute;bottom:5px;left:7px;z-index:2;font-family:var(--font-mono);font-size:9px;color:var(--fg-2)}
.variant:hover{transform:translateY(-3px)}
.variant.sel{box-shadow:inset 0 0 0 2px var(--gr8-blue),var(--glow-blue-sm)}

/* ---------- Chat panel ---------- */
.chat{background:var(--bg-1);border-left:1px solid var(--line);display:flex;flex-direction:column;min-width:0}
.chat .head{padding:16px 18px 12px;border-bottom:1px solid var(--line)}
.chat .head .eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--gr8-blue-glow)}
.chat .head h3{font-family:var(--font-display);font-weight:600;font-size:17px;margin:5px 0 0}
.thread{flex:1;overflow-y:auto;padding:18px;display:flex;flex-direction:column;gap:14px}
.msg{max-width:90%;font-size:14px;line-height:1.55}
.msg.user{align-self:flex-end;background:var(--gr8-blue);color:#04111f;padding:10px 15px;border-radius:16px 16px 4px 16px;box-shadow:var(--glow-blue-sm)}
.msg.ai{align-self:flex-start;background:var(--bg-2);color:var(--fg-1);padding:13px 16px;border-radius:16px 16px 16px 4px;box-shadow:var(--inset-hairline)}
.msg.ai .think{font-family:var(--font-mono);font-size:12px;color:var(--gr8-blue-glow);display:flex;align-items:center;gap:7px;margin-bottom:9px}
.msg.ai ul{margin:0;padding-left:16px;color:var(--fg-2);font-size:13px}
.msg.ai ul li{margin:4px 0;opacity:0;animation:rise .4s var(--ease-out) forwards}
.caret{display:inline-block;width:7px;height:15px;background:var(--gr8-cyan);vertical-align:-2px;margin-left:2px;animation:bl 1s steps(1) infinite}
@keyframes bl{50%{opacity:0}} @keyframes rise{to{opacity:1;transform:translateY(0)}}
.composer{padding:14px;border-top:1px solid var(--line)}
.composer .sugg{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:11px}
.composer .sugg button{font-size:11px;color:var(--fg-2);background:var(--bg-2);border:0;box-shadow:var(--inset-hairline);
  padding:6px 11px;border-radius:var(--r-pill);cursor:pointer;font-family:var(--font-body);transition:all var(--dur) var(--ease-out)}
.composer .sugg button:hover{color:var(--gr8-cyan);box-shadow:inset 0 0 0 1px var(--gr8-blue)}
.prompt{display:flex;align-items:center;gap:8px;background:var(--bg-2);border-radius:var(--r-pill);padding:7px 7px 7px 18px;
  box-shadow:var(--inset-hairline);transition:box-shadow var(--dur)}
.prompt.focus{box-shadow:0 0 0 2px var(--gr8-blue),var(--glow-blue-sm)}
.prompt input{flex:1;background:none;border:0;outline:0;color:var(--fg-1);font-family:var(--font-body);font-size:14px}
.prompt input::placeholder{color:var(--fg-3)}
.prompt .send{width:36px;height:36px;border-radius:50%;border:0;background:var(--gr8-blue);color:#04111f;font-size:17px;
  cursor:pointer;box-shadow:var(--glow-blue-sm);flex:none;display:flex;align-items:center;justify-content:center;transition:all var(--dur)}
.prompt .send:hover{background:var(--gr8-blue-600)}
