/* Inspector advanced - env/var/tex-sub/prod-layout/print-area/ai-drawer - extracted from inspector.css (phase C) */

/* ── Environment Inspector ── */
.env-map-preview{
  margin:4px 14px 8px;height:80px;border-radius:var(--r-sm);border:1px solid var(--border);
  overflow:hidden;display:flex;align-items:center;justify-content:center;
  background:var(--bg);position:relative;
}
.env-map-preview img{width:100%;height:100%;object-fit:cover;}
.env-map-placeholder{font-size:11px;color:var(--text-muted);}
.env-map-actions{display:flex;gap:6px;padding:0 14px 8px;}
.env-map-btn{
  flex:1;padding:5px 0;font-size:11px;border:1px solid var(--border);border-radius:var(--r-sm);
  background:var(--surface-raised);color:var(--text);cursor:pointer;display:flex;
  align-items:center;justify-content:center;gap:4px;transition:var(--tr);
}
.env-map-btn:hover:not(:disabled){background:var(--bg);border-color:var(--text-muted);}
.env-map-btn:disabled{opacity:.4;cursor:default;}
.env-card-active{outline:2px solid var(--primary);outline-offset:-2px;}

/* ── Variable type mini-menu ── */
.var-type-menu{
  position:fixed;z-index:9999;min-width:140px;
  background:var(--surface);border:1px solid var(--border);border-radius:6px;
  box-shadow:0 6px 20px rgba(0,0,0,.18);padding:4px 0;
}
.var-type-menu-item{
  display:flex;align-items:center;gap:8px;padding:6px 12px;
  font-size:12px;color:var(--text);cursor:pointer;
}
.var-type-menu-item:hover{background:var(--hover);}
.var-type-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}

/* ── Texture Sub-Area (expandable row under param) ── */
.tex-sub{
  display:none;grid-column:1/-1;position:relative;
  background:var(--bg);
  border-radius:var(--r-sm) 0 var(--r-sm) var(--r-sm);
  padding:10px 14px 12px;margin:-3px 14px 6px 14px;
}
.tex-sub::before{
  content:'';position:absolute;top:-34px;right:0;
  width:34px;height:34px;background:var(--bg);
  border-radius:var(--r-sm) var(--r-sm) 0 0;
}
.tex-sub.open{display:block;}
.tex-sub-header{
  display:flex;align-items:center;gap:8px;margin-bottom:10px;
  padding-bottom:8px;border-bottom:1px solid var(--border-light);
}
.tex-sub-name{
  flex:1;font-size:11px;color:var(--text);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;font-weight:500;
}
.tex-sub-actions{display:flex;gap:4px;}
.tex-sub-btn{
  border:1px solid var(--border);background:var(--surface-raised);color:var(--text-secondary);
  font-size:10px;padding:6px 10px;border-radius:var(--r-sm);cursor:pointer;
  display:flex;align-items:center;gap:4px;transition:var(--tr);font-weight:500;
  line-height:1;
}
.tex-sub-btn:hover{background:var(--border);color:var(--text);border-color:var(--text-muted);}
.tex-sub-btn.icon-only{padding:6px;aspect-ratio:1;justify-content:center;}
.tex-sub-btn.danger{border-color:var(--border);padding:6px;aspect-ratio:1;justify-content:center;}
.tex-sub-btn.danger:hover{background:var(--red-bg, #fde8e8);color:var(--red);border-color:var(--red);}
.tex-sub-btn svg{width:12px;height:12px;}
/* Drag-over highlight for tex-sub drop zone */
.tex-sub-header.drop-hover{background:var(--primary-bg);border-radius:var(--r-sm);}
.param-tex.drop-hover{outline:2px solid var(--primary);outline-offset:-2px;border-radius:var(--r-sm);}
.tex-sub-grid{
  display:grid;grid-template-columns:auto 1fr auto 1fr;gap:6px 8px;
  align-items:center;
}
.tex-sub-label{
  font-size:11px;color:var(--text-secondary);text-align:right;white-space:nowrap;
}
.tex-sub-input{
  font-size:11px;padding:4px 6px;border:1px solid var(--border);border-radius:4px;
  background:var(--surface-raised);color:var(--text);text-align:center;width:100%;
  font-family:inherit;
}
.tex-sub-input:focus{border-color:var(--primary);outline:none;}
.tex-sub-input select,.tex-sub-grid select.tex-sub-input{
  font-size:11px;padding:4px 6px;border:1px solid var(--border);border-radius:4px;
  background:var(--surface-raised);color:var(--text);cursor:pointer;width:100%;
}
.tex-sub-uv{
  grid-template-columns:auto 1fr;margin-top:8px;padding-top:8px;
  border-top:1px solid var(--border-light);
}

/* ── Section active-count badge ── */
.mat-section-count{
  font-size:9px;font-weight:600;background:var(--primary-bg);
  color:var(--primary);padding:1px 6px;border-radius:10px;margin-left:auto;
}

/* ── Prod. Layout Inspector ── */
/* Parameters 2×2 grid (legacy) */
.pl-params-grid{
  display:grid;
  grid-template-columns:auto 1fr 18px 1fr;
  gap:6px 4px;
  align-items:center;
  padding:6px 14px;
}
.pl-params-grid .transform-lock{justify-self:center;}
.pl-dim-label{
  font-size:10px;font-weight:600;color:var(--text-muted);text-align:right;
}

/* 2D Transform row grid  –  label | axis | field | axis | field */
.xf2d-row{
  display:grid;
  grid-template-columns:60px 14px 1fr 14px 1fr;
  gap:4px;
  align-items:center;
  padding:4px 14px;
}
.xf2d-label{
  font-size:10px;font-weight:600;color:var(--text-muted);
  display:flex;align-items:center;gap:4px;
  white-space:nowrap;
}
.xf2d-label .transform-lock{
  width:16px;height:16px;flex-shrink:0;
}
.xf2d-axis{
  font-size:9px;font-weight:700;color:var(--text-faint);
  text-align:center;user-select:none;
}

/* Full-width textarea for text elements */
.fc-textarea{
  width:100%;box-sizing:border-box;resize:vertical;
  min-height:42px;padding:6px 8px;
  font-size:11px;font-family:inherit;line-height:1.4;
  border:1px solid var(--border);border-radius:var(--r-sm);
  background:var(--surface);color:var(--text);
}
.fc-textarea:focus{
  outline:none;border-color:var(--primary);
}

/* Tighter layout inside canvas/PA inspectors */
#inspCanvasElement .fc-row.compact,
#inspPaElement .fc-row.compact{
  gap:4px;
  min-height:24px;
  padding-top:2px;padding-bottom:2px;
}

/* ── Appearance row layout ── */
/* 5-col: label | swatch | hex | slider | num-opacity */
.appear-row{
  display:grid;
  grid-template-columns:50px 28px 90px 1fr 60px;
  gap:4px;
  align-items:center;
  padding:4px 14px;
}
.appear-row .fc-color{grid-column:2;}
.appear-row .fc-hex{grid-column:3;width:100%;box-sizing:border-box;}
.appear-row .fc-slider{grid-column:4;width:100%;}
.appear-row .appear-num{grid-column:5;}
.appear-num{width:60px;flex:0 0 60px;}

/* Stroke-weight row: label | num | position btns */
.stroke-w-row{
  display:grid;
  grid-template-columns:50px 1fr auto;
  gap:4px;
  align-items:center;
  padding:4px 14px;
}
.stroke-w-row .stroke-w-label{
  font-size:10px;font-weight:600;color:var(--text-muted);white-space:nowrap;
}

/* ── Paragraph / Character rows ── */
/* Family row: two dropdowns side by side */
.para-family-row{
  display:grid;
  grid-template-columns:50px 1fr 100px;
  gap:4px;
  align-items:center;
  padding:4px 14px;
}
/* Single-value paragraph row (Size, Tracking, Leading) */
.para-val-row{
  display:grid;
  grid-template-columns:50px 56px 1fr;
  gap:4px;
  align-items:center;
  padding:4px 14px;
}
/* Dual-value row (Scale H/V) — reuses xf2d-row pattern */
.para-dual-row{
  display:grid;
  grid-template-columns:50px 14px 1fr 14px 1fr;
  gap:4px;
  align-items:center;
  padding:4px 14px;
}
/* Buttons row (Style, Align) */
.para-btns-row{
  display:grid;
  grid-template-columns:50px 1fr;
  gap:4px;
  align-items:center;
  padding:4px 14px;
}

.appear-text-label, .para-row-label{
  font-size:10px;font-weight:600;color:var(--text-muted);
  white-space:nowrap;
}

/* ── Print Area Inspector ── */
/* chain icon next to Size section label */
#inspPaDimsSection .mat-section-head .transform-lock{
  width:16px;height:16px;flex-shrink:0;margin-left:4px;
}
/* restore button styling */
.pa-restore-btn{display:inline-flex;align-items:center;gap:4px;}
.pa-restore-btn svg{flex-shrink:0;}
/* measure button */
.pa-measure-btn{
  width:100%;display:inline-flex;align-items:center;justify-content:center;gap:6px;
}
.pa-measure-btn svg{flex-shrink:0;}

/* ── Paragraph section ── */
/* Toggle buttons: match transform-lock style */
.para-style-btns{
  display:flex;gap:2px;
}
.para-style-btn{
  width:26px;height:26px;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--border);border-radius:var(--r-sm);background:none;
  color:var(--text-muted);cursor:pointer;font-size:12px;padding:0;
  transition:color .12s, border-color .12s, background .12s;
}
.para-style-btn:hover{color:var(--text);border-color:var(--border-focus);}
.para-style-btn.active{
  color:var(--primary);border-color:var(--primary);background:var(--primary-bg);
}
.appear-mixed{
  font-size:10px;color:var(--text-muted);font-style:italic;
  padding:0 2px;
}

/* Keep PA canvas color wrap flex */
#inspCanvasPa .fc-color-wrap{
  flex:1;min-width:0;
}

.pl-unit-dd{flex:unset;}
.pl-unit-dd .fc-dropdown-btn{
  font-size:10px;min-width:unset;width:100%;
  padding:0 20px;text-align:center;
}

.insp-small-btn{
  width:100%;padding:5px 10px;font-size:11px;font-weight:500;
  border:1px solid var(--border);border-radius:var(--r-sm);
  background:var(--surface);color:var(--text-secondary);cursor:pointer;
  transition:background .15s,color .15s,opacity .15s;
}
.insp-small-btn:disabled{
  opacity:.45;cursor:default;pointer-events:none;
}
.insp-small-btn.modified{
  border-color:var(--primary);color:var(--primary);background:var(--primary-bg);
}
.insp-small-btn:hover:not(:disabled){background:var(--bg);color:var(--text);}
/* Hovering a .modified button stays in primary-blue tones (overrides the generic hover) */
.insp-small-btn.modified:hover:not(:disabled){
  background:var(--primary-bg-hover);color:var(--primary);
  border-color:color-mix(in srgb,var(--primary) 70%,transparent);
}
.insp-small-btn.primary{
  background:var(--primary);color:#fff;border-color:var(--primary);
}
.insp-small-btn.primary:hover{
  background:color-mix(in srgb,var(--primary) 85%,#fff);
  border-color:color-mix(in srgb,var(--primary) 85%,#fff);
  color:#fff;opacity:1;
}
/* Candidate list */
.pl-candidate-list{max-height:260px;overflow-y:auto;}
.pl-candidate-row{
  display:flex;align-items:center;gap:6px;padding:4px 2px;
  font-size:11px;border-bottom:1px solid var(--border-light);
}
.pl-candidate-row:last-child{border-bottom:none;}
.pl-candidate-row label{display:flex;align-items:center;gap:6px;flex:1;cursor:pointer;}
.pl-candidate-name{font-weight:500;color:var(--text);}
.pl-candidate-meta{color:var(--text-faint);font-size:10px;margin-left:auto;}
.pl-candidate-warn{color:var(--orange);font-size:10px;}
/* Generation summary */
.pl-gen-info{font-size:11px;color:var(--text-muted);padding:2px 0;}
.pl-gen-warn{font-size:11px;color:var(--orange);padding:2px 0;}
.pl-gen-btn{padding:7px 10px;font-size:12px;border-radius:var(--r-md,6px);}     

/* ══════════════════════════════════════════════════════════════
 *  §29b  PA 3D Mapping controls
 * ══════════════════════════════════════════════════════════════ */

/* Small label above mesh slot */
.pa-map-slot-label{
  font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;
  color:var(--text-muted);padding:4px 14px 2px;
}

/* Mode toggle pill — UV | Decal */
.pa-map-mode-toggle{
  display:flex;gap:0;padding:6px 14px 4px;
}
.pa-map-mode-btn{
  flex:1;display:flex;align-items:center;justify-content:center;gap:5px;
  padding:5px 6px;font-size:11px;font-weight:500;cursor:pointer;
  border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);
  transition:background .12s,color .12s,border-color .12s;
}
.pa-map-mode-btn:first-child{ border-radius:var(--r-sm) 0 0 var(--r-sm); }
.pa-map-mode-btn:last-child { border-radius:0 var(--r-sm) var(--r-sm) 0; margin-left:-1px; }
.pa-map-mode-btn.active{
  background:var(--primary-bg,rgba(99,102,241,.12));
  color:var(--primary);border-color:var(--primary);
  z-index:1;
}
.pa-map-mode-btn:hover:not(.active){
  background:var(--primary-bg-hover);color:var(--primary);
  border-color:color-mix(in srgb,var(--primary) 70%,transparent);
}

/* Material dropdown row */
.fc-select-wrap{ position:relative; }
.fc-select-wrap .fc-select{ width:100%; }

/* Mesh picker popup */
.pa-map-picker-popup{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--r-sm);
  box-shadow:var(--sh-md,0 4px 16px rgba(0,0,0,.18));
  min-width:200px;max-width:280px;
  max-height:240px;overflow-y:auto;
  font-size:12px;
}
.pa-map-picker-head{
  padding:7px 12px 5px;font-size:10px;font-weight:700;
  text-transform:uppercase;letter-spacing:.5px;
  color:var(--text-muted);border-bottom:1px solid var(--border-light);
}
.pa-map-picker-row{
  display:flex;align-items:center;gap:8px;
  width:100%;padding:8px 12px;text-align:left;
  background:none;border:none;cursor:pointer;color:var(--text);
  transition:background .1s;
}
.pa-map-picker-row:hover{ background:var(--hover-bg); }

/* ══════════════════════════════════════════════════════════════
 *  §30  AI Agent Chat Drawer
 * ══════════════════════════════════════════════════════════════ */
.ai-drawer{
  background:var(--surface);
  display:flex;flex-direction:column;
  flex-shrink:0;overflow:hidden;
  border-radius:var(--r);
  box-shadow:var(--sh-sm);
}
.ai-drawer.animating{transition:height .25s ease;}
.ai-drawer.collapsed{height:37px;}

/* AI drawer splitter → uses .splitter.is-v from components.css */

/* Header */
.ai-drawer-head{
  display:flex;align-items:center;
  height:37px;box-sizing:border-box;flex-shrink:0;
  cursor:default;user-select:none;
  border-bottom:1px solid var(--border-light);
  background:var(--surface);
}
.ai-drawer.collapsed .ai-drawer-head{border-bottom:none;}
.ai-drawer-toggle{
  flex:1;display:flex;align-items:center;justify-content:center;gap:6px;
  background:none;border:none;padding:0;margin:0;cursor:pointer;
  font:inherit;color:inherit;height:100%;
  transition:background .15s;
}
.ai-drawer-toggle:hover{background:transparent;}
.ai-drawer-title{
  font-size:12px;font-weight:600;color:var(--text);
  text-transform:uppercase;letter-spacing:.5px;
}
.ai-drawer-badge{
  font-size:10px;font-weight:700;line-height:1;
  padding:2px 6px;border-radius:10px;
  background:var(--primary);color:#fff;
}
.ai-drawer-chev{
  width:14px;height:14px;color:var(--text-muted);
  transition:transform .15s;transform:rotate(90deg);flex-shrink:0;
}
.ai-drawer.collapsed .ai-drawer-chev{transform:rotate(0);}

/* Body */
.ai-drawer-body{
  flex:1;display:flex;flex-direction:column;overflow:hidden;
}
.ai-drawer.collapsed .ai-drawer-body{display:none;}

/* Messages */
.ai-chat-messages{
  flex:1;overflow-y:auto;padding:12px;
  display:flex;flex-direction:column;gap:10px;
}
.ai-msg{display:flex;gap:8px;align-items:flex-start;}
.ai-msg-agent{flex-direction:row;}
.ai-msg-user{flex-direction:row-reverse;}

.ai-msg-avatar{
  width:24px;height:24px;border-radius:50%;flex-shrink:0;
  display:grid;place-items:center;
}
.ai-msg-agent .ai-msg-avatar{
  background:linear-gradient(135deg,#e8e0ff,#d4c8ff);
  color:var(--primary);
}
.ai-msg-agent .ai-msg-avatar svg{width:14px;height:14px;}
.ai-msg-user .ai-msg-avatar{
  background:var(--primary);color:#fff;
  font-size:10px;font-weight:700;
}

.ai-msg-bubble{max-width:85%;}
.ai-msg-text{
  font-size:12px;line-height:1.55;color:var(--text);
  padding:8px 12px;border-radius:var(--r-sm);
}
.ai-msg-agent .ai-msg-text{background:var(--bg);}
.ai-msg-user .ai-msg-text{background:var(--primary-bg);color:var(--primary);}

/* Typing indicator */
.ai-typing{display:flex;gap:4px;align-items:center;padding:8px 12px;}
.ai-typing-dot{
  width:6px;height:6px;border-radius:50%;background:var(--text-muted);
  animation:aiDotPulse 1.2s infinite ease-in-out;
}
.ai-typing-dot:nth-child(2){animation-delay:.2s;}
.ai-typing-dot:nth-child(3){animation-delay:.4s;}
@keyframes aiDotPulse{
  0%,80%,100%{opacity:.3;transform:scale(.8);}
  40%{opacity:1;transform:scale(1);}
}

/* Suggestions */
.ai-chat-suggestions{
  display:flex;gap:6px;padding:0 12px 8px;flex-wrap:wrap;
}
.ai-suggestion{
  font-size:11px;padding:5px 10px;border-radius:12px;
  border:1px solid var(--border);background:var(--surface);
  color:var(--text-secondary);cursor:pointer;transition:all .15s;
  font-family:inherit;
}
.ai-suggestion:hover{
  border-color:var(--primary);color:var(--primary);background:var(--primary-bg);
}

/* Input */
.ai-chat-input-wrap{
  display:flex;align-items:flex-end;gap:6px;
  padding:8px 12px;border-top:1px solid var(--border-light);
  background:var(--surface);
}
.ai-chat-input{
  flex:1;resize:none;border:1px solid var(--border);border-radius:var(--r-sm);
  padding:7px 10px;font-size:12px;font-family:inherit;
  line-height:1.4;background:var(--surface);color:var(--text);
  max-height:80px;transition:border-color .15s;
}
.ai-chat-input:focus{outline:none;border-color:var(--primary);}
.ai-chat-input::placeholder{color:var(--text-faint);}
.ai-chat-send{
  width:30px;height:30px;border-radius:var(--r-sm);
  border:none;background:var(--primary);color:#fff;
  display:grid;place-items:center;cursor:pointer;
  transition:opacity .15s;flex-shrink:0;
}
.ai-chat-send svg{width:14px;height:14px;}
.ai-chat-send:disabled{opacity:.35;cursor:default;}
.ai-chat-send:not(:disabled):hover{opacity:.85;}

/* Scrollbar */
.ai-chat-messages::-webkit-scrollbar{width:4px;}
.ai-chat-messages::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px;}

/* ── Parameter preview (inside Parameter section) ── */
.param-preview{padding:0;margin-top:0;}
.param-preview:empty{display:none;}
.param-preview .fc-row{margin-top:6px;}
.param-preview .param-preview-label{font-size:10px;color:var(--text-muted);margin-bottom:4px;text-transform:uppercase;letter-spacing:.3px;font-weight:600;}

/* ── PA Decal Edit Mode ── */
body.pa-decal-edit-mode .scene-outliner-wrap,
body.pa-decal-edit-mode .asset-library,
body.pa-decal-edit-mode .vp-header,
body.pa-decal-edit-mode .vp2d-col,
body.pa-decal-edit-mode #outlinerHSplitter,
body.pa-decal-edit-mode .splitter { pointer-events:none; opacity:.4; transition:opacity .2s; }
body.pa-decal-edit-mode .side-tabs { pointer-events:none; opacity:.4; transition:opacity .2s; }

/* ── PA 3D Mapping accordion ── */

/* Container that adds a horizontal padding so slots don't reach panel edges */
#inspPaMeshMappingList { padding: 2px 10px 4px; }

/* Each entry is a card */
.pa-mesh-accordion {
  margin-bottom: 6px;
  border-radius: var(--r-md, 8px);
  border: 1px solid color-mix(in srgb, var(--primary) 18%, var(--border-light));
  background: var(--surface-raised);
  overflow: hidden;
}
.pa-mesh-accordion--empty { }
.pa-mesh-accordion--empty:focus-within { }

/* Header slot: the card provides border + bg — strip the mat-slot's own */
.pa-mesh-accordion .pa-mesh-accordion-header.mat-slot,
.pa-mesh-accordion--empty .mat-slot {
  border: none;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.pa-mesh-accordion .pa-mesh-accordion-header.mat-slot:hover,
.pa-mesh-accordion--empty .mat-slot:hover {
  background: var(--primary-bg);
}

/* Clickable header */
.pa-mesh-accordion-header { cursor: pointer; user-select: none; }
.pa-mesh-accordion--empty .pa-mesh-accordion-header { cursor: default; }

/* Chevron rotates when accordion is open */
.pa-mesh-accordion-chev {
  display: inline-flex; align-items: center; margin-right: 2px;
  transition: transform .15s; opacity: .45; flex-shrink: 0;
}
.pa-mesh-accordion.open .pa-mesh-accordion-chev { transform: rotate(180deg); }

/* Body: separated by a top border, no left indent */
.pa-mesh-accordion-body {
  border-top: 1px solid var(--border-light);
  padding: 4px 0 6px;
}

/* Gizmo button: full-width */
.pa-gizmo-btn-wrap { padding: 4px 14px 2px; }
.pa-gizmo-btn { display: flex; align-items: center; justify-content: center; gap: 5px; width: 100%; }
.pa-gizmo-btn svg { flex-shrink: 0; }