:root{--paper:#fafbf6;--white:#fff;--ink:#26372c;--soft:#5d6b60;--line:#d8ded2;--green:#245840;--pale:#eef3e8;--gold:#9e702a}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--paper);font:15px/1.6 system-ui,-apple-system,'PingFang SC',sans-serif}a{color:var(--green);text-underline-offset:3px}button,input,select,textarea{font:inherit;color:inherit}button,select,input{min-height:40px}button{cursor:pointer;background:var(--white);border:1px solid var(--line);padding:7px 12px;border-radius:5px}button:hover{border-color:var(--green);background:var(--pale)}button:disabled{opacity:.5;cursor:default}.primary{background:var(--green);color:#fff}.primary:hover{background:#1c4934;color:#fff}:focus-visible{outline:3px solid #b98329;outline-offset:3px}input,textarea,select{background:var(--white);border:1px solid #bac6b6;border-radius:4px;padding:8px;max-width:100%}textarea{width:100%;resize:vertical;min-height:100px}header{display:flex;align-items:center;gap:26px;border-bottom:1px solid var(--line);background:#fff;padding:17px 28px}.brand{font:600 12px/1.5 system-ui;letter-spacing:.11em;text-decoration:none}.brand small{display:block;font-size:10px;letter-spacing:0;color:var(--soft)}header>span{font:22px/1.2 Georgia,serif}header>nav{margin-left:auto;display:flex;gap:20px;font-size:12px;flex-wrap:wrap}.shell{display:grid;grid-template-columns:198px minmax(0,1fr);min-height:calc(100vh - 79px)}.rail{background:#f0f3eb;border-right:1px solid var(--line);padding:22px 14px}.rail nav{display:grid;gap:4px}.rail button{border-color:transparent;background:transparent;text-align:left;padding:9px 10px;border-radius:4px;font-size:13px}.rail button[aria-current=true]{color:var(--green);background:#fff;border-color:var(--line);font-weight:600}.rail-label{font-size:10px;letter-spacing:.12em;color:var(--soft);margin:26px 10px 10px}.week-button span{display:block;color:var(--soft);font-size:11px;font-weight:400}.week-button{line-height:1.35}main{min-width:0;padding:24px clamp(16px,3vw,46px) 70px}h1{font:32px/1.25 Georgia,'Songti SC',serif;font-weight:400;margin:10px 0}h2{font:22px/1.3 Georgia,'Songti SC',serif;margin:20px 0 12px}h3{font-size:15px;margin:20px 0 8px}p{margin:12px 0;overflow-wrap:anywhere}.muted,.hint{font-size:12px;color:var(--soft)}.eyebrow{font-size:11px;letter-spacing:.1em;color:var(--gold)}.toolbar,.actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:18px 0}.toolbar label{font-size:12px;display:flex;gap:6px;align-items:center}#status{font-size:12px;color:var(--soft);min-height:20px;margin-bottom:10px}.error{color:#973416!important}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:24px 0}.card{display:block;text-align:left;background:#fff;min-height:165px;padding:18px;border:1px solid var(--line)}.card:hover{border-color:var(--green)}.card .number{font-size:10px;letter-spacing:.1em;color:var(--gold)}.card strong{display:block;font:20px/1.3 Georgia,'Songti SC',serif;margin:9px 0}.card .zh{display:block;font-size:12px;color:var(--soft)}.card .locus{display:block;margin-top:13px;font-size:12px;color:var(--green)}.split{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(330px,1fr);gap:24px;align-items:start}.panel{border:1px solid var(--line);background:#fff;padding:24px;min-width:0}.panel>:first-child{margin-top:0}.field{display:block;margin:16px 0;font-size:12px;color:var(--soft)}.field input,.field textarea,.field select{display:block;width:100%;margin-top:6px;color:var(--ink)}.field textarea{font-size:14px;line-height:1.6}.reading{font:22px/1.95 'Times New Roman',Georgia,'Songti SC',serif;white-space:pre-wrap;overflow-wrap:anywhere}.translation{font:17px/1.8 Georgia,serif;white-space:pre-wrap}.passage-info{font-size:12px;margin-bottom:20px}.cycle{display:flex;gap:0;margin:20px 0;border:1px solid var(--line);flex-wrap:wrap}.cycle div{flex:1;padding:10px 12px;min-width:110px;font-size:12px;background:var(--pale)}.cycle strong{display:block;color:var(--green);font-size:17px}.task{background:var(--pale);padding:17px 20px;white-space:pre-wrap}.timer{font:24px Georgia,serif;font-variant-numeric:tabular-nums}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:13px 10px;border-bottom:1px solid var(--line);font-size:13px;vertical-align:top}th{font-size:11px;text-transform:uppercase;color:var(--soft)}.chapter-list{display:grid;gap:10px}.chapter-row{border-bottom:1px solid var(--line);padding:10px 0 17px}.chapter-row .latin-preview{font:18px/1.6 Georgia,serif;margin:10px 0}.chapter-row .actions{margin:8px 0}.legend{display:flex;gap:7px;flex-wrap:wrap;font-size:12px;margin:12px 0}.legend span{padding:2px 7px}.mark.indicative,.legend .indicative{color:#b71919}.mark.subjunctive,.legend .subjunctive{color:white;background:#151515}.mark.connective,.legend .connective{background:#fff185}.mark.infinitive,.legend .infinitive{color:#08733d}.mark.participle,.legend .participle{color:#a74600}.mark.subject,.legend .subject{color:#7730a0}.mark.agreement,.legend .agreement{text-decoration:underline}.mark.absolute,.legend .absolute{font-weight:bold}.mark.case,.legend .case{font-weight:bold}.mark.phrase,.legend .phrase{background:#e2e6e0}.warning{font-size:12px;border-left:3px solid var(--gold);padding:10px 14px;background:#faf4e8}.source-record{font-size:12px;line-height:1.7}.source-record pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:10px}details{margin:18px 0}summary{cursor:pointer;color:var(--green)}.download-label{display:inline-block;padding:8px;border:1px solid var(--line);background:white;border-radius:5px;cursor:pointer}.download-label input{display:none}dialog{max-width:580px;border:1px solid var(--line);border-radius:8px;padding:25px;color:var(--ink)}dialog::backdrop{background:#1f33234d}.skip{position:absolute;left:-9999px}.skip:focus{left:20px;top:10px;background:#fff;padding:15px;z-index:20}[hidden]{display:none!important}.about{max-width:920px}.about p{max-width:85ch}.projection .rail,.projection header,.projection .author-editor,.projection .edit-tools{display:none}.projection .shell{display:block}.projection .reading{font-size:30px}.projection .split{grid-template-columns:minmax(0,1.6fr) minmax(250px,1fr)}.projection-exit{display:none}.projection .projection-exit{display:block;position:fixed;bottom:12px;right:12px;z-index:2;background:#fff}.paper-tabs{display:flex;gap:6px;flex-wrap:wrap}.paper-tabs button.active{background:var(--pale);border-color:var(--green)}.empty{font-size:13px;color:var(--soft);border:1px dashed var(--line);padding:16px}.annotation-list{font-size:12px}.annotation-list li{margin:8px 0}.annotation-list button{min-height:28px;font-size:11px}.title-zh{font-size:16px;color:var(--soft);margin:8px 0 15px}
@media(max-width:1100px){.cards{grid-template-columns:repeat(3,minmax(0,1fr))}.split{grid-template-columns:1fr}.shell{grid-template-columns:170px minmax(0,1fr)}header{flex-wrap:wrap;gap:16px}header>nav{margin-left:0}}
@media(max-width:700px){header{padding:14px 16px}header>span{font-size:20px}header>nav{width:100%;gap:14px}.shell{display:block}.rail{padding:10px 12px;border-right:0;border-bottom:1px solid var(--line)}.rail #views{display:flex;flex-wrap:wrap}.rail #weeks{display:flex;overflow:auto;gap:4px;scrollbar-width:thin}.rail .week-button{min-width:70px;text-align:center}.week-button span{display:none}.rail-label{margin:12px 10px 6px}.rail button{min-height:44px}main{padding:18px 14px 55px}.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.card{min-height:160px;padding:14px}.card strong{font-size:18px}.panel{padding:18px}.reading{font-size:21px}.toolbar{align-items:stretch}.toolbar input[type=search]{width:100%}h1{font-size:28px}.projection .split{grid-template-columns:1fr}button,select,input{min-height:44px}th,td{min-width:110px}}
.plan-controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center;border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:22px}.plan-controls label{display:flex;align-items:center;gap:8px;font-size:12px}.plan-controls select{max-width:330px}.week-slot{background:#edf1e6;border:1px solid #c7d2be;border-radius:9px;padding:8px;min-width:0;display:flex;flex-direction:column}.slot-label{font-size:10px;letter-spacing:.08em;padding:3px 6px 9px;color:var(--soft)}.cartridge{position:relative;width:100%;flex:1;min-height:172px;border-radius:5px;box-shadow:0 3px 0 #d1dbc9;border-left:4px solid var(--green)}.cartridge::before{content:'';display:block;width:26px;height:4px;background:#bacba8;border-radius:3px;margin-bottom:6px}.slot-actions{display:flex;flex-wrap:wrap;gap:5px;margin-top:10px}.slot-actions button{font-size:11px;flex:1;padding:5px;min-height:36px}.module-support{display:flex;flex-wrap:wrap;gap:5px;font-size:10px;margin-top:12px}.module-support>span{background:var(--pale);border-radius:3px;padding:3px 6px}.module-target{background:var(--pale);border:1px solid var(--line);border-radius:8px;padding:18px}.module-target label{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:12px}.module-target select{max-width:100%}.module-target p{font-size:12px}.module-target button{font-size:12px;margin-right:6px}.module-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.module-card{background:white;border:1px solid var(--line);border-left:4px solid var(--green);border-radius:6px;padding:20px;min-width:0}.module-card h2{margin-top:12px;overflow-wrap:anywhere}.module-card .actions button{font-size:12px}.module-card .latin-preview{font:18px/1.7 'Times New Roman',serif;white-space:pre-wrap}.module-text{white-space:pre-wrap;font-size:12px}.module-card details{font-size:12px}.cartridge strong{overflow-wrap:anywhere}
@media(max-width:700px){.plan-controls{align-items:stretch}.plan-controls label{width:100%;flex-wrap:wrap}.plan-controls select{width:100%;max-width:100%}.module-grid{grid-template-columns:1fr}.slot-actions button{min-height:44px}.module-card{padding:16px}.module-target select{width:100%}}
@media print{header,.rail,.toolbar,.edit-tools,.author-editor,#status,.projection-exit{display:none!important}.shell,main,.split{display:block;padding:0}.panel{border:0;padding:0}.reading{font-size:13pt}.cards{display:block}.card{break-inside:avoid}a{color:#111}.task{background:transparent;border:1px solid #aaa}.cycle{font-size:10pt}@page{size:A4;margin:20mm}}

.resource-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0}.resource-tabs [aria-pressed=true]{background:var(--green);color:#fff}.resource-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;align-items:start}.resource-grid .panel{max-height:800px;overflow:auto}.reference-grid,#reference-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.reference-card{background:white;border:1px solid var(--line);padding:16px;margin:10px 0;min-width:0;overflow-wrap:anywhere}.reference-card>a:first-child{font:18px/1.4 Georgia,serif}.reference-card small{font-size:10px;color:var(--soft)}.reference-card button{font-size:12px}.reference-strip{display:flex;align-items:center;flex-wrap:wrap;gap:16px}.reference-strip details{margin:0}#word-result p{white-space:pre-wrap}#resource-pins p{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.projection .reference-strip{display:none}@media(max-width:850px){.resource-grid{grid-template-columns:1fr}.resource-grid .panel{max-height:none}}@media(max-width:700px){.reference-grid,#reference-results{grid-template-columns:1fr}.resource-tabs button{font-size:12px;flex:1}.reference-card{padding:14px}}
/* Verse reader and source witnesses share the course typography. */
.standalone{max-width:1000px;margin:0 auto;padding:28px 24px}.verse-lines{font:22px/1.85 'Times New Roman','Songti SC',serif;margin:24px 0}.verse-row{display:grid;grid-template-columns:54px 1fr;gap:10px;align-items:baseline}.verse-number{font:12px/1.8 system-ui;color:#68746a}.verse-row details{grid-column:2;font:14px/1.6 system-ui}.authored-source small{color:#68746a;font:11px system-ui}.authored-source p{white-space:pre-wrap}.authored-source img{max-width:100%;height:auto}.standalone .translation{white-space:pre-wrap}.standalone input[type=number]{width:100px}@media(max-width:600px){.standalone{padding:20px 16px}.verse-lines{font-size:19px}.verse-row{grid-template-columns:40px 1fr;gap:6px}}
