/* TheNorma OS Design System · v1.21.1
   Isolated presentation layer. No geometry, rules, stage or interaction logic. */
:root{
  --tn-ink:#171714;
  --tn-muted:#777770;
  --tn-subtle:#999992;
  --tn-line:#deded8;
  --tn-line-strong:#bdbdb6;
  --tn-paper:#f7f7f3;
  --tn-surface:#ffffff;
  --tn-surface-soft:#f1f1ec;
  --tn-focus:#171714;
  --tn-danger:#a84d43;
  --tn-success:#5f7f62;
  --tn-radius:0px;
  --tn-control-h:38px;
  --tn-space-1:4px;
  --tn-space-2:8px;
  --tn-space-3:12px;
  --tn-space-4:16px;
  --tn-space-5:24px;
  --tn-font-xs:8px;
  --tn-font-sm:10px;
  --tn-font-md:12px;
  --tn-font-lg:16px;
  --tn-transition:140ms ease;
  /* MEP network swatches (contract mep-placement-defaults) */
  --mep-aqs:#e11d2e;
  --mep-af:#1d6fe1;
  --mep-waste:#6b7280;
  --mep-el:#16a34a;
  --mep-data:#eab308;
}

/* Typography contract */
body{font-feature-settings:"kern" 1,"liga" 1;text-rendering:optimizeLegibility}
.kicker,.eyebrow,.section-title>span,.project-block>span{
  font-size:var(--tn-font-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--tn-muted)
}
.auth-card h1,.site-analysis-card h1{color:var(--tn-ink)}

/* Form control contract */
.tn-control,
.auth-card input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
.auth-card select,
.auth-card textarea,
.site-analysis-card input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
.site-analysis-card select,
.site-analysis-card textarea,
.information-center input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
.information-center select,
.information-center textarea{
  width:100%;min-height:var(--tn-control-h);border:1px solid var(--tn-line);border-radius:var(--tn-radius);
  background:var(--tn-surface);color:var(--tn-ink);padding:9px 12px;font:inherit;font-size:var(--tn-font-md);
  line-height:1.35;outline:none;transition:border-color var(--tn-transition),box-shadow var(--tn-transition),background var(--tn-transition)
}
.auth-card textarea,.site-analysis-card textarea,.information-center textarea{min-height:92px;resize:vertical}
.auth-card input::placeholder,.site-analysis-card input::placeholder,
.auth-card textarea::placeholder,.site-analysis-card textarea::placeholder{color:#aaa9a2;opacity:1}

/* Native select, consistently styled and browser-safe */
.tn-select,
.auth-card select,
.site-analysis-card select,
.information-center select,
.unit-control select,
.drawing-level-pulldown select{
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  background-color:var(--tn-surface);
  background-image:linear-gradient(45deg,transparent 50%,var(--tn-muted) 50%),linear-gradient(135deg,var(--tn-muted) 50%,transparent 50%);
  background-position:calc(100% - 16px) 50%,calc(100% - 11px) 50%;
  background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:34px
}

/* Focus and validation states */
.tn-control:focus,
.auth-card input:focus,.auth-card select:focus,.auth-card textarea:focus,
.site-analysis-card input:focus,.site-analysis-card select:focus,.site-analysis-card textarea:focus,
.information-center input:focus,.information-center select:focus,.information-center textarea:focus{
  border-color:var(--tn-focus);box-shadow:0 0 0 1px var(--tn-focus);background:#fff
}
:where(button,input,select,textarea,a):focus-visible{outline:2px solid var(--tn-focus);outline-offset:2px}
:where(input,select,textarea):disabled{background:var(--tn-surface-soft);color:#9d9d96;cursor:not-allowed}
:where(input,select,textarea)[aria-invalid="true"]{border-color:var(--tn-danger);box-shadow:0 0 0 1px var(--tn-danger)}

/* wr535 · neutralizar autofill do browser (fundo/texto azul) → contrato surface/ink */
.tn-control:autofill,
.tn-control:autofill:hover,
.tn-control:autofill:focus,
.tn-control:autofill:active,
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):autofill,
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):autofill:hover,
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):autofill:focus,
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):autofill:active,
textarea:autofill,
textarea:autofill:hover,
textarea:autofill:focus,
textarea:autofill:active,
select:autofill,
select:autofill:hover,
select:autofill:focus,
select:autofill:active,
.tn-control:-webkit-autofill,
.tn-control:-webkit-autofill:hover,
.tn-control:-webkit-autofill:focus,
.tn-control:-webkit-autofill:active,
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):-webkit-autofill,
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):-webkit-autofill:hover,
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):-webkit-autofill:focus,
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):-webkit-autofill:active,
textarea:-webkit-autofill,
textarea:-webkit-autofill:hover,
textarea:-webkit-autofill:focus,
textarea:-webkit-autofill:active,
select:-webkit-autofill,
select:-webkit-autofill:hover,
select:-webkit-autofill:focus,
select:-webkit-autofill:active{
  -webkit-text-fill-color:var(--tn-ink)!important;
  caret-color:var(--tn-ink);
  color:var(--tn-ink)!important;
  border-color:var(--tn-line)!important;
  box-shadow:0 0 0 1000px var(--tn-surface) inset!important;
  transition:background-color 99999s ease-out 0s,color 99999s ease-out 0s;
}
.tn-control:autofill:focus,
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):autofill:focus,
textarea:autofill:focus,
select:autofill:focus,
.tn-control:-webkit-autofill:focus,
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):-webkit-autofill:focus,
textarea:-webkit-autofill:focus,
select:-webkit-autofill:focus{
  border-color:var(--tn-focus)!important;
  box-shadow:0 0 0 1000px #fff inset,0 0 0 1px var(--tn-focus)!important;
}

/* Button contract */
.tn-button,
.system-action,
.primary,.dark,
.workspace-screen nav button,
.viewbar button,
.location-mode button,
.consultation-modes button,
.dossier-filter button,
.planning-actions button,
.territorial-connector-actions .system-action,
.territorial-connector-suggest .system-action,
.info-actions button{
  min-height:34px;border:1px solid var(--tn-line);border-radius:var(--tn-radius);background:var(--tn-surface);
  color:var(--tn-ink);padding:8px 12px;font:inherit;font-size:var(--tn-font-sm);font-weight:520;
  line-height:1.2;cursor:pointer;transition:background var(--tn-transition),color var(--tn-transition),border-color var(--tn-transition),opacity var(--tn-transition)
}
.tn-button:hover,.system-action:hover,
.workspace-screen nav button:hover,.viewbar button:hover,
.location-mode button:hover,.consultation-modes button:hover,.dossier-filter button:hover,
.planning-actions button:hover,.territorial-connector-actions .system-action:hover,
.territorial-connector-suggest .system-action:hover,.info-actions button:hover{border-color:var(--tn-ink);background:#fafaf7}
.primary,.dark,.primary-system-action,.system-action-primary,
.location-mode button.active,.consultation-modes button.active,.dossier-filter button.active,
.view.active,.lens-btn.active{
  background:var(--tn-ink)!important;color:#fff!important;border-color:var(--tn-ink)!important
}
.text-btn,.back{color:var(--tn-muted);font-size:var(--tn-font-sm);text-underline-offset:3px}
.text-btn:hover,.back:hover{color:var(--tn-ink)}
:where(button):disabled{opacity:.42;cursor:not-allowed;pointer-events:none}

/* Panels and cards */
.tn-panel,
.location-block,.territorial-intelligence-panel,.territorial-dossier-panel,.planning-rules-panel,
.confidence-panel,.consultation-panel,.location-preview,.location-resolver-note{
  border-color:var(--tn-line);border-radius:var(--tn-radius);background:var(--tn-surface)
}
.section-title{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--tn-space-4)}
.section-title small{color:var(--tn-muted);line-height:1.45}

/* Data tables and registries */
.tn-table{width:100%;border-collapse:collapse;background:var(--tn-surface)}
.tn-table th,.tn-table td{padding:9px 10px;border-bottom:1px solid var(--tn-line);text-align:left;font-size:var(--tn-font-sm)}
.tn-table th{color:var(--tn-muted);font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.territorial-list>*,.territorial-evidence-list>*,.planning-rule-registry>*{border-color:var(--tn-line)}

/* Accordions / pulldowns */
.info-pulldown-toggle{min-height:40px;transition:background var(--tn-transition),color var(--tn-transition)}
.info-pulldown-toggle:focus-visible{outline-offset:-2px}
.info-pulldown.open>.info-pulldown-toggle{box-shadow:inset 2px 0 var(--tn-ink)}

/* Icons */
.tool-svg,.view-icon,.environment-icon{color:currentColor;stroke:currentColor}
.icon-tool,.floating-env-btn{transition:color var(--tn-transition),background var(--tn-transition),border-color var(--tn-transition),transform var(--tn-transition)}

/* Compact responsive behavior */
@media(max-width:720px){
  :root{--tn-control-h:40px;--tn-font-md:13px}
  .two,.location-grid,.planning-rule-form{grid-template-columns:1fr!important}
  .span-2{grid-column:auto!important}
}

/* Print contract */
@media print{
  button,.floating-environment,.viewport-tools{display:none!important}
  input,select,textarea{border-color:#aaa!important;box-shadow:none!important}
}

/* Sprint 21 · Administrative Boundaries Connector */
.administrative-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px}
.administrative-summary{margin-top:12px;border:1px solid var(--tn-border,#d8d8d8);border-radius:var(--tn-radius-md,8px);padding:14px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;background:var(--tn-surface,#fff)}
.administrative-summary[hidden]{display:none}
.administrative-summary>div{display:flex;flex-direction:column;gap:4px;min-width:0}
.administrative-summary span{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--tn-muted,#6d6d6d);line-height:1.35;min-height:calc(1.35em * 2)}
.administrative-summary b{font-size:14px;overflow-wrap:anywhere;margin-top:auto}
.administrative-summary small{grid-column:1/-1;color:var(--tn-muted,#6d6d6d);border-top:1px solid var(--tn-border,#e3e3e3);padding-top:10px}
@supports (grid-template-rows:subgrid){
  .administrative-summary>div{display:grid;grid-template-rows:subgrid;grid-row:span 2;align-content:start}
  .administrative-summary span{min-height:0}
  .administrative-summary b{margin-top:0}
}
@media(max-width:760px){.administrative-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v1.12.0 · S0-I21 · Visual Language Harmonization · UI-05A
   Presentation-only convergence layer. It deliberately does not alter model geometry,
   snapping, stage dimensions, topology, persistence or domain decisions. */
:root{
  --tn-ink:#151513;
  --tn-ink-soft:#353531;
  --tn-muted:#73736d;
  --tn-subtle:#96968f;
  --tn-faint:#b1b1aa;
  --tn-line:#dfdfd8;
  --tn-line-strong:#c8c8c0;
  --tn-paper:#f7f7f3;
  --tn-canvas:#f9f9f6;
  --tn-surface:#ffffff;
  --tn-surface-soft:#f2f2ed;
  --tn-surface-raised:rgba(255,255,252,.97);
  --tn-focus:#151513;
  --tn-danger:#a84d43;
  --tn-warning:#ad742f;
  --tn-success:#5f7f62;
  --tn-info:#537486;
  --tn-guided:#476a62;
  --tn-accent:#315b50;
  --tn-radius:2px;
  --tn-control-h:34px;
  --tn-space-1:4px;
  --tn-space-2:8px;
  --tn-space-3:12px;
  --tn-space-4:16px;
  --tn-space-5:24px;
  --tn-space-6:32px;
  --tn-font-micro:8.5px;
  --tn-font-xs:9.5px;
  --tn-font-sm:10.5px;
  --tn-font-md:12px;
  --tn-font-lg:16px;
  --tn-font-xl:22px;
  --tn-leading-tight:1.2;
  --tn-leading-body:1.48;
  --tn-track-label:.105em;
  --tn-shadow-overlay:0 18px 48px rgba(20,20,17,.12);
  --tn-shadow-float:0 10px 28px rgba(20,20,17,.09);
  --tn-transition:140ms ease;
}

/* Global rhythm */
html{background:var(--tn-paper)}
body{color:var(--tn-ink);background:var(--tn-paper);font-size:var(--tn-font-md);line-height:var(--tn-leading-body);font-weight:430}
::selection{background:var(--tn-ink);color:#fff}
*{scrollbar-color:#c9c9c1 transparent;scrollbar-width:thin}
button,input,select,textarea{font-family:inherit}
button{letter-spacing:0}
small{line-height:var(--tn-leading-body)}
.kicker,.eyebrow,.section-title>span,.project-block>span,
[class$="-head"]>span,[class$="-head"] small:first-child{
  letter-spacing:var(--tn-track-label)
}

/* Accessible interaction language */
:where(button,[role="button"],input,select,textarea,a){-webkit-tap-highlight-color:transparent}
:where(button,[role="button"],a){transition:color var(--tn-transition),background var(--tn-transition),border-color var(--tn-transition),opacity var(--tn-transition),box-shadow var(--tn-transition)}
:where(button,[role="button"],a):focus-visible,
:where(input,select,textarea):focus-visible{outline:2px solid var(--tn-focus);outline-offset:2px}
:where(button,[role="button"]):disabled{opacity:.38;cursor:not-allowed;pointer-events:none}

/* Auth, licensing and project creation */
.auth{background:var(--tn-paper)}
.auth-card{border-color:var(--tn-line);border-radius:var(--tn-radius);box-shadow:var(--tn-shadow-overlay);padding:40px 42px;background:rgba(255,255,255,.985)}
.auth-card h1{margin:8px 0 28px;font-size:30px;font-weight:520;letter-spacing:-.035em;line-height:1.05}
.auth-card label{gap:6px;margin:14px 0;color:var(--tn-muted);font-size:var(--tn-font-sm);font-weight:520}
.auth-card small{color:var(--tn-subtle);font-size:var(--tn-font-xs)}
.auth-card input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
.project-start-card select{
  min-height:40px!important;border:1px solid var(--tn-line)!important;background:var(--tn-surface)!important;padding:9px 11px!important;font-size:var(--tn-font-md)!important
}
.auth-card input:focus,.project-start-card select:focus{border-color:var(--tn-ink)!important;box-shadow:0 0 0 1px var(--tn-ink)}
.auth-card .primary{min-height:40px;margin-top:18px}
.device,.location-preview,.parcel-summary{border:1px solid var(--tn-line);background:var(--tn-surface-soft)}
.location-block{margin-top:20px;border:1px solid var(--tn-line);background:var(--tn-surface);padding:16px}
.location-block-head{padding-bottom:12px;border-bottom:1px solid var(--tn-line)}
.location-block-head h2{margin:4px 0 0;font-size:15px;font-weight:560}
.location-status,.confidence-badge,.info-badge,.structural-status{border-radius:999px!important;padding:4px 8px!important;font-size:var(--tn-font-xs)!important;letter-spacing:.04em!important;line-height:1.2}
.location-mode{gap:0;margin:14px 0;border-bottom:1px solid var(--tn-line)}
.location-mode button{min-height:36px;border:0!important;border-bottom:2px solid transparent!important;background:transparent!important;color:var(--tn-muted)!important;padding:8px 12px!important}
.location-mode button:hover{color:var(--tn-ink)!important;background:var(--tn-surface-soft)!important}
.location-mode button.active{border-bottom-color:var(--tn-ink)!important;background:transparent!important;color:var(--tn-ink)!important;font-weight:620}
.location-resolver-note{border-color:var(--tn-line);background:var(--tn-surface-soft)}
.geocode-status{font-size:var(--tn-font-sm)}
.administrative-summary{border-color:var(--tn-line)!important;border-radius:var(--tn-radius)!important;background:var(--tn-surface)!important}
.administrative-summary span{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important}

/* Preliminary site analysis */
.site-analysis-card{border-color:var(--tn-line);background:var(--tn-surface)}
.analysis-topbar{padding-bottom:18px;border-bottom:1px solid var(--tn-line)}
.analysis-topbar h1{margin-bottom:8px}
.analysis-lead{max-width:760px;color:var(--tn-muted);font-size:var(--tn-font-md);line-height:1.55}
.analysis-summary-grid{gap:1px!important;border:1px solid var(--tn-line);background:var(--tn-line)}
.analysis-summary-grid>section{border:0!important;background:var(--tn-surface)!important;padding:13px 14px!important}
.analysis-summary-grid span,.territorial-kpis span,.planning-rules-kpis span,.dossier-kpis span,.favorability-kpis span{font-size:var(--tn-font-xs)!important;letter-spacing:var(--tn-track-label)!important;color:var(--tn-muted)!important}
.analysis-summary-grid b{font-size:12px!important;font-weight:580!important}
.analysis-summary-grid small{font-size:var(--tn-font-xs)!important;color:var(--tn-subtle)!important}
.territorial-intelligence-panel,.territorial-dossier-panel,.planning-rules-panel,.confidence-panel,.consultation-panel{border-color:var(--tn-line)!important}
.territorial-hub-tabs,.consultation-modes,.dossier-filter{border-color:var(--tn-line)!important}
.territorial-hub-tabs button,.consultation-modes button,.dossier-filter button{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important}
.territorial-hub-tabs button.active,.consultation-modes button.active,.dossier-filter button.active{color:#fff!important;background:var(--tn-ink)!important;border-color:var(--tn-ink)!important}
.planning-rule-head{font-size:var(--tn-font-xs)!important;background:var(--tn-surface-soft)!important}
.planning-rule-row{font-size:var(--tn-font-sm)!important}
.planning-rule-row small{font-size:var(--tn-font-xs)!important}
.analysis-footer{border-top-color:var(--tn-line)!important}

/* Primary shell */
.workspace-screen{background:var(--tn-paper)}
.workspace-screen>header{background:rgba(255,255,255,.985);border-bottom-color:var(--tn-line);box-shadow:0 1px 0 rgba(18,18,16,.015)}
.brand{gap:18px}
.brand img{width:148px!important;max-height:40px!important;transform:none!important}
.brand span{color:var(--tn-muted);font-size:var(--tn-font-sm)!important;font-weight:520;letter-spacing:.01em}
.workflow-nav .stage{color:var(--tn-subtle);font-size:var(--tn-font-xs)!important;font-weight:520;padding:8px 12px}
.workflow-nav .stage i{width:21px;height:21px;border-color:var(--tn-line-strong);font-size:8px;background:var(--tn-surface)}
.workflow-nav .stage:not(:last-child):after{border-top-color:var(--tn-line)}
.workflow-nav .stage:hover{color:var(--tn-ink);background:var(--tn-surface-soft)}
.workflow-nav .stage.active,.workflow-nav .stage.os-active{color:var(--tn-ink);font-weight:620}
.workflow-nav .stage.active i{background:var(--tn-ink);border-color:var(--tn-ink);color:#fff}
.workflow-nav .stage.os-active::after{height:1px;background:var(--tn-ink)}
.workspace-screen header nav button,.session-nav button{min-height:32px;color:var(--tn-muted)!important;font-size:var(--tn-font-sm)!important;border:1px solid transparent!important;background:transparent!important;padding:7px 9px!important}
.workspace-screen header nav button:hover,.session-nav button:hover{color:var(--tn-ink)!important;border-color:var(--tn-line)!important;background:var(--tn-surface-soft)!important}
.user-session-info{color:var(--tn-muted);font-size:var(--tn-font-xs)}

/* Side rails and contextual hierarchy */
.left,.right,.information-center{background:var(--tn-surface)!important}
.left{border-right-color:var(--tn-line)}
.right,.information-center{border-left-color:var(--tn-line)!important}
.left section,.right section,.project-block{border-bottom-color:var(--tn-line)}
.project-block{padding:17px 18px}
.project-block h2{font-size:16px;font-weight:560;letter-spacing:-.015em}
.project-block p{color:var(--tn-muted);font-size:var(--tn-font-sm)}
.tools-section{padding-top:14px!important;padding-bottom:14px!important}
.tool,.icon-tool{border-color:transparent!important;background:transparent!important;color:var(--tn-muted)!important;border-radius:var(--tn-radius)}
.tool:hover,.icon-tool:hover{background:var(--tn-surface-soft)!important;color:var(--tn-ink)!important;border-color:var(--tn-line)!important}
.tool.active,.icon-tool.active,.icon-tool.persistent-active{background:var(--tn-ink)!important;color:#fff!important;border-color:var(--tn-ink)!important}
.tool-help,.hint{color:var(--tn-subtle);font-size:var(--tn-font-xs);line-height:1.5}
.module-card{border-color:var(--tn-line);border-radius:var(--tn-radius);background:var(--tn-surface)}
.module-card:hover{border-color:var(--tn-ink);box-shadow:inset 2px 0 0 var(--tn-ink)}
.project-profile-grid{border-color:var(--tn-line)}
.project-profile-grid>div+div,.project-profile-grid .project-location-row{border-color:var(--tn-line)}
.project-profile-grid span{font-size:var(--tn-font-xs)}
.project-profile-grid b{font-size:var(--tn-font-sm)}

/* Viewbar and mode switching */
.viewbar{background:var(--tn-surface);border-bottom-color:var(--tn-line);padding-inline:12px}
.viewbar .view,.platform-switch button,.workspace-lenses .lens-btn,.display-mode-btn,
.viewport-tools>button,.unit-control{
  min-height:32px;border:1px solid transparent!important;background:transparent!important;color:var(--tn-muted)!important;border-radius:var(--tn-radius)!important;font-size:var(--tn-font-xs)!important;font-weight:560!important;letter-spacing:.04em!important
}
.viewbar .view:hover,.platform-switch button:hover,.workspace-lenses .lens-btn:hover,.display-mode-btn:hover,.viewport-tools>button:hover{border-color:var(--tn-line)!important;background:var(--tn-surface-soft)!important;color:var(--tn-ink)!important}
.viewbar .view.active,.platform-switch button.active,.workspace-lenses .lens-btn.active,.display-mode-btn.active,.viewport-tools>button.active{
  background:var(--tn-ink)!important;border-color:var(--tn-ink)!important;color:#fff!important
}
.unit-control{border-color:var(--tn-line)!important;background:var(--tn-surface)!important;color:var(--tn-muted)!important;padding:0 8px}
.unit-control select{font-size:var(--tn-font-xs)!important;color:var(--tn-ink)}
.floating-environment{gap:6px!important}
.floating-env-btn{width:32px!important;height:32px!important;border:1px solid var(--tn-line)!important;border-radius:var(--tn-radius)!important;background:rgba(255,255,255,.94)!important;color:var(--tn-muted)!important;box-shadow:none!important}
.floating-env-btn:hover,.floating-env-btn.active{border-color:var(--tn-ink)!important;background:var(--tn-ink)!important;color:#fff!important}
.orbit-help{border-color:var(--tn-line);border-radius:var(--tn-radius);background:rgba(255,255,255,.94);color:var(--tn-muted);font-size:var(--tn-font-xs)}
.toast{border-radius:var(--tn-radius);box-shadow:var(--tn-shadow-float);font-size:var(--tn-font-sm);letter-spacing:.01em}

/* Module library and project summary */
.module-library-wrap{background:var(--tn-surface)!important;border-color:var(--tn-line)!important}
.module-library-head{border-bottom-color:var(--tn-line)!important;padding:9px 14px!important}
.module-library-head small{font-size:var(--tn-font-xs)!important;color:var(--tn-subtle)!important}
.library-module{border-right-color:var(--tn-line)!important;background:var(--tn-surface)!important}
.library-module:hover{background:var(--tn-surface-soft)!important;box-shadow:inset 0 -2px var(--tn-ink)}
.library-module b{font-size:var(--tn-font-sm)!important;font-weight:580!important;color:var(--tn-ink)}
.library-module small{font-size:var(--tn-font-xs)!important;color:var(--tn-subtle)!important}
.library-module em{color:var(--tn-subtle)!important}
.module-library-wrap + .project-summary-strip{border-top-color:var(--tn-line)!important}
.project-summary-strip{background:var(--tn-surface)!important;border-color:var(--tn-line)!important;box-shadow:none!important}
.project-summary-strip>div{border-color:var(--tn-line)!important}
.project-summary-strip span{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important;letter-spacing:.08em!important}
.project-summary-strip b{font-size:var(--tn-font-sm)!important;font-weight:600!important}
.project-summary-strip small{font-size:var(--tn-font-xs)!important;color:var(--tn-subtle)!important}

/* Information Center */
.information-center-head{padding:15px 14px 12px;border-bottom-color:var(--tn-line);background:var(--tn-surface)}
.information-center-head small,.information-center-head>b{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important}
.information-center-head>b{padding:4px 7px;border:1px solid var(--tn-line);border-radius:999px;background:var(--tn-surface-soft);font-weight:620}
.information-center-pulldowns{background:var(--tn-surface)}
/* info-pulldowns are <section> nodes — do not inherit .right section padding or the title clips. */
.information-center .info-pulldown,
.right.information-center .info-pulldown{
  padding:0!important;
  margin:0!important;
  overflow:visible!important;
}
.info-pulldown{border-bottom-color:var(--tn-line);background:var(--tn-surface)}
.info-pulldown-toggle{
  min-height:42px;
  padding:12px 14px!important;
  color:var(--tn-muted)!important;
  font-size:var(--tn-font-sm)!important;
  font-weight:540;
  overflow:visible!important;
  align-items:center!important;
  line-height:1.3!important;
}
.info-pulldown-toggle>span,
.info-pulldown-toggle>i{
  line-height:1.3!important;
  overflow:visible!important;
}
.info-pulldown-toggle:hover{color:var(--tn-ink)!important;background:var(--tn-surface-soft)!important}
.info-pulldown.open>.info-pulldown-toggle{box-shadow:inset 2px 0 var(--tn-ink);background:var(--tn-surface)!important;color:var(--tn-ink)!important;font-weight:650;overflow:visible!important}
.info-pulldown-panel{padding:0 14px 14px!important;background:var(--tn-surface)!important;overflow:visible!important}

/* wr250 · Nested IC pull-downs (Sistemas do Edifício) */
.ic-subpull{border-bottom:1px solid var(--tn-line);background:var(--tn-surface)}
.ic-subpull-toggle{
  width:100%;min-height:40px;display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin:0;padding:11px 0!important;border:0!important;background:transparent!important;
  color:var(--tn-muted)!important;font:inherit!important;font-size:var(--tn-font-sm)!important;font-weight:540!important;
  text-align:left;cursor:pointer;transition:background var(--tn-transition),color var(--tn-transition),box-shadow var(--tn-transition)
}
.ic-subpull-toggle>span{flex:1;min-width:0;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ic-subpull-toggle>i{flex:0 0 auto;font-style:normal;font-size:var(--tn-font-md);font-weight:400;line-height:1;color:var(--tn-subtle)}
.ic-subpull-toggle:hover{color:var(--tn-ink)!important;background:var(--tn-surface-soft)!important}
.ic-subpull.open>.ic-subpull-toggle{
  box-shadow:inset 2px 0 var(--tn-ink);color:var(--tn-ink)!important;font-weight:650!important;background:var(--tn-surface)!important;padding-left:10px!important
}
.ic-subpull-panel{display:none;padding:0 0 14px;background:var(--tn-surface);min-width:0}
.ic-subpull.open>.ic-subpull-panel{display:block}
.building-systems-panel{display:grid;gap:0;min-width:0}
.building-systems-panel .el-specialty-panel,
.building-systems-panel .hid-specialty-panel,
.building-systems-panel .avac-specialty-panel,
.building-systems-panel .specialty-review-hub{
  margin:0 0 10px!important;padding:10px!important;border:1px solid var(--tn-line)!important;border-radius:var(--tn-radius)!important;background:var(--tn-surface)!important
}
/* wr72 · info-grid: células vazias (ex. ao lado de Estado) ficam brancas, não cinzentas */
.info-grid{
  border-color:var(--tn-line)!important;
  background:var(--tn-surface,#fff)!important;
  gap:0!important;
  border-top:1px solid var(--tn-line)!important;
  border-left:1px solid var(--tn-line)!important;
}
.info-grid>div{
  border:0!important;
  border-right:1px solid var(--tn-line)!important;
  border-bottom:1px solid var(--tn-line)!important;
  background:var(--tn-surface,#fff)!important;
  padding:9px!important;
}
.info-grid span,.info-card small,.info-row small{font-size:var(--tn-font-xs)!important;color:var(--tn-subtle)!important}
.info-grid b,.info-card b,.info-row b{font-size:var(--tn-font-sm)!important;color:var(--tn-ink)!important;font-weight:580!important}
.info-card h4{font-size:var(--tn-font-sm)!important}
.info-row{border-bottom-color:var(--tn-line)!important;padding:8px 0!important}
.info-row em,.info-tag{font-size:var(--tn-font-xs)!important}
.info-tag{border-color:var(--tn-line)!important;background:var(--tn-surface-soft)!important;color:var(--tn-muted)!important;border-radius:999px;padding:3px 6px}
.info-empty,.info-warning,.info-note{font-size:var(--tn-font-xs)!important;line-height:1.5!important}
.info-warning{border-left-color:var(--tn-warning)!important;background:rgba(173,116,47,.06)!important}
.information-center-advice{border-top-color:var(--tn-line)!important;background:var(--tn-surface-soft)!important}
.information-center-advice .advice{background:transparent!important;padding:7px 0 0!important;color:var(--tn-ink)!important;font-size:var(--tn-font-sm)!important}

/* System Console */
.os-console-backdrop{background:rgba(18,18,16,.16);backdrop-filter:blur(3px)}
.os-console{background:var(--tn-paper);border-left-color:var(--tn-line);box-shadow:-18px 0 48px rgba(20,20,17,.11)}
.os-console-head{padding:26px 28px 18px;border-bottom-color:var(--tn-line);background:var(--tn-surface)}
.os-console-head h2{font-size:24px;font-weight:520;letter-spacing:-.035em}
.os-console-head p{color:var(--tn-muted);font-size:var(--tn-font-sm)}
.os-console-head>button{width:34px;height:34px;border:1px solid var(--tn-line);border-radius:var(--tn-radius);font-size:22px;color:var(--tn-muted)}
.os-console-head>button:hover{border-color:var(--tn-ink);background:var(--tn-ink);color:#fff}
.os-console-tabs{gap:0;padding:0 18px;border-bottom-color:var(--tn-line);background:var(--tn-surface)}
.os-console-tabs button{min-height:42px;padding:10px 11px;border-bottom:2px solid transparent;color:var(--tn-subtle);font-size:var(--tn-font-sm)}
.os-console-tabs button:hover{background:var(--tn-surface-soft);color:var(--tn-ink)}
.os-console-tabs button.active{border-bottom-color:var(--tn-ink);color:var(--tn-ink);font-weight:650}
.os-console-content{padding:22px 28px 40px}
.os-section,.os-kpi,.os-row,.os-step,.os-passport,.os-dossier-section,.os-dossier-row{border-color:var(--tn-line)!important;background:var(--tn-surface)!important;border-radius:var(--tn-radius)!important}
.os-kpi span,.os-row small,.os-dossier-count,.os-dossier-copy small{color:var(--tn-muted)!important}
.os-actionbar button,.os-dossier-actions button{min-height:34px;border:1px solid var(--tn-line)!important;background:var(--tn-surface)!important;color:var(--tn-ink)!important;border-radius:var(--tn-radius)!important}
.os-actionbar button:hover,.os-dossier-actions button:hover{border-color:var(--tn-ink)!important;background:var(--tn-ink)!important;color:#fff!important}

/* Shared technical editors, registries and generated cards */
.space-editor,.technical-space-editor,.technical-variant-editor,.technical-furniture,.technical-catalog-preview,
.structural-configuration,.structural-config-form,.structural-validation-form,.structural-strategy,.structural-blockers{
  border-color:var(--tn-line)!important;background:var(--tn-surface)!important;border-radius:var(--tn-radius)!important
}
.space-editor-head,.structural-config-head{border-bottom-color:var(--tn-line)!important}
.space-editor label,.structural-form-body label{color:var(--tn-muted)!important;font-size:var(--tn-font-xs)!important;letter-spacing:.02em!important}
.space-editor input,.space-editor select,.structural-form-body input,.structural-form-body select,
.technical-inline-action select,.walk-space-jump select{
  min-height:34px!important;border:1px solid var(--tn-line)!important;background:var(--tn-surface)!important;color:var(--tn-ink)!important;font-size:var(--tn-font-sm)!important
}
.space-editor-save,.space-primary-action,.structural-export{min-height:34px!important;border-color:var(--tn-ink)!important;background:var(--tn-ink)!important;color:#fff!important;font-size:var(--tn-font-sm)!important}
.space-core-summary,.structural-config-kpis{border-color:var(--tn-line)!important;background:var(--tn-line)!important}
.space-core-summary>div,.structural-config-kpis>div{background:var(--tn-surface)!important}
.space-core-summary span,.structural-config-kpis span{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important}
.space-core-summary b,.structural-config-kpis b{font-size:var(--tn-font-sm)!important}
.space-register-item,.space-detection-run,.area-schedule-table,.planning-rule-registry{border-color:var(--tn-line)!important;background:var(--tn-surface)!important}
.space-register-item.selected{border-color:var(--tn-ink)!important;box-shadow:inset 2px 0 var(--tn-ink)!important}
.space-foundation-note,.space-diagnostic{border-left-color:var(--tn-info)!important;background:rgba(83,116,134,.055)!important}
.space-diagnostic.warning{border-left-color:var(--tn-warning)!important;background:rgba(173,116,47,.06)!important}
.space-diagnostic.error{border-left-color:var(--tn-danger)!important;background:rgba(168,77,67,.06)!important}
.area-schedule th,.area-schedule td{border-color:var(--tn-line)!important}
.area-schedule th{background:var(--tn-surface-soft)!important;color:var(--tn-muted)!important;font-size:var(--tn-font-xs)!important}
.area-schedule td{font-size:var(--tn-font-xs)!important}

/* NORMA Stage chrome. Semantic model colors remain owned by stage rendering. */
.stage-view-button{border-color:var(--tn-line)!important;color:var(--tn-muted)!important}
.stage-view-button.active{background:var(--tn-ink)!important;border-color:var(--tn-ink)!important;color:#fff!important}
.stage-controls,.stage-component-card,.stage-legend,.mep-xray-strip,.stage-hud-panel{
  border:1px solid rgba(21,21,19,.16)!important;background:var(--tn-surface-raised)!important;box-shadow:var(--tn-shadow-float)!important;border-radius:var(--tn-radius)!important;color:var(--tn-ink)!important;backdrop-filter:blur(10px)
}
.stage-controls{gap:8px;padding:12px}
.stage-controls-head{border-bottom-color:var(--tn-line)!important}
.stage-controls-head span,.stage-card-empty span,.stage-card-head span,.stage-card-section-head span,.stage-card-source span,.stage-card-dimensions span,.stage-legend-head span,.mep-xray-strip-head span{
  color:var(--tn-muted)!important;font-size:var(--tn-font-micro)!important;font-weight:650!important;letter-spacing:var(--tn-track-label)!important;text-transform:uppercase!important
}
.stage-controls-head b,.stage-card-empty small,.stage-card-head small,.stage-card-dimensions small,.stage-card-section p,.stage-card-section li,.stage-legend-head small,.mep-xray-strip-head b{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important;font-weight:580!important}
.stage-controls button:not(.stage-hud-toggle){min-height:30px!important;border:1px solid var(--tn-line)!important;background:var(--tn-surface)!important;color:var(--tn-muted)!important;font-size:var(--tn-font-xs)!important;text-transform:none!important;letter-spacing:.02em!important;border-radius:var(--tn-radius)!important}
.stage-controls button:not(.stage-hud-toggle):hover,.stage-controls button:not(.stage-hud-toggle).active{border-color:var(--tn-ink)!important;background:var(--tn-ink)!important;color:#fff!important}
.stage-card-head,.stage-card-identity,.stage-card-dimensions,.stage-card-section{border-color:var(--tn-line)!important}
.stage-card-identity>div+div{border-color:var(--tn-line)!important}
.stage-card-identity span,.stage-card-metrics span{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important}
.stage-card-identity b,.stage-card-metrics b,.stage-card-empty b,.stage-card-head b{font-size:var(--tn-font-sm)!important;color:var(--tn-ink)!important}
.stage-card-metrics{background:var(--tn-line)!important;border-color:var(--tn-line)!important}
.stage-card-metrics>div{background:var(--tn-surface)!important}
.stage-not-available{color:var(--tn-danger)!important;font-size:var(--tn-font-xs)!important}
.stage-legend-item span{font-size:var(--tn-font-micro)!important;color:var(--tn-ink-soft)!important;line-height:var(--tn-leading-tight)!important}
.stage-legend-hatch-note{color:var(--tn-subtle)!important;font-size:var(--tn-font-micro)!important}

/* wr260 · Stage HUD · 4 barras no #canvas · mount MEP legado morto */
#canvas.stage-view-active .iso-scene{contain:none!important;overflow:visible!important}
#mepXrayMount,.mep-xray-mount{display:none!important}
.stage-hud-dock{
  --stage-hud-bar-h:36px;--stage-hud-block-w:240px;
  left:12px!important;right:auto!important;top:auto!important;bottom:12px!important;z-index:80!important;
  display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:0!important;
  width:var(--stage-hud-block-w)!important;min-width:var(--stage-hud-block-w)!important;
  min-height:calc(4 * var(--stage-hud-bar-h))!important;
  max-width:min(var(--stage-hud-block-w),calc(100% - 24px))!important;
  border-radius:var(--tn-radius)!important;
  background:var(--tn-surface-raised,rgba(255,255,252,.97))!important;
  border-color:rgba(21,21,19,.16)!important;box-shadow:var(--tn-shadow-float,0 10px 28px rgba(20,20,17,.09))!important
}
.stage-hud-dock[hidden]{display:none!important;min-height:0!important}
.stage-hud-dock>.stage-hud-panel,
.stage-hud-dock>#stageControls,
.stage-hud-dock>#stageComponentCard,
.stage-hud-dock>#stageLegend,
.stage-hud-dock>#mepXrayStrip{
  display:flex!important;flex-direction:column!important;flex:0 0 auto!important;width:100%!important;
  border:0!important;border-bottom:1px solid var(--tn-line)!important;border-radius:0!important;
  box-shadow:none!important;background:transparent!important
}
.stage-hud-dock>.stage-hud-panel:last-child,
.stage-hud-dock>#stageLegend{border-bottom:0!important}
.stage-hud-toggle,
.stage-controls>.stage-hud-toggle,
.mep-xray-strip>.stage-hud-toggle,
.stage-legend>.stage-hud-toggle,
.stage-component-card>.stage-hud-toggle{
  flex:0 0 var(--stage-hud-bar-h)!important;width:100%!important;
  min-height:var(--stage-hud-bar-h)!important;height:var(--stage-hud-bar-h)!important;
  padding:0 12px!important;gap:8px!important;
  border:0!important;border-radius:0!important;
  background:transparent!important;color:var(--tn-muted)!important;
  font:inherit!important;font-size:var(--tn-font-sm)!important;font-weight:540!important;
  letter-spacing:normal!important;text-transform:none!important;text-align:left!important
}
.stage-hud-toggle>span{
  color:var(--tn-muted)!important;font-size:8.5px!important;font-weight:650!important;
  letter-spacing:.08em!important;text-transform:uppercase!important;line-height:1.2!important;
  overflow:visible;text-overflow:clip;white-space:nowrap
}
.stage-hud-toggle>b{display:none!important}
.stage-hud-toggle>i{color:var(--tn-subtle)!important;font-size:var(--tn-font-md)!important;font-style:normal!important}
.stage-hud-toggle:hover{background:var(--tn-surface-soft)!important;color:var(--tn-ink)!important}
.stage-hud-toggle:hover>span{color:var(--tn-ink)!important}
.stage-hud-panel:not(.is-collapsed)>.stage-hud-toggle{
  background:var(--tn-surface)!important;color:var(--tn-ink)!important;font-weight:650!important;
  box-shadow:inset 2px 0 var(--tn-ink)!important
}
.stage-hud-panel:not(.is-collapsed)>.stage-hud-toggle>span{color:var(--tn-ink)!important}
.stage-hud-dock .stage-hud-panel.is-collapsed>.stage-hud-body{display:none!important}
.stage-hud-dock .stage-hud-toggle{display:flex!important}
.stage-hud-dock>.stage-hud-panel:not(.is-collapsed)>.stage-hud-body{
  width:100%!important;max-height:min(42vh,360px)!important;background:var(--tn-surface)!important;
  border-top:1px solid var(--tn-line)!important
}

.mep-xray-strip{font:inherit!important;color:var(--tn-ink)!important}
.mep-xray-strip-actions button,.mep-xray-filter{
  min-height:30px!important;border:1px solid var(--tn-line)!important;border-radius:var(--tn-radius)!important;
  background:var(--tn-surface)!important;color:var(--tn-muted)!important;font:inherit!important;font-size:var(--tn-font-xs)!important;font-weight:540!important
}
.mep-xray-strip-actions button:hover,.mep-xray-filter.is-on,.mep-xray-strip-actions button[aria-pressed="true"]{
  border-color:var(--tn-ink)!important;background:var(--tn-ink)!important;color:#fff!important
}
.mep-xray-filter.is-off{opacity:.55}

/* wr249 · Sistemas do Edifício · caixas no contrato IC */
#infoPanelBuildingSystems .system-network-item,
#infoPanelBuildingSystems .system-network-detail,
#infoPanelBuildingSystems .system-object-register,
#infoPanelBuildingSystems .system-conflicts,
#infoPanelBuildingSystems .system-network-form,
#infoPanelBuildingSystems .system-route-form{
  border:1px solid var(--tn-line)!important;border-radius:var(--tn-radius)!important;background:var(--tn-surface)!important
}
#infoPanelBuildingSystems .system-network-item.selected{
  border-color:var(--tn-ink)!important;box-shadow:inset 2px 0 var(--tn-ink)!important
}
#infoPanelBuildingSystems .system-network-item.electrical.selected{box-shadow:inset 2px 0 #4656a6!important;border-color:#4656a6!important}
#infoPanelBuildingSystems .system-network-item.water.selected{box-shadow:inset 2px 0 #1680a2!important;border-color:#1680a2!important}
#infoPanelBuildingSystems .system-network-item.drainage.selected{box-shadow:inset 2px 0 #8a5a32!important;border-color:#8a5a32!important}
#infoPanelBuildingSystems .system-network-select b{font-size:var(--tn-font-sm)!important;color:var(--tn-ink)!important;font-weight:620!important}
#infoPanelBuildingSystems .system-network-select small,
#infoPanelBuildingSystems .system-network-select em{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important}
#infoPanelBuildingSystems .system-mini-action{
  min-height:28px!important;border:1px solid var(--tn-line)!important;background:var(--tn-surface)!important;
  color:var(--tn-muted)!important;font-size:var(--tn-font-xs)!important;border-radius:var(--tn-radius)!important
}
#infoPanelBuildingSystems .system-mini-action:hover{border-color:var(--tn-ink)!important;color:var(--tn-ink)!important;background:var(--tn-surface-soft)!important}
#infoPanelBuildingSystems .systems-note{border-left:3px solid var(--tn-info)!important;background:rgba(83,116,134,.055)!important}
#infoPanelBuildingSystems .systems-space-context{border-left:3px solid var(--tn-ink)!important;background:var(--tn-surface-soft)!important}
#infoPanelBuildingSystems .el-specialty-panel,
#infoPanelBuildingSystems .hid-specialty-panel,
#infoPanelBuildingSystems .avac-specialty-panel{
  border:1px solid var(--tn-line)!important;border-radius:var(--tn-radius)!important;background:var(--tn-surface)!important;padding:12px!important;margin:0 0 14px!important
}
#infoPanelBuildingSystems .technical-inline-action button{
  border-color:var(--tn-ink)!important;background:var(--tn-ink)!important;color:#fff!important;border-radius:var(--tn-radius)!important;font-size:var(--tn-font-xs)!important
}

/* NORMA Walk chrome. Scene material colors stay untouched. */
.walk-view-button{border-color:var(--tn-line)!important;color:var(--tn-muted)!important}
.walk-view-button.active{background:var(--tn-ink)!important;border-color:var(--tn-ink)!important;color:#fff!important}
.walk-scene:focus-visible{box-shadow:inset 0 0 0 2px var(--tn-ink)!important}
.walk-controls,.walk-context-card,.walk-minimap{
  border-color:rgba(21,21,19,.16)!important;background:var(--tn-surface-raised)!important;box-shadow:var(--tn-shadow-float)!important;border-radius:var(--tn-radius)!important
}
.walk-controls header,.walk-context-card>header,.walk-minimap>header{border-bottom-color:var(--tn-line)!important}
.walk-controls header span,.walk-context-card>header span,.walk-context-card section>span,.walk-minimap header span{
  color:var(--tn-muted)!important;font-size:var(--tn-font-xs)!important;letter-spacing:var(--tn-track-label)!important
}
.walk-controls header em,.walk-context-card>header em{color:var(--tn-subtle)!important;font-size:var(--tn-font-xs)!important}
.walk-controls button{min-height:30px!important;border:1px solid var(--tn-line)!important;background:var(--tn-surface)!important;color:var(--tn-muted)!important;font-size:var(--tn-font-xs)!important;text-transform:none!important}
.walk-controls button:hover,.walk-controls button.active{border-color:var(--tn-ink)!important;background:var(--tn-ink)!important;color:#fff!important}
.walk-location,.walk-context-card footer{border-color:var(--tn-line)!important}
.walk-location small,.walk-context-card section>small,.walk-context-card footer{color:var(--tn-muted)!important;font-size:var(--tn-font-xs)!important}
.walk-card-metrics{background:var(--tn-line)!important}
.walk-card-metrics i{background:var(--tn-surface)!important}
.walk-card-metrics span{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important}
.walk-card-metrics b{font-size:var(--tn-font-xs)!important}
.walk-help{border-color:var(--tn-line)!important;background:rgba(255,255,252,.94)!important;color:var(--tn-muted)!important;font-size:var(--tn-font-xs)!important}

/* Construction Rehearsal */
.rehearsal-console{border-color:rgba(21,21,19,.16)!important;background:var(--tn-surface-raised)!important;box-shadow:var(--tn-shadow-float)!important;border-radius:var(--tn-radius)!important}
.rehearsal-console>header{border-bottom-color:var(--tn-line)!important}
.rehearsal-console>header span,.rehearsal-console>header em{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important}
.rehearsal-console>header em{background:var(--tn-surface-soft)!important}
.rehearsal-console>header em[data-source="build"]{background:var(--tn-ink)!important;color:#fff!important}
.rehearsal-current,.rehearsal-dependencies,.rehearsal-production,.rehearsal-transport,.rehearsal-evidence{border-color:var(--tn-line)!important;background:var(--tn-surface)!important}
.rehearsal-timeline{border-color:rgba(21,21,19,.16)!important;background:var(--tn-surface-raised)!important;box-shadow:var(--tn-shadow-float)!important}
.rehearsal-step{border-color:var(--tn-line)!important;background:var(--tn-surface)!important}
.rehearsal-step.active{border-color:var(--tn-ink)!important;box-shadow:inset 0 2px var(--tn-ink)!important}

/* NORMA DNA. Keep metrics distinct, remove the separate purple UI chrome. */
.dna-view-button{border-color:var(--tn-line)!important;color:var(--tn-muted)!important}
.dna-view-button.active{background:var(--tn-ink)!important;border-color:var(--tn-ink)!important;color:#fff!important}
.dna-analyse{background:var(--tn-paper)!important;color:var(--tn-ink)!important}
.dna-head,.dna-composition-panel,.dna-esg-panel,.dna-footer,.dna-unknown{border-color:var(--tn-line)!important;background:var(--tn-surface)!important}
.dna-head span,.dna-composition-panel header span,.dna-esg-panel header span{color:var(--tn-muted)!important}
.dna-selection-pill{border-color:var(--tn-line)!important;background:var(--tn-surface-soft)!important;color:var(--tn-ink)!important}
.dna-metric-modes button,.dna-scopes button{border-color:var(--tn-line)!important;background:var(--tn-surface)!important;color:var(--tn-muted)!important}
.dna-metric-modes button:hover,.dna-scopes button:hover,.dna-metric-modes button.active,.dna-scopes button.active{border-color:var(--tn-ink)!important;background:var(--tn-ink)!important;color:#fff!important}
.dna-bar-label small,.dna-bar-percent,.dna-no-data p,.dna-esg-axis small,.dna-footer p{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important}
.dna-bar-label em,.dna-esg-axis span,.dna-esg-axis b{font-size:var(--tn-font-sm)!important}
.dna-unknown{border-left:3px solid var(--tn-warning)!important;background:rgba(173,116,47,.055)!important}
.dna-unknown i{background:var(--tn-warning)!important}
.dna-unknown small{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important}

/* Guided Design. Status color is semantic; chrome returns to the system language. */
.guide-assistant-button{border-color:var(--tn-line)!important;color:var(--tn-muted)!important}
.guide-assistant-button.active{background:var(--tn-ink)!important;border-color:var(--tn-ink)!important;color:#fff!important}
.guide-assistant-button .view-icon.guide:after{background:var(--tn-guided)!important}
.guide-assistant-button.active .view-icon.guide:after{background:#fff!important;color:var(--tn-ink)!important}
.guided-design{border-color:rgba(21,21,19,.16)!important;background:var(--tn-surface-raised)!important;box-shadow:var(--tn-shadow-overlay)!important;color:var(--tn-ink)!important;border-radius:var(--tn-radius)!important}
.guided-head{padding:13px 14px!important;border-bottom-color:var(--tn-line)!important;background:var(--tn-surface)!important}
.guided-head span,.guided-section>header span,.guided-summary span{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important;letter-spacing:var(--tn-track-label)!important}
.guided-head b{font-size:12px!important}.guided-head small{font-size:var(--tn-font-xs)!important;color:var(--tn-subtle)!important}
.guided-head>button{width:28px!important;height:28px!important;border-color:var(--tn-line)!important;background:var(--tn-surface)!important;color:var(--tn-muted)!important;border-radius:var(--tn-radius)!important}
.guided-head>button:hover{border-color:var(--tn-ink)!important;background:var(--tn-ink)!important;color:#fff!important}
.guided-summary,.guided-live,.guided-section{border-color:var(--tn-line)!important}
.guided-summary b{font-size:var(--tn-font-sm)!important}.guided-summary small{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important}
.guided-summary em{border-color:var(--tn-line)!important;background:var(--tn-surface-soft)!important;color:var(--tn-muted)!important;font-size:var(--tn-font-xs)!important;border-radius:999px!important}
.guided-live{font-size:var(--tn-font-xs)!important}.guided-live button{min-height:30px!important;border-color:var(--tn-ink)!important;background:var(--tn-ink)!important;color:#fff!important;font-size:var(--tn-font-xs)!important}
.guided-live button[aria-pressed="false"]{border-color:var(--tn-line)!important;background:var(--tn-surface)!important;color:var(--tn-muted)!important}
.guided-section>header{min-height:34px;padding:8px 14px!important;background:var(--tn-surface-soft)!important}
.guided-section>header b{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important}
.guided-rules,.guided-evidence,.guided-decisions,.guided-suggestions{gap:6px!important;padding:9px 10px!important}
.guided-rules article,.guided-evidence article{grid-template-columns:22px 1fr!important;gap:8px!important;padding:8px 9px!important;border-color:var(--tn-line)!important;background:var(--tn-surface)!important}
.guided-rules b,.guided-evidence b{font-size:var(--tn-font-sm)!important}.guided-rules p,.guided-evidence p,.guided-evidence small{font-size:var(--tn-font-xs)!important;line-height:1.45!important}
.guided-decisions article{border-left-color:var(--tn-success)!important;background:rgba(95,127,98,.06)!important;padding:8px 9px!important}
.guided-decisions span,.guided-decisions small{font-size:var(--tn-font-xs)!important}.guided-decisions b{font-size:var(--tn-font-sm)!important}
.guided-empty{font-size:var(--tn-font-xs)!important}
.guided-suggestions button{gap:4px!important;padding:9px!important;border-color:var(--tn-line)!important;background:var(--tn-surface)!important;color:var(--tn-ink)!important;border-radius:var(--tn-radius)!important}
.guided-suggestions button:hover{border-color:var(--tn-ink)!important;background:var(--tn-surface-soft)!important}
.guided-suggestions b{font-size:var(--tn-font-sm)!important}.guided-suggestions small{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important}
.guided-proposal{border-color:var(--tn-line)!important;background:var(--tn-surface)!important;padding:10px!important}
.guided-proposal header span,.guided-proposal header em,.guided-proposal p,.guided-proposal small{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important}
.guided-proposal h4{font-size:var(--tn-font-sm)!important}
.guided-proposal dl,.guided-interface dl{background:var(--tn-line)!important}
.guided-proposal dl>div,.guided-interface dl>div{background:var(--tn-surface-soft)!important;padding:7px 8px!important}
.guided-proposal dt,.guided-interface dt{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important}
.guided-proposal dd,.guided-interface dd{font-size:var(--tn-font-xs)!important}
.guided-interface>small,.guided-impact span,.guided-impact small,.guided-impact>b{font-size:var(--tn-font-xs)!important}
.guided-impact{border-color:var(--tn-line)!important;background:var(--tn-surface-soft)!important}
.guided-impact>div{border-top-color:var(--tn-line)!important}
.guided-proposal-actions{gap:6px!important;padding:0 10px 10px!important}
.guided-proposal-actions button,.guided-materialize{min-height:32px!important;border-color:var(--tn-line)!important;background:var(--tn-surface)!important;color:var(--tn-ink)!important;font-size:var(--tn-font-xs)!important;border-radius:var(--tn-radius)!important}
.guided-proposal-actions button:hover,.guided-materialize:hover{border-color:var(--tn-ink)!important;background:var(--tn-surface-soft)!important}
.guided-proposal-actions .primary-control{border-color:var(--tn-ink)!important;background:var(--tn-ink)!important;color:#fff!important}
.guided-disclosure{background:var(--tn-surface-soft)!important;color:var(--tn-muted)!important;font-size:var(--tn-font-xs)!important}

/* Semantic status contract shared across panels */
[data-status="allowed"],[data-state="success"],[data-state="ready"],.rule-confirmed,.area-requirement.satisfied{color:var(--tn-success)!important}
[data-status="conditional"],[data-status="limit"],.rule-warning,.area-requirement.warning{color:var(--tn-warning)!important}
[data-status="blocked"],[data-status="insufficient"],[data-state="error"],.rule-conflict,.area-requirement.violated{color:var(--tn-danger)!important}
[data-status="indeterminate"],.pending{color:var(--tn-muted)!important}

/* Reduced motion and touch */
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
@media(max-width:760px){
  :root{--tn-control-h:40px;--tn-font-md:13px;--tn-font-sm:11px;--tn-font-xs:10px}
  .auth-card{padding:28px 24px}
  .workspace-screen header nav button,.viewbar .view,.platform-switch button,.workspace-lenses .lens-btn{min-height:38px}
  .info-pulldown-toggle{min-height:44px}
  .guided-design{font-size:11px}
}

/* Print stays quiet and evidence-led */
@media print{
  body{background:#fff!important;color:#000!important}
  .os-console-backdrop,.toast,.walk-controls,.stage-controls,.guided-design,.rehearsal-console{display:none!important}
  .auth-card,.site-analysis-card,.tn-panel{box-shadow:none!important}
}


/* v1.13.0 · S0-I25 · Walk + Rehearse Visual Refinement UI-05D
   Presentation-only convergence of the I24 action docks with the canonical visual language. */
:root{
  --tn-dock-control-h:30px;
  --tn-dock-header-h:40px;
  --tn-dock-group-pad:10px 12px;
}

/* Shared action-dock grammar — Walk/Rehearse only (not module library) */
.workspace-screen:has(#walkActionDock:not([hidden])) .workspace-grid main,
.workspace-screen:has(#rehearsalActionDock:not([hidden])) .workspace-grid main,
.workspace-screen[data-action-dock="walk"] .workspace-grid main,.workspace-screen[data-action-dock="rehearse"] .workspace-grid main{grid-template-rows:50px minmax(0,1fr) 178px minmax(48px,auto)!important}
.action-dock:not(.model-action-dock){
  height:178px!important;min-height:178px!important;
  background:var(--tn-surface)!important;border-top:1px solid var(--tn-line)!important;
  box-shadow:0 -1px 0 rgba(23,23,20,.02)!important
}
#modelActionDock.model-action-dock,
.workspace-screen[data-action-dock="model"] #modelActionDock{
  height:auto!important;min-height:0!important;max-height:none!important;
}
.workspace-screen[data-action-dock="model"] .workspace-grid main{
  grid-template-rows:50px minmax(0,1fr) auto minmax(48px,auto)!important;
}
.walk-navigation-dock-controls,.rehearsal-sequence-dock{
  color:var(--tn-ink)!important;background:var(--tn-surface)!important
}
.walk-navigation-dock-controls>header,.rehearsal-sequence-dock>header{
  min-height:var(--tn-dock-header-h)!important;box-sizing:border-box!important;
  padding:8px 14px!important;border-bottom:1px solid var(--tn-line)!important;
  background:var(--tn-surface-soft)!important
}
.walk-navigation-dock-controls>header span,.rehearsal-sequence-dock>header span,
.walk-dock-group>span{
  font-size:var(--tn-font-micro)!important;line-height:1.15!important;
  letter-spacing:var(--tn-track-label)!important;color:var(--tn-muted)!important;font-weight:650!important
}
.walk-navigation-dock-controls>header b,.rehearsal-sequence-dock>header b{
  font-size:var(--tn-font-sm)!important;font-weight:620!important;letter-spacing:.005em!important;color:var(--tn-ink)!important
}
.walk-navigation-dock-controls>header em{
  min-height:24px;display:inline-flex;align-items:center;box-sizing:border-box;
  padding:4px 8px!important;border:1px solid var(--tn-line)!important;background:var(--tn-surface)!important;
  color:var(--tn-muted)!important;font-size:var(--tn-font-micro)!important;font-weight:560!important
}

/* Walk: hierarchy first, keyboard hints second */
.walk-dock-body{grid-template-columns:1.18fr 1fr 1.28fr .92fr!important}
.walk-dock-group{gap:6px!important;padding:var(--tn-dock-group-pad)!important;border-right:1px solid var(--tn-line)!important}
.walk-dock-group>p{margin:2px 0 0!important;color:var(--tn-muted)!important;font-size:var(--tn-font-micro)!important;line-height:1.45!important}
.walk-navigation-dock-controls button,
.rehearsal-sequence-dock button{
  min-height:var(--tn-dock-control-h)!important;box-sizing:border-box!important;
  border:1px solid var(--tn-line)!important;background:var(--tn-surface)!important;color:var(--tn-muted)!important;
  padding:6px 9px!important;font:560 var(--tn-font-micro)/1.15 inherit!important;
  transition:background var(--tn-transition),border-color var(--tn-transition),color var(--tn-transition)!important
}
.walk-navigation-dock-controls button:hover,.rehearsal-sequence-dock button:hover{
  border-color:var(--tn-line-strong)!important;background:var(--tn-surface-soft)!important;color:var(--tn-ink)!important
}
.walk-navigation-dock-controls button.active,.rehearsal-sequence-dock button.active,
.rehearsal-sequence-dock .primary-control{
  border-color:var(--tn-ink)!important;background:var(--tn-ink)!important;color:#fff!important
}
.walk-mode-row,.walk-building-row,.walk-level-visibility-row,.walk-visual-row,.walk-cut-row,
.walk-orbit-row,.walk-flyover-row{gap:0!important}
.walk-mode-row button+button,.walk-building-row button+button,.walk-level-visibility-row button+button,
.walk-visual-row button+button,.walk-cut-row button+button,.walk-orbit-row button+button,.walk-flyover-row button+button{margin-left:-1px}
.walk-pad{gap:4px!important}
.walk-navigation-dock-controls .walk-pad button{
  min-width:0!important;background:var(--tn-surface-soft)!important;color:var(--tn-ink)!important;
  border-color:var(--tn-line)!important;font-size:var(--tn-font-micro)!important;font-weight:600!important
}
.walk-navigation-dock-controls .walk-pad button:hover{
  background:var(--tn-surface)!important;border-color:var(--tn-ink)!important
}
.walk-floor-row{min-height:30px!important;gap:4px!important}
.walk-navigation-dock-controls .walk-floor-row>b{
  font-size:var(--tn-font-micro)!important;font-weight:600!important;color:var(--tn-ink)!important;white-space:nowrap
}

/* Walk overlays: native information surfaces, not foreign floating widgets */
.walk-minimap{
  width:218px!important;padding:0!important;border:1px solid var(--tn-line)!important;
  background:var(--tn-surface-raised)!important;box-shadow:var(--tn-shadow-float)!important;backdrop-filter:blur(8px)!important
}
.walk-minimap>header{padding:9px 10px!important;border-bottom:1px solid var(--tn-line)!important;background:var(--tn-surface)!important}
.walk-minimap header span{font-size:var(--tn-font-micro)!important;color:var(--tn-muted)!important;font-weight:650!important;letter-spacing:var(--tn-track-label)!important}
.walk-minimap header b{font-size:var(--tn-font-micro)!important;font-weight:580!important;color:var(--tn-ink)!important}
.walk-minimap>svg{height:138px!important;margin:0!important;background:var(--tn-surface-soft)!important}
.walk-map-module{fill:rgba(23,23,20,.025)!important;stroke:var(--tn-line-strong)!important}
.walk-map-space{fill:rgba(83,116,134,.08)!important;stroke:var(--tn-info)!important}
.walk-map-space:hover,.walk-map-space.active{fill:rgba(83,116,134,.17)!important;stroke-width:1.5!important}
.walk-map-camera{fill:var(--tn-ink)!important;stroke:#fff!important}
.walk-context-card{
  border-color:var(--tn-line)!important;background:var(--tn-surface-raised)!important;
  box-shadow:var(--tn-shadow-float)!important;backdrop-filter:blur(8px)!important
}
.walk-help{
  padding:5px 8px!important;border:1px solid var(--tn-line)!important;background:rgba(255,255,252,.94)!important;
  box-shadow:none!important;color:var(--tn-muted)!important;font-size:var(--tn-font-micro)!important;letter-spacing:0!important
}

/* Environment control behaves as one segmented system control */
.floating-environment{
  gap:0!important;padding:2px!important;border:1px solid var(--tn-line)!important;
  background:var(--tn-surface-raised)!important;box-shadow:var(--tn-shadow-float)!important
}
.floating-env-btn{
  width:30px!important;height:30px!important;border:0!important;background:transparent!important;color:var(--tn-muted)!important;box-shadow:none!important
}
.floating-env-btn+.floating-env-btn{border-left:1px solid var(--tn-line)!important}
.floating-env-btn:hover{background:var(--tn-surface-soft)!important;color:var(--tn-ink)!important}
.floating-env-btn.active{background:var(--tn-ink)!important;color:#fff!important}

/* Rehearse: time reads horizontally, status reads quietly */
.rehearsal-sequence-dock{
  grid-template-columns:205px 235px minmax(0,1fr)!important;grid-template-rows:var(--tn-dock-header-h) minmax(0,1fr)!important
}
.rehearsal-view-mode{padding:0!important;gap:0!important}
.rehearsal-view-mode button+button{margin-left:-1px}
.rehearsal-sequence-controls{grid-template-columns:205px 235px!important;border-right:1px solid var(--tn-line)!important}
.rehearsal-sequence-controls .rehearsal-transport,
.rehearsal-sequence-controls .rehearsal-options{padding:10px 12px!important;background:var(--tn-surface)!important}
.rehearsal-sequence-controls .rehearsal-transport{gap:5px!important}
.rehearsal-sequence-controls .rehearsal-transport button{font-size:var(--tn-font-micro)!important}
.rehearsal-options{align-items:flex-start!important;gap:8px!important}
.rehearsal-options>div{gap:0!important}
.rehearsal-options>div button+button{margin-left:-1px!important}
.rehearsal-dock-timeline{
  gap:6px!important;padding:9px 10px!important;border-left:1px solid var(--tn-line)!important;background:var(--tn-surface)!important;box-shadow:none!important
}
.rehearsal-dock-timeline .rehearsal-step{
  flex-basis:132px!important;min-height:92px!important;padding:9px 9px 9px 12px!important;
  border:1px solid var(--tn-line)!important;background:var(--tn-surface)!important;box-shadow:none!important
}
.rehearsal-step>i{width:2px!important;background:var(--tn-line-strong)!important}
.rehearsal-step>span{font-size:var(--tn-font-micro)!important;color:var(--tn-subtle)!important}
.rehearsal-step>b{margin:5px 0 4px!important;font-size:var(--tn-font-micro)!important;font-weight:620!important;color:var(--tn-ink)!important;line-height:1.3!important}
.rehearsal-step>small{font-size:var(--tn-font-micro)!important;color:var(--tn-muted)!important;line-height:1.3!important}
.rehearsal-step:hover{border-color:var(--tn-line-strong)!important;background:var(--tn-surface-soft)!important}
.rehearsal-step.active{border-color:var(--tn-ink)!important;background:var(--tn-surface)!important;box-shadow:inset 0 2px var(--tn-ink)!important}
.rehearsal-sequence-dock .rehearsal-step.active{background:var(--tn-surface)!important;color:var(--tn-ink)!important;border-color:var(--tn-ink)!important;box-shadow:inset 0 2px var(--tn-ink)!important}

/* Rehearse detail column follows the same editorial scale */
.rehearsal-detail-console>header span,.rehearsal-current header span,.rehearsal-current header em,
.rehearsal-evidence>header span,.rehearsal-production>header span,.rehearsal-dependencies>span,
.rehearsal-evidence-block>span,.rehearsal-evidence-block>small,
.rehearsal-evidence-detail p,.rehearsal-evidence-detail li,
.rehearsal-production dt,.rehearsal-production dd,.rehearsal-production small,
.rehearsal-dependencies b,.rehearsal-dependencies small,.rehearsal-disclosure{
  font-size:var(--tn-font-micro)!important
}
.rehearsal-current p,.rehearsal-current small,.rehearsal-current li,
.rehearsal-evidence-block>b,.rehearsal-evidence-detail h4,
.rehearsal-production>header b,.rehearsal-production article>header b{
  font-size:var(--tn-font-xs)!important
}
.rehearsal-current{background:var(--tn-surface-soft)!important;border-left:2px solid var(--tn-warning)!important}
.rehearsal-evidence,.rehearsal-production{border-color:var(--tn-line)!important;background:var(--tn-surface)!important}
.rehearsal-evidence-detail{background:var(--tn-surface-soft)!important}
.rehearsal-evidence-block{display:flex!important;align-items:baseline!important;gap:8px!important;min-height:0!important;width:100%!important;border-color:var(--tn-line)!important;background:var(--tn-surface)!important;padding:7px 9px!important}
.rehearsal-evidence-block:hover,.rehearsal-evidence-block.active{border-color:var(--tn-ink)!important;background:var(--tn-surface-soft)!important}
.rehearsal-production>button{min-height:30px!important;border-color:var(--tn-ink)!important;background:var(--tn-ink)!important;color:#fff!important;font-size:var(--tn-font-micro)!important}
.rehearsal-dependencies #rehearsalDependencies>div{min-height:30px!important;border-color:var(--tn-line)!important;background:var(--tn-surface-soft)!important}

@media(max-height:820px){
  /* Keep Walk/Rehearse at 178px — do not compress the Navigation/Sequence Dock on laptop heights. */
  .workspace-screen:has(#walkActionDock:not([hidden])) .workspace-grid main,
  .workspace-screen:has(#rehearsalActionDock:not([hidden])) .workspace-grid main,
  .workspace-screen[data-action-dock="walk"] .workspace-grid main,.workspace-screen[data-action-dock="rehearse"] .workspace-grid main{grid-template-rows:50px minmax(0,1fr) 178px 68px!important}
  .action-dock:not(.model-action-dock):not(.walk-action-dock):not(.rehearsal-action-dock){height:148px!important;min-height:148px!important}
  .walk-action-dock.action-dock,.rehearsal-action-dock.action-dock,
  .workspace-screen[data-action-dock="walk"] #walkActionDock,
  .workspace-screen[data-action-dock="rehearse"] #rehearsalActionDock{height:178px!important;min-height:178px!important}
  .workspace-screen[data-action-dock="model"] .workspace-grid main{grid-template-rows:50px minmax(0,1fr) auto 68px!important}
  #modelActionDock.model-action-dock,.workspace-screen[data-action-dock="model"] #modelActionDock{height:auto!important;min-height:0!important;max-height:none!important}
  .walk-navigation-dock-controls>header,.rehearsal-sequence-dock>header{min-height:34px!important;padding-block:6px!important}
  .walk-dock-body{overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}
  .walk-dock-group{padding:7px 9px!important;gap:4px!important}
  .walk-navigation-dock-controls button,.rehearsal-sequence-dock button{min-height:26px!important;padding-block:4px!important}
  .rehearsal-dock-timeline .rehearsal-step{min-height:76px!important}
}


/* S0-I26 · NORMA LOD + Universal Component Card UX-06A */
.representation-controls{display:flex;align-items:center;gap:5px;padding:3px 5px;border:1px solid var(--tn-line);background:var(--tn-surface-soft);border-radius:var(--tn-radius-sm)}
.representation-controls label{display:flex;align-items:center;gap:4px;color:var(--tn-muted);font-size:var(--tn-font-micro);font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.representation-controls .tn-select{min-width:88px;height:28px;padding:0 22px 0 7px;font-size:var(--tn-font-xs)}
.component-card-pulldown .info-pulldown-toggle span::before{content:none!important;margin:0!important}
/* Info center must paint above canvas chrome (day/night) — never under floating controls. */
.workspace-grid>.right.information-center{
  position:relative;
  z-index:24;
  background:var(--tn-surface-soft,#fbfbf9);
}
/* Day/night must stay above Walk scene (z-index 13) and clear of the right context card. */
#canvas > .floating-environment{z-index:22}
.workspace-screen[data-action-dock="walk"] #canvas > .floating-environment,
#canvas:has(#walkScene:not([hidden])) > .floating-environment{
  left:16px;
  right:auto;
  top:16px;
  z-index:22;
}

/* Universal Component Card · wr243 · contido no painel IC (sem overflow sobre vizinhos). */
.universal-card-empty{
  display:flex;
  flex-direction:column;
  gap:10px;
  padding:14px;
  min-width:0;
  max-width:100%;
  overflow:hidden;
}
.universal-card-eyebrow,
.universal-component-card header .universal-card-eyebrow,
.component-card-section h4,
.universal-component-card footer span{
  display:block;
  margin:0;
  padding:0;
  color:var(--tn-accent,#315b50);
  font-size:var(--tn-font-xs);
  font-weight:800;
  letter-spacing:var(--tn-track-label);
  text-transform:uppercase;
  line-height:var(--tn-leading-body);
  white-space:normal;
  overflow-wrap:anywhere;
  word-break:break-word;
  max-width:100%;
}
.universal-card-title{
  display:block;
  margin:0;
  padding:0;
  font-size:var(--tn-font-md);
  font-weight:700;
  line-height:1.35;
  overflow-wrap:anywhere;
  word-break:break-word;
  max-width:100%;
}
.universal-card-empty>small{
  display:block;
  margin:0;
  color:var(--tn-muted);
  font-size:var(--tn-font-xs);
  line-height:1.45;
  overflow-wrap:anywhere;
}
.component-card-pulldown .info-pulldown-panel,
.information-center .component-card-pulldown .info-pulldown-panel{
  overflow:hidden!important;
  min-width:0;
  max-width:100%;
}
.information-center .component-card-pulldown.info-pulldown,
.right.information-center .component-card-pulldown.info-pulldown{
  overflow:hidden!important;
  min-width:0;
}
.universal-component-card{
  display:grid;
  background:var(--tn-surface);
  overflow:hidden;
  min-width:0;
  max-width:100%;
  box-sizing:border-box;
}
.universal-component-card>header{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:8px 10px;
  align-items:start;
  padding:12px;
  border-bottom:1px solid var(--tn-line);
  overflow:hidden;
  min-width:0;
}
.universal-component-card>header>div{
  display:flex;
  flex-direction:column;
  gap:8px;
  min-width:0;
  max-width:100%;
  overflow:hidden;
}
.universal-component-card header h3{
  margin:0;
  font-size:var(--tn-font-md);
  line-height:1.35;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.universal-component-card header small{
  display:block;
  max-width:100%;
  color:var(--tn-muted);
  font-size:var(--tn-font-micro);
  line-height:1.45;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.component-standard{
  flex:0 0 auto;
  max-width:6.75rem;
  padding:4px 6px;
  border:1px solid var(--tn-line-strong);
  border-radius:999px;
  background:var(--tn-surface-soft);
  font-size:var(--tn-font-micro);
  font-style:normal;
  font-weight:800;
  line-height:1.25;
  text-align:center;
  overflow-wrap:anywhere;
  word-break:break-word;
  box-sizing:border-box;
}
.component-standard.standard{color:var(--tn-success)}.component-standard.configuration{color:var(--tn-warning)}.component-standard.custom{color:var(--tn-danger)}
.component-card-section{display:grid;gap:7px;padding:10px 12px;border-bottom:1px solid var(--tn-line);min-width:0;overflow:hidden}.component-card-section h4{margin:0}.component-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--tn-line);min-width:0}.component-card-grid>div{display:grid;min-width:0;gap:3px;padding:7px 8px;background:var(--tn-surface);overflow:hidden}.component-card-grid span{color:var(--tn-muted);font-size:var(--tn-font-micro)}.component-card-grid b{overflow-wrap:anywhere;word-break:break-word;font-size:var(--tn-font-xs);max-width:100%}
.component-dimensions{margin:0;font-size:var(--tn-font-sm);font-weight:800;overflow-wrap:anywhere}.component-not-demonstrated{color:var(--tn-muted)!important;font-weight:600!important;font-style:italic}.universal-component-card footer{display:grid;gap:3px;padding:9px 12px;min-width:0;overflow:hidden}.universal-component-card footer small{color:var(--tn-muted);font-size:var(--tn-font-micro);line-height:1.4;overflow-wrap:anywhere;word-break:break-word}
body[data-norma-mode="clean"] .component-depth.technical,body[data-norma-mode="clean"] .component-depth.engineering,body[data-norma-mode="clean"] .component-depth.fabrication,body[data-norma-mode="clean"] .component-depth.build{display:none}
body[data-norma-lod="1"] .component-depth.engineering,body[data-norma-lod="1"] .component-depth.fabrication,body[data-norma-lod="1"] .component-depth.build,body[data-norma-lod="2"] .component-depth.fabrication,body[data-norma-lod="2"] .component-depth.build{display:none}
body[data-norma-lod="0"] .component-depth.technical,body[data-norma-lod="0"] .component-depth.engineering,body[data-norma-lod="0"] .component-depth.fabrication,body[data-norma-lod="0"] .component-depth.build{display:none}
body[data-norma-mode="technical"] .component-depth.fabrication,body[data-norma-mode="technical"] .component-depth.build,body[data-norma-mode="engineering"] .component-depth.fabrication,body[data-norma-mode="engineering"] .component-depth.build,body[data-norma-mode="fabrication"] .component-depth.build{display:none}
.lod-space-massing{fill:rgba(49,91,80,.08)!important;stroke:var(--tn-accent)!important;stroke-dasharray:4 4;stroke-width:1.25!important}.solid-face.space-massing3d{fill:rgba(49,91,80,.10)!important;stroke:rgba(49,91,80,.48)!important}.wire-edge.space-massing3d{stroke:rgba(49,91,80,.52)!important}
@media(max-width:1180px){.representation-controls label{font-size:0}.representation-controls label::first-letter{font-size:var(--tn-font-micro)}.representation-controls .tn-select{min-width:76px}}

/* S0-I27 · Live Project Dashboard + Design Health UX-06B */
.live-project-dashboard{display:grid;background:var(--tn-surface);color:var(--tn-ink)}
.live-project-dashboard>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px;border-bottom:1px solid var(--tn-line)}
.live-project-dashboard>header span,.live-project-known h4,.project-gates h4,.design-health-title h4{display:block;margin:0;color:var(--tn-accent);font-size:var(--tn-font-micro);font-weight:800;letter-spacing:.1em;text-transform:uppercase}
.live-project-dashboard>header h3{margin:2px 0;font-size:var(--tn-font-md);line-height:1.2}.live-project-dashboard>header small{display:block;color:var(--tn-muted);font-size:var(--tn-font-micro);line-height:1.45}
.live-project-dashboard>header em{border:1px solid var(--tn-line-strong);padding:4px 6px;font-size:var(--tn-font-micro);font-style:normal;font-weight:800;letter-spacing:.08em}
.live-project-primary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-bottom:1px solid var(--tn-line)}
.live-project-known,.project-gates,.design-health{padding:10px 12px;border-bottom:1px solid var(--tn-line)}
.live-project-known-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:7px;border-top:1px solid var(--tn-line);border-left:1px solid var(--tn-line)}
.live-project-metric{min-width:0;padding:9px 10px;border-right:1px solid var(--tn-line);border-bottom:1px solid var(--tn-line)}
.live-project-primary .live-project-metric{border-right:1px solid var(--tn-line);border-bottom:1px solid var(--tn-line)}
.live-project-metric span,.project-gate span{display:block;color:var(--tn-muted);font-size:var(--tn-font-micro);line-height:1.3}.live-project-metric b{display:block;margin-top:3px;font-size:var(--tn-font-sm);font-weight:800;line-height:1.25;overflow-wrap:anywhere}.live-project-metric small{display:block;margin-top:3px;color:var(--tn-subtle);font-size:var(--tn-font-micro);line-height:1.35}
.live-project-metric.not-demonstrated b{color:var(--tn-muted);font-style:italic;font-weight:600}.live-project-metric.partial b{font-weight:700}
.project-gates>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin-top:7px;background:var(--tn-line);border:1px solid var(--tn-line)}.project-gate{min-width:0;padding:8px 9px;background:var(--tn-surface)}.project-gate b{display:block;margin-top:3px;font-size:var(--tn-font-xs);font-weight:800}.project-gate.state-ready b,.project-gate.state-documented b{color:var(--tn-success)}.project-gate.state-blocked b{color:var(--tn-danger)}.project-gate.state-not-demonstrated b,.project-gate.state-not-evaluated b{color:var(--tn-muted)}
.design-health-title{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:8px}.design-health-title small{display:block;margin-top:2px;color:var(--tn-muted);font-size:var(--tn-font-micro)}.design-health-title>b{font-size:var(--tn-font-xs);font-weight:700;color:var(--tn-muted)}
.design-health-axis{display:grid;gap:4px;padding:8px 0;border-top:1px solid var(--tn-line)}.design-health-axis-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.design-health-axis-head span{font-size:var(--tn-font-xs);font-weight:700}.design-health-axis-head b{font-size:var(--tn-font-xs);font-weight:800}.design-health-axis>small{color:var(--tn-muted);font-size:var(--tn-font-micro);line-height:1.35}
.design-health-track{display:grid;grid-template-columns:repeat(10,1fr);gap:2px;height:4px}.design-health-track i{display:block;background:var(--tn-line)}.design-health-track i.on{background:var(--tn-ink)}.design-health-axis.state-ready .design-health-track i.on{background:var(--tn-success)}.design-health-axis.state-blocked .design-health-track i.on{background:var(--tn-danger)}.design-health-axis.state-not-evaluated .design-health-track i{background:var(--tn-surface-soft)}
.live-project-dashboard>footer{padding:9px 12px;color:var(--tn-muted);font-size:var(--tn-font-micro);line-height:1.45}
@media (max-width:1080px){.live-project-primary,.live-project-known-grid,.project-gates>div{grid-template-columns:1fr}}

/* S0-I28 · What Changed? + Standard / Configuration / Custom UX-06C */
.project-standardisation,.what-changed{padding:10px 12px;border-bottom:1px solid var(--tn-line);background:var(--tn-surface)}
.project-standardisation h4,.what-changed h4{margin:0;color:var(--tn-accent);font-size:var(--tn-font-micro);font-weight:800;letter-spacing:.1em;text-transform:uppercase}
.project-standardisation-title,.what-changed-title{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.project-standardisation-title small,.what-changed-title small{display:block;margin-top:2px;color:var(--tn-muted);font-size:var(--tn-font-micro);line-height:1.4}.project-standardisation-title>b{font-size:var(--tn-font-xs);font-weight:700;color:var(--tn-muted)}
.project-standardisation-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin-top:8px;border:1px solid var(--tn-line);background:var(--tn-line)}
.standardisation-bucket{min-width:0;padding:8px 9px;background:var(--tn-surface)}.standardisation-bucket span{display:block;color:var(--tn-muted);font-size:var(--tn-font-micro)}.standardisation-bucket b{display:block;margin-top:3px;font-size:var(--tn-font-sm);font-weight:800}.standardisation-bucket small{display:block;margin-top:2px;color:var(--tn-subtle);font-size:var(--tn-font-micro)}
.standardisation-bucket.standard b{color:var(--tn-success)}.standardisation-bucket.configuration b{color:var(--tn-ink)}.standardisation-bucket.custom b{color:var(--tn-danger)}.standardisation-bucket.unclassified b{color:var(--tn-muted)}
.standardisation-impact-note{display:grid;grid-template-columns:auto 1fr;gap:8px;margin-top:8px;padding:8px;background:var(--tn-surface-soft);font-size:var(--tn-font-micro);line-height:1.45}.standardisation-impact-note b{font-size:var(--tn-font-micro);text-transform:uppercase;letter-spacing:.08em}.standardisation-impact-note span{color:var(--tn-muted)}
.what-changed-title em{padding:4px 6px;border:1px solid var(--tn-line-strong);background:var(--tn-surface-soft);font-size:var(--tn-font-micro);font-style:normal;font-weight:800;letter-spacing:.06em}.what-changed.kept-current .what-changed-title em{color:var(--tn-muted)}
.revision-source{display:grid;gap:2px;margin-top:8px;padding:8px;border:1px solid var(--tn-line);background:var(--tn-surface-soft)}.revision-source span{color:var(--tn-muted);font-size:var(--tn-font-micro);text-transform:uppercase;letter-spacing:.08em}.revision-source b{font-size:var(--tn-font-xs)}.revision-source small{color:var(--tn-muted);font-size:var(--tn-font-micro);line-height:1.4}
.revision-diff{display:grid;margin-top:8px;border-top:1px solid var(--tn-line)}.revision-change{display:grid;grid-template-columns:minmax(88px,.8fr) minmax(0,1.4fr);gap:8px;align-items:baseline;padding:7px 0;border-bottom:1px solid var(--tn-line)}.revision-change span{color:var(--tn-muted);font-size:var(--tn-font-micro)}.revision-change b{display:flex;align-items:baseline;justify-content:flex-end;gap:5px;min-width:0;text-align:right;font-size:var(--tn-font-xs);font-weight:700;overflow-wrap:anywhere}.revision-change i{color:var(--tn-subtle);font-style:normal;font-weight:500}.revision-change.state-evidence-gap b{color:var(--tn-muted)}
.what-changed:not(.show-all) .revision-change:nth-child(n+5){display:none}.revision-blocker{margin-top:8px;padding:8px;border-left:2px solid var(--tn-danger);background:var(--tn-surface-soft);color:var(--tn-danger);font-size:var(--tn-font-micro);line-height:1.45}
.revision-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:9px}.revision-actions button{min-height:30px;padding:6px 8px;border:1px solid var(--tn-line-strong);background:var(--tn-surface);color:var(--tn-ink);font:inherit;font-size:var(--tn-font-micro);font-weight:700}.revision-actions button:hover:not(:disabled){border-color:var(--tn-ink)}.revision-actions button.dark{border-color:var(--tn-ink);background:var(--tn-ink);color:#fff}.revision-actions button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:1080px){.project-standardisation-grid{grid-template-columns:1fr}.revision-actions{grid-template-columns:1fr}.revision-change{grid-template-columns:1fr}.revision-change b{justify-content:flex-start;text-align:left}}

/* S0-I30 · Assembly Dependency Map UX-07A
   Projection-only BUILD bridge. Visual language inherits the canonical TheNorma tokens. */
.assembly-readiness-panel{display:grid;gap:var(--tn-space-2);padding:var(--tn-space-3) 0 0;border-top:1px solid var(--tn-line);background:transparent}
.assembly-readiness-panel>header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--tn-space-2)}
.assembly-readiness-panel>header>div{display:grid;gap:2px}.assembly-readiness-panel>header span,.assembly-map-head span{font-size:var(--tn-font-xs);font-weight:800;letter-spacing:.11em;color:var(--tn-subtle)}
.assembly-readiness-panel>header b{font-size:var(--tn-font-sm);font-weight:800;color:var(--tn-ink)}
#assemblyReadinessBadge{font-style:normal;font-size:var(--tn-font-xs);font-weight:800;padding:4px 6px;border:1px solid var(--tn-line);color:var(--tn-muted);background:var(--tn-surface)}
#assemblyReadinessBadge[data-status="ready"],#assemblyReadinessBadge[data-status="complete"]{border-color:color-mix(in srgb,var(--tn-success) 45%,var(--tn-line));color:var(--tn-success)}
#assemblyReadinessBadge[data-status="blocked"]{border-color:color-mix(in srgb,var(--tn-danger) 45%,var(--tn-line));color:var(--tn-danger)}
.assembly-prerequisites{display:grid;gap:4px}.assembly-prerequisite{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:7px;align-items:center;padding:7px 8px;border:1px solid var(--tn-line);background:var(--tn-surface)}
.assembly-prerequisite>i{font-style:normal;width:16px;height:16px;display:grid;place-items:center;border:1px solid var(--tn-line);font-size:var(--tn-font-xs);font-weight:850}.assembly-prerequisite>div{display:grid;gap:2px;min-width:0}.assembly-prerequisite b{font-size:var(--tn-font-sm);font-weight:750;color:var(--tn-ink)}.assembly-prerequisite small{font-size:var(--tn-font-xs);line-height:1.35;color:var(--tn-muted)}.assembly-prerequisite>em{font-style:normal;font-size:var(--tn-font-xs);font-weight:750;color:var(--tn-subtle)}
.assembly-prerequisite.status-resolved>i{border-color:var(--tn-success);color:var(--tn-success)}.assembly-prerequisite.status-blocked>i,.assembly-prerequisite.status-blocked>em{border-color:var(--tn-danger);color:var(--tn-danger)}.assembly-prerequisite.status-not-applicable{opacity:.72}
.assembly-map-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-top:2px}.assembly-map-head small{font-size:var(--tn-font-xs);color:var(--tn-muted)}
.assembly-dependency-map{display:flex;align-items:stretch;gap:5px;overflow:auto;padding:1px 1px 5px;scrollbar-width:thin}.assembly-map-node{flex:0 0 132px;min-height:74px;display:grid;grid-template-columns:8px 1fr;grid-template-rows:auto auto 1fr auto;column-gap:7px;text-align:left;padding:8px;border:1px solid var(--tn-line);background:var(--tn-surface);color:var(--tn-ink);box-shadow:none}.assembly-map-node>i{grid-row:1/-1;width:3px;background:var(--tn-line-strong);align-self:stretch}.assembly-map-node>span{font-size:var(--tn-font-xs);font-weight:800;letter-spacing:.06em;color:var(--tn-subtle)}.assembly-map-node>b{font-size:var(--tn-font-sm);line-height:1.25;font-weight:780}.assembly-map-node>small{font-size:var(--tn-font-xs);color:var(--tn-muted);align-self:end}.assembly-map-node:hover,.assembly-map-node:focus-visible{border-color:var(--tn-line-strong);outline:2px solid var(--tn-focus);outline-offset:1px}.assembly-map-node.active{border-color:var(--tn-ink);background:var(--tn-surface-soft)}.assembly-map-node.readiness-ready>i,.assembly-map-node.readiness-complete>i{background:var(--tn-success)}.assembly-map-node.readiness-blocked>i,.assembly-map-node.cycle>i{background:var(--tn-danger)}
.assembly-map-connector{display:grid;place-items:center;flex:0 0 10px;font-size:10px;color:var(--tn-subtle);align-self:center}
@media(max-width:900px){.assembly-map-node{flex-basis:118px}.assembly-prerequisite{grid-template-columns:16px minmax(0,1fr)}.assembly-prerequisite>em{grid-column:2}}

/* S0-I31 · NORMA Factory UX-07B · Design System v1.18.0
   Factory is operational BUILD context, not a parallel ERP skin. */
.view-icon.factory{position:relative;border:1.5px solid currentColor;border-radius:1px;width:15px;height:12px;box-sizing:border-box}.view-icon.factory:before,.view-icon.factory:after{content:"";position:absolute;left:2px;right:2px;height:1px;background:currentColor}.view-icon.factory:before{top:3px}.view-icon.factory:after{top:7px}
.factory-context-tools{display:grid;gap:var(--tn-space-3)}.factory-context-tools>header,.factory-qa-summary>header,.factory-lot-form>header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--tn-space-2)}.factory-context-tools>header>div{display:grid;gap:2px}.factory-context-tools>header span,.factory-lot-form>header span,.factory-qa-summary>header span,.factory-dock-shell>header span,.factory-dock-grid>section>header span{font-size:var(--tn-font-xs);font-weight:800;letter-spacing:.11em;color:var(--tn-subtle)}.factory-context-tools>header b{font-size:var(--tn-font-sm);font-weight:800}.factory-context-tools>header em,#factoryQaGate{font-style:normal;font-size:var(--tn-font-xs);font-weight:800;padding:4px 6px;border:1px solid var(--tn-line);background:var(--tn-surface);color:var(--tn-muted)}.factory-context-tools>header em[data-status="ready"],#factoryQaGate[data-status="resolved"]{color:var(--tn-success);border-color:color-mix(in srgb,var(--tn-success) 45%,var(--tn-line))}.factory-context-tools>header em[data-status="blocked"],#factoryQaGate[data-status="blocked"]{color:var(--tn-danger);border-color:color-mix(in srgb,var(--tn-danger) 45%,var(--tn-line))}
.factory-order-select{display:grid;gap:4px;font-size:var(--tn-font-xs);color:var(--tn-muted)}.factory-order-identity{display:grid;gap:3px;padding:9px;border:1px solid var(--tn-line);background:var(--tn-surface-soft)}.factory-order-identity span{font-size:var(--tn-font-xs);color:var(--tn-subtle)}.factory-order-identity b{font-size:var(--tn-font-sm);font-weight:800}.factory-order-identity small{font-size:var(--tn-font-xs);color:var(--tn-muted)}
.factory-readiness-list{display:grid;gap:4px}.factory-readiness-item{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:7px;align-items:center;padding:7px 8px;border:1px solid var(--tn-line);background:var(--tn-surface)}.factory-readiness-item>i{font-style:normal;width:16px;height:16px;display:grid;place-items:center;border:1px solid var(--tn-line);font-size:var(--tn-font-xs);font-weight:850}.factory-readiness-item>div{display:grid;gap:1px;min-width:0}.factory-readiness-item b{font-size:var(--tn-font-xs);font-weight:760}.factory-readiness-item small{font-size:var(--tn-font-micro);line-height:1.35;color:var(--tn-muted)}.factory-readiness-item em{font-style:normal;font-size:var(--tn-font-micro);font-weight:750;color:var(--tn-subtle)}.factory-readiness-item.status-resolved>i{border-color:var(--tn-success);color:var(--tn-success)}.factory-readiness-item.status-blocked>i,.factory-readiness-item.status-blocked>em{border-color:var(--tn-danger);color:var(--tn-danger)}
.factory-lot-form,.factory-qa-summary{display:grid;gap:7px;padding-top:9px;border-top:1px solid var(--tn-line)}.factory-lot-form>header small{font-size:var(--tn-font-micro);color:var(--tn-muted)}.factory-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.factory-form-grid label{display:grid;gap:3px;font-size:var(--tn-font-micro);font-weight:700;color:var(--tn-subtle)}.factory-form-grid input{min-width:0;min-height:30px;padding:5px 7px;border:1px solid var(--tn-line-strong);background:var(--tn-surface);color:var(--tn-ink);font:inherit;font-size:var(--tn-font-xs)}.factory-context-actions,.factory-order-actions{display:grid;grid-template-columns:1fr 1fr;gap:5px}.factory-order-actions{grid-template-columns:repeat(3,1fr)}.factory-context-actions button,.factory-order-actions button,.factory-dock-grid button,.factory-inline-actions button,.factory-operation-card>button{min-height:30px;padding:5px 8px;border:1px solid var(--tn-line-strong);background:var(--tn-surface);color:var(--tn-ink);font:inherit;font-size:var(--tn-font-xs);font-weight:750}.factory-order-actions button:first-child,.factory-operation-card>button{background:var(--tn-ink);border-color:var(--tn-ink);color:#fff}.factory-context-actions button:hover,.factory-order-actions button:hover,.factory-dock-grid button:hover{border-color:var(--tn-ink)}
.factory-qa-summary>div{display:grid;gap:4px}.factory-qa-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px;padding:7px 8px;border:1px solid var(--tn-line);background:var(--tn-surface)}.factory-qa-item>div:first-child{display:grid;gap:2px}.factory-qa-item b{font-size:var(--tn-font-xs)}.factory-qa-item small{font-size:var(--tn-font-micro);color:var(--tn-muted)}.factory-qa-item em{font-style:normal;font-size:var(--tn-font-micro);font-weight:750}.factory-qa-item.status-failed em{color:var(--tn-danger)}.factory-qa-item.status-passed em{color:var(--tn-success)}.factory-inline-actions{grid-column:1/-1;display:flex;gap:4px}
.factory-action-dock{background:var(--tn-surface);border-top:1px solid var(--tn-line-strong)}.factory-dock-shell{display:grid;gap:8px;padding:8px 12px}.factory-dock-shell>header{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.factory-dock-shell>header>div{display:grid;gap:2px}.factory-dock-shell>header b{font-size:var(--tn-font-sm);font-weight:800}.factory-dock-stats{display:flex;gap:6px;flex-wrap:wrap}.factory-dock-stats span{padding:3px 6px;border:1px solid var(--tn-line);background:var(--tn-surface-soft);font-size:var(--tn-font-micro);font-weight:700;color:var(--tn-subtle)}.factory-dock-grid{display:grid;grid-template-columns:minmax(210px,.8fr) minmax(300px,1.15fr) minmax(300px,1.2fr);gap:8px}.factory-dock-grid>section{min-width:0;display:grid;gap:5px;padding:7px;border:1px solid var(--tn-line);background:var(--tn-surface-soft)}.factory-dock-grid>section>header{display:flex;align-items:center;justify-content:space-between;gap:6px}.factory-dock-grid>section>header small{font-size:var(--tn-font-micro);color:var(--tn-muted)}
.factory-order-strip,.factory-operation-strip,.factory-cut-list-strip{display:flex;gap:5px;overflow:auto;min-height:78px;padding-bottom:2px;scrollbar-width:thin}.factory-order-card,.factory-operation-card,.factory-cut-row{flex:0 0 150px;display:grid;gap:3px;align-content:start;padding:7px;border:1px solid var(--tn-line);background:var(--tn-surface);color:var(--tn-ink);text-align:left}.factory-order-card span,.factory-operation-card span,.factory-cut-row span{font-size:var(--tn-font-micro);font-weight:800;letter-spacing:.06em;color:var(--tn-subtle)}.factory-order-card b,.factory-operation-card b,.factory-cut-row b{font-size:var(--tn-font-xs);font-weight:780;overflow-wrap:anywhere}.factory-order-card small,.factory-operation-card small,.factory-cut-row small{font-size:var(--tn-font-micro);line-height:1.35;color:var(--tn-muted)}.factory-order-card em,.factory-operation-card em,.factory-cut-row em{font-style:normal;font-size:var(--tn-font-micro);font-weight:750;color:var(--tn-subtle)}.factory-order-card.active{border-color:var(--tn-ink);background:var(--tn-surface-soft)}.factory-order-card.status-ready{box-shadow:inset 3px 0 0 var(--tn-success)}.factory-order-card.status-blocked{box-shadow:inset 3px 0 0 var(--tn-danger)}.factory-operation-card.status-completed{box-shadow:inset 3px 0 0 var(--tn-success)}.factory-operation-card.status-blocked,.factory-cut-row.status-reference-missing{box-shadow:inset 3px 0 0 var(--tn-danger)}.factory-cut-row.status-ready{box-shadow:inset 3px 0 0 var(--tn-success)}.factory-empty{display:grid;place-items:center;min-height:58px;padding:8px;color:var(--tn-muted);font-size:var(--tn-font-xs);text-align:center}
.factory-status-overlay{position:absolute;left:16px;top:16px;display:grid;gap:2px;min-width:160px;padding:8px 10px;border:1px solid var(--tn-line-strong);background:color-mix(in srgb,var(--tn-surface) 92%,transparent);backdrop-filter:blur(5px);z-index:7}.factory-status-overlay span{font-size:var(--tn-font-micro);font-weight:800;letter-spacing:.11em;color:var(--tn-subtle)}.factory-status-overlay b{font-size:var(--tn-font-sm);font-weight:800}.factory-status-overlay small{font-size:var(--tn-font-xs);color:var(--tn-muted)}
.workspace.factory-active .floating-environment{display:none}.workspace.factory-active .orbit-help:after{content:" · Factory mantém o edifício canónico ao centro"}
@media(max-width:1100px){.factory-dock-grid{grid-template-columns:1fr}.factory-form-grid{grid-template-columns:1fr}.factory-order-actions{grid-template-columns:1fr}.factory-dock-grid>section{min-height:100px}}

/* Factory keeps the canonical model central; generic project/process overlays stay out of the production cockpit. */
.workspace.factory-active #contextualTimeline,
.workspace.factory-active #moduleStatusStrip,
.workspace.factory-active #lensInsight,
.workspace.factory-active #environmentOverlay { display:none !important; }


/* I32 · NORMA Site · BUILD UX-07C */
.view-icon.site{position:relative;width:15px;height:13px;border:1.5px solid currentColor;box-sizing:border-box}.view-icon.site:before{content:"";position:absolute;left:3px;right:3px;bottom:3px;height:1px;background:currentColor;box-shadow:0 -3px 0 currentColor}.view-icon.site:after{content:"";position:absolute;right:-3px;top:-3px;width:5px;height:5px;border:1px solid currentColor;border-radius:50%;background:var(--tn-surface)}
.site-context-tools{display:grid;gap:var(--tn-space-3)}.site-context-tools>header,.site-qa-summary>header,.site-context-form>header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--tn-space-2)}.site-context-tools>header>div{display:grid;gap:2px}.site-context-tools>header span,.site-context-form>header span,.site-qa-summary>header span,.site-dock-shell>header span,.site-dock-grid>section>header span{font-size:var(--tn-font-xs);font-weight:800;letter-spacing:.11em;color:var(--tn-subtle)}.site-context-tools>header b{font-size:var(--tn-font-sm);font-weight:800}.site-context-tools>header em,#siteQaGate{font-style:normal;font-size:var(--tn-font-xs);font-weight:800;padding:4px 6px;border:1px solid var(--tn-line);background:var(--tn-surface);color:var(--tn-muted)}.site-context-tools>header em[data-status="ready"],#siteQaGate[data-status="resolved"]{color:var(--tn-success);border-color:color-mix(in srgb,var(--tn-success) 45%,var(--tn-line))}.site-context-tools>header em[data-status="blocked"],#siteQaGate[data-status="blocked"]{color:var(--tn-danger);border-color:color-mix(in srgb,var(--tn-danger) 45%,var(--tn-line))}
.site-task-select{display:grid;gap:4px;font-size:var(--tn-font-xs);color:var(--tn-muted)}.site-task-identity{display:grid;gap:3px;padding:9px;border:1px solid var(--tn-line);background:var(--tn-surface-soft)}.site-task-identity span{font-size:var(--tn-font-xs);color:var(--tn-subtle)}.site-task-identity b{font-size:var(--tn-font-sm);font-weight:800}.site-task-identity small{font-size:var(--tn-font-xs);color:var(--tn-muted)}
.site-readiness-list{display:grid;gap:4px}.site-readiness-item{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:7px;align-items:center;padding:7px 8px;border:1px solid var(--tn-line);background:var(--tn-surface)}.site-readiness-item>i{font-style:normal;width:16px;height:16px;display:grid;place-items:center;border:1px solid var(--tn-line);font-size:var(--tn-font-xs);font-weight:850}.site-readiness-item>div{display:grid;gap:1px;min-width:0}.site-readiness-item b{font-size:var(--tn-font-xs);font-weight:760}.site-readiness-item small{font-size:var(--tn-font-micro);line-height:1.35;color:var(--tn-muted)}.site-readiness-item em{font-style:normal;font-size:var(--tn-font-micro);font-weight:750;color:var(--tn-subtle)}.site-readiness-item.status-resolved>i{border-color:var(--tn-success);color:var(--tn-success)}.site-readiness-item.status-blocked>i,.site-readiness-item.status-blocked>em{border-color:var(--tn-danger);color:var(--tn-danger)}.site-readiness-item.status-pending>i{border-color:var(--tn-warning);color:var(--tn-warning)}
.site-context-form,.site-qa-summary{display:grid;gap:7px;padding-top:9px;border-top:1px solid var(--tn-line)}.site-context-form>header small{font-size:var(--tn-font-micro);color:var(--tn-muted)}.site-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.site-form-grid label{display:grid;gap:3px;font-size:var(--tn-font-micro);font-weight:700;color:var(--tn-subtle)}.site-form-grid input{min-width:0;min-height:30px;padding:5px 7px;border:1px solid var(--tn-line-strong);background:var(--tn-surface);color:var(--tn-ink);font:inherit;font-size:var(--tn-font-xs)}.site-context-actions,.site-install-actions{display:grid;grid-template-columns:1fr 1fr;gap:5px}.site-install-actions{grid-template-columns:repeat(3,1fr)}.site-context-actions button,.site-install-actions button,.site-inline-actions button{min-height:30px;padding:5px 8px;border:1px solid var(--tn-line-strong);background:var(--tn-surface);color:var(--tn-ink);font:inherit;font-size:var(--tn-font-xs);font-weight:750}.site-install-actions button:first-child{background:var(--tn-ink);border-color:var(--tn-ink);color:#fff}
.site-qa-summary>div{display:grid;gap:4px}.site-qa-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px;padding:7px 8px;border:1px solid var(--tn-line);background:var(--tn-surface)}.site-qa-item>div:first-child{display:grid;gap:2px}.site-qa-item b{font-size:var(--tn-font-xs)}.site-qa-item small{font-size:var(--tn-font-micro);color:var(--tn-muted)}.site-qa-item em{font-style:normal;font-size:var(--tn-font-micro);font-weight:750}.site-qa-item.status-failed em{color:var(--tn-danger)}.site-qa-item.status-passed em{color:var(--tn-success)}.site-inline-actions{grid-column:1/-1;display:flex;gap:4px}
.site-action-dock{background:var(--tn-surface);border-top:1px solid var(--tn-line-strong)}.site-dock-shell{display:grid;gap:8px;padding:8px 12px}.site-dock-shell>header{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.site-dock-shell>header>div{display:grid;gap:2px}.site-dock-shell>header b{font-size:var(--tn-font-sm);font-weight:800}.site-dock-stats{display:flex;gap:6px;flex-wrap:wrap}.site-dock-stats span{padding:3px 6px;border:1px solid var(--tn-line);background:var(--tn-surface-soft);font-size:var(--tn-font-micro);font-weight:700;color:var(--tn-subtle)}.site-dock-grid{display:grid;grid-template-columns:minmax(240px,.9fr) minmax(340px,1.3fr) minmax(300px,1.1fr);gap:8px}.site-dock-grid>section{min-width:0;display:grid;gap:5px;padding:7px;border:1px solid var(--tn-line);background:var(--tn-surface-soft)}.site-dock-grid>section>header{display:flex;align-items:center;justify-content:space-between;gap:6px}.site-dock-grid>section>header small{font-size:var(--tn-font-micro);color:var(--tn-muted)}.site-strip{display:flex;gap:5px;overflow:auto;min-height:78px;padding-bottom:2px;scrollbar-width:thin}.site-dock-card{flex:0 0 165px;display:grid;gap:3px;align-content:start;padding:7px;border:1px solid var(--tn-line);background:var(--tn-surface);color:var(--tn-ink);text-align:left}.site-dock-card span{font-size:var(--tn-font-micro);font-weight:800;letter-spacing:.06em;color:var(--tn-subtle)}.site-dock-card b{font-size:var(--tn-font-xs);font-weight:780;overflow-wrap:anywhere}.site-dock-card small{font-size:var(--tn-font-micro);line-height:1.35;color:var(--tn-muted)}.site-dock-card em{font-style:normal;font-size:var(--tn-font-micro);font-weight:750;color:var(--tn-subtle)}.site-dock-card.active{border-color:var(--tn-ink);background:var(--tn-surface-soft)}.site-dock-card.status-ready,.site-dock-card.status-resolved,.site-dock-card.status-completed,.site-dock-card.status-delivered,.site-dock-card.status-passed{box-shadow:inset 3px 0 0 var(--tn-success)}.site-dock-card.status-blocked,.site-dock-card.status-failed{box-shadow:inset 3px 0 0 var(--tn-danger)}.site-empty{display:grid;place-items:center;min-height:58px;padding:8px;color:var(--tn-muted);font-size:var(--tn-font-xs);text-align:center}
.site-status-overlay{position:absolute;left:16px;top:16px;display:grid;gap:2px;min-width:170px;padding:8px 10px;border:1px solid var(--tn-line-strong);background:color-mix(in srgb,var(--tn-surface) 92%,transparent);backdrop-filter:blur(5px);z-index:7}.site-status-overlay span{font-size:var(--tn-font-micro);font-weight:800;letter-spacing:.11em;color:var(--tn-subtle)}.site-status-overlay b{font-size:var(--tn-font-sm);font-weight:800}.site-status-overlay small{font-size:var(--tn-font-xs);color:var(--tn-muted)}
.workspace.site-active .floating-environment{display:none}.workspace.site-active .orbit-help:after{content:" · Site mantém o mesmo edifício e UUID canónicos"}.workspace.site-active #contextualTimeline,.workspace.site-active #moduleStatusStrip,.workspace.site-active #lensInsight,.workspace.site-active #environmentOverlay{display:none!important}
@media(max-width:1100px){.site-dock-grid{grid-template-columns:1fr}.site-form-grid{grid-template-columns:1fr}.site-install-actions{grid-template-columns:1fr}}


/* I33 · TWIN Inspect · TWIN UX-08A */
.view-icon.inspect{position:relative;width:15px;height:15px;border:1.5px solid currentColor;border-radius:50%;box-sizing:border-box}.view-icon.inspect:before{content:"";position:absolute;left:3px;right:3px;top:6px;height:1px;background:currentColor}.view-icon.inspect:after{content:"";position:absolute;left:6px;top:3px;bottom:3px;width:1px;background:currentColor}
.twin-inspect-context{display:grid;gap:var(--tn-space-3)}.twin-inspect-context>header,.twin-asbuilt-panel>header,.twin-condition-form>header,.twin-commission-panel>header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--tn-space-2)}.twin-inspect-context>header>div{display:grid;gap:2px}.twin-inspect-context>header span,.twin-asbuilt-panel>header span,.twin-condition-form>header span,.twin-commission-panel>header span,.twin-inspect-dock-shell>header span,.twin-inspect-dock-grid>section>header span{font-size:var(--tn-font-xs);font-weight:800;letter-spacing:.11em;color:var(--tn-subtle)}.twin-inspect-context>header b{font-size:var(--tn-font-sm);font-weight:800}.twin-inspect-context>header em,#twinAsBuiltGate,#twinCommissionGate{font-style:normal;font-size:var(--tn-font-xs);font-weight:800;padding:4px 6px;border:1px solid var(--tn-line);background:var(--tn-surface);color:var(--tn-muted)}.twin-inspect-context>header em[data-condition="normal"],#twinAsBuiltGate[data-status="verified"],#twinCommissionGate[data-status="ready"]{color:var(--tn-success);border-color:color-mix(in srgb,var(--tn-success) 45%,var(--tn-line))}.twin-inspect-context>header em[data-condition="attention"]{color:var(--tn-warning);border-color:color-mix(in srgb,var(--tn-warning) 45%,var(--tn-line))}.twin-inspect-context>header em[data-condition="defect"],.twin-inspect-context>header em[data-condition="out-of-service"],#twinAsBuiltGate[data-status="blocked"],#twinCommissionGate[data-status="blocked"]{color:var(--tn-danger);border-color:color-mix(in srgb,var(--tn-danger) 45%,var(--tn-line))}
.twin-asset-select{display:grid;gap:4px;font-size:var(--tn-font-xs);color:var(--tn-muted)}.twin-entity-identity{display:grid;gap:3px;padding:9px;border:1px solid var(--tn-line);background:var(--tn-surface-soft)}.twin-entity-identity span{font-size:var(--tn-font-xs);color:var(--tn-subtle)}.twin-entity-identity b{font-size:var(--tn-font-sm);font-weight:800}.twin-entity-identity small{font-size:var(--tn-font-xs);color:var(--tn-muted);overflow-wrap:anywhere}
.twin-asbuilt-panel,.twin-condition-form,.twin-commission-panel{display:grid;gap:7px;padding-top:9px;border-top:1px solid var(--tn-line)}.twin-asbuilt-panel>div{display:grid;gap:4px}.twin-check{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:7px;align-items:center;padding:7px 8px;border:1px solid var(--tn-line);background:var(--tn-surface)}.twin-check>i{font-style:normal;width:16px;height:16px;display:grid;place-items:center;border:1px solid var(--tn-line);font-size:var(--tn-font-xs);font-weight:850}.twin-check>div{display:grid;gap:1px;min-width:0}.twin-check b{font-size:var(--tn-font-xs);font-weight:760}.twin-check small{font-size:var(--tn-font-micro);line-height:1.35;color:var(--tn-muted)}.twin-check em{font-style:normal;font-size:var(--tn-font-micro);font-weight:750;color:var(--tn-subtle)}.twin-check.status-verified>i{border-color:var(--tn-success);color:var(--tn-success)}.twin-check.status-blocked>i,.twin-check.status-blocked>em{border-color:var(--tn-danger);color:var(--tn-danger)}
.twin-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.twin-form-grid label{display:grid;gap:3px;font-size:var(--tn-font-micro);font-weight:700;color:var(--tn-subtle)}.twin-form-grid input,.twin-form-grid select{min-width:0;min-height:30px;padding:5px 7px;border:1px solid var(--tn-line-strong);background:var(--tn-surface);color:var(--tn-ink);font:inherit;font-size:var(--tn-font-xs)}.twin-primary-action,.twin-commission-panel button,.site-twin-handover button{min-height:30px;padding:5px 8px;border:1px solid var(--tn-ink);background:var(--tn-ink);color:#fff;font:inherit;font-size:var(--tn-font-xs);font-weight:780}.twin-primary-action:disabled,.twin-commission-panel button:disabled,.site-twin-handover button:disabled{background:var(--tn-surface-soft);border-color:var(--tn-line);color:var(--tn-muted);cursor:not-allowed}.twin-commission-panel p,.site-twin-handover p{margin:0;font-size:var(--tn-font-xs);line-height:1.45;color:var(--tn-muted)}
.site-twin-handover{display:grid;gap:7px;padding-top:9px;border-top:1px solid var(--tn-line)}.site-twin-handover>header{display:flex;align-items:center;justify-content:space-between;gap:8px}.site-twin-handover>header span{font-size:var(--tn-font-xs);font-weight:800;letter-spacing:.11em;color:var(--tn-subtle)}.site-twin-handover>header b{font-size:var(--tn-font-xs);padding:4px 6px;border:1px solid var(--tn-line);background:var(--tn-surface)}.site-twin-handover>header b[data-status="ready"]{color:var(--tn-success)}.site-twin-handover>header b[data-status="blocked"]{color:var(--tn-danger)}
.twin-inspect-action-dock{background:var(--tn-surface);border-top:1px solid var(--tn-line-strong)}.twin-inspect-dock-shell{display:grid;gap:8px;padding:8px 12px}.twin-inspect-dock-shell>header{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.twin-inspect-dock-shell>header>div{display:grid;gap:2px}.twin-inspect-dock-shell>header b{font-size:var(--tn-font-sm);font-weight:800}.twin-dock-stats{display:flex;gap:6px;flex-wrap:wrap}.twin-dock-stats span{padding:3px 6px;border:1px solid var(--tn-line);background:var(--tn-surface-soft);font-size:var(--tn-font-micro);font-weight:700;color:var(--tn-subtle)}.twin-inspect-dock-grid{display:grid;grid-template-columns:minmax(260px,1fr) minmax(300px,1.15fr) minmax(320px,1.25fr);gap:8px}.twin-inspect-dock-grid>section{min-width:0;display:grid;gap:5px;padding:7px;border:1px solid var(--tn-line);background:var(--tn-surface-soft)}.twin-inspect-dock-grid>section>header{display:flex;align-items:center;justify-content:space-between;gap:6px}.twin-inspect-dock-grid>section>header small{font-size:var(--tn-font-micro);color:var(--tn-muted)}.twin-asset-strip,.twin-inspection-strip,.twin-history-strip{display:flex;gap:5px;overflow:auto;min-height:78px;padding-bottom:2px;scrollbar-width:thin}.twin-asset-card,.twin-inspection-card,.twin-history-card{flex:0 0 180px;display:grid;gap:3px;align-content:start;padding:7px;border:1px solid var(--tn-line);background:var(--tn-surface);color:var(--tn-ink);text-align:left}.twin-asset-card span,.twin-inspection-card span,.twin-history-card span{font-size:var(--tn-font-micro);font-weight:800;letter-spacing:.05em;color:var(--tn-subtle)}.twin-asset-card b,.twin-inspection-card b,.twin-history-card b{font-size:var(--tn-font-xs);font-weight:780;overflow-wrap:anywhere}.twin-asset-card small,.twin-inspection-card small,.twin-history-card small{font-size:var(--tn-font-micro);line-height:1.35;color:var(--tn-muted);overflow-wrap:anywhere}.twin-asset-card em,.twin-inspection-card em{font-style:normal;font-size:var(--tn-font-micro);font-weight:750;color:var(--tn-subtle)}.twin-asset-card.active{border-color:var(--tn-ink);background:var(--tn-surface-soft)}.twin-asset-card.condition-normal,.twin-inspection-card.condition-normal{box-shadow:inset 3px 0 0 var(--tn-success)}.twin-asset-card.condition-attention,.twin-inspection-card.condition-attention{box-shadow:inset 3px 0 0 var(--tn-warning)}.twin-asset-card.condition-defect,.twin-inspection-card.condition-defect,.twin-asset-card.condition-out-of-service,.twin-inspection-card.condition-out-of-service{box-shadow:inset 3px 0 0 var(--tn-danger)}.twin-empty{display:grid;place-items:center;min-height:58px;padding:8px;color:var(--tn-muted);font-size:var(--tn-font-xs);text-align:center}
.twin-status-overlay{position:absolute;left:16px;top:16px;display:grid;gap:2px;min-width:180px;padding:8px 10px;border:1px solid var(--tn-line-strong);background:color-mix(in srgb,var(--tn-surface) 92%,transparent);backdrop-filter:blur(5px);z-index:7}.twin-status-overlay span{font-size:var(--tn-font-micro);font-weight:800;letter-spacing:.11em;color:var(--tn-subtle)}.twin-status-overlay b{font-size:var(--tn-font-sm);font-weight:800}.twin-status-overlay small{font-size:var(--tn-font-xs);color:var(--tn-muted)}
.workspace.twin-inspect-active .floating-environment{display:none}.workspace.twin-inspect-active .orbit-help:after{content:" · Twin lê o mesmo UUID as-built, sem cópia do edifício"}.workspace.twin-inspect-active #contextualTimeline,.workspace.twin-inspect-active #moduleStatusStrip,.workspace.twin-inspect-active #lensInsight,.workspace.twin-inspect-active #environmentOverlay{display:none!important}
@media(max-width:1100px){.twin-inspect-dock-grid{grid-template-columns:1fr}.twin-form-grid{grid-template-columns:1fr}}

/* I34 · TWIN Systems · UX-08B */
.twin-systems-context{display:grid;gap:var(--tn-space-3)}
.twin-systems-context>header,.twin-system-location-panel>header,.twin-system-operational-panel>header,.twin-system-observation-form>header,.twin-system-conflict-panel>header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--tn-space-2)}
.twin-systems-context>header>div{display:grid;gap:2px}.twin-systems-context>header span,.twin-system-location-panel>header span,.twin-system-operational-panel>header span,.twin-system-observation-form>header span,.twin-system-conflict-panel>header span,.twin-systems-dock-shell>header span,.twin-systems-dock-grid>section>header span{font-size:var(--tn-font-xs);font-weight:800;letter-spacing:.11em;color:var(--tn-subtle)}
.twin-systems-context>header b{font-size:var(--tn-font-sm);font-weight:800}.twin-systems-context>header em,#twinSystemOperationalGate{font-style:normal;font-size:var(--tn-font-xs);font-weight:800;padding:4px 6px;border:1px solid var(--tn-line);background:var(--tn-surface);color:var(--tn-muted)}
.twin-systems-context>header em[data-condition="normal"],#twinSystemOperationalGate[data-status="operational"]{color:var(--tn-success);border-color:color-mix(in srgb,var(--tn-success) 45%,var(--tn-line))}.twin-systems-context>header em[data-condition="attention"]{color:var(--tn-warning);border-color:color-mix(in srgb,var(--tn-warning) 45%,var(--tn-line))}.twin-systems-context>header em[data-condition="defect"],.twin-systems-context>header em[data-condition="out-of-service"]{color:var(--tn-danger);border-color:color-mix(in srgb,var(--tn-danger) 45%,var(--tn-line))}
.twin-systems-context>label{display:grid;gap:4px;font-size:var(--tn-font-xs);font-weight:750;color:var(--tn-subtle)}.twin-system-identity{display:grid;gap:3px;padding:8px;border:1px solid var(--tn-line);background:var(--tn-surface-soft)}.twin-system-identity span{font-size:var(--tn-font-xs);font-weight:800}.twin-system-identity b{font-size:var(--tn-font-xs);overflow-wrap:anywhere}.twin-system-identity small{font-size:var(--tn-font-micro);color:var(--tn-muted);line-height:1.35}
.twin-system-location-panel,.twin-system-operational-panel,.twin-system-observation-form,.twin-system-conflict-panel{display:grid;gap:7px;padding:8px;border:1px solid var(--tn-line);background:var(--tn-surface-soft)}.twin-system-location{display:grid;grid-template-columns:1fr 1fr;gap:5px}.twin-system-location>div{display:grid;gap:2px;padding:6px;border:1px solid var(--tn-line);background:var(--tn-surface)}.twin-system-location span{font-size:var(--tn-font-micro);color:var(--tn-subtle);font-weight:700}.twin-system-location b{font-size:var(--tn-font-xs);overflow-wrap:anywhere}.twin-system-operational-panel p{margin:0;font-size:var(--tn-font-xs);line-height:1.4;color:var(--tn-muted)}
.twin-system-observation-form .span-two{grid-column:1/-1}.twin-system-alert{display:grid;grid-template-columns:18px 1fr auto;gap:6px;align-items:start;padding:6px;border:1px solid var(--tn-line);background:var(--tn-surface)}.twin-system-alert i{font-style:normal;font-weight:900}.twin-system-alert b{font-size:var(--tn-font-xs)}.twin-system-alert small{display:block;font-size:var(--tn-font-micro);line-height:1.35;color:var(--tn-muted)}.twin-system-alert em{font-style:normal;font-size:var(--tn-font-micro);font-weight:800}.twin-system-alert.severity-error{box-shadow:inset 3px 0 0 var(--tn-danger)}.twin-system-alert.severity-warning{box-shadow:inset 3px 0 0 var(--tn-warning)}
.twin-systems-action-dock{background:var(--tn-surface);border-top:1px solid var(--tn-line-strong)}.twin-systems-dock-shell{display:grid;gap:8px;padding:8px 12px}.twin-systems-dock-shell>header{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.twin-systems-dock-shell>header>div{display:grid;gap:2px}.twin-systems-dock-shell>header b{font-size:var(--tn-font-sm);font-weight:800}.twin-systems-dock-stats{display:flex;gap:6px;flex-wrap:wrap}.twin-systems-dock-stats span{padding:3px 6px;border:1px solid var(--tn-line);background:var(--tn-surface-soft);font-size:var(--tn-font-micro);font-weight:700;color:var(--tn-subtle)}
.twin-systems-dock-grid{display:grid;grid-template-columns:minmax(220px,.9fr) minmax(280px,1.15fr) minmax(320px,1.25fr) minmax(260px,1fr);gap:8px}.twin-systems-dock-grid>section{min-width:0;display:grid;gap:5px;padding:7px;border:1px solid var(--tn-line);background:var(--tn-surface-soft)}.twin-systems-dock-grid>section>header{display:flex;align-items:center;justify-content:space-between;gap:6px}.twin-systems-dock-grid>section>header small{font-size:var(--tn-font-micro);color:var(--tn-muted)}
.twin-systems-network-strip,.twin-systems-object-strip,.twin-systems-trace-strip,.twin-systems-observation-strip{display:flex;gap:5px;overflow:auto;min-height:78px;padding-bottom:2px;scrollbar-width:thin}.twin-system-network-card,.twin-system-object-card,.twin-system-trace-card,.twin-system-observation-card{flex:0 0 178px;display:grid;gap:3px;align-content:start;padding:7px;border:1px solid var(--tn-line);background:var(--tn-surface);color:var(--tn-ink);text-align:left}.twin-system-network-card span,.twin-system-object-card span,.twin-system-trace-card span,.twin-system-observation-card span{font-size:var(--tn-font-micro);font-weight:800;letter-spacing:.05em;color:var(--tn-subtle)}.twin-system-network-card b,.twin-system-object-card b,.twin-system-trace-card b,.twin-system-observation-card b{font-size:var(--tn-font-xs);font-weight:780;overflow-wrap:anywhere}.twin-system-network-card small,.twin-system-object-card small,.twin-system-trace-card small,.twin-system-observation-card small{font-size:var(--tn-font-micro);line-height:1.35;color:var(--tn-muted);overflow-wrap:anywhere}.twin-system-network-card em,.twin-system-object-card em,.twin-system-trace-card em,.twin-system-observation-card em{font-style:normal;font-size:var(--tn-font-micro);font-weight:750;color:var(--tn-subtle)}.twin-system-network-card.active,.twin-system-object-card.active{border-color:var(--tn-ink);background:var(--tn-surface-soft)}
.twin-system-network-card.condition-normal,.twin-system-object-card.condition-normal,.twin-system-trace-card.condition-normal,.twin-system-observation-card.condition-normal{box-shadow:inset 3px 0 0 var(--tn-success)}.twin-system-network-card.condition-attention,.twin-system-object-card.condition-attention,.twin-system-trace-card.condition-attention,.twin-system-observation-card.condition-attention{box-shadow:inset 3px 0 0 var(--tn-warning)}.twin-system-network-card.condition-defect,.twin-system-object-card.condition-defect,.twin-system-trace-card.condition-defect,.twin-system-observation-card.condition-defect,.twin-system-network-card.condition-out-of-service,.twin-system-object-card.condition-out-of-service,.twin-system-trace-card.condition-out-of-service,.twin-system-observation-card.condition-out-of-service{box-shadow:inset 3px 0 0 var(--tn-danger)}
.twin-systems-status-overlay{position:absolute;left:16px;top:16px;display:grid;gap:2px;min-width:190px;padding:8px 10px;border:1px solid var(--tn-line-strong);background:color-mix(in srgb,var(--tn-surface) 92%,transparent);backdrop-filter:blur(5px);z-index:7}.twin-systems-status-overlay span{font-size:var(--tn-font-micro);font-weight:800;letter-spacing:.11em;color:var(--tn-subtle)}.twin-systems-status-overlay b{font-size:var(--tn-font-sm);font-weight:800}.twin-systems-status-overlay small{font-size:var(--tn-font-xs);color:var(--tn-muted)}
.workspace.twin-systems-active .floating-environment{display:none}.workspace.twin-systems-active .orbit-help:after{content:" · Systems lê redes, equipamentos, terminais e percursos canónicos"}.workspace.twin-systems-active #contextualTimeline,.workspace.twin-systems-active #moduleStatusStrip,.workspace.twin-systems-active #lensInsight,.workspace.twin-systems-active #environmentOverlay{display:none!important}
@media(max-width:1180px){.twin-systems-dock-grid{grid-template-columns:1fr 1fr}}@media(max-width:900px){.twin-systems-dock-grid,.twin-system-location{grid-template-columns:1fr}}


/* I34 · TWIN Systems · canonical 3D system projection */
.solid-face.twin-system-equipment3d,.solid-face.twin-system-terminal3d{fill:var(--tn-surface-1,#f4f3ee);stroke:var(--tn-ink,#191916);stroke-width:1.1}
.solid-face.twin-system-equipment3d.discipline-electrical,.solid-face.twin-system-terminal3d.discipline-electrical{fill:color-mix(in srgb,#4656a6 18%,var(--tn-surface-1,#f4f3ee));stroke:#4656a6}
.solid-face.twin-system-equipment3d.discipline-water,.solid-face.twin-system-terminal3d.discipline-water{fill:color-mix(in srgb,#1680a2 18%,var(--tn-surface-1,#f4f3ee));stroke:#1680a2}
.solid-face.twin-system-equipment3d.discipline-drainage,.solid-face.twin-system-terminal3d.discipline-drainage{fill:color-mix(in srgb,#8a5a32 18%,var(--tn-surface-1,#f4f3ee));stroke:#8a5a32}
.solid-face.twin-system-equipment3d.selected,.solid-face.twin-system-terminal3d.selected{stroke:var(--tn-ink,#191916);stroke-width:2.2;filter:drop-shadow(0 1px 2px rgba(0,0,0,.16))}
.wire-edge.twin-system-equipment3d,.wire-edge.twin-system-terminal3d{stroke:var(--tn-ink,#191916);stroke-width:.8;opacity:.72}
.twin-system-route3d{fill:none;stroke:#555;stroke-width:2.2;stroke-linecap:round;vector-effect:non-scaling-stroke;cursor:pointer}
.twin-system-route3d.discipline-electrical{stroke:#4656a6}.twin-system-route3d.discipline-water{stroke:#1680a2}.twin-system-route3d.discipline-drainage{stroke:#8a5a32}.twin-system-route3d.selected{stroke-width:4}
.twin-system-route3d.mep-net-wtr-hot{stroke:#e11d2e}.twin-system-route3d.mep-net-wtr-cold{stroke:#1d6fe1}.twin-system-route3d.mep-net-drn-waste{stroke:#6b7280}.twin-system-route3d.mep-net-el-lv{stroke:#16a34a}.twin-system-route3d.mep-net-el-data{stroke:#eab308}.twin-system-route3d.mep-net-avac-supply{stroke:#0284c7}.twin-system-route3d.mep-net-avac-extract{stroke:#7c3aed;stroke-dasharray:4 3}.twin-system-route3d.mep-net-avac-oa{stroke:#0d9488;stroke-dasharray:2 2}
.twin-system-route3d.mep-xray{opacity:.96}
.twin-system-route3d.mep-under-slab{opacity:1;stroke-linecap:round}
.twin-system-route3d.mep-under-slab.mep-xray{filter:drop-shadow(0 0 0.6px rgba(255,255,255,.85))}
.mep-route-dn-label-3d{font-size:9px;font-weight:600;paint-order:stroke;stroke:#f7f7f3;stroke-width:2.5px;stroke-linejoin:round}
.twin-system-route3d-hit{stroke:transparent;stroke-width:14;fill:none;pointer-events:stroke;cursor:pointer;vector-effect:non-scaling-stroke}
.workspace.twin-systems-active .iso-hit-face{cursor:pointer}

/* v1.21.1 · S0-I34-HF1 · UI Regression Restoration
   Restores the approved I25 Walk/Rehearse visual contract and fixes the Model lower-deck overlap.
   Presentation only: no geometry, topology, identity, selection or domain write-back. */

/* Model owns the module-library row. Do not inherit the 178 px Walk/Rehearse action-dock height. */
#modelActionDock.model-action-dock,
.workspace-screen[data-action-dock="model"] #modelActionDock{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
}
/* Hidden action docks sit between library and summary — never use adjacent-sibling + here. */
.workspace-screen .project-summary-strip{
  position:relative;
  z-index:13;
  transform:none!important;
  margin-bottom:0!important;
}

/* Walk visual contract lock: preserve the UI-05D hierarchy regardless of later BUILD/TWIN styles. */
.workspace-screen[data-action-dock="walk"] #walkActionDock{
  height:178px!important;min-height:178px!important;
  background:var(--tn-surface)!important;border-top:1px solid var(--tn-line)!important
}
.workspace-screen[data-tool-zone="walk"] #walkToolZone .walk-context-tools{
  display:grid!important;gap:12px!important;padding:14px 12px 18px!important
}
.workspace-screen[data-tool-zone="walk"] #walkToolZone .walk-context-tools>header{
  margin:-14px -12px 0!important;padding:14px 12px 12px!important;
  background:var(--tn-surface-soft)!important;border-bottom:1px solid var(--tn-line)!important
}
.workspace-screen[data-tool-zone="walk"] #walkToolZone .walk-osm-bridge{
  display:grid!important;gap:8px!important;padding:12px!important;
  border-top:1px solid var(--tn-line)!important;background:var(--tn-surface-soft)!important
}
.workspace-screen[data-tool-zone="walk"] #walkToolZone .walk-osm-bridge>header span{
  color:var(--tn-muted)!important;font-size:var(--tn-font-micro)!important;letter-spacing:var(--tn-track-label)!important
}
.workspace-screen[data-tool-zone="walk"] #walkToolZone .walk-osm-bridge-actions button{
  border:1px solid var(--tn-line)!important;background:var(--tn-surface)!important;color:var(--tn-ink)!important
}
.workspace-screen[data-action-dock="walk"] .walk-navigation-dock-controls{
  background:var(--tn-surface)!important;border:0!important;box-shadow:none!important
}
.workspace-screen[data-action-dock="walk"] .walk-navigation-dock-controls>header{
  min-height:40px!important;padding:8px 14px!important;background:var(--tn-surface-soft)!important;border-bottom:1px solid var(--tn-line)!important
}
.workspace-screen[data-action-dock="walk"] .walk-dock-group{
  padding:10px 12px!important;gap:6px!important;border-right:1px solid var(--tn-line)!important
}
.workspace-screen[data-action-dock="walk"] .walk-navigation-dock-controls button{
  min-height:30px!important;border:1px solid var(--tn-line)!important;background:var(--tn-surface)!important;color:var(--tn-muted)!important
}
.workspace-screen[data-action-dock="walk"] .walk-navigation-dock-controls button.active{
  border-color:var(--tn-ink)!important;background:var(--tn-ink)!important;color:#fff!important
}
.walk-minimap,.walk-context-card{
  border:1px solid var(--tn-line)!important;background:var(--tn-surface-raised)!important;box-shadow:var(--tn-shadow-float)!important
}

/* Rehearse visual contract lock: evidence, production and classic dependencies remain the primary frames. */
.workspace-screen[data-action-dock="rehearse"] #rehearsalActionDock{
  height:178px!important;min-height:178px!important;
  background:var(--tn-surface)!important;border-top:1px solid var(--tn-line)!important
}
.workspace-screen[data-tool-zone="rehearse"] #rehearsalToolZone .rehearsal-detail-console{
  background:transparent!important;border:0!important;box-shadow:none!important
}
.workspace-screen[data-tool-zone="rehearse"] #rehearsalToolZone .rehearsal-current{
  background:var(--tn-surface-soft)!important;border-left:2px solid var(--tn-warning)!important
}
.workspace-screen[data-tool-zone="rehearse"] #rehearsalToolZone .rehearsal-evidence,
.workspace-screen[data-tool-zone="rehearse"] #rehearsalToolZone .rehearsal-production{
  border-color:var(--tn-line)!important;background:var(--tn-surface)!important
}
.workspace-screen[data-tool-zone="rehearse"] #rehearsalToolZone .rehearsal-dependencies{
  display:block!important;padding:12px 14px 14px!important;border-top:1px solid var(--tn-line)!important;background:var(--tn-surface)!important
}
.workspace-screen[data-tool-zone="rehearse"] #rehearsalToolZone .rehearsal-dependencies>span{
  display:block!important;margin-bottom:8px!important;font-size:var(--tn-font-micro)!important;
  letter-spacing:var(--tn-track-label)!important;color:var(--tn-muted)!important;font-weight:650!important
}
.workspace-screen[data-tool-zone="rehearse"] #rehearsalToolZone #rehearsalDependencies>div{
  min-height:30px!important;border:1px solid var(--tn-line)!important;background:var(--tn-surface-soft)!important
}
.workspace-screen[data-action-dock="rehearse"] .rehearsal-sequence-dock{
  grid-template-columns:205px 235px minmax(0,1fr)!important;grid-template-rows:40px minmax(0,1fr)!important;
  background:var(--tn-surface)!important
}
.workspace-screen[data-action-dock="rehearse"] .rehearsal-sequence-dock>header{
  min-height:40px!important;padding:8px 14px!important;background:var(--tn-surface-soft)!important;border-bottom:1px solid var(--tn-line)!important
}
.workspace-screen[data-action-dock="rehearse"] .rehearsal-dock-timeline .rehearsal-step{
  flex-basis:132px!important;min-height:92px!important;border:1px solid var(--tn-line)!important;background:var(--tn-surface)!important
}
.workspace-screen[data-action-dock="rehearse"] .rehearsal-dock-timeline .rehearsal-step.active{
  border-color:var(--tn-ink)!important;background:var(--tn-surface)!important;box-shadow:inset 0 2px var(--tn-ink)!important
}

/* I30 dependency intelligence remains available without replacing the approved Rehearse frames. */
.assembly-readiness-compact{
  margin-top:10px!important;border-top:1px solid var(--tn-line)!important;background:var(--tn-surface)!important
}
.assembly-readiness-compact>summary{
  min-height:32px;display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:7px 0;cursor:pointer;list-style:none;color:var(--tn-muted)
}
.assembly-readiness-compact>summary::-webkit-details-marker{display:none}
.assembly-readiness-compact>summary span{
  font-size:var(--tn-font-micro)!important;letter-spacing:var(--tn-track-label)!important;font-weight:650!important
}
.assembly-readiness-compact>summary em{
  font-style:normal;font-size:var(--tn-font-micro)!important;font-weight:650!important;color:var(--tn-ink)
}
.assembly-readiness-compact[open]>summary{border-bottom:1px solid var(--tn-line)!important}
.assembly-readiness-compact .assembly-prerequisites{display:grid;gap:5px;padding:9px 0}
.assembly-readiness-compact .assembly-map-head{padding:8px 0 6px!important;border-top:1px solid var(--tn-line)!important}
.assembly-readiness-compact .assembly-dependency-map{padding:0 0 8px!important}

@media(max-height:820px){
  .workspace-screen:has(#walkActionDock:not([hidden])) #walkActionDock,
  .workspace-screen:has(#rehearsalActionDock:not([hidden])) #rehearsalActionDock,
  .workspace-screen[data-action-dock="walk"] #walkActionDock,
  .workspace-screen[data-action-dock="rehearse"] #rehearsalActionDock{height:178px!important;min-height:178px!important}
  #modelActionDock.model-action-dock,
  .workspace-screen[data-action-dock="model"] #modelActionDock{height:auto!important;min-height:0!important}
}

/* wr11 · hide module library whenever a contextual action dock owns the lower deck */
.workspace-screen[data-action-dock="walk"] #modelActionDock,
.workspace-screen[data-action-dock="rehearse"] #modelActionDock,
.workspace-screen[data-action-dock="factory"] #modelActionDock,
.workspace-screen[data-action-dock="site"] #modelActionDock,
.workspace-screen[data-action-dock="inspect"] #modelActionDock,
.workspace-screen[data-action-dock="systems"] #modelActionDock,
#modelActionDock[hidden]{
  display:none!important;visibility:hidden!important;pointer-events:none!important;
  height:0!important;min-height:0!important;max-height:0!important;overflow:hidden!important;border:0!important
}

/* wr33 · library lock visible again: body on the element, shackle in reserved top space. */
.library-module{
  overflow:visible!important;
  padding-bottom:10px!important;
}
.library-module .library-lock,
.library-module .library-lock.is-open,
.library-module .library-lock.locked{
  position:relative!important;
  right:auto!important;
  bottom:auto!important;
  display:block!important;
  width:11px!important;
  height:9px!important;
  margin:8px auto 0!important; /* room above for the shackle */
  padding:0!important;
  border:1.3px solid #8f8f89!important;
  border-radius:2px!important;
  background:transparent!important;
  transform:none!important;
  box-sizing:border-box!important;
  flex:0 0 auto!important;
  overflow:visible!important;
}
.library-module .library-lock::before,
.library-module .library-lock.is-open::before,
.library-module .library-lock.locked::before{
  content:""!important;
  position:absolute!important;
  left:1.5px!important;
  top:-7px!important;
  width:7px!important;
  height:6px!important;
  border:1.3px solid #8f8f89!important;
  border-bottom:0!important;
  border-radius:7px 7px 0 0!important;
  background:transparent!important;
  box-sizing:border-box!important;
  transform:none!important;
  transform-origin:left bottom!important;
}
.library-module .library-lock.is-open::before{
  transform:translateX(3px) rotate(18deg)!important;
}
.library-module .library-lock::after{
  content:none!important;
  display:none!important;
}
.library-module:hover .library-lock,
.library-module:hover .library-lock::before{
  border-color:#111!important;
}
.library-module .library-lock.locked{
  background:#111!important;
  border-color:#111!important;
}
.library-module .library-lock.locked::before{
  border-color:#111!important;
  background:transparent!important;
  transform:none!important;
}

/* wr44 · library deck slide + icon refinements */
.module-library-head{
  display:grid!important;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)!important;
  align-items:center!important;justify-content:stretch!important;gap:12px
}
.module-library-head>.library-deck-copy,
.module-library-head>div:first-child{
  display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0;grid-column:1
}
.library-system-actions{
  display:none;grid-column:2;justify-self:center;align-self:center;
  align-items:center;justify-content:center;gap:8px;flex:0 0 auto;margin:0;
  width:max-content;max-width:100%
}
.model-action-dock[data-library-deck="hydraulic"] .module-library-head,
.model-action-dock[data-library-deck="avac"] .module-library-head,
.model-action-dock[data-library-deck="infrastructure"] .module-library-head,
.model-action-dock[data-library-deck="appliances"] .module-library-head{
  display:flex!important;
  grid-template-columns:none!important;
  align-items:center!important;
  gap:12px;
  position:static
}
.model-action-dock[data-library-deck="hydraulic"] .module-library-head>.library-deck-copy,
.model-action-dock[data-library-deck="avac"] .module-library-head>.library-deck-copy,
.model-action-dock[data-library-deck="infrastructure"] .module-library-head>.library-deck-copy,
.model-action-dock[data-library-deck="appliances"] .module-library-head>.library-deck-copy{
  flex:1 1 0;min-width:0;max-width:none;grid-column:unset
}
.model-action-dock[data-library-deck="hydraulic"] .library-system-actions,
.model-action-dock[data-library-deck="avac"] .library-system-actions,
.model-action-dock[data-library-deck="infrastructure"] .library-system-actions,
.model-action-dock[data-library-deck="appliances"] .library-system-actions{
  display:inline-flex;justify-content:center;align-items:center;
  position:static;left:auto;top:auto;transform:none;
  flex:0 0 auto;grid-column:unset;justify-self:unset;z-index:1
}
.model-action-dock[data-library-deck="hydraulic"] .library-deck-coach,
.model-action-dock[data-library-deck="avac"] .library-deck-coach,
.model-action-dock[data-library-deck="infrastructure"] .library-deck-coach,
.model-action-dock[data-library-deck="appliances"] .library-deck-coach{display:none!important}
.model-action-dock[data-library-deck="hydraulic"] .library-deck-nav,
.model-action-dock[data-library-deck="avac"] .library-deck-nav,
.model-action-dock[data-library-deck="infrastructure"] .library-deck-nav,
.model-action-dock[data-library-deck="appliances"] .library-deck-nav{
  flex:0 0 auto;margin-left:auto;grid-column:unset;justify-self:unset
}
.library-generate-system{
  display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;margin:0;
  border:1px solid var(--tn-ink,#171714);background:transparent;color:var(--tn-ink,#171714);
  padding:7px 14px;font:inherit;font-size:9px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;line-height:1;cursor:pointer;border-radius:0;
  transition:background var(--tn-transition,160ms ease),color var(--tn-transition,160ms ease),border-color var(--tn-transition,160ms ease)
}
.library-generate-system.is-on,
.library-generate-system[aria-pressed="true"]{background:var(--tn-ink,#171714);color:#f7f7f3}
.library-generate-system.is-off,
.library-generate-system[aria-pressed="false"]{background:transparent;color:var(--tn-ink,#171714)}
.library-generate-system:hover{background:var(--tn-ink,#171714);color:#f7f7f3}
.library-generate-system.is-on:hover,
.library-generate-system[aria-pressed="true"]:hover{background:transparent;color:var(--tn-ink,#171714)}
.library-clear-system{
  display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--tn-line-strong,#d8d8d2);background:transparent;color:var(--tn-muted,#777);
  padding:7px 12px;font:inherit;font-size:9px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;line-height:1;cursor:pointer;border-radius:0;
  transition:color var(--tn-transition,160ms ease),border-color var(--tn-transition,160ms ease)
}
.library-proof-btn{
  display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--tn-ink,#171714);background:transparent;color:var(--tn-ink,#171714);
  padding:7px 12px;font:inherit;font-size:9px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;line-height:1;cursor:pointer;border-radius:0
}
.library-proof-btn:hover{background:var(--tn-ink,#171714);color:#f7f7f3}
.system-closure-meta{
  margin:0 0 10px;font-size:10px;color:var(--tn-muted,#777);line-height:1.35
}
.system-closure-actions{display:flex;flex-wrap:wrap;gap:8px;padding:8px 12px 10px;border-top:1px solid var(--tn-line,#ecece7)}
.system-closure-actions button{
  flex:1 1 90px;border:1px solid var(--tn-line-strong,#d8d8d2);background:var(--tn-surface,#fff);
  color:var(--tn-ink,#171714);padding:7px 8px;font:inherit;font-size:9px;font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;cursor:pointer
}
.library-clear-system:hover{color:var(--tn-ink,#171714);border-color:var(--tn-ink,#171714)}
.library-generate-system:disabled,
.library-clear-system:disabled{
  opacity:.38;cursor:default;pointer-events:none
}
.library-deck-coach{
  display:block;margin:0;max-width:52ch;color:var(--tn-ink,#171714);
  font-size:10px;line-height:1.35;letter-spacing:.02em;font-weight:600
}
.library-deck-coach[hidden]{display:none!important}
.library-deck-empty{
  grid-column:1/-1;margin:0;padding:18px 8px;text-align:center;
  color:var(--tn-muted,#777);font-size:11px;line-height:1.45;letter-spacing:.02em
}
.library-deck-empty b{color:var(--tn-ink,#171714);font-weight:700}
.library-deck-nav{
  display:inline-flex;align-items:center;align-self:center;gap:4px;flex:0 0 auto;margin-left:0;
  grid-column:3;justify-self:end
}
.library-deck-btn{
  width:22px;height:28px;padding:0;border:0;background:transparent;
  color:var(--tn-muted);font:inherit;font-size:16px;line-height:1;letter-spacing:0;
  text-transform:none;cursor:pointer;border-radius:0;
  transition:color var(--tn-transition)
}
.library-deck-btn:hover:not(:disabled){color:var(--tn-ink);background:transparent;border-color:transparent}
.library-deck-btn:disabled{opacity:.32;cursor:default;color:var(--tn-subtle)}
.library-deck-viewport{overflow:hidden;width:100%;background:var(--tn-surface)}
.library-deck-track{
  display:flex;width:100%;will-change:transform;
  transition:transform 320ms cubic-bezier(.22,.61,.36,1)
}
.library-deck-page{
  flex:0 0 100%;width:100%;min-width:100%;box-sizing:border-box
}
.library-deck-page[data-library-page="modules"]{grid-template-columns:repeat(6,minmax(0,1fr))!important}
.library-deck-page[data-library-page="hydraulic"]{grid-template-columns:repeat(5,minmax(0,1fr))!important}
.library-deck-page[data-library-page="avac"]{grid-template-columns:repeat(5,minmax(0,1fr))!important}
.library-deck-page[data-library-page="infrastructure"]{grid-template-columns:repeat(6,minmax(0,1fr))!important}
.library-deck-page[data-library-page="appliances"]{grid-template-columns:repeat(5,minmax(0,1fr))!important}
.library-deck-page[data-library-page="furniture"]{grid-template-columns:repeat(6,minmax(0,1fr))!important}

/* wr55 · alinhar todas as bibliotecas à Biblioteca de Módulos */
.library-module{
  display:grid!important;
  grid-template-rows:34px 42px 18px!important;
  grid-template-columns:minmax(0,1fr)!important;
  align-items:center!important;
  justify-items:center!important;
  gap:8px!important;
  padding:12px 10px 10px!important;
  box-sizing:border-box!important;
}
.library-fixture,
.library-equipment{
  position:relative;
  padding-bottom:10px!important;
}
.library-module > .lib-icon{
  grid-row:1!important;
  grid-column:1!important;
  align-self:center!important;
  justify-self:center!important;
  margin:0 auto!important;
  max-width:34px!important;
  max-height:34px!important;
  box-sizing:border-box!important;
}
.library-module > span{
  grid-row:2!important;
  grid-column:1!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:flex-start!important;
  align-self:stretch!important;
  justify-self:stretch!important;
  width:100%!important;
  min-height:42px!important;
  height:42px!important;
  margin:0!important;
  padding:0 2px!important;
  box-sizing:border-box!important;
  overflow:hidden!important;
}
.library-module > span > b{
  display:block!important;
  width:100%!important;
  margin:0!important;
  padding:0!important;
  line-height:1.2!important;
  text-align:center!important;
}
.library-module > span > small{
  display:block!important;
  width:100%!important;
  margin:5px 0 0!important;
  padding:0!important;
  line-height:1.35!important;
  text-align:center!important;
}
.library-module > span > small:empty{
  display:none!important;
  margin:0!important;
}
.library-module[data-fixture="EL-SOCKET-F"] > span > small,
.library-module[data-fixture="EL-SWITCH-INT"] > span > small{
  white-space:nowrap!important;
}
.library-module > .library-lock,
.library-module > .fixture-swatch{
  grid-row:3!important;
  grid-column:1!important;
  align-self:center!important;
  justify-self:center!important;
  position:relative!important;
  left:auto!important;
  right:auto!important;
  bottom:auto!important;
  margin:0!important;
}
.library-module > .library-lock{
  margin-top:0!important;
}
.fixture-swatch{
  display:block!important;
  width:calc(100% - 20px)!important;
  max-width:64px!important;
  height:2px!important;
  background:var(--tn-muted)
}
.fixture-swatch.af{background:var(--mep-af,#1d6fe1)}
.fixture-swatch.aqs{background:var(--mep-aqs,#e11d2e)}
.fixture-swatch.waste{background:var(--mep-waste,#6b7280)}
.fixture-swatch.el{background:var(--mep-el,#16a34a)}
.fixture-swatch.data{background:var(--mep-data,#eab308)}
.fixture-swatch.equip{background:var(--tn-line-strong)}
.fixture-swatch.avac-extract{background:#7c3aed}
.fixture-swatch.avac-supply{background:#0284c7}
.fixture-swatch.avac-oa{background:#0d9488}
.fixture-swatch.avac-mvhr{background:#111}
.fixture-swatch.avac-odu{background:#334155}
.lib-icon.fixture-basin,
.lib-icon.fixture-wc,
.lib-icon.fixture-shower,
.lib-icon.fixture-cuba,
.lib-icon.fixture-hob,
.lib-icon.fixture-fridge,
.lib-icon.fixture-oven,
.lib-icon.fixture-washer,
.lib-icon.fixture-dishwasher,
.lib-icon.fixture-dhw,
.lib-icon.fixture-socket,
.lib-icon.fixture-switch,
.lib-icon.fixture-data,
.lib-icon.fixture-luminaire,
.lib-icon.fixture-led,
.lib-icon.fixture-other-link,
.lib-icon.fixture-panel,
.lib-icon.fixture-avac-extract,
.lib-icon.fixture-avac-supply,
.lib-icon.fixture-avac-grille,
.lib-icon.fixture-avac-mvhr,
.lib-icon.fixture-avac-odu,
.lib-icon.equip-wardrobe,
.lib-icon.equip-kitchen,
.lib-icon.equip-is,
.lib-icon.equip-bed,
.lib-icon.equip-door-int,
.lib-icon.equip-door-ext{
  position:relative;display:block;margin:0 auto;background:transparent;box-sizing:border-box;color:var(--tn-muted)
}
/* Tomadas · círculo perfeito (não herdar height:34px do strip) */
.lib-icon.fixture-socket{
  width:22px!important;height:22px!important;flex:none!important;
  max-width:22px!important;max-height:22px!important;aspect-ratio:1/1;
  border:1.3px solid currentColor;border-radius:50%;box-sizing:border-box
}
.lib-icon.fixture-socket:before,
.lib-icon.fixture-socket:after{content:none}
/* Lavatório · semi-círculo com corda superior (extremidades ligadas) */
.lib-icon.fixture-basin{
  width:24px;height:24px;border:0
}
.lib-icon.fixture-basin:before{
  content:"";position:absolute;left:0;top:50%;width:24px;height:12px;margin-top:-6px;
  border:1.3px solid currentColor;border-radius:0 0 12px 12px;box-sizing:border-box
}
.lib-icon.fixture-basin:after{content:none}
/* Sanita · semi-círculo fechado em cima + dois traços verticais */
.lib-icon.fixture-wc{
  width:22px;height:26px;border:0
}
.lib-icon.fixture-wc:before{
  content:"";position:absolute;left:0;top:2px;width:22px;height:11px;
  border:1.3px solid currentColor;border-radius:0 0 11px 11px;box-sizing:border-box
}
.lib-icon.fixture-wc:after{
  content:"";position:absolute;left:6px;top:13px;width:1.3px;height:11px;background:currentColor;
  box-shadow:8px 0 0 currentColor
}
/* Duche · rodado 180° */
.lib-icon.fixture-shower{
  width:18px;height:22px;border:0;transform:rotate(180deg)
}
.lib-icon.fixture-shower:before{
  content:"";position:absolute;left:8px;top:0;width:1.3px;height:12px;background:currentColor
}
.lib-icon.fixture-shower:after{
  content:"";position:absolute;left:2px;top:10px;width:14px;height:14px;border:1.3px solid currentColor;border-radius:50%;box-sizing:border-box
}
/* Cuba · quadrado com cantos arredondados */
.lib-icon.fixture-cuba{
  width:22px;height:22px;border:1.3px solid currentColor;border-radius:5px;box-sizing:border-box
}
.lib-icon.fixture-cuba:before,
.lib-icon.fixture-cuba:after{content:none}
/* Placa indução · quadrado com 4 círculos inscritos, afastados das extremidades */
.lib-icon.fixture-hob{
  width:22px;height:22px;border:1.3px solid currentColor;box-sizing:border-box;
  background:
    radial-gradient(circle,transparent 1.7px,currentColor 1.7px,currentColor 2.25px,transparent 2.35px) 5px 5px/5.4px 5.4px no-repeat,
    radial-gradient(circle,transparent 1.7px,currentColor 1.7px,currentColor 2.25px,transparent 2.35px) 11.6px 5px/5.4px 5.4px no-repeat,
    radial-gradient(circle,transparent 1.7px,currentColor 1.7px,currentColor 2.25px,transparent 2.35px) 5px 11.6px/5.4px 5.4px no-repeat,
    radial-gradient(circle,transparent 1.7px,currentColor 1.7px,currentColor 2.25px,transparent 2.35px) 11.6px 11.6px/5.4px 5.4px no-repeat
}
.lib-icon.fixture-hob:before,
.lib-icon.fixture-hob:after{content:none}
/* Frigo + congelador · Meireles MFCI 293.2: corpo alto com divisão congelador */
.lib-icon.fixture-fridge{
  width:16px;height:26px;border:1.3px solid currentColor;border-radius:2px;box-sizing:border-box
}
.lib-icon.fixture-fridge:before{
  content:"";position:absolute;left:0;right:0;top:62%;height:1.2px;background:currentColor
}
.lib-icon.fixture-fridge:after{content:none}
/* Forno combi · rectângulo com vidro da porta */
.lib-icon.fixture-oven{
  width:22px;height:16px;border:1.3px solid currentColor;border-radius:2px;box-sizing:border-box
}
.lib-icon.fixture-oven:before{
  content:"";position:absolute;left:4px;right:4px;top:4px;bottom:3px;border:1.1px solid currentColor;border-radius:1px;box-sizing:border-box
}
.lib-icon.fixture-oven:after{content:none}
/* Máquina lavar roupa · rectângulo com círculo inscrito */
.lib-icon.fixture-washer{
  width:20px;height:26px;border:1.3px solid currentColor;box-sizing:border-box
}
.lib-icon.fixture-washer:before{
  content:"";position:absolute;left:50%;top:50%;width:12px;height:12px;border:1.3px solid currentColor;border-radius:50%;box-sizing:border-box;transform:translate(-50%,-50%)
}
.lib-icon.fixture-washer:after{content:none}
/* Máquina lavar louça · rectângulo + linha a 1/4 do topo */
.lib-icon.fixture-dishwasher{
  width:22px;height:26px;border:1.3px solid currentColor;box-sizing:border-box
}
.lib-icon.fixture-dishwasher:before{
  content:"";position:absolute;left:0;right:0;top:25%;height:1.3px;background:currentColor
}
.lib-icon.fixture-dishwasher:after{content:none}
/* Termoacumulador · cilindro mural vertical */
.lib-icon.fixture-dhw{
  width:16px;height:26px;border:1.3px solid currentColor;border-radius:8px;box-sizing:border-box
}
.lib-icon.fixture-dhw:before{
  content:"";position:absolute;left:3px;right:3px;top:5px;height:1.2px;background:currentColor
}
.lib-icon.fixture-dhw:after{content:none}
/* Interruptores · rocker centrado no círculo das tomadas */
.lib-icon.fixture-switch{
  width:22px!important;height:22px!important;flex:none!important;
  max-width:22px!important;max-height:22px!important;aspect-ratio:1/1;
  border:1.3px solid currentColor;border-radius:50%;box-sizing:border-box
}
.lib-icon.fixture-switch:before{
  content:"";position:absolute;left:50%;top:50%;width:4px;height:14px;
  border:1.2px solid currentColor;border-radius:2px;box-sizing:border-box;
  transform:translate(-50%,-50%)
}
.lib-icon.fixture-switch:after{content:none}
/* RJ45 · portas centradas num círculo igual ao das tomadas */
.lib-icon.fixture-data{
  width:22px;height:22px;aspect-ratio:1/1;border:1.3px solid currentColor;border-radius:50%;
  box-sizing:border-box
}
.lib-icon.fixture-data:before,
.lib-icon.fixture-data:after{
  content:"";position:absolute;width:6px;height:5px;border:1.15px solid currentColor;box-sizing:border-box;top:8.5px
}
.lib-icon.fixture-data:before{left:3.5px}
.lib-icon.fixture-data:after{right:3.5px}
/* Luz de leitura · placa vertical + cabeça */
.lib-icon.fixture-reading{
  width:12px;height:26px;border:1.2px solid currentColor;border-radius:1px;box-sizing:border-box
}
.lib-icon.fixture-reading:before{
  content:"";position:absolute;left:50%;top:4px;width:6px;height:10px;border:1.1px solid currentColor;border-radius:1px;box-sizing:border-box;transform:translateX(-50%)
}
.lib-icon.fixture-reading:after{
  content:"";position:absolute;right:-5px;top:7px;width:7px;height:5px;border:1.1px solid currentColor;border-radius:2px;box-sizing:border-box
}
/* Luminária · lâmpada em contorno (vidro + casquilho) */
.lib-icon.fixture-luminaire{
  width:14px;height:26px;border:0
}
.lib-icon.fixture-luminaire:before{
  content:"";position:absolute;left:50%;top:0;width:14px;height:18px;margin-left:-7px;
  border:1.3px solid currentColor;border-radius:7px 7px 3.5px 3.5px;box-sizing:border-box
}
.lib-icon.fixture-luminaire:after{
  content:"";position:absolute;left:50%;bottom:0;width:7px;height:8px;margin-left:-3.5px;
  border:1.3px solid currentColor;border-top:0;box-sizing:border-box
}
/* Leds · linha a traço-ponto */
.lib-icon.fixture-led{
  width:26px;height:8px;border:0
}
.lib-icon.fixture-led:before{
  content:"";position:absolute;left:0;right:0;top:50%;height:0;border-top:1.4px dotted currentColor;transform:translateY(-50%)
}
.lib-icon.fixture-led:after{content:none}
/* Outras ligações · traço ligeiramente mais espesso */
.lib-icon.fixture-other-link{
  width:26px;height:8px;border:0
}
.lib-icon.fixture-other-link:before{
  content:"";position:absolute;left:0;right:0;top:50%;height:2.4px;background:currentColor;transform:translateY(-50%)
}
.lib-icon.fixture-other-link:after{content:none}
/* Quadro eléctrico · linhas horizontais de extremo a extremo */
.lib-icon.fixture-panel{
  width:20px;height:28px;border:1.3px solid currentColor
}
.lib-icon.fixture-panel:before,
.lib-icon.fixture-panel:after{
  content:"";position:absolute;left:0;right:0;height:1.2px;background:currentColor
}
.lib-icon.fixture-panel:before{top:7px}
.lib-icon.fixture-panel:after{top:14px;box-shadow:0 7px 0 currentColor}
.lib-icon.fixture-avac-extract,
.lib-icon.fixture-avac-supply{
  width:18px;height:18px;border:1.3px solid currentColor;border-radius:2px
}
.lib-icon.fixture-avac-extract:before,
.lib-icon.fixture-avac-supply:before{
  content:"";position:absolute;inset:4px;border:1px solid currentColor;border-radius:1px
}
.lib-icon.fixture-avac-grille{
  width:22px;height:12px;border:1.3px solid currentColor
}
.lib-icon.fixture-avac-grille:before,
.lib-icon.fixture-avac-grille:after{
  content:"";position:absolute;top:2px;bottom:2px;width:1.2px;background:currentColor
}
.lib-icon.fixture-avac-grille:before{left:7px}
.lib-icon.fixture-avac-grille:after{left:14px}
.lib-icon.fixture-avac-mvhr,
.lib-icon.fixture-avac-odu{
  width:22px;height:18px;border:1.3px solid currentColor
}
.lib-icon.fixture-avac-mvhr:before{
  content:"";position:absolute;left:3px;right:3px;top:4px;height:1.2px;background:currentColor;box-shadow:0 5px 0 currentColor
}
.lib-icon.fixture-avac-odu:before{
  content:"";position:absolute;left:4px;right:4px;top:3px;bottom:3px;border:1px solid currentColor
}
.lib-icon.equip-wardrobe,
.lib-icon.equip-kitchen{
  width:22px;height:28px;border:1.3px solid currentColor
}
/* Armário 600 · uma folha (sem divisória a 1200) */
.lib-icon.equip-wardrobe:before,
.lib-icon.equip-wardrobe:after{content:none}
.lib-icon.equip-kitchen:before,
.lib-icon.equip-kitchen:after{
  content:"";position:absolute;left:0;right:0;height:1.2px;background:currentColor
}
.lib-icon.equip-kitchen:before{top:9px}
.lib-icon.equip-kitchen:after{top:18px}
/* Armário IS · mesma grafia da porta interior, rodada 90° */
.lib-icon.equip-is{
  width:18px;height:28px;border:1.3px solid currentColor;transform:rotate(90deg)
}
.lib-icon.equip-is:before,
.lib-icon.equip-is:after{content:none}
.lib-icon.equip-bed{
  width:18px;height:26px;border:1.3px solid currentColor
}
.lib-icon.equip-bed:before{
  content:"";position:absolute;left:0;right:0;top:28%;height:1.2px;background:currentColor
}
.lib-icon.equip-bed:after{
  content:"";position:absolute;left:50%;top:0;width:1.2px;height:28%;background:currentColor;transform:translateX(-50%)
}
.lib-icon.equip-door-int,
.lib-icon.equip-door-ext{
  width:18px;height:28px;border:1.3px solid currentColor
}
.lib-icon.equip-door-int:before,
.lib-icon.equip-door-int:after{content:none}
.lib-icon.equip-door-ext{border-width:1.8px}
.lib-icon.equip-door-ext:before{
  content:"";position:absolute;right:4px;top:12px;width:3px;height:3px;border:1.15px solid currentColor;border-radius:50%;box-sizing:border-box
}
.library-fixture:hover .lib-icon,
.library-equipment:hover .lib-icon,
.library-fixture.active .lib-icon,
.library-equipment.active .lib-icon{color:var(--tn-ink)}
.library-fixture.active,
.library-equipment.active{background:var(--tn-surface-soft)!important;box-shadow:inset 0 2px var(--tn-ink)}
.fixture-preview{
  fill:rgba(22,163,74,.12);stroke:var(--mep-el,#16a34a);stroke-width:1.3;vector-effect:non-scaling-stroke
}
.fixture-preview.is-invalid{stroke:var(--tn-danger);fill:rgba(168,77,67,.08)}
.fixture-snap-slot{
  fill:rgba(22,163,74,.28);stroke:var(--mep-el,#16a34a);stroke-width:.9;pointer-events:none;vector-effect:non-scaling-stroke
}

/* wr56/wr57 · P1 composição livre — barra compacta; dock cresce sem cortar módulos */
#modelActionDock.model-action-dock,
#modelActionDock.module-library-wrap:not([hidden]){
  display:flex!important;flex-direction:column!important;align-items:stretch!important;
  min-height:0!important;height:auto!important;max-height:none!important;overflow:visible!important
}
#modelActionDock .module-library-head{
  flex:0 0 auto;padding:4px 12px!important;min-height:0!important;height:auto!important
}
#modelActionDock .library-deck-viewport{
  flex:0 0 auto;min-height:88px!important;height:88px!important;overflow:hidden
}
#modelActionDock .module-library-strip.library-deck-page,
#modelActionDock .library-deck-page,
#modelActionDock .module-library-strip{
  min-height:88px!important;height:88px!important
}
#modelActionDock .library-module{
  padding:6px 8px!important;min-height:0!important;height:auto!important
}
#modelActionDock .library-module .lib-icon{transform:scale(.88)}
#modelActionDock .compose-context-bar{padding:3px 12px!important;min-height:24px}
@media(max-height:820px){
  #modelActionDock.model-action-dock,
  #modelActionDock.module-library-wrap:not([hidden]){min-height:0!important;height:auto!important}
  #modelActionDock .library-deck-viewport,
  #modelActionDock .module-library-strip{min-height:80px!important;height:80px!important}
}
.compose-context-bar{
  display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;
  padding:5px 14px;border-bottom:1px solid var(--tn-line,#ecece7);
  background:var(--tn-surface-soft,#fafaf7);flex:0 0 auto;min-height:28px
}
.compose-context-space,
.compose-system-status{
  display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px 8px;min-width:0
}
.compose-context-eyebrow{
  font-size:8px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--tn-subtle,#aaa);font-weight:700
}
.compose-context-space>b,
.compose-system-status>b{
  margin:0;font-size:11px;font-weight:700;color:var(--tn-ink,#171714);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px
}
.compose-context-space>em{
  font-style:normal;font-size:10px;color:var(--tn-muted,#777);white-space:nowrap
}
.compose-function-row{
  display:inline-flex;align-items:center;gap:6px;margin:0;min-width:0
}
.compose-function-row>span:first-child{
  flex:0 0 auto;font-size:8px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--tn-subtle,#aaa);font-weight:700
}
.compose-function-pulldown{
  position:relative;display:block;min-width:108px;max-width:168px
}
.compose-function-pulldown select.compose-space-function,
.compose-space-function{
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  width:100%;min-width:108px;max-width:168px;height:26px;
  border:1px solid var(--tn-line-strong,#d9d9d4);border-radius:0;
  background:var(--tn-surface,#fff);
  background-image:none;
  color:var(--tn-ink,#171714);font:560 10px/1 inherit;letter-spacing:.01em;
  padding:0 26px 0 8px;outline:none;cursor:pointer
}
.compose-function-pulldown select.compose-space-function:hover{border-color:#999}
.compose-function-pulldown select.compose-space-function:focus{
  border-color:var(--tn-ink,#111);box-shadow:inset 0 0 0 1px var(--tn-ink,#111)
}
.compose-function-pulldown i{
  position:absolute;right:9px;top:50%;width:6px;height:6px;
  border-right:1px solid var(--tn-ink,#111);border-bottom:1px solid var(--tn-ink,#111);
  transform:translateY(-65%) rotate(45deg);pointer-events:none
}
.compose-space-function:disabled{
  color:#aaa;background:var(--tn-surface-soft,#f7f7f5);cursor:default;opacity:1
}
.compose-function-pulldown:has(select:disabled) i{border-color:#bbb}
.compose-system-status>small{
  color:var(--tn-muted,#777);font-size:10px;line-height:1.3;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:min(420px,42vw)
}
.compose-recent-strip{
  display:flex;align-items:center;gap:8px;padding:4px 14px;
  border-bottom:1px solid var(--tn-line,#ecece7);background:var(--tn-surface,#fff);flex:0 0 auto
}
.compose-recent-strip[hidden]{display:none!important}
.compose-recent-label{
  flex:0 0 auto;font-size:8px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--tn-subtle,#aaa);font-weight:700
}
.compose-recent-buttons{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.compose-recent-btn{
  display:inline-flex;align-items:center;gap:5px;max-width:148px;
  border:1px solid var(--tn-line-strong,#d8d8d2);background:var(--tn-surface,#fff);
  color:var(--tn-ink,#171714);padding:3px 7px;font:inherit;font-size:10px;line-height:1.2;
  cursor:pointer;border-radius:0
}
.compose-recent-btn:hover{border-color:var(--tn-ink,#171714)}
.compose-recent-btn kbd{
  display:inline-flex;align-items:center;justify-content:center;min-width:14px;height:14px;
  border:1px solid var(--tn-line,#ecece7);font-size:9px;font-weight:700;color:var(--tn-muted,#777);padding:0 3px
}
.compose-recent-btn span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.library-module.is-space-hint{
  box-shadow:inset 0 2px var(--tn-ink,#171714)!important;background:var(--tn-surface-soft,#fafaf7)!important
}
.library-module.is-typological{opacity:.88}
.library-module.is-typological::after{
  content:"Tipológico";position:absolute;top:4px;right:6px;z-index:1;
  font-size:7px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;
  color:var(--tn-subtle,#aaa);pointer-events:none
}
.library-generate-system:disabled{opacity:1;cursor:pointer}

/* wr58 · P2.1 feedback espacial ao colocar */
.fixture-place-hud{
  position:absolute;left:14px;bottom:52px;z-index:22;
  display:flex;align-items:flex-start;gap:8px;max-width:min(360px,52vw);
  padding:8px 10px;border:1px solid var(--tn-line-strong,#d8d8d2);
  background:rgba(255,255,255,.94);box-shadow:0 6px 18px rgba(23,23,20,.08);
  pointer-events:none
}
.fixture-place-hud[hidden]{display:none!important}
.fixture-place-hud>i{
  flex:0 0 auto;width:8px;height:8px;margin-top:4px;border-radius:0;background:var(--tn-muted,#777)
}
.fixture-place-hud>i.is-muted{background:var(--tn-subtle,#aaa)}
.fixture-place-hud>div{display:grid;gap:2px;min-width:0}
.fixture-place-hud b{font-size:11px;font-weight:700;color:var(--tn-ink,#171714)}
.fixture-place-hud span,.fixture-place-hud em{
  font-size:10px;color:var(--tn-muted,#777);font-style:normal;line-height:1.3
}
.fixture-place-hud em{font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tn-ink,#171714)}
.fixture-place-card{
  fill:rgba(255,255,255,.94);stroke:var(--tn-line-strong,#d8d8d2);stroke-width:1
}
.fixture-place-leader{stroke-width:1;fill:none;opacity:.85}
.fixture-place-cota{
  font-size:10px;font-weight:700;fill:var(--tn-ink,#171714);
  font-family:inherit
}
.fixture-place-meta{
  font-size:9px;fill:var(--tn-muted,#777);font-family:inherit
}
.fixture-preview{stroke-width:1.5;vector-effect:non-scaling-stroke}

/* wr59 · P2.3 conflitos gentis */
.fixture-place-hud.is-soft-warn{border-color:#c4a27e}
.fixture-place-hud .fixture-soft-warn{
  display:block;margin-top:3px;color:#8a5b32;font-size:10px;font-weight:650;line-height:1.3
}
.fixture-place-hud .fixture-compose-session{
  display:block;margin-top:4px;color:var(--tn-subtle,#aaa);font-size:9px;line-height:1.3
}
.fixture-place-hud .fixture-space-hit[data-hit="near"],
.fixture-place-hud .fixture-space-hit[data-hit="fallback"]{color:#8a5b32}
.fixture-place-hud .fixture-space-hit[data-hit="inside"]{color:var(--tn-ink,#171714)}

/* wr63 · feedback espacial rigoroso */
.fixture-place-warn{font-size:9px;fill:#8a5b32;font-weight:700;font-family:inherit}
.compose-system-status.is-soft-warn>b,
.compose-system-status.is-soft-warn>small{color:#8a5b32}

/* wr64 · checklist tipológica suave pós-Gerar / Prova */
/* wr65 · EL-READING-LIGHT + lifecycle peças (Delete/Mover; Limpar = redes) */
/* wr66 · símbolos 2D honestos (footprint worldBoxes + detalhe tipológico) */
/* wr67 · símbolos 2D/3D para equipamentos, hubs, reservas e mobiliário com dimensionsMm */
.fixture-plan-symbol{
  pointer-events:all!important;cursor:pointer
}
.fixture-plan-symbol .fixture-plan-face,
.fixture-plan-symbol .fixture-plan-body,
.fixture-plan-symbol .fixture-plan-head{
  stroke-width:1.25;vector-effect:non-scaling-stroke;pointer-events:all
}
.fixture-plan-symbol .fixture-plan-detail{
  pointer-events:none;vector-effect:non-scaling-stroke
}
.fixture-plan-symbol .fixture-plan-label{
  pointer-events:none;font-family:inherit;letter-spacing:.02em
}
.fixture-plan-symbol.selected .fixture-plan-face,
.fixture-plan-symbol.selected .fixture-plan-body,
.fixture-plan-symbol.selected .fixture-plan-head{
  stroke-width:2.2;filter:drop-shadow(0 1px 2px rgba(23,23,20,.18))
}
.fixture-plan-symbol.conflict .fixture-plan-face,
.fixture-plan-symbol.conflict .fixture-plan-body{
  stroke:#a43f36!important;fill:#a43f36!important
}
.fixture-plan-symbol.is-preview{
  pointer-events:none;opacity:.95
}
.fixture-plan-symbol.is-soft-warn .fixture-plan-face,
.fixture-plan-symbol.is-soft-warn .fixture-plan-body,
.fixture-plan-symbol.is-soft-warn .fixture-plan-head{
  stroke:#ad742f
}
.fixture-plan-symbol.kind-furniture .fixture-plan-body{
  fill-opacity:.22
}
.fixture-plan-symbol.kind-reservation .fixture-plan-body{
  fill-opacity:.16;stroke-dasharray:4 3
}
.fixture-plan-symbol.kind-equipment .fixture-plan-body{
  fill-opacity:.26
}
.solid-face.furniture3d{fill:color-mix(in srgb,#6b5b4a 16%,var(--tn-surface-1,#f4f3ee));stroke:#6b5b4a}
.wire-edge.furniture3d{stroke:#6b5b4a;opacity:.7}
.solid-face.door3d{fill:color-mix(in srgb,#6b5b4a 28%,var(--tn-surface-1,#f4f3ee));stroke:#6b5b4a}
.wire-edge.door3d{stroke:#6b5b4a;opacity:.9}
.solid-face.system-reservation3d{
  fill:color-mix(in srgb,#aa6d16 14%,var(--tn-surface-1,#f4f3ee));stroke:#aa6d16;stroke-dasharray:5 4;opacity:.9
}
.solid-face.system-reservation3d.confirmed{
  fill:color-mix(in srgb,#2b5748 16%,var(--tn-surface-1,#f4f3ee));stroke:#2b5748;stroke-dasharray:none
}
.wire-edge.system-reservation3d{stroke:#aa6d16;opacity:.65;stroke-dasharray:4 3}
.wire-edge.system-reservation3d.confirmed{stroke:#2b5748;stroke-dasharray:none}
/* wr69 · reservas 3D + sanita BTW com cisterna (mesh.face) */
/* wr70 · cotas de peças: cota 0 = face superior do pavimento (UI + mensagens) */
/* wr71 · Método + Recentes ocultos por cima das bibliotecas */
/* wr72 · Centro de Informação · célula vazia ao lado de Estado em branco */
/* wr73 · biblioteca H/EL: sem coach · Gerar/Limpar/Prova centrados · rótulo Limpar */
/* wr74 · botões Gerar/Limpar/Prova à esquerda do centro (após o texto, sem sobrepor) */

/* wr60 · P3 fecho profissional + tip método */
.compose-method-tip{
  display:flex;align-items:center;gap:10px;padding:4px 14px;
  border-bottom:1px solid var(--tn-line,#ecece7);background:var(--tn-surface,#fff);
  flex:0 0 auto
}
.compose-method-tip[hidden]{display:none!important}
.compose-method-tip>span{
  font-size:8px;letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:var(--tn-subtle,#aaa)
}
.compose-method-tip>b{
  flex:1;min-width:0;font-size:10px;font-weight:650;color:var(--tn-muted,#777);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.compose-method-tip>button{
  border:0;background:transparent;color:var(--tn-subtle,#aaa);font:inherit;font-size:14px;
  line-height:1;cursor:pointer;padding:0 2px
}
.system-closure-panel{
  position:absolute;top:18px;right:18px;z-index:24;width:min(340px,calc(100% - 36px));
  border:1px solid var(--tn-line-strong,#d8d8d2);background:rgba(255,255,255,.96);
  box-shadow:0 10px 28px rgba(23,23,20,.1);pointer-events:auto;max-height:min(78vh,560px);overflow:auto
}
.system-closure-panel[hidden]{display:none!important}
.system-closure-panel>header{
  display:flex;align-items:flex-start;justify-content:space-between;gap:10px;
  padding:10px 12px;border-bottom:1px solid var(--tn-line,#ecece7);background:var(--tn-surface-soft,#fafaf7)
}
.system-closure-eyebrow{
  display:block;font-size:8px;letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:var(--tn-subtle,#aaa)
}
.system-closure-panel>header b{display:block;margin-top:2px;font-size:12px;font-weight:700;color:var(--tn-ink,#171714)}
.system-closure-close{
  border:0;background:transparent;color:var(--tn-muted,#777);font:inherit;font-size:16px;line-height:1;cursor:pointer
}
.system-closure-body{padding:10px 12px}
.system-closure-stats{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:10px
}
.system-closure-stats>div{
  padding:7px 8px;border:1px solid var(--tn-line,#ecece7);background:var(--tn-surface,#fff)
}
.system-closure-stats span{display:block;font-size:8px;letter-spacing:.08em;text-transform:uppercase;color:var(--tn-subtle,#aaa)}
.system-closure-stats b{display:block;margin-top:3px;font-size:13px;font-weight:700}
.system-closure-warnings{
  margin:0;padding-left:16px;color:var(--tn-muted,#777);font-size:10px;line-height:1.45
}
.system-closure-checklist{
  margin:0 0 10px;padding:8px 9px;border:1px solid var(--tn-line,#ecece7);background:var(--tn-surface-soft,#fafaf7)
}
.system-closure-check-summary{
  margin:0 0 6px;font-size:10px;font-weight:700;color:var(--tn-ink,#171714);line-height:1.35
}
.system-closure-checklist ul{
  margin:0;padding:0;list-style:none;display:grid;gap:4px
}
.system-closure-checklist li{
  display:grid;grid-template-columns:14px 1fr;gap:6px;align-items:start;
  font-size:10px;line-height:1.35;color:var(--tn-muted,#777)
}
.system-closure-checklist li span{
  font-size:10px;font-weight:700;line-height:1.35
}
.system-closure-checklist li.is-ok{color:#2f6b3a}
.system-closure-checklist li.is-ok span{color:#2f6b3a}
.system-closure-checklist li.is-pending{color:#8a6a12}
.system-closure-checklist li.is-pending span{color:#8a6a12}
.system-closure-checklist li.is-tip{color:var(--tn-muted,#777)}
/* wr551 · próximo passo tipológico na Prova (sedimentação pós-Gerar) */
.system-closure-next{
  margin:0 0 10px;padding:8px 9px;border:1px solid var(--tn-line,#ecece7);
  background:var(--tn-surface-soft,#fafaf7);display:grid;gap:6px
}
.system-closure-next>span{
  font-size:8px;letter-spacing:.08em;text-transform:uppercase;color:var(--tn-subtle,#aaa)
}
.system-closure-next>b{
  font-size:11px;font-weight:700;line-height:1.35;color:var(--tn-ink,#171714)
}
.system-closure-next.is-pending>b{color:#8a6a12}
.system-closure-next.is-done>b{color:#2f6b3a}
.system-closure-next-btn{
  justify-self:start;border:1px solid var(--tn-line-strong,#d8d8d2);background:var(--tn-surface,#fff);
  color:var(--tn-ink,#171714);padding:6px 10px;font:inherit;font-size:9px;font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;cursor:pointer
}
.system-closure-next-btn:hover{border-color:var(--tn-ink,#171714)}
/* wr552 · destaque breve no formulário de entrada de obra ao seguir CTA tipológico */
.space-editor.is-typology-focus{
  outline:1px solid #8a6a12;
  box-shadow:0 0 0 2px rgba(138,106,18,.12);
  border-radius:2px
}
.system-closure-actions{
  display:flex;gap:8px;padding:8px 12px 10px;border-top:1px solid var(--tn-line,#ecece7)
}
.system-closure-actions button{
  flex:1;border:1px solid var(--tn-line-strong,#d8d8d2);background:var(--tn-surface,#fff);
  color:var(--tn-ink,#171714);padding:7px 8px;font:inherit;font-size:9px;font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;cursor:pointer
}
.system-closure-actions button:hover{border-color:var(--tn-ink,#171714)}


/* wr75 · barra inferior compacta · info collapse · Walk dock lateral · HUD canto */
/* wr76 · biblioteca mais baixa · Agora=Mini-planta · Walk side tipografia compacta sem scroll */
/* wr77 · shell full-bleed (sem margem cinzenta exterior) */
.project-summary-strip{
  min-height:0!important;height:auto!important;
  max-height:none!important;
}
.project-summary-strip>div{
  padding:5px 12px!important;
  gap:2px!important;
  justify-content:flex-start!important;
  min-width:0!important;
  overflow:hidden!important;
}
.project-summary-strip span{
  font-size:7px!important;line-height:1.15!important;margin:0!important;
  max-width:100%!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;
}
.project-summary-strip b{
  font-size:10px!important;line-height:1.2!important;margin:0!important;margin-top:1px!important;
  max-width:100%!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.project-summary-strip small{
  max-width:100%!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;
}
.project-summary-strip .summary-state small,
#summaryStateDetail{display:none!important}
.workspace-screen .project-summary-strip,
.workspace-screen[data-action-dock="model"] .workspace-grid main,
.workspace-screen[data-action-dock="walk"] .workspace-grid main,
.workspace-screen[data-action-dock="rehearse"] .workspace-grid main{
  /* summary row ~ compact two-line band */
}
.workspace-screen[data-action-dock="model"] .workspace-grid main{
  /* wr181 · faixa resumo precisa de altura para Constr. + botões */
  grid-template-rows:50px minmax(0,1fr) auto minmax(48px,auto)!important;
}
.workspace-screen:has(#walkActionDock:not([hidden])) .workspace-grid main,
.workspace-screen[data-action-dock="walk"] .workspace-grid main{
  grid-template-rows:50px minmax(0,1fr) minmax(48px,auto)!important;
}
.workspace-screen[data-action-dock="walk"] .project-summary-strip{grid-row:3!important}
.workspace-screen[data-action-dock="walk"] #walkActionDock,
.workspace-screen[data-action-dock="walk"] .walk-action-dock{
  display:none!important;height:0!important;min-height:0!important;max-height:0!important;
  border:0!important;padding:0!important;overflow:hidden!important
}
.workspace-screen:has(#rehearsalActionDock:not([hidden])) .workspace-grid main,
.workspace-screen[data-action-dock="rehearse"] .workspace-grid main{
  grid-template-rows:50px minmax(0,1fr) 178px minmax(48px,auto)!important;
}
@media(max-height:820px){
  .workspace-screen[data-action-dock="model"] .workspace-grid main{grid-template-rows:50px minmax(0,1fr) auto minmax(68px,auto)!important}
  .workspace-screen[data-action-dock="walk"] .workspace-grid main{grid-template-rows:50px minmax(0,1fr) minmax(68px,auto)!important}
  .workspace-screen[data-action-dock="rehearse"] .workspace-grid main{grid-template-rows:50px minmax(0,1fr) 178px minmax(68px,auto)!important}
}

/* Info center collapse */
.information-center-head-actions{
  display:flex;align-items:center;gap:8px;flex:0 0 auto
}
.information-center-collapse{
  width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--tn-line,#deded8);background:var(--tn-surface,#fff);
  color:var(--tn-ink,#171714);font:700 16px/1 inherit;cursor:pointer;padding:0;
  transition:background var(--tn-transition,160ms ease),border-color var(--tn-transition,160ms ease)
}
.information-center-collapse:hover{border-color:var(--tn-ink,#171714);background:var(--tn-surface-soft,#fafaf7)}
.workspace-grid.is-info-collapsed{
  grid-template-columns:236px minmax(0,1fr) 36px!important;
}
.workspace-grid.is-info-collapsed>.right.information-center{
  min-width:36px!important;width:36px!important;overflow:hidden;
}
.workspace-grid.is-info-collapsed .information-center-head{
  padding:10px 4px!important;flex-direction:column;align-items:center;gap:8px;
  height:100%;justify-content:flex-start
}
.workspace-grid.is-info-collapsed .information-center-head>div:first-child,
.workspace-grid.is-info-collapsed #informationCenterStatus,
.workspace-grid.is-info-collapsed .information-center-pulldowns,
.workspace-grid.is-info-collapsed .information-center-advice,
.workspace-grid.is-info-collapsed .legacy-panels{display:none!important}
.workspace-grid.is-info-collapsed .information-center-head-actions{flex-direction:column}
.workspace-grid.is-info-collapsed .information-center-collapse{transform:scaleX(-1)}
.workspace-grid.is-info-collapsed .information-center-collapse::after{
  content:"";
}

/* Walk side dock (left column) — só o bloco novo (navigation-side) */
.walk-tool-zone{
  display:flex;flex-direction:column;min-height:0;height:100%;overflow:hidden
}
.walk-tool-zone .walk-context-tools{
  flex:0 0 auto;padding:12px!important;gap:10px!important
}
.walk-tool-zone .walk-navigation-side{
  flex:1 1 auto;min-height:0;display:flex!important;flex-direction:column;
  position:static!important;width:auto!important;height:auto!important;
  padding:0!important;gap:0!important;margin:0!important;
  border-top:1px solid var(--tn-line,#ecece7)!important;
  background:var(--tn-surface,#fff)!important;box-shadow:none!important;
  overflow:hidden!important
}
.walk-tool-zone .walk-navigation-side>header{
  flex:0 0 auto;min-height:0!important;height:auto!important;
  margin:0!important;
  padding:12px 14px!important; /* folga extra face à caixa cinzenta */
  gap:8px!important
}
.walk-tool-zone .walk-navigation-side>header span{
  font-size:7px!important;letter-spacing:.1em!important
}
.walk-tool-zone .walk-navigation-side>header b{
  font-size:10px!important;font-weight:620!important;line-height:1.2!important
}
.walk-tool-zone .walk-navigation-side>header em{
  font-size:9px!important;min-height:0!important;padding:3px 6px!important
}
.walk-tool-zone .walk-dock-body{
  display:flex!important;flex-direction:column!important;
  grid-template-columns:none!important;
  overflow:hidden!important; /* sem scroll — compactar conteúdo */
  min-height:0;flex:1 1 auto;gap:0!important
}
.walk-tool-zone .walk-dock-group{
  border-right:0!important;border-bottom:1px solid var(--tn-line,#ecece7)!important;
  padding:5px 14px!important;gap:3px!important
}
.walk-tool-zone .walk-dock-group:last-child{border-bottom:0!important}
.walk-tool-zone .walk-dock-group>span{
  font-size:10px!important;letter-spacing:.04em!important;font-weight:650!important;
  color:var(--tn-muted,#777)!important;line-height:1.15!important
}
.walk-tool-zone .walk-dock-group>p{
  display:none!important /* poupa altura; tipografia já está no header */
}
.walk-tool-zone .walk-navigation-side button{
  min-height:20px!important;height:auto!important;padding:2px 5px!important;
  font-size:10px!important;font-weight:600!important;line-height:1.1!important
}
.walk-tool-zone .walk-floor-row>b{
  font-size:10px!important;font-weight:600!important
}
.walk-tool-zone .walk-mode-row,
.walk-tool-zone .walk-building-row,
.walk-tool-zone .walk-level-visibility-row,
.walk-tool-zone .walk-visual-row,
.walk-tool-zone .walk-cut-row,
.walk-tool-zone .walk-orbit-row,
.walk-tool-zone .walk-flyover-row,
.walk-tool-zone .walk-pad{
  display:grid!important;gap:3px!important
}
.walk-tool-zone .walk-mode-row{grid-template-columns:repeat(3,minmax(0,1fr))!important}
.walk-tool-zone .walk-pad{grid-template-columns:repeat(3,minmax(0,1fr))!important}
.walk-tool-zone .walk-building-row{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.walk-tool-zone .walk-level-visibility-row,
.walk-tool-zone .walk-visual-row,
.walk-tool-zone .walk-cut-row,
.walk-tool-zone .walk-orbit-row,
.walk-tool-zone .walk-flyover-row{grid-template-columns:repeat(3,minmax(0,1fr))!important}
.walk-tool-zone .walk-floor-row{display:grid!important;grid-template-columns:1fr auto 1fr;align-items:center;gap:3px}
.walk-tool-zone .walk-mode-row button+button,
.walk-tool-zone .walk-building-row button+button,
.walk-tool-zone .walk-level-visibility-row button+button,
.walk-tool-zone .walk-visual-row button+button,
.walk-tool-zone .walk-cut-row button+button,
.walk-tool-zone .walk-orbit-row button+button,
.walk-tool-zone .walk-flyover-row button+button{margin-left:0!important}

/* Walk HUD: Agora = altura Mini-planta; tipografia do header alinhada */
.walk-scene .walk-context-card,
.walk-scene .walk-minimap{
  top:auto!important;bottom:14px!important;
  height:188px!important;max-height:188px!important;
  box-sizing:border-box!important;
  display:flex!important;flex-direction:column!important;
  overflow:hidden!important;padding:0!important
}
.walk-scene .walk-context-card{
  right:254px!important;width:240px!important;left:auto!important;
  border-right:0!important
}
.walk-scene .walk-minimap{
  right:14px!important;width:240px!important
}
.walk-scene .walk-context-card>header,
.walk-scene .walk-minimap>header{
  flex:0 0 auto;
  display:flex!important;align-items:center!important;justify-content:space-between!important;
  gap:8px!important;min-height:34px!important;height:34px!important;
  padding:0 10px!important;margin:0!important;
  border-bottom:1px solid var(--tn-line,#ecece7)!important;
  box-sizing:border-box!important
}
.walk-scene .walk-context-card>header>div{
  display:flex!important;flex-direction:row!important;align-items:center!important;
  gap:8px!important;min-width:0!important
}
.walk-scene .walk-context-card>header span,
.walk-scene .walk-minimap header span{
  font-size:7px!important;font-weight:800!important;letter-spacing:.12em!important;
  color:var(--tn-muted,#8a5b32)!important;line-height:1!important
}
.walk-scene .walk-context-card>header b,
.walk-scene .walk-minimap header b{
  font-size:10px!important;font-weight:650!important;line-height:1.15!important;
  margin:0!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.walk-scene .walk-context-card>header em{
  font-size:9px!important;font-style:normal!important;color:var(--tn-muted,#777)!important;
  white-space:nowrap
}
.walk-scene .walk-context-card>.walk-location,
.walk-scene .walk-context-card>section{
  flex:1 1 auto;min-height:0;overflow:auto;padding:8px 10px!important
}
.walk-scene .walk-minimap>svg{
  flex:1 1 auto;height:auto!important;min-height:0!important;
  margin:0!important;width:100%!important
}
/* wr77 · shell full-bleed: anular margem cinzenta exterior; header+grid até aos limites da janela */
.workspace-screen.active,
.workspace-screen{
  margin:0!important;padding:0!important;
  width:100%!important;max-width:100vw!important;
  box-sizing:border-box!important
}
.workspace-screen>header{
  margin:0!important;width:100%!important;
  border-bottom:1px solid var(--tn-line,#deded8)!important;
  box-shadow:none!important
}
.workspace-grid{
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  width:100%!important;max-width:none!important;
  height:auto!important;min-height:0!important;
  align-self:stretch!important;
  box-sizing:border-box!important
}
@media(max-width:620px){
  .workspace-grid{margin:0!important}
}
@media(max-height:700px){
  .workspace-grid{margin:0!important}
}

.walk-scene .walk-help{
  left:14px!important;right:auto!important;transform:none!important;
  max-width:min(420px,calc(100% - 520px))!important;bottom:14px!important;
  white-space:normal!important
}
@media(max-width:900px){
  .walk-scene .walk-context-card,
  .walk-scene .walk-minimap{height:168px!important;max-height:168px!important}
  .walk-scene .walk-context-card{right:220px!important;width:200px!important}
  .walk-scene .walk-minimap{width:200px!important}
}

/* wr136 · pacote EL tipológico */
.el-specialty-panel{margin:0 0 14px;padding:12px;border:1px solid #d7d7d0;background:#fbfbf8}
.el-specialty-panel .el-unifilar-preview{margin:10px 0;overflow:auto;border:1px solid #e5e5df;background:#fff}
.el-specialty-panel .el-unifilar-preview svg{display:block;max-width:100%;height:auto}
.el-circuit-register{margin:8px 0}

/* wr137 · pacote HID tipológico */
.hid-specialty-panel{margin:0 0 14px;padding:12px;border:1px solid #d7d7d0;background:#f8fafb}
.hid-specialty-panel .hid-schematic-preview{margin:10px 0;overflow:auto;border:1px solid #e5e5df;background:#fff}
.hid-specialty-panel .hid-schematic-preview svg{display:block;max-width:100%;height:auto}

/* wr138 · pacote AVAC tipológico v0 */
.avac-specialty-panel{margin:0 0 14px;padding:12px;border:1px solid #d7d7d0;background:#f7faf8}
.avac-specialty-panel .avac-schematic-preview{margin:10px 0;overflow:auto;border:1px solid #e5e5df;background:#fff}
.avac-specialty-panel .avac-schematic-preview svg{display:block;max-width:100%;height:auto}

/* wr139 · checklist engenheiro só valida */
.specialty-readiness{margin:10px 0;padding:10px;border:1px solid #d7d7d0;background:#fff}
.specialty-readiness .ready{color:#166534}.specialty-readiness .pending{color:#9a3412}
.specialty-readiness-list .readiness-missing em{color:#9a3412}
.specialty-readiness-list .readiness-ready em,.specialty-readiness-list .readiness-generated em,.specialty-readiness-list .readiness-declared em{color:#166534}
.specialty-readiness-list .is-blocking b::after{content:'';}
.specialty-readiness-manual{margin-top:8px;font-size:12px;color:#444}
.specialty-readiness-manual ul{margin:4px 0 0 18px}
.el-specialty-panel,.hid-specialty-panel,.avac-specialty-panel{margin:0 0 16px;padding-bottom:12px;border-bottom:1px solid #e4e4de}
.el-calc-form,.hid-calc-form,.avac-calc-form{margin-top:8px}
.el-calc-form small,.hid-calc-form small,.avac-calc-form small{display:block;margin:6px 0;color:#555;font-size:11px;line-height:1.35}
.specialty-accept-open{display:flex;gap:8px;align-items:flex-start;font-size:12px;margin:8px 0;color:#444}
.specialty-accept-open input{margin-top:2px}
.specialty-accept-open{display:flex;gap:8px;align-items:flex-start;margin:8px 0;font-size:12px}

.specialty-review-hub{margin:0 0 14px;padding:0;border:1px solid var(--tn-line);border-radius:var(--tn-radius);background:var(--tn-surface);overflow:visible;min-width:0}
.specialty-review-hub>.space-editor-head{padding:10px 12px;margin:0;border-bottom:1px solid var(--tn-line)}
.specialty-review-hub .ready{color:var(--tn-success)!important}.specialty-review-hub .pending{color:var(--tn-warning)!important}
.specialty-review-hub .drawing-language-note,
.specialty-review-hub>.info-empty,
.specialty-review-hub>.document-actions,
.specialty-review-hub>.specialty-review-next,
.specialty-review-hub>.specialty-mvp-reasons{padding-inline:12px}
.specialty-review-hub .document-actions{padding-bottom:12px}

/* KPI strip · horizontal, sem corte */
.specialty-mvp-strip{
  display:flex;flex-direction:row;flex-wrap:nowrap;align-items:stretch;gap:6px;
  margin:10px 0;padding:0 12px 2px;overflow-x:auto;overflow-y:hidden;
  scrollbar-width:thin;-webkit-overflow-scrolling:touch
}
.specialty-mvp-stat{
  flex:0 0 auto;min-width:108px;max-width:160px;display:grid;gap:3px;align-content:start;
  padding:8px 10px;border:1px solid var(--tn-line);border-radius:var(--tn-radius);background:var(--tn-surface-soft)
}
.specialty-mvp-stat small{
  display:block;font-size:var(--tn-font-micro)!important;font-weight:650;letter-spacing:var(--tn-track-label);
  text-transform:uppercase;color:var(--tn-muted)!important;line-height:1.2;white-space:nowrap
}
.specialty-mvp-stat b{
  display:block;font-size:var(--tn-font-sm)!important;font-weight:620!important;color:var(--tn-ink)!important;
  line-height:1.35;overflow-wrap:anywhere;word-break:break-word;white-space:normal
}
.specialty-mvp-reasons{margin:4px 12px 8px;padding:0 0 0 16px;font-size:var(--tn-font-sm);color:var(--tn-muted);line-height:1.45}

/* Cards EL/HID/AVAC · fila horizontal */
.specialty-review-grid{
  display:flex;flex-direction:row;flex-wrap:nowrap;align-items:stretch;gap:8px;
  margin:8px 0 12px;padding:0 12px 4px;overflow-x:auto;overflow-y:hidden;
  scrollbar-width:thin;-webkit-overflow-scrolling:touch
}
.specialty-review-card{
  flex:0 0 min(220px,78%);min-width:200px;max-width:260px;min-height:0;
  display:grid;gap:4px;align-content:start;
  padding:10px;border:1px solid var(--tn-line);border-radius:var(--tn-radius);background:var(--tn-surface);box-sizing:border-box
}
.specialty-review-card>.space-editor-head{padding:0 0 6px;margin:0;border-bottom:1px solid var(--tn-line);gap:6px}
.specialty-review-card>.space-editor-head span{font-size:var(--tn-font-micro)!important;letter-spacing:var(--tn-track-label);color:var(--tn-muted)!important}
.specialty-review-card>.space-editor-head b{font-size:var(--tn-font-xs)!important;color:var(--tn-ink)!important;white-space:nowrap}
.specialty-review-card p{margin:4px 0 0;font-size:var(--tn-font-sm)!important;line-height:1.4;color:var(--tn-ink-soft)!important;overflow-wrap:anywhere}
.specialty-review-card small{display:block;color:var(--tn-muted)!important;font-size:var(--tn-font-xs)!important;margin-top:2px;line-height:1.35;overflow-wrap:anywhere}
.specialty-review-card .info-empty{font-size:var(--tn-font-xs)!important;color:var(--tn-subtle)!important}
.specialty-review-next{margin:8px 0;font-size:var(--tn-font-sm);color:var(--tn-muted)}
.specialty-review-next ul{margin:4px 0 0 18px}
.specialty-hub-jump{display:flex;flex-wrap:wrap;gap:6px;margin:6px 12px 10px}
.specialty-hub-jump a{
  display:inline-flex;align-items:center;min-height:28px;padding:4px 9px;
  border:1px solid var(--tn-line);border-radius:var(--tn-radius);background:var(--tn-surface);
  color:var(--tn-ink)!important;font-size:var(--tn-font-xs)!important;font-weight:540;text-decoration:none!important
}
.specialty-hub-jump a:hover{border-color:var(--tn-ink);background:var(--tn-surface-soft)}
.specialty-card-jump{display:inline-block;margin-top:8px;font-size:var(--tn-font-xs)!important;color:var(--tn-ink)!important;text-underline-offset:3px}
.specialty-review-card.tone-ready{border-color:var(--tn-success);box-shadow:inset 2px 0 var(--tn-success)}
.specialty-review-card.tone-reviewed,.specialty-review-card.tone-issued{border-color:var(--tn-success);background:rgba(95,127,98,.06);box-shadow:inset 2px 0 var(--tn-success)}
.specialty-review-card.tone-pending{border-color:var(--tn-warning);box-shadow:inset 2px 0 var(--tn-warning)}
.mvp-close-closed-tipologico,.mvp-close-ready-for-engineer{color:var(--tn-success)!important}
.mvp-close-in-progress,.mvp-close-hold{color:var(--tn-warning)!important}

.specialty-cross-checks,.specialty-override-block{margin:10px 12px;padding:10px;border:1px solid var(--tn-line);border-radius:var(--tn-radius);background:var(--tn-surface)}
.specialty-cross-checks>summary,.specialty-override-block>summary{cursor:pointer;display:flex;justify-content:space-between;gap:8px;align-items:center;list-style:none;font-size:var(--tn-font-sm);color:var(--tn-ink)}
.specialty-cross-checks>summary::-webkit-details-marker,.specialty-override-block>summary::-webkit-details-marker{display:none}
.specialty-cross-checks>summary span,.specialty-override-block>summary span{font-size:var(--tn-font-micro);letter-spacing:var(--tn-track-label);text-transform:uppercase;color:var(--tn-muted);font-weight:650}

/* wr252 · IC sistemas: faixas horizontais não alargam o painel (botões pretos ficavam sem texto) */
#infoPanelBuildingSystems,
#infoPanelBuildingSystems .building-systems-panel,
#infoPanelBuildingSystems .ic-subpull,
#infoPanelBuildingSystems .ic-subpull-panel,
#infoPanelBuildingSystems .specialty-review-hub,
#infoPanelBuildingSystems .el-specialty-panel,
#infoPanelBuildingSystems .hid-specialty-panel,
#infoPanelBuildingSystems .avac-specialty-panel,
#infoPanelBuildingSystems .space-editor{
  min-width:0!important;max-width:100%!important;box-sizing:border-box
}
#infoPanelBuildingSystems .specialty-mvp-strip,
#infoPanelBuildingSystems .specialty-review-grid{
  width:100%;max-width:100%;min-width:0!important;
  overflow-x:auto;overflow-y:hidden;scrollbar-width:thin
}
#infoPanelBuildingSystems .specialty-review-hub{overflow-x:hidden;overflow-y:visible}
#infoPanelBuildingSystems .space-editor-save,
#infoPanelBuildingSystems .document-actions,
#infoPanelBuildingSystems .document-actions button{
  max-width:100%;box-sizing:border-box
}
#infoPanelBuildingSystems .document-actions{grid-template-columns:minmax(0,1fr)!important}
#infoPanelBuildingSystems .specialty-mvp-stat b,
#infoPanelBuildingSystems .specialty-review-card p,
#infoPanelBuildingSystems .specialty-review-card small{overflow:visible;text-overflow:clip;white-space:normal}

.el-vd-list{margin:8px 0;max-height:180px;overflow:auto;border:1px solid var(--tn-line);background:var(--tn-surface)}
.el-vd-list .info-row{padding:6px 8px}

.hid-hf-list{margin:8px 0;max-height:180px;overflow:auto;border:1px solid var(--tn-line);background:var(--tn-surface)}
.hid-hf-list .info-row{padding:6px 8px}

.avac-vent-list{margin:8px 0;max-height:180px;overflow:auto;border:1px solid var(--tn-line);background:var(--tn-surface)}
.avac-vent-list .info-row{padding:6px 8px}

.specialty-cross-list .cross-conflict b{color:var(--tn-danger)}
.specialty-cross-list .cross-warning b{color:var(--tn-warning)}
.specialty-cross-list .cross-info b{color:var(--tn-ink-soft)}
.specialty-cross-list .info-row{padding:6px 0;border-bottom:1px solid var(--tn-line)}
.specialty-cross-list .info-row:last-child{border-bottom:0}

.specialty-override-form{margin-top:10px}
.specialty-override-list{margin:8px 0;border:1px solid var(--tn-line);background:var(--tn-surface);padding:6px 8px}
.specialty-override-list .info-row{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.info-row.cross-conflict.overridden b,.specialty-cross-list .overridden b{color:var(--tn-success)}

/* wr248/wr249/wr251/wr252 · Sistemas do Edifício · tipografia + contenção IC */
#infoPanelBuildingSystems .building-systems-panel{color:var(--tn-ink)}
#infoPanelBuildingSystems .space-editor-head span,
#infoPanelBuildingSystems .system-object-register h4,
#infoPanelBuildingSystems .system-conflicts h4,
#infoPanelBuildingSystems .systems-space-context span,
#infoPanelBuildingSystems .systems-note b{font-size:var(--tn-font-xs)!important;font-weight:650;letter-spacing:var(--tn-track-label);text-transform:uppercase;color:var(--tn-muted)!important}
#infoPanelBuildingSystems .space-editor-head b,
#infoPanelBuildingSystems .system-network-select b,
#infoPanelBuildingSystems .systems-space-context b{font-size:var(--tn-font-sm)!important;color:var(--tn-ink)!important;font-weight:620!important}
#infoPanelBuildingSystems .system-network-select small,
#infoPanelBuildingSystems .info-row small,
#infoPanelBuildingSystems .system-conflict small{font-size:var(--tn-font-xs)!important;color:var(--tn-subtle)!important}
#infoPanelBuildingSystems .system-network-select em,
#infoPanelBuildingSystems .info-row em{font-size:var(--tn-font-xs)!important;color:var(--tn-muted)!important}
#infoPanelBuildingSystems .space-foundation-note span,
#infoPanelBuildingSystems .systems-note span{font-size:var(--tn-font-sm)!important;line-height:var(--tn-leading-body);color:var(--tn-muted)!important}
#infoPanelBuildingSystems .el-specialty-panel,
#infoPanelBuildingSystems .hid-specialty-panel,
#infoPanelBuildingSystems .avac-specialty-panel{border-color:var(--tn-line)!important;background:var(--tn-surface)!important;border-radius:var(--tn-radius)!important}
.specialty-dossier-strip{margin:12px 0;padding:10px;border:1px solid var(--tn-line);background:var(--tn-surface-soft);border-radius:var(--tn-radius)}
.specialty-drawing-register{margin-top:8px}
.written-register article.written-specialty{border-left:3px solid #1e3a5f;padding-left:8px}
.written-sections{margin:6px 0 0 18px;font-size:12px;line-height:1.4;color:#333}
.written-sections li{margin:2px 0}

/* wr504 · toast sempre visível no workspace (antes: absolute no canvas, fácil de perder) */
.workspace-screen .toast,
#toast.toast{
  position:fixed;
  top:72px;
  left:50%;
  transform:translateX(-50%);
  z-index:12000;
  max-width:min(520px,92vw);
  text-align:center;
  pointer-events:none;
}
.document-set-form .field-hint{
  display:block;
  margin-top:4px;
  font-size:10px;
  line-height:1.35;
  color:#888;
  font-weight:400;
  letter-spacing:0;
  text-transform:none;
}
.document-set-form input.is-invalid,
.document-set-form input.is-invalid:focus{
  border-color:#a84d43;
  outline:1px solid rgba(168,77,67,.35);
}
.document-set-form-error{
  margin:10px 0 0;
  padding:8px 10px;
  background:#f8ecea;
  color:#8e3e36;
  font-size:11px;
  line-height:1.4;
}
