.three-terrace {
  position: relative;
  isolation: isolate;
  width: 100%;
  height: min(70vh, 760px);
  min-height: 430px;
  overflow: hidden;
  border: 1px solid #dedbd3;
  border-radius: 20px;
  background: #eeece7;
  box-shadow: 0 20px 65px #252b3210;
}
.three-terrace__canvas { position: absolute; inset: 0; }
.three-terrace__webgl {
  display: block;
  width: 100%;
  height: 100%;
  touch-action: none;
  cursor: grab;
  outline-offset: -5px;
}
.three-terrace__webgl:active { cursor: grabbing; }
.three-terrace__webgl:focus-visible { outline: 3px solid #b58d24; }
.three-terrace__badge {
  position: absolute;
  top: 20px;
  left: 20px;
  padding: 8px 12px;
  color: #30383b;
  background: #ffffffd9;
  border: 1px solid #ffffff;
  border-radius: 9px;
  font: 600 12px/1.4 system-ui, sans-serif;
  letter-spacing: .025em;
  backdrop-filter: blur(10px);
  pointer-events: none;
}
.three-terrace__instruction {
  position: absolute;
  right: 20px;
  left: 20px;
  bottom: 15px;
  width: fit-content;
  max-width: calc(100% - 40px);
  margin: 0 auto;
  padding: 9px 14px;
  color: #424a4f;
  background: #ffffffd4;
  border: 1px solid #ffffff;
  border-radius: 9px;
  text-align: center;
  font: 400 12px/1.55 system-ui, sans-serif;
  backdrop-filter: blur(10px);
  pointer-events: none;
}
.three-terrace__live {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
.three-terrace__drainage-note {
  position: absolute;
  left: 20px;
  right: 20px;
  bottom: 63px;
  width: fit-content;
  max-width: calc(100% - 40px);
  margin: 0 auto;
  padding: 8px 12px;
  color: #075583;
  border: 1px solid #b7e4fa;
  border-radius: 9px;
  background: #edf9ffed;
  text-align: center;
  font: 500 12px/1.5 system-ui, sans-serif;
  pointer-events: none;
}
.three-terrace__drainage-note[hidden] { display: none; }
.roof-shade-controls { margin:24px 0; padding:20px; border:1px solid #dedbd3; border-radius:14px; background:#fff; }
.roof-shade-controls legend { padding:0 8px; color:#424a4f; font-weight:650; }
.roof-shade-controls p { margin:4px 0 16px; font-size:13px; line-height:1.6; color:#667176; }
.roof-shade-row { display:flex; flex-wrap:wrap; align-items:end; gap:16px; }
.roof-shade-row label { display:grid; gap:6px; font-size:13px; }
.roof-shade-row select,.roof-shade-row button { min-height:44px; }
.roof-shade-progress { display:flex; flex-wrap:wrap; gap:24px; margin:18px 0 8px; }
.roof-shade-progress label { display:flex; align-items:center; flex-wrap:wrap; gap:8px; font-size:12px; color:#536069; }
.roof-shade-progress progress { width:110px; height:8px; accent-color:#b58d24; }
.roof-shade-progress span { min-width:34px; font-variant-numeric:tabular-nums; }
.roof-shade-controls .roof-shade-note { margin:8px 0 0; font-size:11px; }
@media(max-width:600px) { .roof-shade-controls {padding:14px;} .roof-shade-row,.roof-shade-row label {width:100%;} .roof-shade-row .button-group {flex-wrap:wrap;} .roof-shade-row button {white-space:normal;} }
.three-terrace--unavailable .three-terrace__badge,
.three-terrace--unavailable .three-terrace__instruction { display: none; }
.three-terrace__fallback {
  display: grid;
  place-content: center;
  width: min(440px, calc(100% - 48px));
  height: 100%;
  margin: 0 auto;
  color: #424a4f;
  text-align: center;
  font: 400 15px/1.7 system-ui, sans-serif;
}
@media (max-width: 600px) {
  .three-terrace { height: 61vh; min-height: 390px; border-radius: 14px; }
  .three-terrace__badge { left: 12px; top: 12px; padding: 6px 9px; font-size: 11px; }
  .three-terrace__instruction { bottom: 12px; left: 12px; right: 12px; max-width: calc(100% - 24px); font-size: 11px; }
  .three-terrace__drainage-note { bottom: 73px; left: 12px; right: 12px; max-width: calc(100% - 24px); font-size: 11px; }
}
