/* Lecture 06: cuspidality, aspects, and global IK connectivity. */
.lecture-06 .course-title { max-width: 14ch; margin-inline: auto; }
.lecture-06 .slide-title { margin-bottom: .32rem; }
.l6-slide .slide-subtitle { margin: 0 0 .55rem; color: var(--muted); font-size: clamp(.88rem,1.08vw,1.18rem); }
.lecture-06 .lecture-promise { max-width: 72ch; }
.lecture-06 .demo-prompt { margin: 0 0 .45rem; padding: .4rem .62rem; border-left: 3px solid var(--epfl-red); background: #fff6f6; font-size: clamp(.76rem,.9vw,.98rem); line-height: 1.3; }
.l6-takeaway { margin-top: .5rem; padding: .55rem .85rem; border-left: 5px solid var(--epfl-red); background: #fff5f5; font-size: clamp(.9rem,1.15vw,1.25rem); }
.l6-definition { max-width: 45ch; margin: 0 auto 1.1rem; padding: 1rem 1.25rem; border: 3px solid var(--epfl-red); background: #fff; font-size: clamp(1.3rem,2vw,2.2rem); line-height: 1.3; }
.l6-big-equation { font-size: clamp(1rem,1.55vw,1.75rem); text-align: center; }
.l6-card { min-width: 0; padding: .7rem .85rem; border: 1px solid var(--line); border-top: 4px solid var(--science-blue); background: #fff; }
.l6-card.red { border-top-color: var(--epfl-red); }
.l6-card.green { border-top-color: var(--science-green); }
.l6-card h3 { margin: 0 0 .35rem; font-size: clamp(1rem,1.25vw,1.35rem); }
.l6-card p { margin: .25rem 0; font-size: clamp(.8rem,1vw,1.08rem); line-height: 1.35; }
.l6-columns,.l6-three { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .8rem; min-height: 0; }
.l6-three { grid-template-columns: repeat(3,minmax(0,1fr)); }
.l6-stack { display: grid; gap: .65rem; align-content: center; }
.l6-story-flow { flex: 1; display: flex; align-items: center; justify-content: center; gap: .7rem; }
.l6-story-flow > div { width: min(24vw,20rem); min-height: 9.5rem; display: flex; flex-direction: column; justify-content: center; padding: 1rem; border: 2px solid #222; background: #fff; text-align: center; }
.l6-story-flow > div.active { border-color: var(--epfl-red); box-shadow: inset 0 4px 0 var(--epfl-red); }
.l6-story-flow b { font-size: clamp(1.3rem,2vw,2.1rem); }
.l6-story-flow span { margin-top: .45rem; font-size: clamp(.82rem,1.05vw,1.1rem); }
.l6-story-flow i { color: var(--epfl-red); font-style: normal; font-size: 2rem; }
.l6-mini-map { position: relative; height: 9rem; margin-top: .65rem; border-left: 2px solid #111; border-bottom: 2px solid #111; background: linear-gradient(145deg,transparent 42%,rgba(255,0,0,.15) 43%,rgba(255,0,0,.15) 46%,transparent 47%),linear-gradient(35deg,transparent 52%,rgba(108,142,191,.18) 53%,rgba(108,142,191,.18) 57%,transparent 58%); }
.l6-mini-map.workspace-map { border-radius: 55% 25% 40% 30%; background: radial-gradient(ellipse at 48% 52%,transparent 25%,rgba(255,0,0,.28) 26%,rgba(255,0,0,.28) 29%,transparent 30%,transparent 49%,rgba(108,142,191,.35) 50%,rgba(108,142,191,.35) 53%,transparent 54%); }
.l6-mini-map span { position: absolute; top: -.3rem; left: .25rem; }
.l6-mini-map em { position: absolute; right: .2rem; bottom: .2rem; font-style: normal; }
.l6-mini-map b { position: absolute; left: 42%; top: 42%; color: var(--epfl-red); font-size: .8rem; }
.l6-model-pair { flex: 1; min-height: 0; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; }
.l6-model-pair article { min-height: 0; display: grid; grid-template-rows: minmax(0,1fr) auto auto; text-align: center; border: 1px solid var(--line); }
.l6-model-pair article > div:first-child,[data-cusp-model] { min-height: 0; background: radial-gradient(circle,#fff,#eef0f2); overflow: hidden; }
.l6-model-pair h3,.l6-model-pair p { margin: .15rem .4rem; }
.l6-block-matrix { margin: auto; padding: 1rem; border: 2px solid var(--epfl-red); font-size: clamp(1.2rem,1.8vw,2rem); }
.l6-factor-row { display: grid; grid-template-columns: repeat(3,1fr); gap: .4rem; margin: .5rem 0; }
.l6-factor-row span { padding: .45rem; color: #fff; text-align: center; font-weight: 800; }
.l6-factor-row .s { background: var(--epfl-red); }.l6-factor-row .e { background: var(--science-blue); }.l6-factor-row .w { background: var(--science-green); }
.l6-sew-grid { flex: 1; display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); align-content: center; border: 1px solid var(--line); }
.l6-sew-grid > div { padding: .55rem; border: 1px solid var(--line); text-align: center; font-weight: 700; }
.l6-sew-grid .head { color: #fff; background: #111; }
.l6-cusp-table { width: 100%; border-collapse: collapse; font-size: clamp(.62rem,.78vw,.84rem); }
.l6-cusp-table th,.l6-cusp-table td { padding: .3rem .2rem; border-bottom: 1px solid var(--line); text-align: right; font-variant-numeric: tabular-nums; }
.l6-puma-table { width: 100%; flex: 1; border-collapse: collapse; font-size: clamp(.72rem,.96vw,1.02rem); font-variant-numeric: tabular-nums; }
.l6-puma-table th,.l6-puma-table td { padding: .28rem .5rem; border-bottom: 1px solid var(--line); text-align: right; }
.l6-puma-table th:first-child,.l6-puma-table td:first-child { text-align: center; font-weight: 800; }
.l6-puma-table thead { color: #fff; background: #111; }

.cusp-lab { flex: 1; min-height: 0; border: 1px solid var(--line); background: #fff; overflow: hidden; }
.cusp-two { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)) minmax(12rem,.56fr); }
.cusp-atlas { display: grid; grid-template-rows: minmax(0,1fr) auto; }
.cusp-plot-row { min-height: 0; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .55rem; padding: .45rem; }
.cusp-plot { position: relative; min-width: 0; min-height: 0; border: 1px solid #bbb; background: #fff; }
.cusp-plot canvas { display: block; width: 100%; height: 100%; touch-action: none; }
.cusp-plot h3 { position: absolute; z-index: 2; top: .25rem; left: .4rem; margin: 0; padding: .18rem .34rem; background: rgba(255,255,255,.88); font-size: clamp(.7rem,.84vw,.92rem); pointer-events: none; }
.cusp-controls { display: grid; grid-template-columns: minmax(12rem,.8fr) minmax(0,2fr) minmax(13rem,1fr); gap: .5rem; padding: .45rem .55rem; border-top: 1px solid var(--line); align-items: start; }
.cusp-control-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: .25rem; }
.cusp-control-grid label { display: grid; gap: .1rem; font-size: clamp(.55rem,.66vw,.72rem); font-weight: 700; }
.cusp-control-grid input,.cusp-controls button,.cusp-controls select { width: 100%; min-width: 0; padding: .25rem; font-size: clamp(.58rem,.7vw,.76rem); }
.cusp-presets { display: grid; grid-template-columns: repeat(2,1fr); gap: .3rem; }
.cusp-presets button.active { color: #fff; background: #111; }
.cusp-formula { min-height: 4.8em; padding: .38rem .48rem; border-left: 4px solid var(--science-blue); background: #f5f6f7; font-family: ui-monospace,SFMono-Regular,Consolas,monospace; font-size: clamp(.52rem,.65vw,.7rem); line-height: 1.35; white-space: pre-wrap; }
.cusp-readout { font-size: clamp(.56rem,.68vw,.75rem); line-height: 1.35; }
.cusp-side { padding: .6rem; border-left: 1px solid var(--line); overflow: auto; }
.cusp-side h3 { margin: 0 0 .45rem; font-size: 1rem; }
.cusp-range { display: grid; grid-template-columns: 2.1rem 1fr 3.2rem; gap: .3rem; align-items: center; margin: .3rem 0; font-size: .7rem; }
.cusp-range input { width: 100%; accent-color: var(--epfl-red); }
.cusp-legend { display: flex; gap: .55rem; flex-wrap: wrap; font-size: .68rem; margin-top: .35rem; }
.cusp-legend i { display: inline-block; width: .75rem; height: .75rem; border-radius: 50%; margin-right: .2rem; }
.cusp-status { min-height: 2.5em; margin: .35rem 0 0; padding: .3rem; background: #f5f6f7; font-size: .68rem; line-height: 1.3; }
.cusp-iks { display: flex; gap: .25rem; flex-wrap: wrap; margin-top: .35rem; }
.cusp-iks button { width: auto; border: 1px solid #888; background: #fff; }
.cusp-iks button.selected { color: #fff; background: var(--epfl-red); border-color: var(--epfl-red); }
.cusp-nscs { display: grid; grid-template-rows: minmax(0,1fr) auto; }
.cusp-nscs-panels { min-height: 0; display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr) minmax(0,1.25fr); gap: .45rem; padding: .4rem; }
.cusp-stage { position: relative; min-height: 0; border: 1px solid #bbb; overflow: hidden; background: radial-gradient(circle,#fff,#e8eaec); }
.cusp-stage canvas { display: block; width: 100%; height: 100%; }
.cusp-stage .hud { position: absolute; top: .35rem; left: .4rem; z-index: 2; padding: .2rem .35rem; background: rgba(255,255,255,.9); font-size: .65rem; pointer-events: none; }
.cusp-nscs-controls { display: grid; grid-template-columns: auto minmax(16rem,1fr) auto; gap: .5rem; align-items: center; padding: .42rem .55rem; border-top: 1px solid var(--line); }
.cusp-nscs-controls button { padding: .3rem .65rem; font-size: .72rem; }
.cusp-6r { display: grid; grid-template-columns: minmax(0,1.1fr) minmax(0,1.6fr); gap: .45rem; padding: .4rem; }
.cusp-6r .plots { min-height: 0; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .45rem; }
.cusp-partitioned { display: grid; grid-template-rows: minmax(0,1fr) auto; }
.cusp-partition-panels { min-height: 0; display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr) minmax(0,1.2fr); gap: .42rem; padding: .4rem; }
.cusp-partition-controls { display: grid; grid-template-columns: minmax(16rem,1.3fr) minmax(14rem,1fr) auto; gap: .5rem; align-items: center; padding: .4rem .55rem; border-top: 1px solid var(--line); }
.cusp-toggle { display: flex; align-items: center; gap: .3rem; font-size: .68rem; white-space: nowrap; }
.cusp-fanuc { display: grid; grid-template-columns: minmax(0,1.45fr) minmax(18rem,.75fr); }
.cusp-fanuc-panel { min-height: 0; display: grid; grid-template-rows: minmax(0,1fr) auto auto auto auto; gap: .45rem; padding: .55rem; border-left: 1px solid var(--line); }
.cusp-branch-map { position: relative; min-height: 0; border: 1px solid var(--line); }
.cusp-branch-map canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.cusp-fanuc .cusp-iks { display: grid; grid-template-columns: repeat(8,minmax(0,1fr)); }
.cusp-fanuc .cusp-iks button { padding: .25rem .05rem; }

.lecture-06 .ik6r-demo { position: relative; min-height: 31rem; overflow: hidden; border: 1px solid var(--line); background: #fcfcfc; }
.lecture-06 .ik6r-canvas { position: absolute; inset: 0; }
.lecture-06 .ik6r-canvas canvas { display: block; width: 100%; height: 100%; }
.lecture-06 .ik6r-note { position: absolute; right: .7rem; bottom: .55rem; left: .7rem; z-index: 2; margin: 0; padding: .36rem .52rem; border-left: 3px solid var(--epfl-red); background: rgba(255,255,255,.93); color: var(--muted); font-size: clamp(.68rem,.8vw,.88rem); line-height: 1.3; pointer-events: none; }
.lecture-06 .ik6r-controls { position: absolute; top: .55rem; right: .55rem; left: .55rem; z-index: 3; display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .25rem .45rem; pointer-events: none; }
.lecture-06 .ik6r-slider,.lecture-06 .ik6r-select,.lecture-06 .ik6r-toggle { display: inline-grid; grid-template-columns: auto 4.2rem 2.8rem; align-items: center; gap: .22rem; padding: .2rem .3rem; border: 1px solid rgba(0,0,0,.12); background: rgba(255,255,255,.94); color: var(--muted); font-size: clamp(.62rem,.72vw,.8rem); font-weight: 700; pointer-events: auto; }
.lecture-06 .ik6r-slider input { width: 4.2rem; }
.lecture-06 .ik6r-slider output { text-align: right; font-variant-numeric: tabular-nums; }
.lecture-06 .ik6r-select { grid-template-columns: auto auto; }
.lecture-06 .ik6r-select select { max-width: 15rem; padding: .15rem .25rem; font: inherit; }
.lecture-06 .ik6r-toggle { grid-template-columns: auto auto; cursor: pointer; text-transform: capitalize; }
.lecture-06 .ik6r-toggle input { accent-color: var(--epfl-red); }

@media (max-width: 900px) {
  .l6-three,.l6-columns,.l6-model-pair { grid-template-columns: 1fr; }
  .l6-story-flow { flex-direction: column; }.l6-story-flow i { transform: rotate(90deg); }
  .cusp-two,.cusp-6r { grid-template-columns: 1fr; }.cusp-controls { grid-template-columns: 1fr; }
  .cusp-nscs-panels { grid-template-columns: 1fr; grid-template-rows: repeat(3,40vh); }
  .cusp-partition-panels,.cusp-fanuc { grid-template-columns: 1fr; }
}
