:root{--paper:#f7f5ef;--card:#fffefa;--ink:#182b37;--muted:#61716f;--line:#d9dfd6;--green:#28594f;--copper:#97592f;--wash:#e9eee5;--error:#923525;--radius:17px;font-family:"Avenir Next",Avenir,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper);font-size:16px}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:radial-gradient(ellipse at 8% 4%,#e7eddf90,transparent 44%),var(--paper);min-height:100dvh}a{color:var(--green)}button,input,textarea{font:inherit}button,a.primary{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid #b2763b;outline-offset:4px}h1,h2,h3,p{margin-top:0}h1,h2{font-family:Georgia,"Palatino Linotype",serif;font-weight:500;letter-spacing:-.04em}h1{font-size:clamp(2.1rem,3.8vw,3.5rem);line-height:1.1}h2{font-size:1.8rem;line-height:1.15;margin-bottom:14px}h3{font-size:1.08rem}p{line-height:1.65}hr{border:0;border-top:1px solid var(--line);margin:28px 0}.muted,.small,.optional{color:var(--muted)}.small{font-size:.83rem;line-height:1.65}.optional{font-weight:400;font-size:.8rem}.eyebrow{font-size:.67rem;font-weight:750;letter-spacing:.17em;color:var(--copper);margin-bottom:12px}.masthead{display:flex;justify-content:space-between;align-items:center;padding:24px clamp(20px,4vw,64px);border-bottom:1px solid var(--line);background:var(--paper);gap:20px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink);font-size:1.5rem;font-weight:800;letter-spacing:-.04em}.brand svg{width:29px;height:34px;fill:none;stroke:var(--green);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.brand-sub{display:block;font-size:.58rem;letter-spacing:.16em;font-weight:600;line-height:1.6}.header-actions{display:flex;align-items:center;gap:16px}.pill{border:1px solid var(--line);border-radius:40px;padding:8px 12px;font-size:.64rem;letter-spacing:.1em;color:var(--muted);white-space:nowrap}.primary,.quiet{display:inline-flex;justify-content:center;align-items:center;border-radius:9px;min-height:46px;padding:11px 18px;font-size:.87rem;font-weight:650;text-decoration:none;border:1px solid var(--line);background:var(--card);color:var(--ink);line-height:1.35}.primary{background:var(--green);border-color:var(--green);color:#fff}.quiet:hover{background:var(--wash)}.primary:hover{background:#1e453d}.login{max-width:1300px;margin:0 auto;padding:clamp(48px,7vh,96px) clamp(24px,4vw,56px) 80px;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(340px,1fr);gap:clamp(32px,5vw,72px);align-items:center}.intro h1{font-size:clamp(3rem,5.7vw,5.3rem);margin-bottom:25px}.lede{max-width:460px;font-size:1.1rem;color:var(--muted)}.principles{display:flex;flex-direction:column;gap:16px;margin-top:35px;font-size:.88rem}.principles span::before{content:"";display:inline-block;width:7px;height:7px;border:1.5px solid var(--green);border-radius:50%;margin-right:13px}.login-card{border:1px solid var(--line);border-radius:var(--radius);padding:35px;background:var(--card);box-shadow:0 20px 60px #19281d08}.login-card h2{font-size:2.1rem}.login-card p{color:var(--muted);font-size:.9rem}#login-state{margin-top:16px}.text-link{font-weight:650;text-underline-offset:4px}.notice{position:sticky;top:0;z-index:10;margin:0;padding:13px 5vw;background:#e2ebe1;color:var(--green);border-bottom:1px solid var(--line);font-size:.9rem}.notice.error{background:#fff0e8;color:var(--error)}.classroom{display:grid;grid-template-columns:265px minmax(0,1fr);min-height:calc(100dvh - 165px)}.sidebar{padding:38px 22px;border-right:1px solid var(--line);background:#eef0e780}.sidebar h2{font-size:1.45rem}.sidebar-note{font-size:.74rem;color:var(--muted);margin:35px 10px}.class-list{display:grid;gap:9px;margin:25px 0}.class-list button{border:1px solid transparent;text-align:left;display:grid;gap:6px;border-radius:10px;padding:15px;background:transparent;min-height:66px;line-height:1.4;color:var(--ink)}.class-list button small{font-size:.75rem;color:var(--muted)}.class-list button[aria-current=true]{border-color:#a6bcae;background:var(--card);box-shadow:3px 0 var(--green) inset}.class-list button:hover{background:var(--card)}#workspace{padding:38px clamp(22px,4vw,60px) 70px;min-width:0}.empty{padding:10vh 0;max-width:650px}.workspace-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.workspace-heading h1{font-size:2.6rem;margin-bottom:20px}.workspace-heading .quiet{flex-shrink:0}.tabs{display:flex;gap:25px;border-bottom:1px solid var(--line);margin-bottom:35px}.tabs button{border:0;border-bottom:3px solid transparent;background:transparent;color:var(--muted);min-height:52px;font-weight:600;font-size:.9rem;padding:8px 2px}.tabs button[aria-selected=true]{border-color:var(--green);color:var(--green)}.section-heading{display:flex;justify-content:space-between;gap:20px;align-items:start;margin-bottom:22px}.section-heading h2{font-size:1.7rem;margin-bottom:8px}.section-heading p:not(.eyebrow){color:var(--muted);font-size:.9rem;margin-bottom:0;max-width:640px}.section-heading>.primary{flex-shrink:0}fieldset{border:0;padding:0;margin:0 0 28px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}legend{position:absolute;clip-path:inset(50%);width:1px;height:1px;overflow:hidden}.mode{display:flex;align-items:start;gap:12px;border:1px solid var(--line);border-radius:12px;padding:19px;min-height:112px;background:var(--card);cursor:pointer}.mode:has(input:checked){border-color:var(--green);background:#edf2e9;box-shadow:0 0 0 1px var(--green)}.mode input{accent-color:var(--green);width:18px;height:18px;flex-shrink:0;margin:2px 0}.mode strong{display:block;font-size:.92rem;margin-bottom:8px}.mode small{display:block;color:var(--muted);font-size:.79rem;line-height:1.6}.field{display:grid;gap:9px;font-size:.9rem;font-weight:600;margin:20px 0 9px}.field textarea,.field input{width:100%;background:var(--card);border:1px solid var(--line);color:var(--ink);border-radius:10px;padding:14px;line-height:1.5;font-size:.9rem;font-weight:400}.field textarea{resize:vertical;min-height:105px}.field textarea:disabled{background:var(--wash)}.save-row{display:flex;align-items:center;gap:18px;margin:22px 0;flex-wrap:wrap}.save-row .muted{font-size:.8rem}.policy-card{border:1px solid var(--line);background:#eaf0e780;border-radius:14px;display:grid;grid-template-columns:1.4fr 1fr;gap:20px;padding:25px;margin-top:35px}.policy-card p:not(.eyebrow){font-size:.82rem;color:var(--muted);margin-bottom:0}.constraints{display:flex;flex-direction:column;gap:10px;justify-content:center;font-size:.78rem}.constraint{padding-left:15px;border-left:2px solid #8aa58f;line-height:1.6}.callout{background:#f0eadc80;border:1px solid #e4d9c6;border-radius:12px;padding:20px;font-size:.85rem;color:#6d5a3f;margin:22px 0;line-height:1.6}.callout p{margin:8px 0 0}.assignment-form{border:1px solid var(--line);border-radius:12px;padding:22px;background:var(--card)}.assignment-row{display:flex;justify-content:space-between;gap:18px;padding:22px 0;border-bottom:1px solid var(--line);align-items:center}.assignment-row h3{margin-bottom:6px}.assignment-row p{font-size:.78rem;color:var(--muted);margin:0}.assignment-actions{display:flex;gap:10px;flex-shrink:0;align-items:center}.status{font-size:.65rem;padding:5px 9px;border:1px solid var(--line);border-radius:30px;text-transform:uppercase;letter-spacing:.07em}.review-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);padding:32px;display:grid;grid-template-columns:140px minmax(0,1fr);gap:35px;align-items:center}.review-card p{font-size:.88rem;color:var(--muted)}.review-card .small{margin:20px 0 0;font-size:.76rem}.file-illustration{display:grid;gap:15px;transform:rotate(-5deg);padding:30px 15px;border:1px solid #bfcbbc;border-radius:8px;background:linear-gradient(#f3f5ed,#e0e9df);box-shadow:9px 9px 0 #e7e6dc;min-height:160px;align-content:center;text-align:center}.file-illustration span:first-child{font-family:Georgia,serif;font-size:1.65rem}.file-illustration span:last-child{font-size:.67rem}.footer{border-top:1px solid var(--line);padding:22px 4vw;display:flex;justify-content:space-between;gap:20px;font-size:.61rem;letter-spacing:.12em;color:var(--muted)}.footer span{letter-spacing:0;font-size:.75rem}.skip{position:absolute;left:15px;top:-100px;background:var(--card);padding:15px;z-index:20}.skip:focus{top:10px}@media(min-width:1500px){#class-detail{max-width:1120px;margin:auto}}@media(max-width:950px){.classroom{grid-template-columns:210px 1fr}.sidebar{padding:30px 15px}.policy-card{grid-template-columns:1fr}.review-card{grid-template-columns:1fr}.file-illustration{display:none}.login{gap:35px}.login-card{padding:25px}.assignment-row{align-items:start;flex-direction:column}.section-heading{flex-wrap:wrap}}@media(max-width:640px){.masthead{padding:18px 20px}.pill{font-size:.56rem;padding:7px}.login{grid-template-columns:1fr;padding:38px 22px 55px}.intro h1{font-size:3.25rem}.principles{display:none}.login-card{padding:26px}.classroom{display:block}.sidebar{border:0;border-bottom:1px solid var(--line);padding:20px}.sidebar h2,.sidebar-note{display:none}.class-list{display:flex;overflow-x:auto;gap:10px;margin:0}.class-list button{min-width:180px;max-width:210px}.sidebar .eyebrow{margin-bottom:8px}#workspace{padding:28px 20px 50px}.workspace-heading h1{font-size:2.1rem}.workspace-heading{align-items:start}.workspace-heading .quiet{padding:9px;font-size:.75rem}.tabs{gap:20px}.tabs button{font-size:.82rem}fieldset{grid-template-columns:1fr}.mode{min-height:0;padding:17px}.policy-card{padding:20px}.review-card{padding:22px}.footer{padding:20px;flex-direction:column;gap:9px}.header-actions{gap:8px}.header-actions .quiet{padding:8px 10px}}@media(prefers-reduced-motion:no-preference){.login-card,#class-detail{animation:arrive .3s ease-out}@keyframes arrive{from{opacity:.3;transform:translateY(7px)}to{opacity:1;transform:none}}}

/* Bounded login geometry keeps the school sign-in readable on wide screens. */
.login > *{min-width:0}.intro h1{font-size:clamp(2.75rem,4.8vw,4.5rem)}#google-signin{width:100%;min-height:40px;max-width:400px}.login-card{min-width:0}
@media(max-width:640px){.login{grid-template-columns:minmax(0,1fr);gap:32px}.login-card{padding:24px}.intro h1{font-size:clamp(2.5rem,10vw,3.5rem)}}
