/* ===================================================
   DELTA — IFC Viewer styling
   v1.0 · 2026-05
   =================================================== */

.delta-ifc-section{
  padding:80px 40px;
  max-width:var(--container,1480px);
  margin:0 auto;
}
.delta-ifc-section__head{
  display:grid;
  grid-template-columns:1fr 1.4fr;
  gap:48px;
  align-items:end;
  margin-bottom:28px;
}
.delta-ifc-section__title{
  font-family:var(--font-display);
  font-weight:400;
  font-size:clamp(32px,4.5vw,56px);
  line-height:0.98;
  letter-spacing:-0.02em;
  margin:14px 0 0;
  text-wrap:balance;
}
.delta-ifc-section__title em{color:var(--accent);font-style:normal}
.delta-ifc-section__lede{
  font-size:15px;
  color:var(--fg-muted);
  margin:0;
  line-height:1.65;
  text-wrap:pretty;
  max-width:520px;
}
@media (max-width:1000px){
  .delta-ifc-section{padding:60px 20px}
  .delta-ifc-section__head{grid-template-columns:1fr;gap:18px}
}

/* ============ VIEWER ROOT ============ */
.delta-ifc-viewer{
  position:relative;
  background:#15140F;
  border:1px solid var(--line,rgba(26,24,21,0.10));
  height:min(70vh,640px);
  min-height:480px;
  overflow:hidden;
  display:block;
}

.div-canvas-wrap{
  position:relative;
  width:100%;
  height:100%;
  background:radial-gradient(ellipse at center,#1f1d18 0%,#0e0d0a 75%);
}
.div-canvas{width:100%;height:100%;display:block;outline:none;cursor:grab}
.div-canvas:active{cursor:grabbing}

/* crop marks */
.delta-ifc-viewer::before,
.delta-ifc-viewer::after,
.div-canvas-wrap::before,
.div-canvas-wrap::after{
  content:"";
  position:absolute;
  width:12px;
  height:12px;
  border:1.5px solid var(--accent,#F18918);
  z-index:5;
  pointer-events:none;
}
.delta-ifc-viewer::before{top:14px;left:14px;border-right:0;border-bottom:0}
.delta-ifc-viewer::after{top:14px;right:14px;border-left:0;border-bottom:0}
.div-canvas-wrap::before{bottom:14px;left:14px;border-right:0;border-top:0}
.div-canvas-wrap::after{bottom:14px;right:14px;border-left:0;border-top:0}

/* overlay pill (title) */
.div-overlay{
  position:absolute;top:14px;left:14px;
  display:flex;flex-direction:column;gap:8px;
  z-index:4;pointer-events:none;
}
.div-pill{
  font-family:var(--font-mono,"JetBrains Mono",monospace);
  font-size:10px;
  letter-spacing:0.18em;
  text-transform:uppercase;
  padding:8px 12px;
  background:rgba(21,20,15,0.75);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  border:1px solid rgba(244,241,235,0.12);
  color:#F4F1EB;
  pointer-events:auto;
  display:inline-flex;
  align-items:center;
  gap:8px;
  max-width:fit-content;
}
.div-pill .div-dot{
  width:6px;height:6px;
  background:#5DD18F;
  border-radius:50%;
  display:inline-block;
  box-shadow:0 0 8px rgba(93,209,143,0.7);
  animation:div-pulse 2s ease-in-out infinite;
}
@keyframes div-pulse{0%,100%{opacity:1}50%{opacity:0.5}}

/* view buttons */
.div-controls{
  position:absolute;top:14px;right:14px;
  display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;
  max-width:60%;
  z-index:4;
}
.div-controls button{
  padding:8px 12px;
  font-family:var(--font-mono,"JetBrains Mono",monospace);
  font-size:10px;
  letter-spacing:0.16em;
  text-transform:uppercase;
  border:1px solid rgba(244,241,235,0.18);
  background:rgba(21,20,15,0.75);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  color:#F4F1EB;
  cursor:pointer;
  transition:all 180ms ease;
}
.div-controls button:hover{
  background:var(--accent,#F18918);
  border-color:var(--accent,#F18918);
  color:#fff;
}

/* hint at bottom */
.div-hint{
  position:absolute;
  bottom:14px;right:14px;
  font-family:var(--font-mono,"JetBrains Mono",monospace);
  font-size:10px;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:rgba(244,241,235,0.45);
  z-index:4;
  pointer-events:none;
  text-align:right;
}
.div-hint kbd{
  display:inline-block;
  padding:2px 6px;
  border:1px solid rgba(244,241,235,0.20);
  color:#F4F1EB;
  font-family:inherit;
  font-size:9px;
  margin:0 2px;
}

/* loader */
.div-loader{
  position:absolute;
  inset:0;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:18px;
  background:rgba(14,13,10,0.85);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
  z-index:10;
  opacity:1;
  visibility:visible;
  transition:opacity 400ms ease,visibility 400ms ease;
}
.div-loader.div-hidden,
.delta-ifc-viewer.is-loaded .div-loader,
.delta-ifc-viewer.is-empty .div-loader,
.delta-ifc-viewer.is-error .div-loader.div-hidden{
  display:none!important;
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:none!important;
}
.div-loader-text{
  font-family:var(--font-mono,"JetBrains Mono",monospace);
  font-size:11px;
  letter-spacing:0.18em;
  text-transform:uppercase;
  color:#F4F1EB;
  text-align:center;
  padding:0 24px;
  max-width:520px;
}
.div-loader-bar{
  width:min(360px,70%);
  height:2px;
  background:rgba(244,241,235,0.12);
  overflow:hidden;
}
.div-loader-bar-fill{
  height:100%;
  width:0;
  background:var(--accent,#F18918);
  transition:width 220ms ease;
}
.div-loader-stat{
  font-family:var(--font-mono,"JetBrains Mono",monospace);
  font-size:10px;
  letter-spacing:0.2em;
  color:var(--accent,#F18918);
}

/* empty (when no IFC file present) */
.div-empty{
  position:absolute;
  inset:0;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:14px;
  background:rgba(14,13,10,0.75);
  z-index:3;
  color:#F4F1EB;
  padding:32px;
  text-align:center;
}
.div-empty-icon{
  font-family:var(--font-display);
  font-size:64px;
  color:var(--accent,#F18918);
  opacity:0.5;
  font-weight:300;
  line-height:1;
  margin-bottom:8px;
}
.div-empty-title{
  font-family:var(--font-display);
  font-size:24px;
  font-weight:400;
  letter-spacing:-0.01em;
  color:#F4F1EB;
}
.div-empty-sub{
  font-family:var(--font-mono,"JetBrains Mono",monospace);
  font-size:11px;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:#9A968F;
  line-height:1.7;
  max-width:380px;
}

/* element tooltip on hover */
.div-tip{
  position:absolute;
  z-index:6;
  background:rgba(21,20,15,0.95);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  border:1px solid var(--accent,#F18918);
  padding:10px 12px;
  color:#F4F1EB;
  font-family:var(--font-mono,"JetBrains Mono",monospace);
  font-size:10px;
  letter-spacing:0.12em;
  text-transform:uppercase;
  pointer-events:none;
  opacity:0;
  transition:opacity 120ms;
  max-width:240px;
}
.div-tip.div-tip-on{opacity:1}
.div-tip-name{
  color:var(--accent,#F18918);
  font-size:11px;
  letter-spacing:0.14em;
  margin-bottom:4px;
  word-break:break-word;
}

/* stats line */
.div-stats{
  position:absolute;
  bottom:14px;left:14px;
  font-family:var(--font-mono,"JetBrains Mono",monospace);
  font-size:10px;
  letter-spacing:0.14em;
  color:rgba(244,241,235,0.55);
  z-index:4;
  pointer-events:none;
  text-transform:uppercase;
}
.div-stats strong{color:var(--accent,#F18918);font-weight:500}

@media (max-width:640px){
  .delta-ifc-section{padding:40px 16px}
  .delta-ifc-viewer{height:min(60vh,420px);min-height:300px}
  .div-controls{max-width:75%}
  .div-controls button{padding:6px 9px;font-size:9px;letter-spacing:0.12em}
  .div-hint{display:none}
}
@media (max-width:480px){
  .delta-ifc-section{padding:32px 12px}
  .delta-ifc-section__title{font-size:clamp(24px,8vw,36px)}
  .delta-ifc-section__lede{font-size:14px;line-height:1.5}
  .delta-ifc-viewer{height:320px;min-height:280px}
}
