.subjective{font-size:16px;padding-bottom:30px}
.subjective [hidden]{display:none!important}
.subjective .brand{text-decoration:none;color:var(--ink)}
.study-tools{display:flex;align-items:center;gap:18px}
.subjective{--law-panel-width:min(540px,40vw)}
.laws-open .workspace{width:calc(100% - var(--law-panel-width));margin-left:max(0px,calc((100% - var(--law-panel-width) - 1240px)/2));margin-right:var(--law-panel-width)}
#law-panel{position:fixed;inset:64px 0 0 auto;width:var(--law-panel-width);z-index:40;display:flex;flex-direction:column;gap:8px;padding:18px;background:var(--card);border-left:1px solid var(--line);box-shadow:-8px 0 24px #0001;overflow:hidden}
.law-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}
.subjective #law-panel h2,.subjective #law-panel p{margin:0}
#law-library-note{font-size:12px;line-height:1.6}
#law-controls{border:0;padding:0;margin:0;min-width:0}
#law-controls form{margin-top:8px}
.law-input-row{display:flex;align-items:center;gap:8px}
.subjective .law-input-row input{min-width:0;flex:1;margin-top:0}
.law-input-row button{white-space:nowrap;flex-shrink:0}
.subjective .law-check{display:flex;align-items:center;gap:7px;font-weight:400;margin-top:8px}
.subjective .law-check input{width:auto;margin:0}
#law-status{font-size:13px;color:var(--ink2);line-height:1.5}
#law-results{max-height:22vh;min-height:40px;overflow:auto;flex-shrink:0;border-bottom:1px solid var(--line)}
.law-hit{display:block;text-align:left;width:100%;border:0;border-bottom:1px solid var(--line);background:var(--card);color:var(--ink);padding:10px 4px;cursor:pointer;font:inherit;font-size:13px}
.law-hit strong,.law-hit span{display:block}
.law-hit:hover{background:var(--chip)}
#law-reading{flex:1;overflow:auto;min-height:100px;scroll-behavior:auto;padding:0 8px 24px 0}
#law-title{margin:10px 0!important}
.law-article{padding:14px 0;border-bottom:1px solid var(--line);scroll-margin-top:12px}
.law-text{white-space:pre-wrap;line-height:1.85;overflow-wrap:anywhere}
.law-selected{background:var(--chip);border-radius:6px;padding:12px;outline:2px solid var(--brand)}
.subjective .law-warning{font-size:13px;color:var(--no);margin-top:10px!important}
#law-panel mark{background:#ffe08a;color:#222}
@media(max-width:1100px){.laws-open{overflow:hidden}.laws-open .workspace{width:auto;margin-left:auto;margin-right:auto}#law-panel{inset:0;width:100%;max-height:100dvh;z-index:200;padding:14px}.study-tools{gap:10px}#law-library-note{font-size:11px}}
@media print{#law-panel{display:none!important}.laws-open .workspace{width:auto;margin-left:0;margin-right:0}}
.workspace{max-width:1240px;margin:auto;padding:24px}
.subjective h1{font-size:26px;margin:0 0 8px;line-height:1.4}
.subjective h2{font-size:20px;margin:0 0 12px}
.subjective h3{font-size:17px;line-height:1.7}
.subjective p{margin:8px 0 16px}
.subjective .muted,.subjective .status{font-size:14px}
.heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:10px 0 24px}
.library-actions{display:flex;flex-wrap:wrap;gap:8px;flex-shrink:0}
.case-progress{margin:12px 0;color:var(--brand);font-size:14px}
#grading-dialog li{margin:12px 0}
#grading-dialog code{overflow-wrap:anywhere}
#grading-dialog{width:min(620px,calc(100% - 24px));max-width:620px;max-height:calc(100dvh - 24px);overflow:auto}
#grading-dialog details{margin:14px 0}
#grading-dialog summary{cursor:pointer;font-weight:600}
.grading-actions{display:flex;flex-wrap:wrap;gap:10px}
.grading-actions a{text-decoration:none}
#grading-instructions{font-size:13px;line-height:1.7;resize:vertical;margin-bottom:10px}
.handoff-record{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:13px;padding:10px 0;border-bottom:1px solid var(--line)}
.handoff-record button{flex-shrink:0}
@media(max-width:800px){.heading{flex-wrap:wrap}.library-actions{width:100%}}
.filters{display:flex;gap:18px;align-items:end;box-shadow:none}
.subjective label{display:block;font-size:14px;font-weight:600}
.subjective input,.subjective select,.subjective textarea{display:block;font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:10px 12px;width:100%;margin-top:6px}
.subjective select{min-width:160px}
.search-label{flex:1}
.case-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.case-card{margin:0;box-shadow:none;display:flex;flex-direction:column;align-items:start;padding:22px;border-top:3px solid var(--brand)}
.case-card h2{margin:12px 0;font-size:19px}
.case-card p{color:var(--ink2);font-size:14px;flex:1}
.tags{display:flex;flex-wrap:wrap;gap:8px;font-size:14px}
.pill{background:var(--chip);padding:3px 9px;border-radius:6px}
.case-card .btn{margin-top:4px}
.exercise-bar{display:flex;gap:16px;justify-content:space-between;align-items:center;margin:0 0 20px}
.exercise-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px;align-items:start}
.case-material{position:sticky;top:78px;max-height:calc(100vh - 105px);overflow:auto;padding:26px;margin:0}
.source-text{white-space:pre-wrap;overflow-wrap:anywhere;font-size:16px;line-height:1.95}
.case-source{font-size:14px;color:var(--ink2);border-top:1px solid var(--line);padding-top:14px;margin-top:20px}
.answer-panel .card{margin-top:0;box-shadow:none;padding:24px}
.answer-panel textarea{min-height:180px;resize:vertical;line-height:1.8;font-weight:400}
.save-state{color:var(--ink2);font-size:14px}
.submit-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:20px 0}
.result{border-left:4px solid var(--brand)}
.result-score{font-size:30px;font-weight:800;color:var(--brand)}
.result ul{padding-left:22px}
.result li{margin:8px 0}
.history{margin-top:20px}
.history select{max-width:100%}
.empty{padding:40px 20px;text-align:center;color:var(--ink2);grid-column:1/-1}
.notice{padding:12px 16px;margin:12px 0;background:var(--chip);border-radius:8px;font-size:14px;overflow-wrap:anywhere}
.notice.error{background:var(--nobg);color:var(--no)}
.subjective button:disabled{opacity:.6;cursor:wait}
.subjective :focus-visible{outline:3px solid var(--brand);outline-offset:3px}
.subjective dialog{max-width:540px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:16px;padding:26px;line-height:1.8}
.subjective dialog::backdrop{background:#0007}
#unlock{max-width:540px;margin:60px auto}
#unlock .btn{margin-top:18px}
.reference{border-top:1px solid var(--line);padding-top:16px;margin-top:18px}
.reference summary{cursor:pointer;font-weight:600}
.reference .source-text{margin-top:14px}
@media(max-width:800px){.workspace{padding:16px}.exercise-columns,.case-list{grid-template-columns:1fr}.case-material{position:static;max-height:none}.heading{align-items:start}.heading h1{font-size:23px}.filters{flex-wrap:wrap;gap:12px}.filters label{flex:1;min-width:130px}.filters .search-label{flex-basis:100%}.subjective select{min-width:0}.exercise-bar{align-items:start}.subjective .status{font-size:13px;max-width:50%;text-align:right}}
@media print{.topbar,.exercise-bar,.submit-bar,.filters,button,#notice,.history{display:none!important}.workspace{padding:0}.exercise-columns{display:block}.case-material{position:static;max-height:none;overflow:visible}.subjective textarea{min-height:200px}.card{break-inside:avoid;box-shadow:none}}
