/* Lecture 08: redundant motion and time-parameterized path planning. */
.lecture-08 .course-title{max-width:13ch;margin-inline:auto}.lecture-08 .slide-title{margin-bottom:.3rem}.l8-slide .slide-subtitle{margin:0 0 .48rem;color:var(--muted);font-size:clamp(.82rem,1vw,1.08rem)}
.l8-takeaway{margin-top:.48rem;padding:.5rem .78rem;border-left:5px solid var(--epfl-red);background:#fff5f5;font-size:clamp(.82rem,1.03vw,1.12rem);line-height:1.35}.l8-big-eq{display:grid;place-content:center;padding:.6rem;border:2px solid #111;background:#fafafa;font-size:clamp(.88rem,1.35vw,1.48rem);text-align:center}.l8-big-eq.red{border-color:var(--epfl-red)}
.l8-cards{flex:1;min-height:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem;align-items:stretch}.l8-card{padding:.7rem .8rem;border:1px solid var(--line);border-top:4px solid var(--science-blue);background:#fff}.l8-card.red{border-top-color:var(--epfl-red)}.l8-card.green{border-top-color:var(--science-green)}.l8-card h3{margin:0 0 .3rem;font-size:clamp(.98rem,1.22vw,1.32rem)}.l8-card p{margin:.2rem 0;font-size:clamp(.76rem,.92vw,1rem);line-height:1.36}
.l8-flow{flex:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem;align-items:center}.l8-flow>div{min-height:9rem;display:grid;place-content:center;padding:.65rem;border:2px solid #111;text-align:center}.l8-flow b{font-size:1.25em}.l8-flow span{font-size:.82em;color:var(--muted)}
.l8-derivation{display:grid;gap:.45rem}.l8-step{display:grid;grid-template-columns:2rem 1fr;gap:.6rem;align-items:center;padding:.5rem .65rem;border:1px solid var(--line);background:#fff}.l8-step .tag{display:grid;place-content:center;width:1.8rem;height:1.8rem;color:#fff;background:var(--epfl-red);font-weight:800}.l8-step p{margin:0;font-size:clamp(.78rem,.98vw,1.06rem)}
.l8-lab{flex:1;min-height:0;border:1px solid #bbb;background:#fff;overflow:hidden}.l8-stage{position:relative;min-height:0;overflow:hidden;background:radial-gradient(circle,#fff,#e9ebed)}.l8-stage canvas{width:100%;height:100%;display:block}.l8-stage .hud{position:absolute;z-index:3;top:.4rem;left:.45rem;padding:.2rem .36rem;background:rgba(255,255,255,.92);font-size:.67rem}.l8-null,.l8-planning{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(18rem,.72fr)}.l8-null aside,.l8-planning aside,.l8-plot-lab aside{display:grid;align-content:start;gap:.45rem;padding:.55rem;border-left:1px solid var(--line);overflow:auto}.l8-null aside canvas{width:100%;height:12rem;border:1px solid #ccc}
.l8-range{display:grid;grid-template-columns:1fr auto;gap:.2rem .5rem;align-items:center;font-size:.72rem;font-weight:800}.l8-range input{grid-column:1/-1;width:100%;accent-color:var(--epfl-red)}.l8-readout{padding:.42rem .5rem;border-left:4px solid var(--science-blue);background:#f4f6f8;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:clamp(.58rem,.69vw,.75rem);line-height:1.42;white-space:pre-wrap}.l8-status{margin:0;padding:.4rem .5rem;background:#f4f4f4;font-size:clamp(.62rem,.75vw,.82rem);line-height:1.35}.l8-plot-lab{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(17rem,.6fr)}.l8-plot-lab>canvas{width:100%;height:100%;min-height:0}
.l8-pills{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.28rem}.l8-pills button{display:flex;justify-content:space-between;gap:.25rem;padding:.34rem .4rem;border:1px solid #999;border-left:5px solid var(--branch);background:#fff;font-size:.68rem}.l8-pills button.selected{color:#fff;background:#111}.l8-pills button.invalid{opacity:.43;text-decoration:line-through}.l8-pills small{font-size:.85em}.l8-controls{display:flex;gap:.35rem}.l8-controls button{padding:.3rem .48rem;border:1px solid #777;background:#fff;font-size:.7rem}.l8-controls .primary{color:#fff;background:var(--epfl-red);border-color:var(--epfl-red)}.l8-planning progress{width:100%;height:.45rem;accent-color:var(--epfl-red)}
.l8-live-eq{display:grid;gap:.16rem;padding:.42rem .5rem;border:1px solid #bbb;background:#fff;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:clamp(.57rem,.67vw,.72rem)}.l8-live-eq b{font-family:Arial,Helvetica,sans-serif}.l8-live-eq span{display:block}.l8-matrix-row{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1.7fr) minmax(15rem,.65fr);gap:.7rem;align-items:center}.l8-matrix-row>div:last-child{padding:.8rem;border-left:5px solid var(--science-blue);background:#f4f6f8}.l8-matrix-row p{font-size:clamp(.75rem,.94vw,1rem)}
.l8-global{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(18rem,.62fr)}.l8-map-wrap{position:relative;min-height:0}.l8-map-wrap canvas{width:100%;height:100%;display:block}.l8-global aside{display:grid;align-content:start;gap:.48rem;padding:.55rem;border-left:1px solid var(--line)}.l8-global aside label{display:grid;gap:.25rem;font-size:.72rem;font-weight:800}.l8-global select,.l8-global button{padding:.32rem .46rem;border:1px solid #777;background:#fff;font-size:.72rem}.l8-global button.primary{color:#fff;background:var(--epfl-red);border-color:var(--epfl-red)}.l8-global progress{width:100%;accent-color:var(--epfl-red)}.l8-map-legend{position:absolute;top:.35rem;right:.45rem;display:flex;gap:.55rem;padding:.26rem .38rem;background:rgba(255,255,255,.92);font-size:.6rem}.l8-map-legend span{display:flex;align-items:center;gap:.2rem}.l8-map-legend i{display:inline-block;width:.8rem;height:.55rem}.l8-map-legend .green{background:#42a85a}.l8-map-legend .grey{background:#d8dadd}.l8-map-legend .corridor{height:2px;background:#fff;box-shadow:0 0 0 1px #777}
.l8-aspect-map{flex:1;display:grid;grid-template-columns:1fr auto 1fr;gap:.7rem;align-items:center}.l8-aspect{min-height:13rem;padding:1rem;border:2px solid #111;display:grid;place-content:center;text-align:center}.l8-aspect.plus{border-color:var(--science-blue)}.l8-aspect.minus{border-color:var(--science-purple)}.l8-aspect strong{font-size:2rem}.l8-aspect-map>i{font-size:2rem;color:var(--epfl-red);font-style:normal}.l8-table{width:100%;border-collapse:collapse;font-size:clamp(.68rem,.88vw,.96rem)}.l8-table th,.l8-table td{padding:.38rem .5rem;border:1px solid var(--line);text-align:left}.l8-table thead{color:#fff;background:#111}
@media(max-width:900px){.l8-cards,.l8-flow{grid-template-columns:1fr}.l8-null,.l8-planning,.l8-plot-lab,.l8-global,.l8-matrix-row{grid-template-columns:1fr}.l8-stage{min-height:52vh}.l8-aspect-map{grid-template-columns:1fr}.l8-aspect-map>i{transform:rotate(90deg)}}
