:root{--bg: #f7f5f0;--surface: #ffffff;--border: #e8e4dc;--text: #1a1a1a;--muted: #6b6b66;--primary: #1b6e4f;--primary-dark: #15573e;--primary-soft: #dff0e8;--good: #1b7a4f;--warn: #c77b1f;--bad: #c2422e;--radius: 14px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:16px/1.55 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Inter,sans-serif}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 1px 3px #1a1a1a0a}.muted{color:var(--muted)}.small{font-size:13px}.error{color:var(--bad);margin:4px 0 0}kbd{display:inline-block;min-width:18px;padding:0 5px;border:1px solid var(--border);border-bottom-width:2px;border-radius:5px;background:var(--bg);font:600 11px/18px inherit;text-align:center;color:var(--muted)}.login-wrap{height:100%;display:grid;place-items:center}.login-card{width:380px;padding:36px;display:flex;flex-direction:column;gap:10px}.login-card h1{margin:8px 0 0;font-size:28px}.login-card p{margin:0 0 10px}.login-card input{padding:12px 14px;border:1px solid var(--border);border-radius:9px;font-size:16px}.login-card input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.logo{font-weight:800;font-size:17px;color:var(--primary);letter-spacing:-.2px}.btn-primary{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:13px 18px;border:none;border-radius:10px;background:var(--primary);color:#fff;font-size:16px;font-weight:600;cursor:pointer;transition:background .15s}.btn-primary:hover:not(:disabled){background:var(--primary-dark)}.btn-primary:disabled{opacity:.45;cursor:default}.btn-primary kbd{background:#ffffff2e;border-color:transparent;color:#fff}.btn-ghost{width:100%;margin-top:8px;padding:9px;background:none;border:1px solid var(--border);border-radius:10px;color:var(--muted);cursor:pointer}.btn-ghost:hover{border-color:var(--muted)}.app{height:100%;display:flex;flex-direction:column}header{display:flex;align-items:center;gap:28px;padding:14px 28px;background:var(--surface);border-bottom:1px solid var(--border)}.year-tabs{display:flex;gap:6px;flex:1}.year-tab{display:flex;align-items:center;gap:7px;padding:7px 14px;border:1px solid transparent;border-radius:9px;background:none;font-size:15px;font-weight:600;color:var(--muted);cursor:pointer}.year-tab:hover{background:var(--bg)}.year-tab.active{background:var(--primary-soft);color:var(--primary);border-color:#c4e2d4}.year-tab.complete .count{background:var(--primary);color:#fff}.year-tab .count{font-size:11px;font-weight:700;padding:1px 7px;border-radius:99px;background:var(--bg);border:1px solid var(--border)}.progress-pill{font-size:14px;font-weight:600;color:var(--muted);padding:6px 14px;border:1px solid var(--border);border-radius:99px;background:var(--bg)}main{flex:1;display:grid;grid-template-columns:380px 1fr;gap:22px;padding:22px 28px;min-height:0}.student-panel{display:flex;flex-direction:column;align-items:center;gap:10px;padding:22px;overflow-y:auto}.student-nav{width:100%;display:flex;justify-content:space-between;align-items:center}.nav-arrow{width:34px;height:34px;border:1px solid var(--border);border-radius:9px;background:var(--surface);font-size:16px;cursor:pointer;color:var(--text)}.nav-arrow:hover:not(:disabled){background:var(--bg)}.nav-arrow:disabled{opacity:.35;cursor:default}.avatar{width:64px;height:64px;border-radius:16px;display:grid;place-items:center;font-size:22px;font-weight:700;color:var(--text)}.student-name{margin:2px 0 0;font-size:26px;text-align:center;letter-spacing:-.4px}.chip{font-size:12px;font-weight:600;padding:3px 11px;border-radius:99px;background:#f4ece0;color:var(--warn)}.chip-done{background:var(--primary-soft);color:var(--primary)}.pronoun-toggle{display:flex;border:1px solid var(--border);border-radius:99px;overflow:hidden;margin-top:6px}.pronoun-toggle button{padding:7px 26px;border:none;background:var(--surface);font-size:15px;font-weight:600;color:var(--muted);cursor:pointer}.pronoun-toggle button.active{background:var(--primary);color:#fff}.pronoun-toggle.nudge{animation:nudge .35s ease 2;box-shadow:0 0 0 3px var(--primary-soft)}@keyframes nudge{25%{transform:translate(-3px)}75%{transform:translate(3px)}}.editor-block{width:100%;margin-top:8px}.editor-block textarea{width:100%;min-height:170px;padding:13px;border:1px solid var(--border);border-radius:10px;font:inherit;font-size:15px;resize:vertical;margin-bottom:10px}.editor-block textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.roster{list-style:none;width:100%;margin:14px 0 0;padding:12px 0 0;border-top:1px solid var(--border)}.roster-row{display:flex;align-items:center;gap:9px;width:100%;padding:6px 10px;border:none;border-radius:8px;background:none;font-size:14px;text-align:left;color:var(--text);cursor:pointer}.roster-row:hover{background:var(--bg)}.roster-row.current{background:var(--primary-soft);font-weight:600}.dot{width:8px;height:8px;border-radius:99px;background:var(--border);flex-shrink:0}.dot-done{background:var(--good)}.templates-panel{display:flex;flex-direction:column;min-height:0}.templates-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:14px}.templates-head h2{margin:0;font-size:20px;letter-spacing:-.3px}.search{width:320px;padding:10px 14px;border:1px solid var(--border);border-radius:9px;font-size:15px;background:var(--surface)}.search:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.template-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding-bottom:10px}.template-card{position:relative;text-align:left;padding:16px 18px 16px 46px;font:inherit;font-size:15px;cursor:pointer;transition:border-color .12s,box-shadow .12s}.template-card p{margin:0}.template-card:hover{border-color:var(--primary)}.template-card.selected{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.template-card .num{position:absolute;left:14px;top:16px}.empty{padding:40px;text-align:center;color:var(--muted);border:1px dashed var(--border);border-radius:var(--radius)}footer.hints{display:flex;gap:26px;justify-content:center;padding:10px;border-top:1px solid var(--border);background:var(--surface);font-size:13px;color:var(--muted)}.toast{position:fixed;bottom:56px;left:50%;transform:translate(-50%);background:var(--primary);color:#fff;font-weight:600;padding:11px 22px;border-radius:99px;box-shadow:0 6px 18px #1b6e4f59}
