:root{--paper:#fffefa;--canvas:#f5f3ee;--ink:#222d31;--muted:#6b7474;--red:#861b26;--red-soft:#f6eceb;--line:#dedfd8;--green:#285c4d;--sidebar:250px;--sans:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--serif:Georgia,"Times New Roman",serif;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:var(--canvas);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.55}a{color:inherit}button,input,select{font:inherit}button,select{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #be885a;outline-offset:4px}button{color:inherit}button:disabled{cursor:default}[hidden]{display:none!important}.skip{position:fixed;top:-80px;left:20px;z-index:9;padding:12px;background:var(--paper)}.skip:focus{top:12px}
.shell{max-width:1450px;margin:auto;display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr);gap:58px;padding:0 50px}.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:41px 0 28px;border-right:1px solid var(--line);padding-right:29px}.brand{display:flex;gap:12px;align-items:center;text-decoration:none}.brand .course-logo{width:64px;height:64px;object-fit:contain;border-radius:50%;flex-shrink:0}.brand strong{font-size:17px;letter-spacing:.04em}.brand small{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.17em;color:var(--muted);margin-top:2px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:.17em;text-transform:uppercase;color:var(--muted)}.nav-title{margin:53px 0 14px}.chapter-nav{display:grid;gap:7px}.chapter-nav a{text-decoration:none;display:grid;grid-template-columns:24px 1fr auto;gap:10px;padding:13px 9px;border-radius:5px;align-items:start;transition:background .15s}.chapter-nav a:hover,.chapter-nav a.current{background:#eae8df}.nav-number{color:var(--red);font-size:11px;font-weight:700;padding-top:1px}.nav-name{font-size:12px;font-weight:550;line-height:1.55}.nav-count{font-size:11px;font-variant-numeric:tabular-nums;color:var(--muted)}.chapter-nav a[aria-disabled="true"]{opacity:.35}.progress-card{margin-top:auto;padding-top:42px}.progress-label{display:flex;justify-content:space-between;font-size:12px;font-weight:600}.progress-label span:last-child{color:var(--green);font-variant-numeric:tabular-nums}progress{width:100%;height:5px;border:0;border-radius:6px;display:block;margin:12px 0;background:#e2e3da}progress::-webkit-progress-bar{background:#e2e3da;border-radius:6px}progress::-webkit-progress-value{background:var(--green);border-radius:6px}progress::-moz-progress-bar{background:var(--green);border-radius:6px}.progress-card p{font-size:11px;line-height:1.65;color:var(--muted);margin:0}.sidebar-bottom{font-size:10px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase;margin-top:36px}
.main{min-width:0;padding:49px 0 35px}.hero{position:relative;padding-bottom:33px;border-bottom:1px solid var(--line)}.hero-top{display:flex;align-items:center;justify-content:space-between;gap:15px}.hero .eyebrow{color:var(--red)}.print-button,.clear-button{background:transparent;border:1px solid var(--line);border-radius:5px;padding:9px 13px;display:inline-flex;align-items:center;gap:8px;font-size:12px;white-space:nowrap}.print-button:hover,.clear-button:hover{background:#eceae3}.print-button svg{width:15px;height:15px}.hero h1{font:normal clamp(34px,3.5vw,48px)/1.14 var(--serif);letter-spacing:-1.7px;margin:22px 0 13px}.hero-stats{display:flex;gap:24px;font-size:11px;text-transform:uppercase;letter-spacing:.07em;margin-top:25px;flex-wrap:wrap}.hero-stats strong{font-size:14px;letter-spacing:0;margin-right:4px;font-weight:600}.hero-stats span+span{border-left:1px solid var(--line);padding-left:24px}
.filters{margin-top:29px;display:grid;grid-template-columns:minmax(0,1fr);gap:13px;align-items:end}.filter label{display:block;font-size:10px;letter-spacing:.07em;font-weight:650;text-transform:uppercase;margin-bottom:7px;color:var(--muted)}.filter input{width:100%;height:43px;border:1px solid var(--line);border-radius:5px;background:var(--paper);padding:0 12px;color:var(--ink);font-size:13px}.search-wrap{position:relative}.search-wrap svg{position:absolute;left:13px;top:13px;width:17px;height:17px;color:var(--muted);pointer-events:none}.filter input{padding-left:39px}.results-bar{display:flex;justify-content:space-between;align-items:center;gap:15px;min-height:59px;font-size:11px;color:var(--muted)}.results-actions{display:flex;align-items:center;gap:16px}.unpractised-label{display:flex;align-items:center;gap:7px;white-space:nowrap}.unpractised-label input{accent-color:var(--green);margin:0;width:13px;height:13px}.clear-button{padding:4px 8px;font-size:11px}
.chapter-group{scroll-margin-top:25px;margin-bottom:48px}.chapter-heading{display:flex;align-items:center;gap:17px;margin:23px 0 19px;padding-top:20px;border-top:2px solid var(--ink)}.chapter-group:first-of-type .chapter-heading{margin-top:5px}.chapter-index{font-family:var(--serif);font-size:39px;line-height:1;color:#b0b5aa}.chapter-heading :is(h2,h3){font-family:var(--sans);font-weight:600;font-size:19px;letter-spacing:-.35px;line-height:1.35;margin:2px 0 4px}.chapter-heading p{margin:0;font-size:11px;color:var(--muted)}.chapter-heading .chapter-total{margin-left:auto;white-space:nowrap;color:var(--muted);font-size:12px}
.question{position:relative;background:var(--paper);border:1px solid var(--line);border-radius:7px;margin-bottom:14px;padding:26px 27px 15px 64px;scroll-margin-top:25px;min-width:0}.question-number{position:absolute;left:25px;top:27px;font:700 16px/1.7 var(--serif);color:var(--red)}.question-body{font:17px/1.85 var(--serif);color:var(--red);min-width:0;overflow-wrap:break-word}.question-body p{margin:0 0 13px}.question-body p:last-child{margin-bottom:0}.question-body .katex{font-size:1.04em}.gate-year{font-size:.88em;white-space:nowrap;margin-left:.2em}.question-body code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.83em;white-space:normal;background:#f0eee8;padding:2px 4px;border-radius:3px;color:#65232b}.question-reference{text-decoration-color:#bc9697;text-underline-offset:3px}.question-reference:hover{text-decoration-color:var(--red)}.katex-display{margin:15px 0 18px!important;padding:7px 2px;overflow-x:auto;overflow-y:hidden;max-width:100%;font-size:.95em}.katex-display>.katex{white-space:nowrap}.options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 23px;padding:3px 0 10px;margin:9px 0 0;font-size:16px}.option{display:flex;gap:11px;min-width:0;line-height:1.8;padding:5px 0}.option-letter{color:#9c5d62;font-family:var(--sans);font-size:12px;flex-shrink:0;line-height:2.2}.option>div{min-width:0}.option .katex{white-space:normal}.question-figure{margin:20px 0 22px;text-align:center;max-width:100%}.figure-zoom{border:0;padding:0;background:#fff;display:inline-block;max-width:100%;border-radius:3px;cursor:zoom-in}.question-figure img{display:block;height:auto;max-width:100%;margin:0 auto}.question-footer{display:flex;align-items:center;justify-content:flex-end;margin-top:12px;padding-top:10px;border-top:1px solid #eeeee7;min-height:35px}.practice-button{border:0;background:none;display:inline-flex;gap:7px;align-items:center;color:var(--muted);font-size:11px;padding:4px 0 4px 8px}.practice-button .tick-box{display:grid;place-items:center;width:14px;height:14px;border:1px solid #aab0a7;border-radius:3px}.practice-button svg{width:11px;height:11px;opacity:0}.practice-button[aria-pressed="true"]{color:var(--green)}.practice-button[aria-pressed="true"] .tick-box{background:var(--green);border-color:var(--green);color:#fff}.practice-button[aria-pressed="true"] svg{opacity:1}.question.practised{border-left:3px solid #7a9e8b;padding-left:62px}.question.practised .question-number{left:23px}.empty-state{padding:65px 20px;text-align:center;background:var(--paper);border:1px dashed var(--line);border-radius:6px}.empty-state h2{font:26px var(--serif);margin:0 0 10px}.empty-state p{font-size:13px;color:var(--muted)}.page-footer{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);border-top:1px solid var(--line);padding-top:24px;margin-top:35px}.page-footer a{text-underline-offset:3px}
.figure-dialog{padding:0;border:0;border-radius:7px;max-width:96vw;max-height:94vh;background:#fff;box-shadow:0 20px 100px #0005}.figure-dialog::backdrop{background:#152021b8}.dialog-bar{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:13px 18px;font-size:12px;border-bottom:1px solid var(--line)}.dialog-bar button{font-size:13px;border:1px solid var(--line);background:white;border-radius:4px;padding:5px 11px}.dialog-image-wrap{overflow:auto;max-height:calc(94vh - 60px);padding:22px}.dialog-image-wrap img{display:block;max-width:86vw;height:auto;max-height:none;min-width:min(550px,80vw)}
@media(min-width:1450px){.question-body{font-size:18px}}
@media(max-width:1100px){.shell{gap:32px;padding:0 27px;--sidebar:210px}.sidebar{padding-right:21px}.question{padding-left:52px;padding-right:23px}.question-number{left:20px}.question.practised{padding-left:50px}.question.practised .question-number{left:18px}.question-body{font-size:16px}.options{font-size:15px;gap:6px 16px}.filters{grid-template-columns:minmax(0,1fr);gap:9px}.hero h1{font-size:39px}}
@media(max-width:800px){.shell{display:block;padding:0 22px}.sidebar{position:static;height:auto;display:block;border:0;padding:23px 0 16px;border-bottom:1px solid var(--line)}.brand{gap:9px}.brand .course-logo{width:52px;height:52px}.brand strong{font-size:15px}.brand small{font-size:9px}.nav-title,.progress-card,.sidebar-bottom{display:none}.chapter-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-top:19px}.chapter-nav a{display:block;padding:8px;text-align:center;border:1px solid var(--line);background:var(--paper)}.nav-number{font-size:11px}.nav-number:before{content:'Ch '}.nav-name,.nav-count{display:none}.main{padding-top:26px}.hero h1{font-size:39px}.hero-stats{gap:14px}.hero-stats span+span{padding-left:14px}.hero{padding-bottom:25px}.filters{grid-template-columns:minmax(0,1fr);margin-top:24px}.filter:first-child{grid-column:1/-1}.question{padding-top:22px;padding-bottom:13px;padding-left:49px;padding-right:20px}.question-number{left:18px;top:22px}.question.practised{padding-left:47px}.question.practised .question-number{left:16px}.chapter-heading :is(h2,h3){font-size:17px}.chapter-heading{gap:13px}.chapter-index{font-size:34px}.chapter-total{display:none}.hero-top{gap:8px}.hero-top .eyebrow{font-size:9px}.print-button{padding:8px 10px;font-size:11px}.results-actions{gap:10px}.results-bar{align-items:flex-start;padding:13px 0;min-height:65px}.question-body .katex{font-size:1em}.options{grid-template-columns:1fr;gap:2px}.page-footer{gap:12px}.figure-dialog{max-width:96vw}.dialog-image-wrap{padding:12px}.question-figure{margin:17px 0}}
@media(max-width:400px){.shell{padding:0 15px}.hero h1{font-size:34px}.question{padding-left:41px;padding-right:15px}.question-number{left:14px}.question.practised{padding-left:39px}.question.practised .question-number{left:12px}.question-body{font-size:15.5px}.hero-stats{font-size:9px;gap:11px}.hero-stats span+span{padding-left:11px}.chapter-heading :is(h2,h3){font-size:16px}.results-bar{font-size:10px}.gate-year{white-space:normal}.clear-button{font-size:10px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
@page{size:A4;margin:17mm}
@media print{body{background:white;font-size:11pt}.shell{display:block;max-width:none;padding:0}.sidebar,.filters,.results-bar,.print-button,.question-footer,.page-footer,.empty-state,.skip,.figure-dialog{display:none!important}.main{padding:0}.hero{padding-bottom:13pt;border-bottom:1pt solid #999}.hero h1{font-size:29pt;margin:12pt 0 8pt}.hero-stats{margin-top:13pt}.hero-top .eyebrow{font-size:8pt}.chapter-group{margin:20pt 0}.chapter-heading{break-after:avoid;margin:16pt 0 12pt;padding-top:11pt}.chapter-heading :is(h2,h3){font-size:15pt}.chapter-heading .chapter-total{display:block}.chapter-index{font-size:28pt}.question,.question.practised{padding:14pt 10pt 12pt 31pt;margin-bottom:11pt;border:1pt solid #ddd;border-radius:0;break-inside:avoid;background:white}.question-number,.question.practised .question-number{left:11pt;top:14pt;font-size:11pt}.question-body{font-size:11pt;line-height:1.6}.options{grid-template-columns:repeat(2,minmax(0,1fr));font-size:10pt;gap:2pt 12pt}.option-letter{font-size:9pt}.question-figure{margin:12pt 0}.question-figure img{max-height:220pt;width:auto!important;max-width:100%;object-fit:contain}.katex-display{font-size:.95em;overflow:visible}.figure-zoom{cursor:default}.question-reference{text-decoration:none}.gate-year{font-size:9pt}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}

.chapter-heading .chapter-kicker{font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--red);margin-bottom:4px}.practice-view{scroll-margin-top:24px}.nav-all .nav-number:before{content:none}@media print{.chapter-heading .chapter-kicker{font-size:7pt}}

/* Tables inside a question statement (e.g. instruction/semantics/size listings) */
.question-body .q-table{width:100%;border-collapse:collapse;margin:15px 0 16px;font:15px/1.7 var(--serif);color:var(--red)}
.question-body .q-table th{text-align:left;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#9c5d62;padding:0 14px 7px 0;border-bottom:1px solid #d9c9c9}
.question-body .q-table td{padding:6px 14px 6px 0;border-bottom:1px solid #efe9e3;vertical-align:top}
.question-body .q-table tr:last-child td{border-bottom:0}
.question-body .q-table th.num,.question-body .q-table td.num{text-align:right;padding-right:0;font-variant-numeric:tabular-nums;white-space:nowrap}
.question-body .q-table code{background:none;padding:0;color:inherit;font-size:.86em}
.blank{display:inline-block;min-width:4.5em;border-bottom:1px solid currentColor;vertical-align:baseline}
@media(max-width:800px){.question-body .q-table{font-size:14px;display:block;overflow-x:auto;white-space:nowrap}}
@media print{.question-body .q-table{font-size:10pt;break-inside:avoid}.question-body .q-table th{font-size:8pt}.blank{min-width:4em}}

/* Tables, code, and formulas from the verbatim chapter sources. */
.question-table-wrap{max-width:100%;overflow-x:auto;margin:16px 0}.question-table{border-collapse:collapse;font-size:.91em;line-height:1.5;min-width:40%}.question-table td{padding:7px 12px;border:1px solid var(--line);vertical-align:top}.question-code{max-width:100%;overflow-x:auto;padding:16px;background:#f0eee8;font-size:.8em;line-height:1.55;white-space:pre}.formula-inline{display:inline-block;max-width:100%;vertical-align:middle;overflow-x:auto;overflow-y:hidden;padding:2px 3px;line-height:1.3}.formula-inline>.katex{display:inline-block}.question-body .katex-display{max-width:100%;overflow-x:auto;overflow-y:hidden;padding:6px 0}.question-body code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em;white-space:pre-wrap}.question-body p{overflow-wrap:break-word}.option>div{min-width:0}.answer-blank{white-space:nowrap}.question-body .question-figure{max-width:100%}.options:has(.question-figure){grid-template-columns:1fr 1fr}@media(max-width:800px){.options:has(.question-figure){grid-template-columns:1fr}.question-table{font-size:.82em}.question-table td{padding:5px 8px}}@media print{.question-table-wrap,.question-code,.formula-inline{overflow:visible}.question-table{font-size:9pt}}

.hero-course{min-width:0}.hero-course .instructor{margin:8px 0 0;font-size:14px;line-height:1.5;font-weight:500}.instructor a{color:inherit;text-decoration:underline;text-underline-offset:3px}
