@import url('https://fonts.googleapis.com/css2?family=Archivo+Black&family=DM+Sans:wght@400;600;700&display=swap');
:root{--cream:#f7edcf;--orange:#d96c27;--rust:#9e3f24;--mustard:#e0aa2b;--brown:#4b2c20;--olive:#6f713d;--paper:#fff9e8;--ink:#2e231d}
*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font-family:'DM Sans',sans-serif;background-image:radial-gradient(#d9c9a2 1px,transparent 1px);background-size:18px 18px}.topbar{background:var(--brown);color:#fff;display:flex;justify-content:space-between;align-items:center;padding:18px 5vw;box-shadow:0 5px 0 var(--orange)}.brand{font:22px 'Archivo Black';letter-spacing:2px;color:var(--mustard);text-decoration:none}.topbar nav a{color:#fff;text-decoration:none;margin-left:18px;font-weight:700}.page{width:min(1180px,92vw);margin:42px auto;min-height:75vh}footer{text-align:center;padding:24px;color:#765c4d;font-size:13px}.hero{display:grid;grid-template-columns:1.4fr .7fr;gap:40px;align-items:center;min-height:65vh}.hero h1,.class-cover h1,.class-header h1{font:clamp(42px,7vw,88px)/.95 'Archivo Black';color:var(--rust);margin:.15em 0}.hero p{font-size:20px;max-width:720px}.eyebrow{text-transform:uppercase;letter-spacing:3px;font-weight:800;color:var(--olive)}.sunburst{aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:repeating-conic-gradient(var(--mustard) 0 12deg,var(--orange) 12deg 24deg);border:14px solid var(--brown);box-shadow:12px 12px 0 #b69159}.sunburst span{background:var(--cream);border:6px solid var(--brown);border-radius:50%;width:45%;aspect-ratio:1;display:grid;place-items:center;font:38px 'Archivo Black';color:var(--rust)}.button{display:inline-block;border:0;background:var(--orange);color:white;padding:12px 18px;border-radius:4px;text-decoration:none;font-weight:800;box-shadow:4px 4px 0 var(--brown);cursor:pointer}.button.secondary{background:var(--olive)}.button.small{padding:8px 12px}.section-head,.class-header{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.cards,.people-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px}.card,.form-card,.proposal,.person,.class-cover{background:var(--paper);border:3px solid var(--brown);box-shadow:7px 7px 0 #c7a96c;padding:22px}.class-card{text-decoration:none;color:inherit;transition:.15s}.class-card:hover{transform:translate(-2px,-2px);box-shadow:10px 10px 0 var(--mustard)}.year{font:32px 'Archivo Black';color:var(--orange)}.form-card{max-width:620px;margin:auto}.form-card.wide{max-width:900px}label{display:block;font-weight:700;margin:12px 0}input,textarea{width:100%;padding:12px;margin-top:6px;border:2px solid var(--brown);background:#fffdf5;font:inherit}textarea{min-height:100px}.grid-form{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.grid-form .full{grid-column:1/-1}.flash{padding:12px 16px;margin-bottom:18px;border:2px solid var(--brown);background:var(--mustard)}.flash.error{background:#f3b6a4}.flash.success{background:#c7d39b}.privacy-note{padding:14px;background:#f1dfaa;border-left:8px solid var(--olive);margin:20px 0}.person{text-decoration:none;color:inherit;text-align:center}.person img,.photo-placeholder{width:100%;aspect-ratio:1;object-fit:cover;border:8px solid white;outline:2px solid var(--brown);filter:sepia(.15)}.photo-placeholder{display:grid;place-items:center;background:#d6c39b;font:64px 'Archivo Black';color:#8d6d4f}.person h3{margin-bottom:4px}.person p,.person small{margin:3px 0;color:#73594b}.proposal{display:flex;justify-content:space-between;align-items:center;margin:16px 0}.votes{display:flex;gap:8px}.vote{border:2px solid var(--brown);background:var(--cream);padding:8px 10px;cursor:pointer}.vote.active{background:var(--mustard);font-weight:800}.invite-link{margin-top:24px;padding:16px;background:#f1dfaa}.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:30px}table{width:100%;border-collapse:collapse;background:var(--paper)}th,td{padding:10px;border:1px solid #aa8b63;text-align:left}th{background:var(--mustard)}@media(max-width:760px){.hero,.admin-grid{grid-template-columns:1fr}.sunburst{max-width:300px}.section-head,.class-header,.proposal{flex-direction:column}.grid-form{grid-template-columns:1fr}.topbar{align-items:flex-start;gap:10px;flex-direction:column}.topbar nav a{margin:0 12px 0 0}}

/* V0.2.0 */
.muted{color:#765c4d;font-size:.92rem}.mustard{background:var(--mustard);color:var(--brown)}
.class-title-wrap{display:flex;gap:22px;align-items:center}.class-hero-image{width:180px;height:125px;object-fit:cover;border:7px solid white;outline:3px solid var(--brown);box-shadow:6px 6px 0 #c7a96c;filter:sepia(.12)}
.class-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.class-edit-image{width:min(100%,560px);max-height:320px;object-fit:cover;border:8px solid white;outline:3px solid var(--brown);margin:10px 0 22px}.form-actions{margin-top:14px}
.people-grid.compact{grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:14px}.compact-person{padding:12px;text-align:left}.compact-person img,.compact-person .photo-placeholder{width:100%;height:118px;aspect-ratio:auto;border-width:5px}.compact-person .photo-placeholder{font-size:42px}.person-body{padding-top:9px}.compact-person h3{font-size:17px;margin:7px 0 2px}.compact-person p,.compact-person small{font-size:12px;display:block;overflow-wrap:anywhere}.status-badge{display:inline-block;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.5px;padding:4px 6px;border:1px solid var(--brown);margin-bottom:2px}.status-badge.registered{background:#c7d39b}.status-badge.recorded{background:#f1dfaa}.audit-info{margin-top:8px;padding-top:7px;border-top:1px dashed #aa8b63;font-size:10px;line-height:1.35;color:#765c4d}
.checkline{display:flex;gap:10px;align-items:flex-start;background:#f1dfaa;padding:12px;border:2px solid #aa8b63}.checkline input{width:auto;margin:4px 0 0;transform:scale(1.2);flex:0 0 auto}.checkline span{font-weight:600;line-height:1.35}.legal h1{font:clamp(34px,5vw,56px)/1 'Archivo Black';color:var(--rust)}.legal h2{margin-top:28px;color:var(--rust)}.legal p{line-height:1.65}
footer a{color:#765c4d}
@media(max-width:760px){.class-title-wrap{align-items:flex-start;flex-direction:column}.class-hero-image{width:100%;height:180px}.class-actions{justify-content:flex-start}.people-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:460px){.people-grid.compact{grid-template-columns:1fr 1fr}.compact-person{padding:9px}.compact-person img,.compact-person .photo-placeholder{height:100px}}
