/* VUB extension: navy and gold with a teal working area for the Level 2 lab. */
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#f5f7fa;color:#16243a;font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;font-size:18px;line-height:1.8}a{color:#164e79;text-underline-offset:.2em}button,input,select,textarea{font:inherit}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:.5em;min-height:48px;padding:.55em 1em;border:2px solid #1b365d;border-radius:8px;background:#1b365d;color:white;font-weight:700;text-decoration:none;cursor:pointer}button:hover,.button:hover{background:#2c4a7c}button:disabled{opacity:.55;cursor:default}button.secondary,.button.secondary{background:white;color:#1b365d}button.secondary:hover,.button.secondary:hover{background:#e8eff5}:focus-visible{outline:4px solid #a65a00;outline-offset:4px}.topbar :focus-visible,.sidebar :focus-visible{outline-color:#f3d66b}input,select,textarea{max-width:100%;padding:.6em;border:2px solid #617488;border-radius:6px;background:white;color:#16243a}textarea{display:block;width:100%;min-height:8rem;resize:vertical}label{display:block}h1,h2,h3{line-height:1.2;text-wrap:balance}h1{font-size:clamp(2.2rem,4vw,3.6rem)}h2{font-size:2rem}h3{font-size:1.3rem}p,li{max-width:72ch}ul,ol{padding-left:1.5em}li+li{margin-top:.5em}table{border-collapse:collapse;width:100%;margin:1.2em 0}th,td{padding:.7em;border:1px solid #b5c2cf;text-align:left;vertical-align:top}th{background:#e8eff5}fieldset{min-width:0;border:2px solid #b5c2cf;border-radius:8px;padding:1.1rem;margin:1.4rem 0}legend{font-weight:700;padding:0 .5em}fieldset label{padding:.45em;border-radius:5px}fieldset label:hover{background:#e8eff5}input[type=radio],input[type=checkbox]{width:1.25em;height:1.25em;accent-color:#1b365d}.topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;background:#1b365d;color:white;padding:1rem 2rem}.topbar a{color:white;font-weight:700}.brand{display:flex;gap:.8em;align-items:center;text-decoration:none}.brand img{width:46px;height:46px;object-fit:contain}.skip{position:fixed;top:-100px;left:1rem;background:white;z-index:200;padding:.5em}.skip:focus{top:1rem}.page{max-width:1120px;margin:auto;padding:2.5rem 2rem 6rem}.intro{display:grid;grid-template-columns:1.3fr 1fr;gap:3rem;align-items:center;border-bottom:2px solid #bdc9d3;padding-bottom:3rem;margin-bottom:3rem}.intro h1{margin-top:0}.intro p{font-size:1.35rem}.route-map{padding:2rem;background:#e1efed;border-radius:12px}.route-map ol{list-style:none;padding:0;margin:0;counter-reset:week}.route-map li{counter-increment:week;display:flex;align-items:center;gap:1rem;margin:0;padding:.65rem 0;border-bottom:1px solid #b6cbc8}.route-map li:before{content:counter(week);font-weight:800;font-size:1.5rem;color:#1b365d}.actions{display:flex;flex-wrap:wrap;gap:.7rem;margin:1rem 0}.week-row{display:grid;grid-template-columns:70px 1fr;gap:1rem;padding:2rem 0;border-bottom:1px solid #b5c2cf}.week-number{font-size:2.8rem;font-weight:800;color:#0f655f}.week-row h2{margin:.3rem 0}.muted{color:#46566d}.note{padding:1rem 1.4rem;background:#e1efed;border-radius:8px}.deck-layout{display:grid;grid-template-columns:300px minmax(0,1fr);min-height:calc(100vh - 80px)}.sidebar{background:#102c4b;color:white;padding:1.3rem;position:sticky;top:0;height:100vh;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.sidebar h2{font-size:1.25rem}.sidebar a{color:#fff}.sidebar .slide-link{display:block;background:transparent;border:0;border-radius:5px;color:#e8eff5;width:100%;text-align:left;justify-content:flex-start;font-size:16px;line-height:1.35;font-weight:400;padding:.65rem;margin:.2rem 0;min-height:44px}.sidebar .slide-link:hover{background:#25476b}.sidebar .slide-link[aria-current=true]{background:#e5ca74;color:#102c4b;font-weight:700}.resources{padding-top:1rem;border-top:1px solid #6c8197;margin-top:1rem}.resources a{display:block;padding:.4em 0}.deck-main{min-width:0;padding:1.5rem clamp(1rem,3vw,3.5rem) 7rem}.deck-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;font-size:1rem}.deck-toolbar p{margin:0}progress{width:100%;height:8px;accent-color:#0f655f;margin:1rem 0}.slide{background:white;border-radius:12px;padding:clamp(1.3rem,3vw,3rem);margin:1rem 0 2rem;min-height:520px;box-shadow:0 8px 28px #102c4b0e;overflow-wrap:anywhere}.slide h2{font-size:clamp(2rem,3.2vw,3rem);margin-top:0;color:#1b365d}.slide p,.slide li,.slide label,.slide .flip-front,.slide .flip-back,.slide .feedback,.slide summary,.slide input,.slide select{font-size:max(32px,var(--fs-slide,32px));line-height:1.6}.slide .small{font-size:18px}.slide button,.slide .button{font-size:22px}.slide .objectives li{font-size:32px}.slide .exercise{margin-top:1.2rem}.js .slide[hidden]{display:none}.slide[hidden]{display:none}.flip-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem}.flip{perspective:900px;min-height:240px;padding:0;border:0;background:transparent;color:#16243a;text-align:left;display:block}.flip:hover{background:transparent}.flip-inner{display:grid;position:relative;min-height:240px;height:100%;transform-style:preserve-3d;transition:transform .45s ease-out}.flip[aria-expanded=true] .flip-inner{transform:rotateY(180deg)}.flip-front,.flip-back{grid-area:1/1;padding:1.2rem;display:flex;flex-direction:column;justify-content:center;border:2px solid #98b7b2;border-radius:12px;backface-visibility:hidden;background:#e1efed}.flip-back{transform:rotateY(180deg);background:#1b365d;color:white}.flip-hint{display:block;font-size:18px;margin-top:1rem}.flip:hover .flip-front{border-color:#1b365d}.step-list{counter-reset:step;list-style:none;padding:0}.step-list li{counter-increment:step;display:flex;gap:1rem;align-items:center;padding:.6rem 0;border-bottom:1px solid #b5c2cf}.step-list li:before{content:counter(step);color:#0f655f;font-weight:800;font-size:2rem}.check-options{display:grid;gap:.7rem}.check-options button{background:#f5f7fa;color:#1b365d;text-align:left;justify-content:flex-start}.check-options button[aria-pressed=true]{background:#dcece9;border-color:#0f655f}.feedback{margin-top:1rem;min-height:1em}.feedback:empty{display:none}.bottom-nav{display:flex;gap:1rem;justify-content:space-between;align-items:center}.menu-toggle{display:none}.tag{font-size:18px;color:#46566d}.doc .answer{min-height:6rem;border-bottom:1px solid #8193a5;margin:.5rem 0 2rem}.doc .question{break-inside:avoid}.doc .answer-model{background:#e8eff5;padding:1rem}.doc nav{margin:1.5rem 0}.questionnaire label{display:flex;gap:.7rem;align-items:baseline}.questionnaire input{flex-shrink:0}.questionnaire fieldset:focus{outline:3px solid #a65a00}.score{font-size:3rem;color:#1b365d;font-weight:800;margin:.5rem 0}.result-item{padding:1rem 0;border-bottom:1px solid #b5c2cf;break-inside:avoid}.result-item h3{margin:.5rem 0}.error{color:#9b1736;font-weight:700}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}video{width:100%;max-height:70vh;background:#102c4b;border-radius:8px}.video-caption{font-size:18px!important}.print-answer{white-space:pre-wrap}.worksheet-input{min-height:7rem}.print-answer{display:none}.table-scroll{overflow-x:auto}.code-sample{display:block;white-space:pre-wrap;background:#102c4b;color:white;padding:1rem;border-radius:8px;font-size:22px;overflow-wrap:anywhere}.footer{padding:2rem;text-align:center;color:#46566d}.course-status{font-size:18px;color:#0d5b42}.assessment-intro{max-width:850px}.overview-links{columns:2}.overview-links a{display:block;padding:.5em}.slide .sim-status{font-size:24px}.interactive-calc{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.interactive-calc input{width:130px}.reveal-notes{font-size:18px;margin-top:1.5rem}.reveal-notes summary{font-size:18px}.reveal-notes p{font-size:18px}.summary{background:#e1efed}.brand-line{height:5px;background:#c9a227}button:active,.button:active{transform:translateY(1px)}.quiz-meta{font-size:16px}.form-result{white-space:pre-wrap}
@media(max-width:1000px){.deck-layout{grid-template-columns:250px minmax(0,1fr)}.sidebar{padding:.8rem}.intro{gap:1.5rem}.slide{padding:1.5rem}}@media(max-width:760px){.intro{grid-template-columns:1fr}.page{padding:1.5rem 1rem 6rem}.topbar{padding:1rem}.deck-layout{display:block}.sidebar{display:none;position:static;height:auto;max-height:65vh}.sidebar.open{display:block}.menu-toggle{display:inline-flex}.deck-main{padding:1rem 1rem 7rem}.slide{min-height:0;padding:1.2rem}.slide h2{font-size:2rem}.slide p,.slide li,.slide label,.slide .flip-front,.slide .flip-back{font-size:max(32px,var(--fs-slide,32px))}.flip-grid{grid-template-columns:1fr}.overview-links{columns:1}.week-row{grid-template-columns:45px 1fr}.week-number{font-size:2rem}.bottom-nav{flex-wrap:wrap}.topbar .course-name{display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.flip[aria-expanded=true] .flip-inner{transform:none}.flip[aria-expanded=true] .flip-front{visibility:hidden}.flip .flip-back{transform:none;visibility:hidden}.flip[aria-expanded=true] .flip-back{visibility:visible}}
@media print{@page{size:letter;margin:.6in}body{background:white;color:black;font-size:12pt;line-height:1.45}.topbar,.sidebar,.deck-toolbar,.bottom-nav,.actions,.skip,.menu-toggle,.vub-textsize-fab,.no-print,progress,.footer{display:none!important}.page,.deck-main{max-width:none;padding:0;margin:0}.deck-layout{display:block}.slide,.js .slide[hidden]{display:block!important;box-shadow:none;border:0;border-radius:0;min-height:0;margin:0;padding:.2in;break-after:page}.slide h2{font-size:26pt}.slide p,.slide li,.slide label,.slide .flip-front,.slide .flip-back{font-size:24pt}.flip-grid{display:block}.flip{display:block;min-height:0;margin:1rem 0}.flip-inner{display:block;transform:none!important;min-height:0}.flip-front,.flip-back{display:block;position:static;transform:none;backface-visibility:visible;background:white;color:black;border:1px solid #888;visibility:visible!important}.flip-hint{display:none}.intro{display:block}.route-map{background:white}.week-row{break-inside:avoid}.doc h1{font-size:24pt}.doc h2{font-size:18pt}.doc h3{font-size:14pt}.doc p,.doc li,.doc label,.doc td,.doc th{font-size:12pt}.doc .answer{min-height:1in}.doc section{break-inside:auto}.doc .week-plan{break-before:page}.worksheet-input{display:none}.print-answer{display:block;min-height:1in}table{font-size:11pt}thead{display:table-header-group}tr{break-inside:avoid}.assessment-form{display:none!important}.results{display:block}a{color:black}video{display:none}.doc .note{background:white;border:1px solid #777}.score{font-size:28pt}.result-item{break-inside:avoid}.print-instructions{display:none}.brand-line{display:none}}
/* Preserve the classroom's 24pt body floor while the shared control enlarges it. */
@media screen{body .slide :is(p,li,label,.flip-front,.flip-back,.feedback,summary,input,select){font-size:max(32px,var(--fs-slide,32px))!important}}
@media screen{body .slide .check-options button{font-size:max(32px,var(--fs-slide,32px))!important;line-height:1.6!important}}
@media print{body .slide .check-options button{font-size:24pt!important;line-height:1.45!important;background:white;color:black}}
/* Skills-challenge worksheet table (week 5). */
.challenge td{vertical-align:top}.challenge .worksheet-input{min-height:4rem}.rating{margin:0;padding:0;border:0}.rating label{display:block;white-space:nowrap}.procedure li{margin-top:.5em}
/* Week 6 app test logs, extension rubric and the video's word list. */
/* Hidden cell labels are absolutely positioned; the scroll box must contain them or the page scrolls sideways. */
.table-scroll{position:relative}.test-log .worksheet-input{min-height:3.5rem;min-width:9rem}.test-log th[scope=row],.rubric th[scope=row]{white-space:normal}.video-words{border:2px solid #adc1d2;border-radius:8px;padding:0 1.25rem 1rem;margin:1.5rem 0}.video-words dt{font-weight:700;margin-top:.7em}.video-words dd{margin:0}
@media print{.test-log .print-answer{min-height:.6in}}
