:root{font-size:16px;--paper:#f7f8f3;--ink:#233b32;--muted:#64736a;--green:#245c4b;--line:#dce3d9;line-height:1.6}
body{min-height:100vh}button,input,select{font:inherit}button:disabled{opacity:.55;cursor:wait}a,button,input,select{outline-offset:4px}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #bc793d}input,select{min-width:0;width:100%;border:1px solid #b9c8bc;background:#fff;color:var(--ink);border-radius:8px;padding:11px 13px}input[type=range]{padding:0;accent-color:var(--green)}label{display:grid;gap:6px;font-size:14px;font-weight:600}h1,h2,h3,p{overflow-wrap:anywhere}h1,h2,h3{font-family:Georgia,serif;font-weight:400;line-height:1.2}h1{font-size:clamp(34px,5vw,48px);letter-spacing:-1.2px;margin:0 0 15px}h2{font-size:27px;margin:0 0 14px}h3{font-size:23px;margin:0 0 10px}p{margin:0 0 18px}a{text-underline-offset:4px}.muted{color:var(--muted)}.small{font-size:13px}.eyebrow{display:block;font-size:11px;font-weight:700;letter-spacing:1.8px;color:var(--green);margin-bottom:13px}.app-header{height:83px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - 1080px)/2));gap:25px;background:#fff}.app-brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-family:Georgia,serif;font-size:23px}.app-mark{display:grid;place-items:center;background:var(--green);color:#fff;width:39px;height:43px;border-radius:11px;font-size:29px}.account{display:flex;align-items:center;gap:20px;font-size:14px}.app-main{max-width:1080px;margin:0 auto;padding:48px 24px 70px}.page-intro{margin-bottom:32px;max-width:720px}.page-intro p{color:var(--muted);font-size:16px}.app-nav{display:flex;gap:26px;border-bottom:1px solid var(--line);margin:0 0 32px}.app-nav a{padding:13px 0;text-decoration:none;color:var(--muted);border-bottom:2px solid transparent}.app-nav a.active{border-color:var(--green);color:var(--green);font-weight:650}.panel{border:1px solid var(--line);background:#fff;border-radius:15px;padding:27px;margin-bottom:20px}.panel p:last-child{margin-bottom:0}.panel-title{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px}.panel-title h2,.panel-title h3{margin:0}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.grid .panel{margin-bottom:0}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.stack{display:grid;gap:18px}.actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:22px}.btn{border:1px solid transparent;border-radius:8px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:10px 18px;gap:8px;background:var(--green);color:#fff;text-decoration:none;font-size:14px;font-weight:600;line-height:1.5}.btn.secondary{background:#fff;border-color:#bacabd;color:var(--green)}.btn.quiet{background:transparent;color:var(--green);padding:8px 3px}.btn.danger{background:#fff;border-color:#dcc4b9;color:#8b3d28}.pill{display:inline-block;padding:4px 10px;border-radius:20px;background:#eaf1e7;color:#34553c;font-size:12px;white-space:nowrap}.pill.draft{background:#f6ecd7;color:#785b22}.empty{padding:35px 24px;text-align:center;border:1px dashed #c8d3c4;border-radius:12px;color:var(--muted)}.metrics{display:flex;gap:28px;flex-wrap:wrap;margin:22px 0}.metric strong{font-size:25px;font-weight:500;display:block;color:var(--ink)}.metric span{font-size:12px;color:var(--muted)}.login-wrap{max-width:440px;margin:7vh auto;padding:0 22px}.login-wrap .app-brand{margin-bottom:42px}.login-wrap h1{font-size:38px}.login-wrap .panel{padding:30px}.login-wrap .btn{width:100%}.login-footer{text-align:center;font-size:13px;color:var(--muted)}.form-message{color:#983c28;font-size:14px;min-height:0;margin:10px 0 0}.form-message:empty{display:none}.notice{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:13px 22px;border-radius:10px;box-shadow:0 8px 30px #182d2526;max-width:calc(100vw - 32px);z-index:30;font-size:14px}.notice[hidden]{display:none}.back{display:inline-block;color:var(--muted);font-size:13px;margin-bottom:25px}.preview-banner{border:1px solid #e3d3aa;background:#fff7e6;padding:12px 16px;border-radius:8px;color:#745a28;font-size:14px;margin-bottom:24px}.lesson-page{max-width:800px;margin:0 auto}.lesson-section>p{font-size:16px}.section-title h2{font-size:28px}.lesson-section{margin-bottom:34px}.lesson-page .small-label{font-size:11px}.lesson-page .card-hint,.lesson-page .test-point label,.lesson-page .endpoint-toggle,.lesson-page .note,.lesson-page .worked-body,.lesson-page .worked-steps li,.lesson-page .sign-card p,.lesson-page .notation-grid p{font-size:14px}.lesson-page .notation-grid h3{font-size:15px}.lesson-page .interactive-card{border-radius:12px}.lesson-page .segmented button{font-size:12px;min-height:35px}.lesson-page .endpoint-controls input{width:100%}.lesson-page .test-point input{width:85px}.practice-select{display:flex;align-items:end;gap:18px;margin-bottom:24px}.practice-select label{flex:1}.exercise-question{font-family:Georgia,serif;font-size:32px;line-height:1.7;margin:20px 0 28px;overflow-wrap:anywhere}.answer-form{max-width:550px}.answer-form .actions{margin-top:15px}.answer-help{font-size:13px;margin:8px 0 0}.feedback{font-size:15px;border-radius:8px;margin:18px 0 0;padding:12px 15px}.feedback:empty{display:none}.feedback.good{background:#e9f3e7;color:#315832}.feedback.bad{background:#fcf0e8;color:#824226}.hint-box,.solution-box{margin-top:20px;padding:20px;border-radius:10px;background:#f1f5eb;border:1px solid #dce6d6}.solution-box li{margin:9px 0}.solution-result{font-size:26px;font-family:Georgia,serif}.method{margin-top:24px}.method summary{cursor:pointer;font-weight:600}.method ol{padding-left:23px;color:var(--muted);font-size:14px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:14px}th{font-weight:600;color:var(--muted);font-size:12px;white-space:nowrap}th,td{padding:14px 12px;border-bottom:1px solid var(--line);vertical-align:top}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}.answer-text{white-space:pre-wrap;overflow-wrap:anywhere;max-width:220px}.attempt-display{font-family:Georgia,serif;font-size:19px;min-width:130px}.status-correct{color:#356437}.status-wrong{color:#9a492e}.student-tools{display:flex;gap:20px;align-items:end;flex-wrap:wrap}.student-tools form{display:flex;align-items:end;gap:12px;flex:1}.student-tools label{flex:1}.status-text{font-size:13px;color:var(--muted)}.unit-card{position:relative}.unit-index{font-family:Georgia,serif;color:#80937e;font-size:18px}.unit-card h2{margin-top:15px}.unit-card .description{min-height:52px}.unit-card .actions{justify-content:space-between}.assignment-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 0;border-bottom:1px solid var(--line)}.assignment-row:last-child{border:0}.auth-note{margin-top:22px;font-size:12px;color:var(--muted)}.lesson-page .numberline{width:100%;height:auto}.error-page{max-width:600px;margin:60px auto}.app-footer{color:var(--muted);text-align:center;font-size:12px;padding:20px}
@media(max-width:700px){.app-header{height:auto;min-height:75px;padding:15px 20px;gap:15px}.account{gap:10px}.account>span{display:none}.app-main{padding:30px 20px 50px}.grid,.form-grid{grid-template-columns:1fr}.panel{padding:22px}.app-nav{gap:22px}.student-tools form{flex-wrap:wrap}.student-tools label{flex-basis:100%}.practice-select{align-items:stretch;flex-direction:column}.lesson-page .test-point{gap:12px}.lesson-page .section-title h2{font-size:25px}.lesson-page .endpoint-controls{gap:20px}.login-wrap{margin-top:5vh}.login-wrap .panel{padding:24px}.lesson-page .notation-grid{grid-template-columns:1fr;gap:18px}.lesson-page .notation-grid article{border:0}.lesson-page .notation-grid p{font-size:14px}.assignment-row{align-items:flex-start}.panel-title{align-items:flex-start}.exercise-question{font-size:28px}}
@media print{.app-header,.app-nav,.back,.preview-banner,.app-footer,.actions,.practice-select,.notice{display:none!important}.app-main{padding:0}.panel{border:0}body{background:#fff}}

.grow{flex:1}.list-heading{margin:34px 0 22px}#assign{align-items:end}#assign>label:not(.grow){max-width:100px}.brand-dot{color:#719761}
