/* Visore 3D IFC: usa i colori e i caratteri del sito (--bg, --band, --ink, --muted, --line, --accent, --btn, --f-head, --f-body) */
.ifcv{--ifcv-scene:#E9ECE9;--ifcv-grid:#C7CCC8;--ifcv-panel:var(--bg);--ifcv-soft:#FFF4D6;--ifcv-warn:#8A5A12;--ifcv-mono:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .ifcv{--ifcv-scene:#1A1F20;--ifcv-grid:#2F383A;--ifcv-soft:#3A3115;--ifcv-warn:#E2B46A}}
:root[data-theme="dark"] .ifcv{--ifcv-scene:#1A1F20;--ifcv-grid:#2F383A;--ifcv-soft:#3A3115;--ifcv-warn:#E2B46A}

.ifcv{border:1px solid var(--line);background:var(--ifcv-panel);font-size:14px;line-height:1.45}
.ifcv-app{display:grid;grid-template-columns:300px minmax(0,1fr);height:min(78vh,760px);min-height:520px}
.ifcv-panel{overflow-y:auto;padding:20px 18px 24px;display:flex;flex-direction:column;gap:20px;border-right:1px solid var(--line);min-width:0}
.ifcv-stage{position:relative;min-width:0;min-height:0;background:var(--ifcv-scene)}
.ifcv-stage canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}
.ifcv-stage canvas:active{cursor:grabbing}

.ifcv-lab{font-family:var(--f-head);font-size:.7rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.ifcv-file{display:grid;gap:2px;margin-bottom:12px}
.ifcv-proj{font-family:var(--f-head);font-size:1.1rem;font-weight:700;line-height:1.2}
.ifcv-file span{font-family:var(--ifcv-mono);font-size:.74rem;color:var(--muted);overflow-wrap:anywhere}
.ifcv-actions{display:flex;flex-wrap:wrap;gap:8px}
.ifcv .btn.ifcv-open{padding:10px 16px;font-size:.84rem}
.ifcv-open svg{width:15px;height:15px;flex:none}
.ifcv-ghost{appearance:none;background:transparent;border:1px solid var(--line);color:var(--ink);font-family:var(--f-head);font-weight:600;font-size:.84rem;padding:9px 14px;cursor:pointer}
.ifcv-ghost:hover{border-color:var(--accent);color:var(--accent)}
#ifcv-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.ifcv-hint{margin:10px 0 0;font-size:.8rem;color:var(--muted)}

.ifcv-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.ifcv-stats div{padding:10px 0 8px;display:grid}
.ifcv-stats div+div{border-left:1px solid var(--line);padding-left:12px}
.ifcv-stats b{font-family:var(--f-head);font-size:1.25rem;font-weight:700;font-variant-numeric:tabular-nums}
.ifcv-stats span{font-size:.74rem;color:var(--muted)}

.ifcv-sec{display:flex;flex-direction:column;gap:9px}
.ifcv-head{display:flex;justify-content:space-between;gap:8px}
.ifcv-seg{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);padding:3px;gap:3px}
.ifcv-seg button{appearance:none;border:0;background:transparent;color:var(--muted);padding:6px 8px;cursor:pointer;font-family:var(--f-head);font-weight:600;font-size:.78rem}
.ifcv-seg button[aria-pressed="true"]{background:var(--btn);color:var(--accent-ink)}
.ifcv-range{display:grid;grid-template-columns:minmax(0,1fr) 56px;align-items:center;gap:10px}
.ifcv-range input{width:100%;accent-color:var(--btn)}
.ifcv-range output{font-family:var(--ifcv-mono);font-size:.76rem;color:var(--muted);text-align:right;font-variant-numeric:tabular-nums}

.ifcv-rows{display:flex;flex-direction:column}
.ifcv-row{display:grid;grid-template-columns:18px 12px minmax(0,1fr) auto;align-items:center;gap:9px;padding:6px 2px;border-bottom:1px solid var(--line);cursor:pointer;font-size:.86rem}
.ifcv-row:first-child{border-top:1px solid var(--line)}
.ifcv-row.nosw{grid-template-columns:18px minmax(0,1fr) auto}
.ifcv-row input{margin:0;accent-color:var(--btn)}
.ifcv-row .sw{width:12px;height:12px;border:1px solid rgba(0,0,0,.18)}
.ifcv-row .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ifcv-row .mt{font-family:var(--ifcv-mono);font-size:.74rem;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.ifcv-row.off .nm{color:var(--muted);text-decoration:line-through}
.ifcv-note{margin:0;font-size:.8rem;color:var(--ifcv-warn);border-left:2px solid var(--ifcv-warn);padding:2px 0 2px 10px}

.ifcv-views{position:absolute;top:12px;right:12px;display:flex;gap:2px;background:var(--bg);border:1px solid var(--line);padding:3px;z-index:2}
.ifcv-views button{appearance:none;border:0;background:transparent;color:var(--ink);padding:6px 10px;font-family:var(--f-head);font-weight:600;font-size:.76rem;cursor:pointer}
.ifcv-views button:hover{background:var(--ifcv-soft)}
.ifcv-help{position:absolute;left:14px;bottom:12px;font-size:.75rem;color:var(--muted);pointer-events:none}

.ifcv-card{position:absolute;right:12px;bottom:12px;width:min(340px,calc(100% - 24px));max-height:calc(100% - 76px);overflow-y:auto;background:var(--bg);border:1px solid var(--ink);box-shadow:0 10px 30px rgba(0,0,0,.16);z-index:3}
.ifcv-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:10px 12px;border-bottom:3px solid var(--btn)}
.ifcv-card-head h3{font-size:1.02rem;margin-top:3px}
.ifcv-x{appearance:none;border:0;background:transparent;color:var(--ink);cursor:pointer;padding:4px;line-height:0}
.ifcv-x:hover{background:var(--ifcv-soft)}
.ifcv-tb{display:grid;grid-template-columns:96px minmax(0,1fr);margin:0;font-size:.84rem}
.ifcv-tb dt,.ifcv-tb dd{margin:0;padding:6px 12px;border-bottom:1px solid var(--line)}
.ifcv-tb dt{font-family:var(--f-head);font-weight:600;font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border-right:1px solid var(--line);padding-top:8px}
.ifcv-tb dd{overflow-wrap:anywhere}
.ifcv-tb dd.mono{font-family:var(--ifcv-mono);font-size:.78rem;font-variant-numeric:tabular-nums}
.ifcv-card details{padding:8px 12px 10px}
.ifcv-card summary{cursor:pointer;font-family:var(--f-head);font-weight:600;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.ifcv-props{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:3px 10px;margin-top:8px;font-size:.8rem}
.ifcv-props .g{grid-column:1/-1;font-size:.72rem;color:var(--muted);margin-top:6px;border-bottom:1px solid var(--line)}
.ifcv-props .pk{color:var(--muted);overflow-wrap:anywhere}
.ifcv-props .pv{font-family:var(--ifcv-mono);font-size:.76rem;overflow-wrap:anywhere}

.ifcv-over{position:absolute;inset:0;display:grid;place-items:center;padding:16px;background:color-mix(in srgb,var(--ifcv-scene) 84%,transparent);z-index:5}
.ifcv-loadbox{width:min(320px,100%);display:grid;gap:10px;text-align:center}
.ifcv-loadbox .err{color:var(--ifcv-warn);text-transform:none;letter-spacing:0;font-size:.85rem}
.ifcv-bar{height:4px;background:var(--line);overflow:hidden}
.ifcv-bar i{display:block;height:100%;width:0;background:var(--btn);transition:width .15s}
.ifcv-drop{margin:12px;border:2px dashed var(--btn);font-family:var(--f-head);font-weight:700;font-size:1.3rem;color:var(--accent)}

@media (max-width:820px){
  .ifcv-app{grid-template-columns:minmax(0,1fr);grid-template-rows:62vh auto;height:auto;min-height:0}
  .ifcv-stage{order:1;min-height:360px}
  .ifcv-panel{order:2;border-right:0;border-top:1px solid var(--line);overflow:visible}
  .ifcv-help{display:none}
  .ifcv-views{top:8px;right:8px}
  .ifcv-card{left:10px;right:10px;width:auto;bottom:10px}
}
@media (prefers-reduced-motion:reduce){.ifcv-bar i{transition:none}}
