:root{--ink:#0d2236;--ink-2:#20374d;--muted:#697386;--line:#e5e7eb;--paper:#f7f7f5;--white:#fff;--gold:#a78345;--gold-soft:#f1eadf;--green:#23724a;--red:#a13a3a;--radius:14px;--shadow:0 10px 35px rgba(13,34,54,.06)}
*{box-sizing:border-box}html{font-family:Montserrat,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper);scroll-behavior:smooth}body{margin:0;min-height:100vh;background:var(--paper);font-size:14px;line-height:1.55}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3,h4,p{margin-top:0}h1{font-size:clamp(1.9rem,3vw,3rem);line-height:1.1;letter-spacing:-.035em;margin-bottom:.7rem}h2{font-size:1.25rem;line-height:1.25}h3{font-size:1rem}.muted{color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:.15em;font-size:.72rem;font-weight:700;color:var(--gold);margin-bottom:.65rem}.fine-print{font-size:.75rem;color:var(--muted)}.app-shell{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:250px;background:var(--ink);color:#fff;padding:28px 18px;display:flex;flex-direction:column;z-index:40}.brand-mark{display:flex;align-items:baseline;gap:8px;font-size:1.05rem;font-weight:700;padding:0 8px 26px}.brand-kicker{display:inline-flex;align-items:center;justify-content:center;background:var(--gold);color:#fff;border-radius:5px;padding:3px 6px;font-size:.68rem;letter-spacing:.12em}.side-nav{display:grid;gap:4px}.side-nav a{padding:11px 12px;border-radius:9px;color:#dbe2e8;font-weight:500;transition:.18s ease}.side-nav a:hover,.side-nav a.active{background:rgba(255,255,255,.1);color:#fff}.nav-section-label{font-size:.65rem;letter-spacing:.14em;text-transform:uppercase;color:#8394a4;margin:24px 12px 8px}.sidebar-footer{margin-top:auto;border-top:1px solid rgba(255,255,255,.12);padding-top:18px}.user-chip{display:flex;gap:10px;align-items:center;padding:8px;border-radius:10px}.user-chip:hover{background:rgba(255,255,255,.07)}.user-chip span:last-child{min-width:0}.user-chip b,.user-chip small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-chip small{font-size:.68rem;color:#9fb0bf}.avatar{width:35px;height:35px;border-radius:50%;background:var(--gold);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;flex:none}.avatar.small{width:31px;height:31px}.link-button{border:0;background:none;color:#9fb0bf;padding:8px;font-size:.78rem}.link-button:hover{color:#fff}.main-area{grid-column:2;min-width:0}.page-wrap{max-width:1380px;margin:0 auto;padding:36px 42px 90px}.mobile-header,.bottom-nav,.menu-scrim{display:none}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:28px}.page-head p{max-width:760px;margin-bottom:0}.head-actions{display:flex;gap:10px;flex-wrap:wrap}.card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:none}.card.soft{background:#fbfbfa}.card.compact{padding:15px}.card-title{font-weight:700;margin-bottom:5px}.card:hover.link-card{border-color:#c9cdd2}.grid{display:grid;gap:16px}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.stat-card .label{font-size:.74rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.stat-card .value{font-size:1.8rem;font-weight:700;letter-spacing:-.04em;margin-top:5px}.section{margin-top:28px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px}.section-head h2{margin:0}.text-link{color:var(--gold);font-weight:600}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);background:#fff;border-radius:9px;padding:10px 15px;font-weight:600;font-size:.82rem;min-height:42px;transition:.15s ease}.btn:hover{border-color:#aeb5bd;transform:translateY(-1px)}.btn.primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn.gold{background:var(--gold);border-color:var(--gold);color:#fff}.btn.ghost{background:transparent}.btn.danger{background:#fff5f5;border-color:#efc9c9;color:var(--red)}.btn.small{min-height:34px;padding:7px 10px;font-size:.74rem}.btn.wide{width:100%}.pill{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;background:#eef1f3;color:#4c5966;font-size:.68rem;font-weight:600}.pill.gold{background:var(--gold-soft);color:#765828}.pill.green{background:#e6f4ec;color:var(--green)}.pill.red{background:#f9e8e8;color:var(--red)}.progress{height:7px;background:#eceeec;border-radius:999px;overflow:hidden}.progress>span{display:block;height:100%;background:var(--ink);border-radius:inherit}.progress.gold>span{background:var(--gold)}.metric-row{display:flex;justify-content:space-between;gap:10px;align-items:center;font-size:.77rem;margin-bottom:7px}.course-card{display:flex;flex-direction:column;min-height:190px}.course-card .course-code{font-size:.7rem;letter-spacing:.1em;color:var(--gold);font-weight:700}.course-card h3{font-size:1.08rem;margin:8px 0}.course-card p{color:var(--muted);font-size:.78rem;flex:1}.course-card .course-meta{display:flex;justify-content:space-between;color:var(--muted);font-size:.7rem;margin-top:16px}.topic-list{display:grid;gap:10px}.topic-row{background:#fff;border:1px solid var(--line);border-radius:12px;padding:15px 16px;display:grid;grid-template-columns:minmax(0,1fr) 130px 120px;gap:16px;align-items:center}.topic-row:hover{border-color:#bcc2c8}.topic-row h3{margin:0 0 4px}.topic-row p{margin:0;color:var(--muted);font-size:.75rem}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px;background:#aab2ba}.status-dot.mastered{background:var(--green)}.status-dot.weak,.status-dot.due_review{background:var(--red)}.status-dot.improving,.status-dot.reading{background:var(--gold)}.table-wrap{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:var(--radius)}table{border-collapse:collapse;width:100%;min-width:680px}th,td{text-align:left;padding:13px 15px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:.68rem;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);font-weight:700;background:#fafaf9}td{font-size:.78rem}tr:last-child td{border-bottom:0}.alert{border-radius:10px;padding:12px 14px;margin-bottom:18px;font-size:.8rem;border:1px solid}.alert.success{background:#edf8f2;border-color:#b8dfc9;color:#175f3c}.alert.error{background:#fff3f3;border-color:#edc6c6;color:#8f2e2e}.form-stack{display:grid;gap:15px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}label{display:grid;gap:7px;font-size:.73rem;font-weight:600;color:#435061}input,textarea,select{width:100%;border:1px solid #d9dde1;border-radius:9px;background:#fff;padding:11px 12px;outline:none;transition:.15s ease}input:focus,textarea:focus,select:focus{border-color:var(--ink);box-shadow:0 0 0 3px rgba(13,34,54,.08)}textarea{min-height:130px;resize:vertical}.checkbox{display:flex;align-items:center;gap:9px}.checkbox input{width:auto}.auth-body,.simple-body{display:flex;align-items:center;justify-content:center;padding:28px;background:var(--paper)}.auth-shell{width:min(980px,100%);display:grid;grid-template-columns:1fr 1fr;background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:var(--shadow)}.auth-brand{background:var(--ink);color:#fff;padding:55px;display:flex;flex-direction:column;justify-content:flex-end;min-height:610px}.auth-brand strong{font-size:2.2rem;letter-spacing:-.04em;margin:14px 0}.auth-brand p{color:#b7c3ce;max-width:360px}.auth-card{padding:55px}.auth-card h1{font-size:2rem}.auth-switch{font-size:.78rem;color:var(--muted);margin-top:18px}.auth-switch a{color:var(--gold);font-weight:600}.simple-card{width:min(660px,100%);background:#fff;border:1px solid var(--line);border-radius:18px;padding:40px;box-shadow:var(--shadow)}.reader-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:22px;align-items:start}.reader{background:#fff;border:1px solid var(--line);border-radius:16px;padding:clamp(22px,4vw,52px)}.reader .source-note{border-left:3px solid var(--gold);padding:10px 14px;background:#faf7f0;margin-bottom:28px;color:#6f5a35;font-size:.76rem}.reader-body{font-family:Georgia,"Times New Roman",serif;font-size:1.03rem;line-height:1.82;color:#1c2935}.reader-body p{margin-bottom:1.25rem}.reader-body strong{font-family:Montserrat,sans-serif}.reader-actions{position:sticky;top:22px;display:grid;gap:14px}.reader-nav{display:flex;justify-content:space-between;gap:10px;margin-top:26px}.question-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:clamp(22px,4vw,40px)}.question-meta{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}.question-text{font-size:clamp(1.2rem,2.2vw,1.65rem);line-height:1.35;letter-spacing:-.025em;margin-bottom:24px}.answer-area{min-height:180px}.quiz-shell{max-width:900px;margin:0 auto}.quiz-progress{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-size:.75rem;color:var(--muted)}.voice-panel{border:1px dashed #bfc6cc;border-radius:12px;padding:14px;margin:13px 0;background:#fbfbfa}.voice-controls{display:flex;gap:9px;flex-wrap:wrap;align-items:center}.voice-status{font-size:.73rem;color:var(--muted)}.voice-meter{height:6px;background:#e7e9ea;border-radius:999px;overflow:hidden;flex:1;min-width:100px}.voice-meter span{display:block;height:100%;width:0;background:var(--gold);transition:width .1s linear}.result-score{display:grid;grid-template-columns:180px minmax(0,1fr);gap:24px;align-items:center}.score-ring{width:165px;height:165px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column;background:conic-gradient(var(--ink) calc(var(--score)*1%),#e8eaeb 0);position:relative}.score-ring:before{content:"";position:absolute;inset:13px;background:#fff;border-radius:50%}.score-ring strong,.score-ring span{position:relative}.score-ring strong{font-size:2rem}.score-ring span{font-size:.68rem;color:var(--muted)}.review-item{border:1px solid var(--line);border-radius:12px;background:#fff;padding:18px;margin-top:12px}.review-item summary{cursor:pointer;font-weight:600}.review-answer{border-left:3px solid var(--line);padding-left:14px;margin-top:14px}.keyword-list{display:flex;gap:6px;flex-wrap:wrap}.mock-stage{max-width:980px;margin:0 auto}.mock-header{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}.timer{font-variant-numeric:tabular-nums;font-size:1.2rem;font-weight:700}.timer.warning{color:var(--red)}.panel-label{font-size:.72rem;color:var(--gold);font-weight:700;text-transform:uppercase;letter-spacing:.1em}.mock-question{min-height:520px;display:flex;flex-direction:column}.mock-question .answer-area{flex:1}.mock-footer{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:18px}.constitution-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.article-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:17px;min-height:135px}.article-card:hover{border-color:#aeb5bd}.article-number{color:var(--gold);font-weight:700;font-size:.73rem}.article-body{font-family:Georgia,"Times New Roman",serif;font-size:1.02rem;line-height:1.8;white-space:pre-wrap}.rubric-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.rubric-item{border:1px solid var(--line);border-radius:10px;padding:13px;background:#fff}.rubric-item strong{font-size:1.3rem;display:block}.workflow-board{display:grid;grid-template-columns:repeat(4,minmax(220px,1fr));gap:14px;overflow-x:auto}.workflow-column{background:#f0f1ef;border-radius:12px;padding:12px;min-height:220px}.workflow-column h3{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.workflow-card{background:#fff;border:1px solid var(--line);border-radius:9px;padding:11px;margin-top:8px;font-size:.74rem}.admin-subnav{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}.admin-subnav a{border:1px solid var(--line);border-radius:999px;padding:7px 11px;background:#fff;font-size:.72rem}.admin-subnav a.active{background:var(--ink);color:#fff;border-color:var(--ink)}.search-row{display:flex;gap:10px;flex-wrap:wrap}.search-row input,.search-row select{width:auto;min-width:180px;flex:1}.details-box{border:1px solid var(--line);border-radius:10px;padding:12px;background:#fafafa}.details-box summary{cursor:pointer;font-weight:600}.bottom-spacer{height:50px}
@media(max-width:1080px){.grid.four{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three,.constitution-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.reader-layout{grid-template-columns:1fr}.reader-actions{position:static;grid-template-columns:repeat(2,minmax(0,1fr))}.rubric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:820px){body{font-size:13px}.app-shell{display:block}.sidebar{transform:translateX(-100%);transition:transform .2s ease;width:min(82vw,300px)}.sidebar.open{transform:translateX(0)}.menu-scrim{display:block;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:35;opacity:0;pointer-events:none;transition:.2s}.menu-scrim.open{opacity:1;pointer-events:auto}.main-area{min-height:100vh}.mobile-header{position:sticky;top:0;z-index:25;height:58px;background:rgba(247,247,245,.95);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--line)}.menu-button{border:0;background:none;font-size:1.2rem}.mobile-brand{font-weight:700}.page-wrap{padding:22px 16px 95px}.bottom-nav{position:fixed;display:grid;grid-template-columns:repeat(5,1fr);inset:auto 0 0 0;background:#fff;border-top:1px solid var(--line);z-index:30;padding-bottom:env(safe-area-inset-bottom)}.bottom-nav a{text-align:center;padding:12px 4px 10px;color:var(--muted);font-size:.68rem;font-weight:600}.bottom-nav a.active{color:var(--ink);box-shadow:inset 0 2px 0 var(--gold)}.page-head{align-items:flex-start;flex-direction:column}.head-actions{width:100%}.head-actions .btn{flex:1}.topic-row{grid-template-columns:1fr}.topic-row>div:nth-child(2),.topic-row>div:nth-child(3){width:100%}.grid.three,.grid.two{grid-template-columns:1fr}.auth-shell{grid-template-columns:1fr}.auth-brand{display:none}.auth-card{padding:32px 24px}.reader{padding:22px}.reader-actions{grid-template-columns:1fr}.result-score{grid-template-columns:1fr;justify-items:center;text-align:center}.rubric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.mock-question{min-height:unset}.mock-footer{flex-direction:column;align-items:stretch}.mock-footer .btn{width:100%}}
@media(max-width:560px){h1{font-size:1.8rem}.grid.four,.grid.three,.constitution-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.page-wrap{padding-left:13px;padding-right:13px}.card{padding:16px}.question-card{padding:18px}.rubric-grid{grid-template-columns:1fr}.reader-nav{flex-direction:column}.reader-nav .btn{width:100%}.simple-card{padding:26px 20px}.auth-body,.simple-body{padding:14px}.search-row{display:grid}.search-row input,.search-row select{width:100%}}
@media print{.sidebar,.mobile-header,.bottom-nav,.head-actions,.reader-actions,.alert{display:none!important}.main-area{grid-column:1}.page-wrap{max-width:none;padding:0}.card,.reader,.question-card{box-shadow:none;border-color:#bbb}body{background:#fff}}
.modal-backdrop{position:fixed;inset:0;background:rgba(13,34,54,.66);z-index:80;display:flex;align-items:center;justify-content:center;padding:20px}.modal-backdrop[hidden]{display:none}.modal-card{width:min(620px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:16px;padding:28px;box-shadow:0 30px 90px rgba(0,0,0,.28)}fieldset{border:1px solid var(--line);border-radius:10px;padding:14px}legend{font-weight:700;padding:0 6px}.modal-card .checkbox{font-weight:500;margin:8px 0}.modal-card .checkbox input{width:auto}
.legal-notice{border:1px solid #d8c7a8;background:#fbf7ef;border-radius:12px;padding:14px 16px;color:#6c5633;margin:18px 0}.legal-event-card{display:flex;flex-direction:column;min-height:280px}.event-card-top,.event-meta,.card-actions{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}.event-meta{margin-top:auto;padding-top:18px;border-top:1px solid var(--line);font-size:.7rem;color:var(--muted)}.status-dot{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.status-dot:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--green);margin-right:6px}.status-dot.pending:before{background:var(--gold)}.event-hero{display:grid;grid-template-columns:150px 1fr;gap:24px;align-items:center}.event-score{font-size:2.8rem;font-weight:700}.current-position{border-top:3px solid var(--gold)}.warning-line{margin-top:16px;padding-top:12px;border-top:1px solid var(--line);font-size:.75rem;color:var(--red)}.article-chip-list{display:flex;flex-wrap:wrap;gap:8px}.article-chip{padding:9px 12px;border:1px solid var(--line);border-radius:999px;background:#fff;font-size:.75rem;font-weight:600}.clean-list{margin:0;padding-left:18px;line-height:1.9}.argument-card{border-top:3px solid var(--ink)}.timeline{border-left:2px solid #d8c7a8;margin-left:10px;padding-left:24px}.timeline-item{position:relative;display:grid;grid-template-columns:130px 1fr;gap:20px;padding:0 0 25px}.timeline-item:before{content:"";position:absolute;left:-31px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--gold);border:3px solid var(--paper)}.timeline-date{font-size:.72rem;font-weight:700;color:var(--gold)}.timeline-item h3{margin:0 0 5px}.source-list>a{display:flex;justify-content:space-between;gap:18px;padding:14px 0;border-bottom:1px solid var(--line)}.source-list>a:last-child{border-bottom:0}.source-list small{display:block;margin-top:4px;color:var(--muted)}.question-preview-list>div{display:flex;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}.question-preview-list>div:last-child{border-bottom:0}.question-preview-list small{display:block;margin-top:5px}.number-badge{flex:0 0 30px;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--gold-soft);color:#6f5732;font-weight:700;font-size:.7rem}.weekly-grid{display:grid;gap:14px}.weekly-event{display:grid;grid-template-columns:65px 1fr;gap:16px}.weekly-number{font-size:2rem;font-weight:700;color:#c7b38e}.centre-card{min-height:270px;display:flex;flex-direction:column}.centre-card .course-meta{margin-top:auto}.legal-course-banner{display:flex;justify-content:space-between;gap:24px;align-items:end}.project-layout{align-items:start}.project-card{margin-bottom:12px}.project-card .card-actions{margin-top:15px;justify-content:flex-start}.checkbox-row{display:flex;gap:20px;flex-wrap:wrap}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:.68rem;text-transform:uppercase;color:var(--muted);letter-spacing:.06em}
@media(max-width:820px){.event-hero,.timeline-item,.weekly-event{grid-template-columns:1fr}.legal-course-banner{align-items:flex-start;flex-direction:column}.timeline-date{margin-bottom:-10px}}
.button-link{border:0;background:transparent;padding:8px 0 0;text-align:left;font-size:.76rem}.button-link:hover{text-decoration:underline}.event-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 0;border-bottom:1px solid var(--line)}.event-row:last-child{border-bottom:0}.event-row:hover b{color:var(--gold)}
.admin-child-row,.admin-source-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:13px 0;border-bottom:1px solid var(--line)}.admin-child-row:last-child,.admin-source-row:last-child{border-bottom:0}.admin-child-row p{margin:5px 0 0}.admin-child-block{padding:15px 0;border-bottom:1px solid var(--line)}.admin-child-block:last-child{border-bottom:0}.admin-source-row small{display:block;margin-top:5px;color:var(--muted)}
.event-link-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 18px}.event-link-grid .checkbox{align-items:flex-start;border:1px solid var(--line);border-radius:9px;padding:10px;background:#fff}@media(max-width:820px){.event-link-grid{grid-template-columns:1fr}}
