/* ---- Custom properties ---- */
:root {
  --dp-a: #e91e63;
  --dp-b: #1565c0;
  --dp-c: #2e7d32;
  --dp-a-light: rgba(233, 30, 99, 0.08);
  --dp-b-light: rgba(21, 101, 192, 0.08);
  --dp-c-light: rgba(46, 125, 50, 0.08);
  --dp-neg-hatch: rgba(220, 38, 38, 0.15);
}

/* ---- Main layout: vertical stack ---- */
#app {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 8px 16px 12px;
  gap: 6px;
  height: calc(100vh - var(--sm-top-offset, 26px));
  box-sizing: border-box;
  overflow: hidden;
}

/* ---- On-canvas tool title (above equation) ---- */
.dp-tool-title {
  margin: 0;
  padding: 0 48px;
  max-width: 100%;
  box-sizing: border-box;
  text-align: center;
  font-family: Lexend, var(--sm-font, system-ui, sans-serif);
  font-size: 0.95rem;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: 0.02em;
  color: var(--sm-text-muted);
  flex-shrink: 0;
}
@media (min-width: 1200px) {
  .dp-tool-title {
    font-size: 1.05rem;
  }
}

/* ---- Equation block ---- */
.dp-equation {
  text-align: center;
  min-height: 56px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}
/* Two lines: the algebraic identity (always shown) and the numeric line (modes 'numbers' and 'mixed') */
.dp-equation .dp-eq-line {
  font-size: 1.65rem;
  font-weight: 800;
  line-height: 1.45;
}
.dp-equation .dp-eq-line .katex {
  font-size: 1.1em;
  font-weight: 700;
}
/* Make equation text larger on big screens */
@media (min-width: 1200px) {
  .dp-equation .dp-eq-line { font-size: 2.05rem; }
}

/* ---- SVG visualisation ---- */
.dp-viz {
  flex: 1 1 auto;
  width: 100%;
  max-width: 1100px;
  min-height: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
#dp-svg {
  width: 100%;
  height: 100%;
  max-height: 100%;
}

/* ---- Controls row ---- */
.dp-controls {
  flex-shrink: 0;
  width: 100%;
  max-width: 1100px;
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 16px 24px;
}
.dp-sliders {
  display: flex;
  flex: 1 1 auto;
  gap: 20px;
  min-width: 0;
}
.dp-sliders > * {
  flex: 1 1 0;
  min-width: 0;
}
.dp-toggles {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  align-items: center;
}
.dp-toggles .sm-control-label {
  font-size: 11px;
  font-weight: 800;
}
.dp-toggles .sm-toggle-label {
  font-size: 0.9rem;
  font-weight: 700;
}
.dp-toggles .sm-btn-group-item {
  font-size: 0.85rem;
  font-weight: 700;
  padding: 0.45em 0.75em;
}

/* ---- Slider colour overrides ---- */
/* Each slider wrapper gets a data-var attribute: data-var="a", "b", "c" */
.dp-sliders [data-var="a"] .sm-slider-track { accent-color: var(--dp-a); }
.dp-sliders [data-var="b"] .sm-slider-track { accent-color: var(--dp-b); }
.dp-sliders [data-var="c"] .sm-slider-track { accent-color: var(--dp-c); }

/* Coloured slider labels — bold and large for classroom IWB visibility */
.dp-sliders [data-var="a"] .sm-control-label,
.dp-sliders [data-var="b"] .sm-control-label,
.dp-sliders [data-var="c"] .sm-control-label {
  font-size: 1.5rem;
  font-weight: 800;
  text-transform: none;
  letter-spacing: 0.02em;
}
.dp-sliders [data-var="a"] .sm-control-label { color: var(--dp-a); }
.dp-sliders [data-var="b"] .sm-control-label { color: var(--dp-b); }
.dp-sliders [data-var="c"] .sm-control-label { color: var(--dp-c); }

.dp-sliders .sm-slider-value {
  font-size: 1.5rem;
  font-weight: 800;
  min-width: 2.5rem;
}

/* Thicker track + thumb for classroom visibility */
.dp-sliders .sm-slider-track {
  height: 10px;
  border-radius: 5px;
}
.dp-sliders .sm-slider-track::-webkit-slider-thumb {
  width: 26px;
  height: 26px;
  border-width: 3px;
}
.dp-sliders .sm-slider-track::-moz-range-thumb {
  width: 26px;
  height: 26px;
  border-width: 3px;
}

/* ---- KaTeX inside SVG foreignObject ---- */
#dp-svg foreignObject {
  overflow: visible;
}
.dp-fo-katex .katex {
  font-weight: 700;
}
.dp-fo-katex--dim .katex {
  font-size: 28px !important;
}
.dp-fo-katex--area .katex {
  font-size: 32px !important;
}
.dp-fo-katex--area-squeeze .katex {
  font-size: 26px !important;
}
.dp-fo-katex--area-tight .katex {
  font-size: 21px !important;
}
.dp-fo-katex--area-cramped .katex {
  font-size: 18px !important;
}
.dp-fo-katex--total .katex {
  font-size: 26px !important;
  color: var(--sm-text-muted);
}

/* ---- SVG styles ---- */
/* Rectangle edges */
.dp-edge-a { stroke: var(--dp-a); stroke-width: 5; fill: none; }
.dp-edge-b { stroke: var(--dp-b); stroke-width: 5; fill: none; }
.dp-edge-c { stroke: var(--dp-c); stroke-width: 5; fill: none; }
.dp-edge-dashed { stroke-dasharray: 8 5; }
.dp-divider { stroke: var(--dp-a); stroke-width: 3; stroke-dasharray: 8 5; }

/* Rectangle fills */
.dp-fill-b { fill: var(--dp-b-light); }
.dp-fill-c { fill: var(--dp-c-light); }

/* Negative hatching — applied as a <pattern> in SVG defs */
.dp-fill-neg {
  fill: url(#dp-hatch-neg);
}

/* Dimension bracket lines */
.dp-bracket { stroke: var(--sm-text); stroke-width: 2.25; fill: none; }
.dp-bracket-tick { stroke: var(--sm-text); stroke-width: 2.25; }

/* Area labels inside rectangles */
.dp-area-label {
  font-family: var(--sm-font);
  font-size: 28px;
  font-weight: 800;
  text-anchor: middle;
  dominant-baseline: central;
  fill: var(--sm-text);
}

/* Total annotation below rectangle */
.dp-total-label {
  font-family: var(--sm-font);
  font-size: 24px;
  font-weight: 800;
  text-anchor: middle;
  fill: var(--sm-text-muted);
}

/* Dimension labels (a, b, c or numbers) rendered as foreignObject with KaTeX */
.dp-dim-label {
  font-family: var(--sm-font);
  font-size: 28px;
  font-weight: 800;
  text-anchor: middle;
  dominant-baseline: central;
}

/* Transition for smooth resizing */
.dp-animated rect,
.dp-animated line,
.dp-animated foreignObject {
  transition: all 0.15s ease;
}

/* ---- Responsive ---- */

/* Phone: stack sliders vertically, toggles wrap */
@media (max-width: 640px) {
  #app { padding: 8px 12px 12px; gap: 6px; }
  .dp-sliders { flex-direction: column; gap: 8px; }
  .dp-controls { gap: 10px 16px; }
  .dp-equation .dp-eq-line { font-size: 1.25rem; }
  .dp-sliders [data-var="a"] .sm-control-label,
  .dp-sliders [data-var="b"] .sm-control-label,
  .dp-sliders [data-var="c"] .sm-control-label { font-size: 1.2rem; }
  .dp-fo-katex--dim .katex { font-size: 22px !important; }
  .dp-fo-katex--area .katex { font-size: 24px !important; }
  .dp-fo-katex--area-squeeze .katex { font-size: 20px !important; }
  .dp-fo-katex--area-tight .katex { font-size: 17px !important; }
  .dp-fo-katex--area-cramped .katex { font-size: 15px !important; }
  .dp-fo-katex--total .katex { font-size: 20px !important; }
}

/* Chromebook / smaller laptops */
@media (max-height: 700px) {
  #app { padding: 6px 12px 8px; gap: 4px; }
  .dp-equation .dp-eq-line { font-size: 1.35rem; }
}
