:root{--font-ui: "Neue Haas Grotesk Web", "Neue Haas Grotesk Display Pro", "Neue Haas Grotesk Text Pro", "NeueHaasDisplay", "Neue Haas Unica", "Helvetica Neue", Helvetica, Arimo, Arial, sans-serif}body,.btn,button,input,select,textarea,optgroup{font-family:var(--font-ui)}:root{--bg: #0f1115;--card: #171a21;--border: #262b36;--text: #e7e9ee;--muted: #9aa3b2;--primary: #3b82f6;--primary-text: #ffffff;--warn: #b45309}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;font-size:var(--fs-lead)}.app{padding-bottom:40px}.app-body{max-width:760px;margin:0 auto;padding:0 12px}.topbar{position:sticky;top:0;background:var(--bg);border-bottom:1px solid var(--border);z-index:5}.topbar-inner{display:flex;align-items:center;justify-content:space-between;max-width:760px;margin:0 auto;padding:12px}.brand{font-weight:700;font-size:var(--fs-lead)}.content{padding-top:14px}.listhead{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}.listhead-titles{display:flex;flex-direction:column;gap:2px;min-width:0}.listhead-controls{display:flex;flex-direction:column;gap:8px}.listhead h1{margin:0;font-size:var(--fs-head);line-height:1.2}.subtitle{margin:0;color:var(--muted);font-size:var(--fs-body)}.search{width:100%;padding:10px 12px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--card);color:var(--text);font-size:var(--fs-lead)}.group{margin-bottom:18px}.group-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:2px 0 8px;padding-bottom:5px;border-bottom:1px solid var(--border)}.group-head h2{margin:0;font-size:var(--fs-lead)}.group-count{color:var(--muted);font-size:var(--fs-small);white-space:nowrap}.grid{display:grid;grid-template-columns:1fr;gap:8px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);padding:12px 14px}.card.student{display:flex;flex-direction:column;gap:3px}.student-name{font-weight:600;font-size:var(--fs-lead);line-height:1.25}.student-id{color:var(--muted);font-size:var(--fs-small);letter-spacing:.2px}.meta{color:var(--muted);font-size:var(--fs-small)}.actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.btn{flex:1 1 calc(50% - 6px);min-width:0;min-height:38px;padding:8px 10px;border-radius:var(--r-xs);border:1px solid var(--border);background:transparent;color:var(--text);font-size:var(--fs-body);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;text-align:center;white-space:normal;line-height:1.2;overflow-wrap:anywhere}.btn:hover{border-color:var(--muted)}.btn.primary{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}.btn.warn{color:#f59e0b;border-color:var(--warn);cursor:not-allowed}.btn.confirm{color:#34d399;border-color:#1f6f52}.btn.confirm:hover{border-color:#34d399}.btn.done{color:var(--muted);border-color:var(--border)}.btn.done:hover{color:var(--text)}.btn:disabled{opacity:.7}.card.student.needs-attendance{border-left:3px solid #f59e0b}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:flex-end;justify-content:center;padding:0;z-index:20}.modal{width:100%;max-width:560px;background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg) var(--r-lg) 0 0;padding:16px 16px 20px;max-height:80vh;overflow-y:auto}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.modal-head h2{margin:0;font-size:var(--fs-head)}.modal-sub{color:var(--muted);font-size:var(--fs-body);margin:6px 0 12px}.reminder-group{margin-bottom:14px}.reminder-group:last-child{margin-bottom:0}.reminder-group-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 6px;padding-bottom:4px;border-bottom:1px solid var(--border)}.reminder-group-head h3{margin:0;font-size:var(--fs-body)}.reminder-group-count{color:var(--muted);font-size:var(--fs-small);white-space:nowrap}.reminder-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.reminder-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-sm)}.reminder-who{display:flex;flex-direction:column;gap:2px;min-width:0}.reminder-name{font-weight:600;font-size:var(--fs-lead)}.reminder-meta{color:var(--muted);font-size:var(--fs-small)}.reminder-actions{display:flex;gap:8px;flex-shrink:0}.reminder-actions .btn{flex:0 0 auto;min-height:36px}.link{background:none;border:none;color:var(--muted);cursor:pointer;font-size:var(--fs-lead)}.link:hover{color:var(--text)}.centered{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.centered .card{max-width:420px;text-align:center}.signin h1{margin:0 0 4px}.muted{color:var(--muted)}.small{font-size:var(--fs-body)}@media (min-width: 600px){body{font-size:var(--fs-lead)}.app{padding-bottom:48px}.app-body{padding:0 16px}.topbar-inner{padding:16px}.brand{font-size:var(--fs-head)}.content{padding-top:20px}.listhead{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;row-gap:10px;margin-bottom:18px}.listhead h1{font-size:var(--fs-title)}.listhead-titles{flex:1 1 260px;min-width:0}.listhead-controls{flex:1 1 410px;flex-direction:row;align-items:center;justify-content:flex-end;gap:10px;min-width:0}.listhead-controls .search{width:auto;flex:1 1 200px;min-width:200px;max-width:320px;font-size:var(--fs-lead)}.search{font-size:var(--fs-lead)}.group{margin-bottom:26px}.group-head h2{font-size:var(--fs-lead)}.group-count{font-size:var(--fs-body)}.grid{grid-template-columns:1fr 1fr;gap:12px}.card{padding:18px;border-radius:var(--r-md)}.card.student{gap:6px}.student-name{font-size:var(--fs-head)}.student-id{font-size:var(--fs-body)}.meta{font-size:var(--fs-lead)}.actions{gap:10px;margin-top:12px}.btn{min-height:44px;padding:10px 14px;font-size:var(--fs-lead);border-radius:var(--r-sm)}.modal-overlay{align-items:center;padding:24px}.modal{border-radius:var(--r-lg);padding:22px 22px 24px}.modal-head h2{font-size:var(--fs-head)}}.teacher-search{position:relative;width:100%}.teacher-search .search{width:100%;padding-right:34px}.teacher-search-clear{position:absolute;top:50%;right:8px;transform:translateY(-50%);width:22px;height:22px;display:flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:var(--r-xs);background:transparent;color:var(--muted);font-size:var(--fs-head);line-height:1;cursor:pointer}.teacher-search-clear:hover{color:var(--text);background:var(--border)}.suggestions{list-style:none;margin:6px 0 0;padding:4px;position:absolute;z-index:20;left:0;right:0;max-height:280px;overflow-y:auto;background:var(--card);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:0 8px 24px #00000059}.suggestion{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:8px 10px;border:none;border-radius:var(--r-xs);background:transparent;color:var(--text);text-align:left;cursor:pointer}.suggestion:hover,.suggestion[aria-selected=true]{background:var(--border)}.suggestion-name{font-size:var(--fs-lead);line-height:1.25}.suggestion-id{font-size:var(--fs-small);color:var(--muted)}@media (min-width: 600px){.teacher-search{flex:1 1 210px;min-width:0;max-width:300px;width:auto}.teacher-search .search{width:100%;flex:none;max-width:none}}.topnav{display:flex;gap:4px;flex:1;justify-content:center;flex-wrap:wrap}.navlink{background:transparent;border:0;padding:8px 14px;border-radius:var(--r-xs);font:inherit;font-weight:600;color:#4b5563;cursor:pointer}.navlink:hover{background:#f1f5f9}.navlink.active{background:#0b1f4d;color:#fff}.home{max-width:960px;margin:0 auto;padding:28px 20px 56px}.passport-stack{perspective:1200px;display:flex;justify-content:center;padding:24px 0 36px}.passport-card{position:relative;width:min(460px,92vw);aspect-ratio:16 / 10;border-radius:var(--r-lg);background:linear-gradient(150deg,#0b1f4d,#14337a 55%,#0b1f4d);color:#fff;padding:26px 28px;box-shadow:0 18px 40px #0b1f4d59;transition:transform .45s cubic-bezier(.22,1,.36,1),box-shadow .45s ease;overflow:hidden}.passport-card:after{content:"";position:absolute;top:10px;right:10px;bottom:10px;left:10px;border:1px solid rgba(255,255,255,.18);border-radius:var(--r-md);pointer-events:none}.passport-card:hover{transform:translateY(-10px) rotate(-1.2deg) scale(1.015);box-shadow:0 28px 60px #0b1f4d73}.passport-title{letter-spacing:.32em;font-weight:700;color:#e8c46a;font-size:var(--fs-lead)}.passport-brand{margin-top:6px;font-size:var(--fs-hero);font-weight:800;letter-spacing:.04em}.passport-brand .ast{color:#e8c46a}.passport-welcome{position:absolute;left:28px;bottom:26px;display:flex;flex-direction:column;gap:2px}.passport-welcome span{font-size:var(--fs-body);opacity:.8}.passport-welcome strong{font-size:var(--fs-title);color:#e8c46a}.passport-mark{position:absolute;right:22px;bottom:18px;opacity:.5}.home-nav{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:32px}.home-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);padding:18px;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.home-card:hover{transform:translateY(-3px);border-color:var(--primary);box-shadow:0 12px 24px #00000059}.home-card-title{font-weight:700;color:var(--text)}.home-card-sub{font-size:var(--fs-body);color:var(--muted)}.announcements{background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);padding:20px 22px}.announcements h2{margin-top:0;color:var(--text)}.announcements p{margin:6px 0;color:var(--muted)}.content.page{max-width:860px}.card.notice{color:var(--text)}.muted{color:#6b7280}.profile-grid{display:grid;grid-template-columns:140px 1fr;gap:8px 16px;margin:8px 0 0}.profile-grid dt{color:var(--muted)}.profile-grid dd{margin:0;font-weight:600;color:var(--text)}.embed-frame{position:relative;width:100%;height:70vh;min-height:420px;border:1px solid #e5e7eb;border-radius:var(--r-md);overflow:hidden;margin-top:12px}.embed-frame.short{height:520px}.embed-frame iframe,.embed-frame object{width:100%;height:100%;border:0}.payslip-list{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.weekly{margin:12px 0;padding:12px;border:1px solid var(--border);border-radius:var(--r-sm);background:#ffffff08}.weekly-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.weekly-title{font-weight:700;color:var(--text);font-size:var(--fs-lead)}.weekly-count{font-size:var(--fs-small);color:var(--muted)}.weekly-row{margin-bottom:8px}.week-select{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:var(--r-xs);font:inherit;background:var(--bg);color:var(--text)}.weekly-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.weekly-status{font-size:var(--fs-body);font-weight:600;color:#047857}.weekly-status.muted{color:#b45309;font-weight:500}.weekly-status.missed{color:#d97706}.pay-lock{background:#fef3c7;border:1px solid #fcd34d;color:#92400e;border-radius:var(--r-xs);padding:8px 10px;font-size:var(--fs-body);margin-bottom:8px}.btn.confirm{background:#047857;color:#fff;border-color:#047857}.btn.confirm:hover:not(:disabled){background:#065f46}.btn.missed{background:transparent;color:#d97706;border-color:#b45309;font-weight:600}.btn.missed:hover:not(:disabled){border-color:#d97706;background:#d977061f}.missed-reason{display:flex;flex-direction:column;gap:8px;width:100%}.missed-reason-label{font-size:var(--fs-body);font-weight:600;color:#d97706}.missed-reason-input{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:var(--r-xs);padding:8px 10px;font-size:var(--fs-lead);width:100%}.missed-reason-input:focus{outline:none;border-color:var(--primary)}.missed-reason-actions{display:flex;gap:8px;flex-wrap:wrap}.btn.whatsapp{background:#25d366;color:#06340f;border-color:#1ebe5a;font-weight:700}.btn.whatsapp:hover:not(:disabled){background:#1ebe5a}.card.student.alert{border:2px solid #dc2626;background:#2a1416;animation:alertpulse 1.6s ease-in-out infinite}@keyframes alertpulse{0%,to{box-shadow:0 0 #dc262659}50%{box-shadow:0 0 0 6px #dc262600}}.alert-flag{display:inline-block;background:#dc2626;color:#fff;font-size:var(--fs-small);font-weight:700;padding:3px 8px;border-radius:var(--r-pill);margin-bottom:8px}.reminder-list{margin:10px 0 0;padding-left:18px;color:#374151;max-height:160px;overflow:auto}.reminder-actions{margin-top:16px;display:flex;justify-content:flex-end}.reminder-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;padding:20px;z-index:30}.reminder{width:100%;max-width:480px;background:#fff;color:#111827;border:1px solid #e5e7eb;border-radius:var(--r-lg);padding:22px 24px;box-shadow:0 24px 60px #0006;max-height:80vh;overflow-y:auto}.reminder h2{margin:0 0 10px;color:#dc2626;font-size:var(--fs-head)}.reminder>p{margin:0;color:#374151;font-size:var(--fs-lead);line-height:1.5}.reminder-actions{display:flex;justify-content:flex-end;margin-top:12px}.bank-account-dd{display:flex;align-items:center;gap:8px}.linklike{background:none;border:0;color:#8ab4f8;cursor:pointer;font:inherit;padding:0;text-decoration:underline}.card.notice{background:var(--card);border-color:var(--border)}.reminder .btn:not(.primary){background:#fff;color:#0b1f4d;border-color:#cbd5e1}.reminder .btn:not(.primary):hover{border-color:#0b1f4d}.card.notice .btn:not(.primary):not(.confirm):not(.missed):not(.whatsapp){background:transparent;color:var(--text);border-color:var(--border)}.card.notice .btn:not(.primary):not(.confirm):not(.missed):not(.whatsapp):hover{border-color:var(--primary)}@media (max-width: 599px){.topbar-inner{flex-wrap:wrap;gap:6px 10px}.brand{flex:1 1 auto}.topnav{order:3;flex-basis:100%;justify-content:flex-start;gap:6px;margin-top:4px}.navlink{padding:7px 12px}.reminder-item{flex-direction:column;align-items:stretch;gap:10px}.reminder-who{min-width:0}.reminder-actions{width:100%}.reminder-actions .btn{flex:1 1 0;min-height:40px}.profile-grid{grid-template-columns:104px 1fr;gap:6px 12px}.reminder{padding:18px 16px;border-radius:var(--r-md)}}@media (max-width: 599px){.home{padding:16px 4px 40px}.home-nav{grid-template-columns:1fr;gap:10px;margin-bottom:22px}.home-card,.announcements{padding:16px}.content.page{max-width:100%}.payslip-list .btn{flex:0 1 auto}.embed-frame.short{min-height:360px;height:62vh}}.demo-banner{margin:0 0 14px;padding:9px 14px;border-radius:var(--r-sm);background:#7c2d12;color:#fff;font-size:var(--fs-body);font-weight:600}.demo-banner code{background:#ffffff2e;padding:1px 6px;border-radius:var(--r-xs);font-size:var(--fs-small)}.form-responses{margin:0 0 16px}.form-responses-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:none;padding:0;cursor:pointer;color:var(--text);font-size:var(--fs-lead);font-weight:600;text-align:left}.form-responses-flag{color:var(--warn);font-weight:600}.form-responses-chev{color:var(--muted);font-size:var(--fs-head);line-height:1}.ch-head{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1 1 auto}.ch-title{font-size:var(--fs-lead);font-weight:650;line-height:1.3;color:var(--text)}.ch-sub{font-size:var(--fs-small);font-weight:450;line-height:1.5;color:var(--muted);max-width:64ch}.ch-tail{display:inline-flex;align-items:center;gap:10px;flex:0 0 auto}.ch-n{min-width:26px;padding:2px 9px;border-radius:var(--r-pill);background:var(--raised);color:var(--text);font-size:var(--fs-small);font-weight:700;line-height:1.55;text-align:center}.ch-n.is-clear{background:transparent;border:1px solid var(--hairline);color:var(--muted);font-weight:600}.form-responses-toggle{gap:14px;align-items:flex-start;padding:1px 0}.form-responses-toggle .form-responses-chev{margin-top:-1px}.done-review-toggle{display:flex;align-items:center;gap:6px;margin:0 0 10px;font-size:var(--fs-body);cursor:pointer}.done-review-toggle input{margin:0}.done-review-mutes{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px;padding:10px;background:var(--sunken);border:1px solid var(--hairline);border-radius:var(--r-card)}.done-review-mutes>.muted{font-size:var(--fs-body);margin-right:2px}.done-review-mutes p{flex-basis:100%;margin:4px 0 0}.form-responses-table{margin-top:10px;display:flex;flex-direction:column;gap:2px}.fr-row{display:grid;grid-template-columns:2fr 1.4fr .5fr 1.2fr auto;gap:10px;align-items:center;padding:8px 10px;border-radius:var(--r-xs);background:var(--bg)}.fr-head{background:none;padding:2px 10px;font-size:var(--fs-small);color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.fr-row strong{display:block;font-size:var(--fs-lead)}.fr-sub{display:block;font-size:var(--fs-micro);color:var(--muted)}.fr-phantom{background:#b4530924;border:1px solid rgba(180,83,9,.4)}.fr-badge{display:inline-block;margin-left:8px;padding:1px 7px;border-radius:var(--r-lg);background:var(--warn);color:#fff;font-size:var(--fs-micro);font-weight:600;vertical-align:middle}.fr-move{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.fr-move .week-select{width:auto;min-width:150px;padding:5px 8px;font-size:var(--fs-small)}.fr-move .btn{padding:5px 10px;font-size:var(--fs-small);white-space:nowrap}.fr-move .fr-sub{display:inline-block;max-width:200px}@media (max-width:599px){.fr-row{grid-template-columns:1fr auto;row-gap:4px}.fr-head{display:none}.fr-row>span:nth-child(2):before{content:"Teacher: ";color:var(--muted)}.fr-row>span:nth-child(3):before{content:"Week: ";color:var(--muted)}}body.admin:where(.theme-light){--bg: #eaf2fb;--card: #ffffff;--border: #cbdcf0;--text: #10233d;--muted: #5a6b82;--primary: #1d4ed8;--primary-text: #ffffff;--warn: #b45309}.admin-badge{margin-left:8px;padding:2px 8px;border-radius:var(--r-pill);background:#1d4ed8;color:#fff;font-size:var(--fs-micro);font-weight:700;letter-spacing:.06em;vertical-align:middle}body.admin:where(.theme-light) .weekly{background:#f4f8fd}body.admin:where(.theme-light) .card.student.alert{background:#fff1f1}body.admin:where(.theme-light) .home-card:hover{box-shadow:0 12px 24px #1d4ed829}body.admin:where(.theme-light) .suggestions{box-shadow:0 8px 24px #10233d29}body.admin:where(.theme-light) .linklike{color:#1d4ed8}body.admin:where(.theme-light) .navlink:hover{background:#dbe7f8}.term-select{min-width:180px;cursor:pointer}.review-table{gap:4px}.review-table .fr-row{align-items:start;gap:12px;padding:10px}.review-table.missed-review-table .fr-row{grid-template-columns:minmax(0,1.5fr) minmax(0,1.15fr) 84px minmax(0,1.35fr) 92px 152px}.review-table.done-review-table .fr-row{grid-template-columns:minmax(0,1.3fr) minmax(0,1.15fr) minmax(96px,.8fr) minmax(0,1.5fr) 176px}.review-table.responses-table .fr-row{grid-template-columns:minmax(0,1.35fr) minmax(0,1.05fr) 76px minmax(0,.9fr) 300px}.review-table.report-table .fr-row{grid-template-columns:minmax(0,1fr) 76px 66px 68px 82px 84px;align-items:center}.report-group{display:contents}.report-num{text-align:right;font-variant-numeric:tabular-nums}.report-table .fr-head>span{text-align:right}.report-table .fr-head>span:first-child{text-align:left}.report-missed{color:var(--warn, #b45309);font-weight:600}.report-unfilled{font-weight:600}.report-row{cursor:pointer}.report-row:hover{background:var(--card)}.report-month{font-size:var(--fs-small);opacity:.85}.report-month>span:first-child{padding-left:12px}.fr-collision{display:block;margin-top:6px;padding-top:6px;border-top:1px dashed var(--border)}.fr-collision .fr-badge{margin-left:0}.fr-collision .fr-sub{display:block}.fr-collision-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.fr-collision-actions .btn{padding:4px 10px;font-size:var(--fs-small)}.report-program{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:10px 0 2px;padding:4px 10px;border-bottom:1px solid var(--border)}.report-program:first-child{margin-top:2px}.report-program-name{font-size:var(--fs-body);font-weight:700}.report-program-sub{display:inline-block}.report-sort{background:none;border:0;padding:0;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer}.report-sort:hover{color:var(--text)}.report-sort-on{color:var(--accent, #2563eb);font-weight:600}.report-arrow{margin-left:2px}.report-table .fr-head{font-size:var(--fs-micro)}.report-table .fr-head .report-sort{white-space:nowrap}.report-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 8px}.report-filters .report-search{width:auto;flex:1 1 180px;min-width:140px;padding:6px 10px;font-size:var(--fs-body)}.report-filters .report-select{width:auto;padding:6px 8px;font-size:var(--fs-body)}.report-count{margin:0 0 8px}.grad-note{margin-top:2px}.linkish{background:none;border:0;padding:0;font:inherit;color:var(--accent, #2563eb);text-decoration:underline;cursor:pointer}.responses-table .fr-move{display:flex;gap:6px;align-items:center;flex-wrap:nowrap}.responses-table .fr-move .week-select{max-width:150px;min-width:0}.responses-table .review-actions{flex-wrap:wrap;row-gap:6px}.responses-table .review-marked .fr-badge{margin:4px 0 0;display:block;width:fit-content}.review-table .fr-row>span{min-width:0;overflow-wrap:break-word}.done-review-table .fr-badge{margin-left:0;margin-right:4px;margin-bottom:3px}.review-table .fr-head{align-items:end;padding:2px 10px}.review-week{display:inline-block;padding:1px 8px;border-radius:var(--r-pill);background:var(--card);border:1px solid var(--border);font-size:var(--fs-small);font-weight:600;white-space:nowrap}.review-weekdates{display:block;margin-top:3px;line-height:1.3}.review-reason{line-height:1.35}.review-marked{font-size:var(--fs-small);color:var(--muted);white-space:nowrap;line-height:1.5}.review-actions{display:flex;gap:6px;justify-content:flex-end;align-items:center;flex-wrap:nowrap}.review-actions .btn{white-space:nowrap;padding:6px 12px;flex:0 0 auto}.review-actions .fr-badge{margin-left:0}.fr-reviewed{opacity:.72}.fr-badge.reviewed,.fr-badge.good{background:var(--tone-good-fill);border:1px solid var(--tone-good-line);color:var(--tone-good);border-radius:var(--r-pill);padding:1px 8px;font-size:var(--fs-micro);font-weight:600;margin-left:8px;white-space:nowrap}.terms-list{display:flex;flex-direction:column;gap:6px;margin:6px 0 12px}.terms-row{display:grid;grid-template-columns:1.6fr 1fr auto;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--r-xs);background:var(--bg)}.terms-name{font-weight:600;display:flex;align-items:center;gap:8px}.terms-date{color:var(--muted);font-variant-numeric:tabular-nums}.terms-action{text-align:right}.terms-add{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.terms-add .search{flex:1 1 160px;min-width:140px}@media (max-width: 640px){.review-table .fr-row,.review-table.missed-review-table .fr-row,.review-table.done-review-table .fr-row,.review-table.responses-table .fr-row,.review-table.report-table .fr-row{grid-template-columns:minmax(0,1fr);row-gap:4px}.report-num{text-align:left}.review-table.report-table .fr-row>span:nth-child(2):before{content:"Students: ";color:var(--muted)}.review-table.report-table .fr-row>span:nth-child(3):before{content:"Filled: ";color:var(--muted)}.review-table.report-table .fr-row>span:nth-child(4):before{content:"Missed: ";color:var(--muted)}.review-table.report-table .fr-row>span:nth-child(5):before{content:"Not filled: ";color:var(--muted)}.review-table.report-table .fr-row>span:nth-child(6):before{content:"Fill rate: ";color:var(--muted)}.review-table .fr-head{display:none}.report-filters{flex-direction:column;align-items:stretch}.report-filters .report-search,.report-filters .report-select{width:100%;font-size:var(--fs-lead);flex:0 0 auto}.review-table .fr-row>span:nth-child(3):before{content:""}.missed-review-table .fr-row>span:nth-child(4):before{content:"Reason: ";color:var(--muted)}.missed-review-table .fr-row>span:nth-child(5):before{content:"Marked: ";color:var(--muted)}.done-review-table .fr-row>span:nth-child(4):before{content:"Flagged: ";color:var(--muted);display:block}.responses-table .fr-row>span:nth-child(4):before{content:"Submitted: ";color:var(--muted)}.review-table .review-actions{justify-content:flex-start;margin-top:4px}.terms-row{grid-template-columns:1fr auto}.terms-date{grid-column:1 / -1}}.collision-list{display:flex;flex-direction:column;gap:12px;margin-top:10px}.collision-card{border:1px solid var(--border);border-radius:var(--r-sm);padding:12px;background:var(--card)}.collision-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:10px}.collision-head .fr-sub{display:inline}.collision-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}.collision-side{border:1px solid var(--border);border-radius:var(--r-xs);padding:10px;min-width:0}.collision-side-title{font-size:var(--fs-small);font-weight:600;margin-bottom:8px}.collision-facts{margin:0 0 10px;display:flex;flex-direction:column;gap:4px}.collision-facts>div{display:flex;gap:6px;font-size:var(--fs-small);min-width:0}.collision-facts dt{color:var(--muted);flex:0 0 82px}.collision-facts dd{margin:0;min-width:0;overflow-wrap:anywhere}.collision-facts .fr-sub{display:inline}.collision-lesson-label{font-weight:600}.collision-lessons{margin:2px 0 0;padding:0;list-style:none;color:var(--muted);line-height:1.35;overflow-wrap:break-word}.collision-lessons li+li{margin-top:1px}.fr-mismatch{color:#e03131;font-weight:600}.collision-actions{display:flex;flex-wrap:wrap;gap:6px}.collision-actions select{font-size:var(--fs-small);padding:4px 6px;max-width:100%}.collision-apply{display:flex;align-items:center;gap:8px;margin-top:10px}.collision-apply .btn{flex:0 0 auto;width:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (max-width: 640px){.collision-pair{grid-template-columns:1fr}}.toasts{position:fixed;left:50%;bottom:20px;transform:translate(-50%);z-index:1000;display:flex;flex-direction:column;gap:8px;width:min(520px,calc(100vw - 24px));pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--r-sm);background:#1f2937;color:#f9fafb;box-shadow:0 8px 24px #0000002e;font-size:var(--fs-lead);animation:toast-in .14s ease-out}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.toast{animation:none}}.toast-success{background:#14532d}.toast-error{background:#7f1d1d}.toast-msg{flex:1 1 auto}.toast-action{flex:0 0 auto;background:#ffffff29;color:inherit;border:0;border-radius:var(--r-xs);padding:5px 10px;font:inherit;font-weight:600;cursor:pointer}.toast-action:hover{background:#ffffff42}.toast-close{flex:0 0 auto;background:none;border:0;color:inherit;opacity:.6;font-size:var(--fs-head);line-height:1;cursor:pointer}.toast-close:hover{opacity:1}.topbar-meta{display:inline-flex;align-items:center;gap:12px}.topbar-updated{font-size:var(--fs-small);color:var(--muted);white-space:nowrap}.review-table.ta-table .fr-row{grid-template-columns:minmax(0,1.1fr) minmax(0,1.5fr) minmax(0,.7fr) 220px;align-items:start}.ta-table input.search{width:100%}.ta-warn{color:var(--warn, #b45309)}.ta-add{flex-wrap:wrap}@media (max-width: 720px){.review-table.ta-table .fr-row{grid-template-columns:minmax(0,1fr);row-gap:6px}.topbar-updated{display:none}.toasts{left:12px;right:12px;width:auto;transform:none}}.ta-confirm{border-left:3px solid var(--warn, #b45309);padding-left:10px;margin-top:4px}.report-cell{position:relative;cursor:help;text-decoration:underline dotted rgba(0,0,0,.3);text-underline-offset:3px}.report-cell:focus-visible{outline:2px solid var(--accent, #2563eb);outline-offset:2px;border-radius:var(--r-xs)}.report-tip{position:absolute;right:0;bottom:calc(100% + 6px);z-index:30;display:none;width:max-content;max-width:300px;padding:7px 9px;border-radius:var(--r-xs);background:#1f2937;color:#f9fafb;font-size:var(--fs-small);font-weight:400;line-height:1.45;text-align:left;text-decoration:none;white-space:normal;box-shadow:0 6px 18px #00000038}.report-cell:hover .report-tip,.report-cell:focus .report-tip,.report-cell:focus-within .report-tip{display:block}.report-tip-head{display:block;margin-bottom:3px;font-weight:600;opacity:.75;font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.04em}@media (hover: none){.report-tip{right:auto;left:0;max-width:min(300px,calc(100vw - 48px))}}.missed-details{width:100%;resize:vertical;font:inherit}.missed-details-count{font-size:var(--fs-micro);color:var(--muted);align-self:flex-end}.missed-details-toggle{align-self:flex-start;font-size:var(--fs-small)}.review-details{display:block;margin-top:2px;font-size:var(--fs-small);color:var(--muted);font-style:italic}.sync-pill{display:inline-flex;align-items:center;gap:6px;padding:3px 9px 3px 7px;border:1px solid transparent;border-radius:var(--r-pill);background:#7f7f7f1a;color:var(--muted);font:inherit;font-size:var(--fs-micro);font-weight:600;letter-spacing:.02em;line-height:1.6;cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.sync-pill:hover:not(:disabled){background:#7f7f7f2e;border-color:#7f7f7f47;color:inherit}.sync-pill:disabled{cursor:default}.sync-dot{width:7px;height:7px;border-radius:50%;background:#22c55e;box-shadow:0 0 #22c55e8c;animation:sync-breathe 2.6s ease-in-out infinite}.sync-pill.is-stale .sync-dot{background:#f59e0b;box-shadow:none;animation:none}.sync-pill.is-syncing{color:inherit}.sync-pill.is-syncing .sync-dot{background:transparent;border:2px solid rgba(127,127,127,.35);border-top-color:#2563eb;box-shadow:none;animation:sync-spin .7s linear infinite}@keyframes sync-breathe{0%,to{box-shadow:0 0 #22c55e80}50%{box-shadow:0 0 0 4px #22c55e00}}@keyframes sync-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.sync-dot,.sync-pill.is-syncing .sync-dot{animation:none!important}}.ta-bulk{display:flex;flex-direction:column;gap:8px;margin-top:8px}.ta-bulk-text{width:100%;min-width:0;max-width:none;flex:none;resize:vertical;font-family:ui-monospace,Andale Mono,monospace;font-size:var(--fs-small);line-height:1.6;white-space:pre;overflow-x:auto;-moz-tab-size:14;tab-size:14}.ta-bulk-actions{display:flex;gap:8px}.ta-bulk-actions .btn{flex:0 0 auto}.ta-bulk-log{margin:0;list-style:none;padding-left:0;font-size:var(--fs-small);line-height:1.7;max-height:180px;overflow:auto}.ta-ok{color:var(--ok, #15803d)}.review-table.td-table .fr-row{grid-template-columns:minmax(0,1.1fr) minmax(0,1.1fr) minmax(0,1.1fr) 120px;align-items:start}.td-gaps{display:flex;flex-wrap:wrap;gap:4px}.td-onfile{display:flex;flex-direction:column;gap:2px}.td-edit{grid-column:1 / -1;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px 10px;margin-top:8px;padding:10px;border-radius:var(--r-xs);background:var(--card)}.td-field{display:flex;flex-direction:column;gap:3px}.td-field-label{font-size:var(--fs-micro);font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.td-field input.search{width:100%}.td-edit-note{grid-column:1 / -1;margin:0;font-size:var(--fs-small)}.td-edit .ta-bulk-actions{grid-column:1 / -1}@media (max-width: 720px){.review-table.td-table .fr-row{grid-template-columns:minmax(0,1fr);row-gap:6px}.td-edit{grid-template-columns:1fr}}:root{--sunken: #12161d;--raised: #1b2029;--field: #10141a;--tone-urgent: #fca5a5;--tone-urgent-line: #7f1d1d;--tone-urgent-fill: rgba(239, 68, 68, .12);--tone-warn: #fcd34d;--tone-warn-line: #78350f;--tone-warn-fill: rgba(245, 158, 11, .12);--tone-info: #93c5fd;--tone-info-line: #1e3a5f;--tone-info-fill: rgba(59, 130, 246, .12);--tone-good: #34d399;--track: #262b36}body.admin:where(.theme-light){--sunken: #f4f8fd;--raised: #eef5fd;--field: #ffffff;--tone-urgent: #b91c1c;--tone-urgent-line: #f0c4c4;--tone-urgent-fill: #fdf2f2;--tone-warn: #a35a06;--tone-warn-line: #f1d9b5;--tone-warn-fill: #fdf6ec;--tone-info: #1d4ed8;--tone-info-line: #c9dcf7;--tone-info-fill: #f2f7fe;--tone-good: #0f766e;--track: #dde8f5}.bulk-bar .btn,.bulk-actions .btn,.inline-confirm .btn,.reopen-actions .btn,.activity-range .btn,.queued-banner .btn,.progress-copy .btn,.todo-bar .btn,.todo-item .btn,.report-filters .btn,.terms-add .btn,.ta-invitable .btn,.weekly-undo{flex:0 0 auto}.btn.small{flex:0 0 auto;min-height:30px;padding:4px 10px;font-size:var(--fs-small);border-radius:var(--r-xs)}.btn.small.active{border-color:var(--primary);color:var(--primary)}.btn.ghost{color:var(--muted);border-color:transparent;background:transparent}.btn.ghost:hover{color:var(--text);border-color:var(--border)}.todo-bar{position:sticky;top:calc(var(--topbar-h, 56px) + 6px);z-index:4;margin:0 0 14px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--card);box-shadow:0 4px 14px #0000002e}body.admin:where(.theme-light) .todo-bar{box-shadow:0 4px 14px #10233d14}.todo-top{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.todo-count{flex:0 0 auto;padding:3px 10px;border-radius:var(--r-pill);background:var(--sunken);border:1px solid var(--hairline);color:var(--muted);font-size:var(--fs-small);font-weight:700;white-space:nowrap}.todo-first{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px;min-width:0;flex:1 1 240px}.todo-first-lead{font-size:var(--fs-micro);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);white-space:nowrap}.todo-first-what{font-size:var(--fs-lead);font-weight:650;color:var(--text);line-height:1.4}.todo-go{flex:0 0 auto}.todo-more{flex:0 0 auto;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;padding:4px 2px;font:inherit;font-size:var(--fs-small);font-weight:600;color:var(--muted);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.todo-more:hover{color:var(--text)}.todo-more:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.todo-list{list-style:none;margin:12px 0 2px;padding:0;border-top:1px solid var(--hairline)}.todo-item{display:flex;align-items:flex-start;gap:11px;padding:11px 2px;border-bottom:1px solid var(--hairline)}.todo-item:last-child{border-bottom:0}.todo-no{flex:0 0 auto;width:22px;height:22px;margin-top:1px;border-radius:var(--r-pill);background:var(--raised);color:var(--text);font-size:var(--fs-small);font-weight:700;line-height:22px;text-align:center}.todo-item:first-child .todo-no{background:var(--primary);color:var(--primary-text)}.todo-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 auto}.todo-what{font-size:var(--fs-body);font-weight:650;color:var(--text);line-height:1.4}.todo-why{font-size:var(--fs-small);color:var(--muted);line-height:1.5;max-width:62ch}.todo-item-go{flex:0 0 auto;margin-top:1px}@media (max-width: 560px){.todo-first{flex-basis:100%}.todo-go{flex:1 1 auto}}.card-flash{animation:card-flash 1.2s ease-out}@keyframes card-flash{0%{box-shadow:0 0 0 2px var(--primary)}to{box-shadow:0 0 0 2px #3b82f600}}.inline-confirm{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;padding:4px 6px;border:1px dashed var(--border);border-radius:var(--r-sm);background:var(--tone-info-fill)}.inline-confirm-q{font-size:var(--fs-small);color:var(--muted);max-width:320px}.btn.armed{border-color:currentColor;font-weight:700}.bulk-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:8px 0 10px;padding:7px 10px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--sunken);font-size:var(--fs-body)}.bulk-pick-all{display:inline-flex;align-items:center;gap:7px;color:var(--muted);cursor:pointer}.bulk-actions{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.fr-pickable{display:flex;align-items:flex-start;gap:8px;min-width:0}.fr-pick{margin-top:3px;flex:none}.fr-pick:disabled{opacity:.35}.reopen-form{display:flex;flex-direction:column;gap:5px;min-width:0}.reopen-reason{width:100%;min-width:0;padding:7px 9px;border-radius:var(--r-xs);border:1px solid var(--border);background:var(--field);color:var(--text);font:inherit;font-size:var(--fs-body);resize:vertical}.reopen-reason:focus{outline:none;border-color:var(--primary)}.reopen-actions{display:flex;gap:6px;flex-wrap:wrap}.activity-range{display:flex;gap:6px;margin:0 0 10px}.activity-list{list-style:none;margin:0;padding:0}.activity-row{display:grid;grid-template-columns:78px minmax(0,1fr) auto;gap:10px;align-items:baseline;padding:7px 0;border-top:1px solid var(--border);font-size:var(--fs-body)}.activity-row:first-child{border-top:0}.activity-kind{font-size:var(--fs-micro);font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}.activity-row.kind-undo .activity-kind{color:var(--tone-warn)}.activity-row.kind-review .activity-kind{color:var(--tone-info)}.activity-row.kind-nudge .activity-kind{color:var(--tone-good)}.activity-text{min-width:0;overflow-wrap:anywhere}.activity-when{color:var(--muted);font-size:var(--fs-small);white-space:nowrap}@media (max-width: 560px){.activity-row{grid-template-columns:minmax(0,1fr) auto}.activity-kind{grid-column:1 / -1}}.queued-banner{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:0 0 14px;padding:9px 12px;border:1px solid var(--tone-warn-line);border-radius:var(--r-sm);background:var(--tone-warn-fill);color:var(--tone-warn);font-size:var(--fs-body);font-weight:600}.progress-summary{display:flex;align-items:center;gap:14px;margin:0 0 14px;padding:12px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--card)}.progress-ring{flex:none;width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--tone-good) var(--pct),var(--track) 0)}.progress-ring>span{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;background:var(--card);font-size:var(--fs-small);font-weight:700}.progress-copy{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0}.weekly-dates{display:flex;align-items:center;gap:8px;margin:6px 0 0;font-size:var(--fs-small);color:var(--muted)}.weekly-now{padding:1px 8px;border-radius:var(--r-pill);border:1px solid var(--tone-info-line);background:var(--tone-info-fill);color:var(--tone-info);font-size:var(--fs-micro);font-weight:700}.weekly-prev{margin:5px 0 0;font-size:var(--fs-small);line-height:1.45;color:var(--muted)}.weekly-streak{color:var(--tone-urgent)}.weekly-undo{align-self:flex-start;margin-top:4px}.report-focus{font-size:var(--fs-small)}@media (prefers-reduced-motion: reduce){.card-flash{animation:none}}.ta-lead{margin-bottom:6px}.ta-explainer{margin:0 0 10px}.ta-explainer>summary{cursor:pointer;color:var(--muted);font-size:var(--fs-body);width:fit-content}.ta-explainer>summary:hover{color:var(--text)}.ta-explainer>p{margin:8px 0 0}.ta-flags{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}.attention-chip{padding:4px 11px;border-radius:var(--r-pill);border:1px solid var(--border);background:var(--sunken);color:var(--text);font-size:var(--fs-small);font-weight:600;line-height:1.5}.attention-chip.tone-warn{color:var(--tone-warn);border-color:var(--tone-warn-line);background:var(--tone-warn-fill)}.attention-chip.tone-info{color:var(--tone-info);border-color:var(--tone-info-line);background:var(--tone-info-fill)}.ta-flags span.attention-chip{cursor:default}.ta-invitable{margin:12px 0;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--sunken)}.ta-invitable-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:6px;font-size:var(--fs-body)}.ta-invitable-list{list-style:none;margin:0;padding:0}.ta-invitable-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 0;border-top:1px solid var(--border)}.ta-invitable-row:first-child{border-top:0}.ta-invitable-who{display:flex;flex-direction:column;min-width:0;font-size:var(--fs-body)}.ta-invitable-who .fr-sub{margin:0}.ta-invitable-row .btn{flex:0 0 auto}.ta-invitable-row.is-active{background:var(--tone-info-fill);box-shadow:inset 3px 0 0 var(--tone-info-line);padding-left:8px;border-radius:var(--r-xs)}.ta-row-ideas{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.ta-ideas{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px}.ta-idea{cursor:pointer;font-weight:500}.ta-ideas-note{flex:1 1 100%;margin:0}:root{--bg: #090b14;--surface-1: #141a2c;--surface-2: #1b2238;--glass: rgba(20, 26, 46, .72);--card: var(--surface-1);--hairline: rgba(255, 255, 255, .08);--hairline-strong: rgba(255, 255, 255, .18);--border: var(--hairline);--text: #e8ebf3;--muted: #98a3bb;--primary: #2c3f6b;--primary-hi: #46608f;--primary-text: #ffffff;--ring: rgba(221, 231, 250, .55);--r-btn: var(--r-md);--r-btn-sm: var(--r-sm);--r-card: var(--r-lg);--btn-h: 42px;--btn-h-sm: 32px;--ease: cubic-bezier(.32, .72, 0, 1);--t-press: 90ms;--t-hover: .16s;--t-in: .24s;--st-done: #34d399;--st-leave: #60a5fa;--st-missed: #f87171;--tone-good-fill: rgba(16, 185, 129, .12);--tone-good-line: rgba(52, 211, 153, .55);--btn-gloss: rgba(255, 255, 255, .22);--btn-shadow: rgba(0, 0, 0, .85);--primary-hover-hi: #547099;--primary-hover: #344a7a}body:not(.admin){background:radial-gradient(1100px 560px at 50% -8%,rgba(47,111,240,.1),transparent 70%),var(--bg);background-attachment:fixed}body:not(.admin) .card{background:var(--glass);-webkit-backdrop-filter:blur(16px) saturate(130%);backdrop-filter:blur(16px) saturate(130%);border:1px solid var(--hairline);border-radius:var(--r-card);box-shadow:0 1px #ffffff0a inset,0 10px 30px -18px #000000e6}body:not(.admin) .topbar{background:#090b14c7;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--hairline)}body:not(.admin) .weekly{background:var(--surface-2);border-color:var(--hairline);border-radius:var(--r-md)}body:not(.admin) .search,body:not(.admin) .week-select,body:not(.admin) .term-select{background:var(--surface-2);border-color:var(--hairline);border-radius:var(--r-sm);transition:border-color var(--t-hover) var(--ease),box-shadow var(--t-hover) var(--ease)}body:not(.admin) .search:focus,body:not(.admin) .week-select:focus,body:not(.admin) .term-select:focus{outline:none;border-color:var(--hairline-strong);box-shadow:0 0 0 3px var(--ring)}.btn{min-height:var(--btn-h);padding:9px 14px;border-radius:var(--r-btn);font-size:var(--fs-body);font-weight:600;gap:8px;transition:transform var(--t-press) var(--ease),background-color var(--t-hover) var(--ease),border-color var(--t-hover) var(--ease),box-shadow var(--t-hover) var(--ease)}.btn:hover:not(:disabled){border-color:var(--hairline-strong);background:#ffffff0d;transform:translateY(-1px)}.btn:active:not(:disabled){transform:translateY(0) scale(.975)}.btn:focus-visible{outline:none;box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--ring)}.btn.primary{background:linear-gradient(180deg,var(--primary-hi),var(--primary));border-color:#ffffff38;color:var(--primary-text);box-shadow:0 1px 0 var(--btn-gloss) inset,0 10px 22px -10px var(--btn-shadow)}.btn.primary:hover:not(:disabled){background:linear-gradient(180deg,var(--primary-hover-hi),var(--primary-hover));box-shadow:0 1px 0 var(--btn-gloss) inset,0 14px 26px -10px var(--btn-shadow)}.btn.primary:disabled{background:var(--surface-2);color:var(--muted);box-shadow:none;opacity:1}.btn.missed{background:var(--tone-warn-fill);color:#fcd34d;border-color:transparent;font-weight:600}.btn.missed:hover:not(:disabled){background:#f59e0b38;border-color:var(--tone-warn-line)}.btn.confirm{background:var(--tone-good-fill);color:#6ee7b7;border-color:transparent}.btn.confirm:hover:not(:disabled){background:#10b98138;border-color:var(--tone-good-line)}.btn.warn,.btn.warn:hover{background:transparent;color:var(--muted);border:1px dashed var(--hairline-strong);font-weight:500;transform:none;cursor:not-allowed}.btn.whatsapp{background:transparent;color:var(--text);border-color:var(--hairline);font-weight:600}.btn.whatsapp:hover:not(:disabled){background:#ffffff0d;border-color:var(--hairline-strong)}.btn-icon{flex:0 0 auto;width:15px;height:15px;opacity:.85}.btn.small{min-height:var(--btn-h-sm);padding:4px 11px;font-size:var(--fs-small);border-radius:var(--r-btn-sm)}body:not(.admin) .actions{display:flex;flex-wrap:wrap;gap:8px}body:not(.admin) .actions .btn{flex:1 1 calc(50% - 4px)}body:not(.admin) .actions .btn{min-height:36px;padding:8px 10px;font-size:var(--fs-body);font-weight:500;color:var(--muted)}body:not(.admin) .actions .btn:hover:not(:disabled){color:var(--text)}.card.student.alert,.card.student.needs-attendance{border:1px solid var(--hairline);background:var(--glass);animation:none}.card.student.needs-attendance,.card.student.alert.sev-low{box-shadow:inset 4px 0 #f59e0b,0 10px 30px -18px #000000e6}.card.student.alert.sev-high{box-shadow:inset 4px 0 0 var(--st-missed),0 10px 30px -18px #000000e6}.alert-flag{background:var(--tone-warn-fill);border:1px solid var(--tone-warn-line);color:#fcd34d;font-weight:600;padding:3px 10px;border-radius:var(--r-xs)}.card.student.alert.sev-high .alert-flag{background:var(--tone-urgent-fill);border-color:var(--tone-urgent-line);color:#fca5a5}@keyframes riseIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes popIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}body:not(.admin) .card.student{animation:riseIn var(--t-in) var(--ease) both}body:not(.admin) .grid>*:nth-child(2){animation-delay:30ms}body:not(.admin) .grid>*:nth-child(3){animation-delay:60ms}body:not(.admin) .grid>*:nth-child(4){animation-delay:90ms}body:not(.admin) .grid>*:nth-child(5){animation-delay:.12s}body:not(.admin) .grid>*:nth-child(6){animation-delay:.15s}body:not(.admin) .grid>*:nth-child(n+7){animation-delay:.18s}.weekly-status{animation:popIn var(--t-in) var(--ease) both}.weekly-undo,.alert-flag{animation:riseIn var(--t-in) var(--ease) both}.btn.is-busy{position:relative;color:transparent!important;pointer-events:none}.btn.is-busy:after{content:"";position:absolute;width:15px;height:15px;border-radius:50%;border:2px solid var(--primary-text);border-top-color:transparent;animation:sync-spin .62s linear infinite}@media (prefers-reduced-motion: reduce){.btn,.week-dot,body:not(.admin) .card.student,.weekly-status,.weekly-undo,.alert-flag{animation:none!important;transition:none!important}.btn:hover:not(:disabled),.btn:active:not(:disabled){transform:none}.week-node:hover .week-dot{transform:none}}body.admin:where(.theme-light){--surface-1: #ffffff;--surface-2: #f4f8fd;--glass: #ffffff;--hairline: #cbdcf0;--hairline-strong: #9fbfe4;--primary-hi: #2f6ff0;--ring: rgba(29, 78, 216, .35);--btn-hover-tint: rgba(16, 35, 61, .05)}:root{--btn-hover-tint: rgba(255, 255, 255, .05)}.btn:hover:not(:disabled){background:var(--btn-hover-tint)}body.admin:where(.theme-light) .btn.missed{color:#92400e}body.admin:where(.theme-light) .btn.confirm{color:#065f46}body.admin:where(.theme-light) .alert-flag{color:#92400e}body.admin:where(.theme-light) .btn.is-busy:after{border-color:var(--primary-text);border-top-color:transparent}body.admin:where(.theme-light){--st-done: #059669;--st-leave: #2563eb;--st-missed: #dc2626}body.admin:where(.theme-light) .week-dot{background:#fff}.alert-flag{align-self:flex-start}body.admin:where(.theme-light) .card.student.alert .alert-flag{color:#92400e}body.admin:where(.theme-light) .card.student.alert.sev-high .alert-flag{color:#991b1b}.reminder{background:var(--glass);-webkit-backdrop-filter:blur(18px) saturate(130%);backdrop-filter:blur(18px) saturate(130%);color:var(--text);border:1px solid var(--hairline);border-radius:var(--r-card);box-shadow:0 30px 70px -20px #000000d9}.reminder h2{color:var(--text);font-size:var(--fs-head);display:flex;align-items:center;gap:8px}.reminder>p{color:var(--muted)}.reminder-list{color:var(--text)}.reminder-list li{margin-bottom:4px}.reminder-list strong{color:#fca5a5;font-weight:600}.reminder-backdrop{background:#05070db8}body.admin:where(.theme-light) .reminder{background:var(--card)}body.admin:where(.theme-light) .reminder-list strong{color:#b91c1c}body.admin:where(.theme-light) .reminder-backdrop{background:#10233d73}.reminder-actions .btn{flex:0 0 auto}.wr-wrap{position:relative;margin:8px 0 2px}.wr-rail{position:relative;width:max-content;max-width:100%;margin:0 auto}.wr{display:block;width:100%;height:auto;overflow:visible}.wr-stars circle{fill:#fff;opacity:.22}body.admin .wr-stars circle{opacity:.12}body.admin:where(.theme-light) .wr-stars circle{fill:#10233d}.wr-link{stroke:#ffffff24;stroke-width:1.6;stroke-linecap:round;transition:stroke var(--t-hover) var(--ease),stroke-width var(--t-hover) var(--ease)}.wr-link.is-lit{stroke:#fff;stroke-width:2.2;filter:drop-shadow(0 0 2px rgba(255,255,255,.55))}.wr-link.is-weak{stroke:#fff6;stroke-width:1.6;stroke-dasharray:3.5 3.5}.wr-link.is-cool{stroke:#a5d8f3;stroke-width:2;filter:drop-shadow(0 0 2px rgba(165,216,243,.45))}.wr-link.is-fade{stroke-width:2.1;filter:drop-shadow(0 0 2px rgba(214,238,252,.4))}.wr-stop-warm{stop-color:#fff}.wr-stop-cool{stop-color:#a5d8f3}.wr-link.is-sever{stroke:#b91c1c;stroke-width:1.8;stroke-dasharray:1.4 2.6;filter:none}.wr-link.is-void{stroke-width:1.9;filter:none}.wr-stop-edge{stop-color:#fff;stop-opacity:.55}.wr-stop-void{stop-color:#fff;stop-opacity:0}.wr-hit{fill:transparent}.wr-node{cursor:pointer}.wr-back{fill:var(--surface-2)}.wr-dot{fill:transparent;stroke:#ffffffb8;stroke-width:2.2;transition:fill var(--t-hover) var(--ease),stroke var(--t-hover) var(--ease),transform var(--t-hover) var(--ease)}.wr-label{fill:var(--muted);font-family:var(--font-ui);font-size:var(--fs-micro);font-weight:600;font-variant-numeric:tabular-nums;transition:fill var(--t-hover) var(--ease)}.wr-node.is-done .wr-dot{fill:#fff;stroke:#fff}.wr-node.is-leave .wr-dot{fill:var(--st-leave);stroke:#cfe0ff}.wr-node.is-missed .wr-dot{fill:var(--st-missed);stroke:#ffd7d7}.wr-node.is-overdue .wr-dot{fill:#3a1d24;stroke:var(--st-missed)}.wr-node.is-current .wr-dot{fill:var(--surface-2);stroke:#fff}.wr-node.is-future .wr-dot{fill:var(--surface-2);stroke:#ffffff38}.wr-node.is-done .wr-label,.wr-node.is-active .wr-label,.wr-node.is-hover .wr-label{fill:var(--text)}.wr-node.is-overdue .wr-label,.wr-node.is-missed .wr-label{fill:#fca5a5}.wr-halo{fill:none;stroke:var(--ring);stroke-width:1.6}.wr-node .wr-dot,.wr-node .wr-back,.wr-node .wr-halo{transform-box:fill-box;transform-origin:center}.wr-node:hover .wr-dot,.wr-node:focus-visible .wr-dot{transform:scale(1.5)}.wr-node:hover .wr-back,.wr-node:focus-visible .wr-back{transform:scale(1.5)}.wr-node:hover .wr-dot{stroke:#fff}.wr-node:focus,.wr-node:focus-visible,.wr-node:focus-within,.wr:focus,.wr :focus{outline:none!important}.wr-node{-webkit-tap-highlight-color:transparent}.wr-node:focus-visible .wr-hit{fill:#ffffff0d;stroke:var(--ring);stroke-width:1.4}.wr-node .wr-hit{transition:fill var(--t-hover) var(--ease),stroke var(--t-hover) var(--ease)}body.admin:where(.theme-light) .wr-node:focus-visible .wr-hit{fill:#10233d0d}.wr-ripple{position:absolute;aspect-ratio:1;translate:-50% -50%;pointer-events:none}.wr-ripple i{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:1.5px solid var(--st-missed);opacity:0;animation:wrRipple 2.4s ease-out infinite;will-change:transform,opacity}.wr-ripple i:nth-child(2){animation-delay:1.2s}@keyframes wrRipple{0%{transform:scale(1);opacity:0}12%{opacity:.8}to{transform:scale(3.1);opacity:0}}.wr-ripple.is-current i{border-color:#fff;animation-duration:3.2s}.wr-ripple.is-current i:nth-child(2){animation-delay:1.6s}@keyframes wrTwinkle{0%,to{opacity:.09}50%{opacity:.32}}.wr-stars circle{animation:wrTwinkle 4.6s ease-in-out infinite}.wr-stars circle:nth-child(3n){animation-duration:3.8s;animation-delay:-1.3s}.wr-stars circle:nth-child(3n+1){animation-duration:6.7s;animation-delay:-2.9s}.wr-stars circle:nth-child(4n){animation-duration:5.3s;animation-delay:-4.1s}body.admin .wr-stars circle{animation-name:wrTwinkleLight}@keyframes wrTwinkleLight{0%,to{opacity:.05}50%{opacity:.18}}.wr-tip{position:absolute;top:100%;left:0;right:0;z-index:3;display:flex;flex-direction:column;gap:2px;margin-top:2px;padding:8px 10px;border:1px solid var(--hairline-strong);border-radius:var(--r-sm);background:#090b14f0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 16px 34px -14px #000000f2;font-size:var(--fs-small);line-height:1.35;pointer-events:none;animation:riseIn .14s var(--ease) both}.wr-tip-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-weight:700;color:var(--text)}.wr-tip-state{font-size:var(--fs-micro);font-weight:600;text-transform:lowercase}.wr-tip-state.is-done{color:#fff}.wr-tip-state.is-leave{color:var(--st-leave)}.wr-tip-state.is-missed,.wr-tip-state.is-overdue{color:#fca5a5}.wr-tip-state.is-current,.wr-tip-state.is-future,.wr-tip-line{color:var(--muted)}.wr-tip-lesson{color:var(--text)}.wr-tip-meta{font-size:var(--fs-micro);opacity:.8}body.admin:where(.theme-light) .wr-tip{background:#fff;border-color:var(--hairline);box-shadow:0 16px 34px -14px #10233d59}body.admin:where(.theme-light) .wr-tip-state.is-done{color:#10233d}body.admin:where(.theme-light) .wr-link{stroke:#10233d29}body.admin:where(.theme-light) .wr-link.is-lit{stroke:#10233d;filter:none}body.admin:where(.theme-light) .wr-link.is-weak{stroke:#10233d6b}body.admin:where(.theme-light) .wr-link.is-cool{stroke:#38a3d1;filter:none}body.admin:where(.theme-light) .wr-link.is-fade{filter:none}body.admin:where(.theme-light) .wr-stop-warm{stop-color:#10233d}body.admin:where(.theme-light) .wr-stop-cool{stop-color:#38a3d1}body.admin:where(.theme-light) .wr-link.is-sever{stroke:#991b1b}body.admin:where(.theme-light) .wr-stop-edge{stop-color:#10233d;stop-opacity:.55}body.admin:where(.theme-light) .wr-stop-void{stop-color:#10233d;stop-opacity:0}body.admin:where(.theme-light) .wr-dot{stroke:#10233d8c}body.admin:where(.theme-light) .wr-back{fill:var(--surface-2)}body.admin:where(.theme-light) .wr-node.is-done .wr-dot{fill:#10233d;stroke:#10233d}body.admin:where(.theme-light) .wr-node.is-overdue .wr-dot{fill:#fee2e2}body.admin:where(.theme-light) .wr-node.is-current .wr-dot{stroke:#10233d}body.admin:where(.theme-light) .wr-node.is-future .wr-dot{stroke:#10233d40}body.admin:where(.theme-light) .wr-node:hover .wr-dot{stroke:#10233d}body.admin:where(.theme-light) .wr-ripple i{border-color:#dc2626}body.admin:where(.theme-light) .wr-ripple.is-current i{border-color:#10233d}body.admin:where(.theme-light) .wr-node.is-done .wr-label,body.admin:where(.theme-light) .wr-node.is-active .wr-label{fill:#10233d}body.admin:where(.theme-light) .wr-node.is-overdue .wr-label,body.admin:where(.theme-light) .wr-node.is-missed .wr-label{fill:#b91c1c}.weekly-actions{margin-top:10px}@keyframes wrPulseStill{0%,to{opacity:.1}50%{opacity:.92}}@media (prefers-reduced-motion: reduce){.wr-ripple i{transform:scale(1.75);border-width:2px;animation:wrPulseStill 2.6s ease-in-out infinite}.wr-ripple i:nth-child(2){display:none}.wr-ripple.is-current i{animation-duration:3.4s}.wr-stars circle{animation-duration:7s}.wr-stars circle:nth-child(3n),.wr-stars circle:nth-child(3n+1),.wr-stars circle:nth-child(4n){animation-duration:7s}.wr-link,.wr-dot,.wr-back,.wr-tip{transition:none!important}.wr-node:hover .wr-dot,.wr-node:hover .wr-back{transform:none}}.weekly-lessons,.wr-tip-lessons{display:inline-flex;align-items:center;padding:1px 7px;border:1px solid var(--hairline-strong);border-radius:var(--r-xs);background:#ffffff0f;color:var(--text);font-size:var(--fs-micro);font-weight:600;white-space:nowrap}.weekly-lessons{margin-left:6px}.wr-tip-lessons{align-self:flex-start;margin:2px 0}body.admin:where(.theme-light) .weekly-lessons,body.admin:where(.theme-light) .wr-tip-lessons{background:#10233d0f;border-color:var(--hairline)}.btn[data-tip]{position:relative}.btn[data-tip]:after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%) translateY(3px);z-index:6;width:max-content;max-width:min(240px,78vw);padding:7px 9px;border:1px solid var(--hairline-strong);border-radius:var(--r-xs);background:#090b14f5;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 14px 30px -12px #000000f2;color:var(--text);font-size:var(--fs-micro);font-weight:500;line-height:1.35;text-align:left;white-space:normal;opacity:0;pointer-events:none;transition:opacity .12s var(--ease),transform .12s var(--ease)}.btn[data-tip]:hover:after,.btn[data-tip]:focus-visible:after{opacity:1;transform:translate(-50%) translateY(0);transition-delay:.45s}.actions,.weekly-actions{position:relative}.actions .btn[data-tip],.weekly-actions .btn[data-tip]{position:static}.actions .btn[data-tip]:after,.weekly-actions .btn[data-tip]:after{left:0;right:0;width:auto;max-width:none;text-align:center;transform:translateY(3px)}.actions .btn[data-tip]:hover:after,.actions .btn[data-tip]:focus-visible:after,.weekly-actions .btn[data-tip]:hover:after,.weekly-actions .btn[data-tip]:focus-visible:after{transform:translateY(0)}body.admin:where(.theme-light) .btn[data-tip]:after{background:#fff;border-color:var(--hairline);color:var(--text);box-shadow:0 14px 30px -12px #10233d59}@media (prefers-reduced-motion: reduce){.btn[data-tip]:after{transition:none;transform:translate(-50%)}.actions .btn[data-tip]:after,.weekly-actions .btn[data-tip]:after{transform:none}}.pcr-list{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:12px}.pcr{border:1px solid var(--hairline);border-radius:var(--r-card);background:var(--surface-1);padding:14px 16px}.pcr-cardhead{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.pcr-cardhead .btn{flex:0 0 auto}.pcr-cardtoggle,.pcr-toggle{display:flex;align-items:center;gap:10px;width:100%;padding:0;border:0;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer}.pcr-cardtoggle{width:auto}.pcr-cardtoggle h2{margin:0}.pcr-toggle{padding:2px 0}.pcr-toggle:focus-visible,.pcr-cardtoggle:focus-visible{outline:none;border-radius:var(--r-btn-sm);box-shadow:0 0 0 3px var(--ring)}.pcr-chev{flex:0 0 auto;width:7px;height:7px;margin-left:3px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(-45deg);transform-origin:center;transition:transform var(--t-hover) var(--ease)}.pcr-toggle[aria-expanded=true] .pcr-chev,.pcr-cardtoggle[aria-expanded=true] .pcr-chev{transform:rotate(45deg)}.pcr-toggle:hover .pcr-chev,.pcr-cardtoggle:hover .pcr-chev{border-color:var(--text)}.pcr-summary{flex:0 0 auto;margin-left:auto;font-size:var(--fs-small);color:var(--muted);white-space:nowrap}.pcr-summary-apply{color:var(--text);font-weight:600}.pcr-collapse{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--t-in) var(--ease)}.pcr.is-open .pcr-collapse{grid-template-rows:1fr}.pcr-collapse-inner{overflow:hidden;min-height:0}.pcr.is-open .pcr-collapse-inner{padding-top:10px}@media (prefers-reduced-motion: reduce){.pcr-collapse,.pcr-chev{transition:none}}.pcr-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px;min-width:0}.pcr-name{font-size:var(--fs-lead);font-weight:700;color:var(--text);overflow-wrap:anywhere}.pcr-ref,.pcr-email{font-size:var(--fs-small);color:var(--muted);overflow-wrap:anywhere}.pcr-ref{border:1px solid var(--hairline);border-radius:var(--r-pill);padding:1px 8px;font-variant-numeric:tabular-nums}.pcr-grid{margin:0;display:grid;gap:1px;background:var(--hairline);border:1px solid var(--hairline);border-radius:var(--r-btn);overflow:hidden}.pcr-pair{display:grid;grid-template-columns:minmax(96px,168px) minmax(0,1fr);gap:0 14px;background:var(--surface-2);padding:7px 12px}.pcr-q{margin:0;font-size:var(--fs-small);line-height:1.45;color:var(--muted);text-align:right;overflow-wrap:anywhere}.pcr-a{margin:0;font-size:var(--fs-body);line-height:1.45;font-weight:600;color:var(--text);overflow-wrap:anywhere}.pcr-parsed{display:grid;gap:8px;margin-top:10px}.pcr-parsed-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.pcr-parsed-label{font-size:var(--fs-micro);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.pcr-chips{display:flex;flex-wrap:wrap;gap:6px;min-width:0}.pcr-chip{display:inline-flex;align-items:baseline;gap:6px;max-width:100%;padding:3px 9px;border:1px solid var(--hairline-strong);border-radius:var(--r-pill);font-size:var(--fs-small);background:var(--surface-2)}.pcr-chip-k{color:var(--muted)}.pcr-chip-v{font-weight:600;color:var(--text);overflow-wrap:anywhere}.pcr-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.pcr-actions .btn{flex:0 0 auto}.pcr-nowa{font-size:var(--fs-small);color:var(--muted);align-self:center}@media (max-width: 560px){.pcr-pair{grid-template-columns:minmax(0,1fr);gap:2px}.pcr-q{text-align:left}.pcr-actions .btn{flex:1 1 calc(50% - 4px)}}body.admin{--tone-good-fill: #d6f0e4;--btn-shadow: rgba(23, 51, 122, .45);--row-hover: rgba(29, 78, 216, .05)}body.admin:where(.theme-light){--tone-good-line: #63bf9b;--btn-gloss: rgba(255, 255, 255, .3);--primary-hover-hi: #3f7cf3;--primary-hover: #1a44be}body.admin{background-attachment:fixed}body.admin:where(.theme-light){background:radial-gradient(1100px 560px at 50% -10%,rgba(29,78,216,.1),transparent 70%),var(--bg)}body.admin .topbar{-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%)}body.admin:where(.theme-light) .topbar{background:#ffffffb8;border-bottom:1px solid var(--hairline)}body.admin .navlink{border-radius:var(--r-btn);padding:7px 13px;font-size:var(--fs-body);transition:background-color var(--t-hover) var(--ease),color var(--t-hover) var(--ease)}body.admin:where(.theme-light) .navlink{color:var(--muted)}body.admin:where(.theme-light) .navlink:hover{background:var(--btn-hover-tint);color:var(--text)}body.admin:where(.theme-light) .navlink.active{background:linear-gradient(180deg,var(--primary-hi),var(--primary));color:var(--primary-text);box-shadow:0 1px 0 var(--btn-gloss) inset,0 8px 18px -10px var(--btn-shadow)}body.admin:where(.theme-light) .navlink:focus-visible{outline:none;box-shadow:0 0 0 2px #fff,0 0 0 4px var(--ring)}body.admin .card{border-radius:var(--r-card)}body.admin:where(.theme-light) .card{background:var(--card);border:1px solid var(--hairline);box-shadow:0 1px 2px #17337a0f,0 12px 28px -18px #17337a4d}body.admin .card h2{font-size:var(--fs-lead);letter-spacing:-.01em;margin:0 0 4px}body.admin .card>.muted{margin-top:0}body.admin .search,body.admin .week-select,body.admin .term-select{border-radius:var(--r-sm);transition:border-color var(--t-hover) var(--ease),box-shadow var(--t-hover) var(--ease)}body.admin:where(.theme-light) .search,body.admin:where(.theme-light) .week-select,body.admin:where(.theme-light) .term-select{background:var(--field);border:1px solid var(--hairline);color:var(--text)}body.admin .week-select,body.admin .term-select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding:10px 34px 10px 12px;font-size:var(--fs-lead);cursor:pointer;background-repeat:no-repeat;background-position:right 12px center}body.admin:where(.theme-light) .week-select,body.admin:where(.theme-light) .term-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%235a6b82' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}body.admin:where(.theme-dark) .week-select,body.admin:where(.theme-dark) .term-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%239aa3b2' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}body.admin:where(.theme-dark) .search,body.admin:where(.theme-dark) .week-select,body.admin:where(.theme-dark) .term-select{background-color:var(--field, var(--sunken));border:1px solid var(--border);color:var(--text)}body.admin:where(.theme-light) .search:focus,body.admin:where(.theme-light) .week-select:focus,body.admin:where(.theme-light) .term-select:focus{outline:none;border-color:var(--hairline-strong);box-shadow:0 0 0 3px var(--ring)}body.admin .review-table{gap:0;border-radius:var(--r-btn);overflow:hidden}body.admin:where(.theme-light) .review-table{border:1px solid var(--hairline);background:var(--card)}body.admin .review-table .fr-row{border-radius:0;padding:11px 14px;transition:background-color var(--t-hover) var(--ease)}body.admin:where(.theme-light) .review-table .fr-row{background:transparent;border-top:1px solid var(--hairline)}body.admin:where(.theme-light) .review-table .fr-row:hover{background:var(--row-hover)}body.admin .review-table .fr-head,body.admin .review-table .fr-head:hover{padding:8px 14px;font-size:var(--fs-micro);font-weight:700;letter-spacing:.05em}body.admin:where(.theme-light) .review-table .fr-head,body.admin:where(.theme-light) .review-table .fr-head:hover{background:var(--surface-2);border-top:0;border-bottom:1px solid var(--hairline-strong);color:var(--muted)}body.admin:where(.theme-light) .review-table .fr-head+.fr-row{border-top:0}body.admin .report-num,body.admin .review-marked,body.admin .review-week{font-variant-numeric:tabular-nums}body.admin .fr-sub{font-size:var(--fs-small)}body.admin:where(.theme-light) .fr-sub{color:var(--muted)}body.admin:where(.theme-light) .review-week{background:var(--surface-2);border-color:var(--hairline);color:var(--text)}body.admin .review-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}body.admin .review-actions .btn{flex:0 0 auto;min-height:32px;padding:5px 12px;font-size:var(--fs-small)}body.admin .btn.confirm{font-weight:600}body.admin:where(.theme-light) .btn.confirm{background:var(--tone-good-fill);color:#0b5c43;border-color:var(--tone-good-line)}body.admin:where(.theme-light) .btn.confirm:hover:not(:disabled){background:#c2e8d6;border-color:#3ea881}body.admin .btn.missed{font-weight:600}body.admin:where(.theme-light) .btn.missed{background:#fde9d2;color:#8a4603;border-color:#e9b877}body.admin:where(.theme-light) .btn.missed:hover:not(:disabled){background:#fbdcb8;border-color:#d89f4e}body.admin:where(.theme-light) .btn:hover:not(:disabled){border-color:var(--hairline-strong)}body.admin:where(.theme-light) .btn:focus-visible{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--ring)}body.admin .fr-badge{font-weight:700;padding:0 7px}body.admin:where(.theme-light) .fr-badge{background:var(--tone-warn-fill);border:1px solid var(--tone-warn-line);color:#9a4f04}body.admin .fr-badge.reviewed,body.admin .fr-badge.good{padding:1px 8px}body.admin:where(.theme-light) .fr-badge.reviewed,body.admin:where(.theme-light) .fr-badge.good{background:var(--tone-good-fill);border-color:var(--tone-good-line);color:var(--tone-good)}body.admin .card{animation:riseIn var(--t-in) var(--ease) both}body.admin .grid>*:nth-child(2){animation-delay:30ms}body.admin .grid>*:nth-child(3){animation-delay:60ms}body.admin .grid>*:nth-child(4){animation-delay:90ms}body.admin .grid>*:nth-child(5){animation-delay:.12s}body.admin .grid>*:nth-child(n+6){animation-delay:.15s}@media (prefers-reduced-motion: reduce){body.admin .card{animation:none}}@media (max-width: 599px){body.admin .topbar-inner{padding:10px 12px}body.admin .review-actions{justify-content:flex-start}}body.motion-full .wr-ripple i{transform:none;animation:wrRipple 2.4s ease-out infinite}body.motion-full .wr-ripple i:nth-child(2){display:block;animation-delay:1.2s}body.motion-full .wr-ripple.is-current i{animation-duration:3.2s}body.motion-full .wr-ripple.is-current i:nth-child(2){animation-delay:1.6s}body.motion-full .wr-stars circle{animation:wrTwinkle 4.6s ease-in-out infinite}body.motion-full .wr-stars circle:nth-child(3n){animation-duration:3.8s;animation-delay:-1.3s}body.motion-full .wr-stars circle:nth-child(3n+1){animation-duration:6.7s;animation-delay:-2.9s}body.motion-full .wr-stars circle:nth-child(4n){animation-duration:5.3s;animation-delay:-4.1s}body.motion-full.admin .wr-stars circle{animation-name:wrTwinkleLight}body.motion-full .wr-link,body.motion-full .wr-dot,body.motion-full .wr-back,body.motion-full .wr-tip{transition:transform var(--t-hover) var(--ease),opacity var(--t-hover) var(--ease),stroke var(--t-hover) var(--ease),fill var(--t-hover) var(--ease)!important}body.motion-full .wr-node:hover .wr-dot,body.motion-full .wr-node:hover .wr-back{transform:scale(1.5)}body.motion-full .card.student{animation:riseIn var(--t-in) var(--ease) both}body.motion-full .weekly-status{animation:popIn var(--t-in) var(--ease) both}body.motion-reduced .wr-ripple i{transform:scale(1.75);border-width:2px;animation:wrPulseStill 2.6s ease-in-out infinite}body.motion-reduced .wr-ripple i:nth-child(2){display:none}body.motion-reduced .wr-ripple.is-current i{animation-duration:3.4s}body.motion-reduced .wr-stars circle,body.motion-reduced .wr-stars circle:nth-child(3n),body.motion-reduced .wr-stars circle:nth-child(3n+1),body.motion-reduced .wr-stars circle:nth-child(4n){animation-duration:7s}body.motion-reduced .card,body.motion-reduced .card.student,body.motion-reduced .weekly-status,body.motion-reduced .weekly-undo,body.motion-reduced .alert-flag{animation:none}body.motion-reduced .wr-link,body.motion-reduced .wr-dot,body.motion-reduced .wr-back,body.motion-reduced .wr-tip{transition:none!important}body.motion-reduced .wr-node:hover .wr-dot,body.motion-reduced .wr-node:hover .wr-back{transform:none}body.motion-reduced .btn{transition:none}body.motion-reduced .btn:hover:not(:disabled){transform:none}body.motion-reduced .btn:active:not(:disabled){transform:none}.motion-setting{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.motion-choices{display:inline-flex;padding:3px;gap:2px;border:1px solid var(--hairline);border-radius:var(--r-btn);background:var(--surface-2)}.motion-choice{border:0;background:transparent;color:var(--muted);font:inherit;font-size:var(--fs-body);font-weight:600;padding:6px 12px;border-radius:var(--r-btn-sm);cursor:pointer}.motion-choice:hover{color:var(--text);background:var(--btn-hover-tint)}.motion-choice[aria-pressed=true]{background:var(--primary);color:var(--primary-text)}.motion-choice:focus-visible{outline:none;box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--ring)}.motion-note{margin:8px 0 0;font-size:var(--fs-small);color:var(--muted)}body.admin .card.student{animation:none}body.admin .grid>*{content-visibility:auto;contain-intrinsic-size:auto 420px}body.admin .card.student.alert,body.admin .card.student.needs-attendance{animation:none}.reminder.tma{max-width:560px;max-height:min(78vh,720px);display:flex;flex-direction:column}.tma-list{list-style:none;margin:12px 0 0;padding:0 2px 0 0;display:grid;gap:8px;overflow-y:auto}.tma-row{display:grid;grid-template-columns:minmax(0,1fr) max-content;align-items:start;gap:4px 12px;padding:10px 12px;border:1px solid var(--hairline);border-radius:var(--r-btn);background:var(--surface-2)}.tma-head{grid-column:1;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;min-width:0}.tma-name{font-weight:700;font-size:var(--fs-lead);color:var(--text);overflow-wrap:anywhere}.tma-weeks{font-size:var(--fs-micro);font-weight:700;padding:1px 7px;border-radius:var(--r-pill);background:var(--tone-warn-fill);border:1px solid var(--tone-warn-line);color:#9a4f04;white-space:nowrap}.tma-weeks.is-high{background:var(--tone-urgent-fill);border-color:var(--tone-urgent-line);color:var(--tone-urgent)}.tma-chased{font-size:var(--fs-micro);color:var(--muted);white-space:nowrap}.tma-students{grid-column:1;list-style:none;margin:2px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:4px 6px;min-width:0}.tma-students li{display:inline-flex;align-items:baseline;gap:5px;max-width:100%;padding:1px 7px;border:1px solid var(--hairline);border-radius:var(--r-pill);background:var(--card);font-size:var(--fs-micro)}.tma-student{color:var(--muted);overflow-wrap:anywhere}.tma-student-weeks{font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}.tma-act{grid-column:2;grid-row:1 / span 2;align-self:center}.tma-act .btn{flex:0 0 auto;white-space:nowrap}.tma-nophone{font-size:var(--fs-micro);color:var(--muted);white-space:nowrap}.tma-more{margin:10px 0 0;font-size:var(--fs-small);color:var(--muted)}@media (max-width: 520px){.tma-row{grid-template-columns:minmax(0,1fr)}.tma-act{grid-column:1;grid-row:auto;margin-top:6px}.tma-act .btn{width:100%}}.quick-missed{display:grid;gap:6px;justify-items:start;margin:8px 0 2px}.quick-missed-act{display:flex;flex-wrap:wrap;gap:6px;width:100%}.quick-missed-act .btn,.quick-missed .btn{flex:0 0 auto;white-space:nowrap}.quick-missed-reason{width:100%;min-width:0;padding:8px 10px;border-radius:var(--r-xs);border:1px solid var(--border);background:var(--bg);color:var(--text);font:inherit;font-family:inherit}@media (max-width: 400px){.quick-missed-act .btn{flex:1 1 100%}}.pcr-link{margin:8px 0 2px;padding:10px 12px;border:1px solid var(--tone-warn-line);border-radius:var(--r-btn);background:var(--tone-warn-fill)}.pcr-link-head{margin:0 0 8px;font-size:var(--fs-body);line-height:1.4}.pcr-link-none{margin:0 0 8px;font-size:var(--fs-body);color:var(--muted)}.pcr-link-cands{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.pcr-link-cands .btn{flex:0 0 auto;height:auto;min-height:var(--btn-h);flex-direction:column;align-items:flex-start;gap:1px;padding:6px 10px;text-align:left}.pcr-link-meta{font-size:var(--fs-micro);font-weight:400;color:var(--muted)}.pcr-link-manual{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.pcr-link-manual .btn{flex:0 0 auto;white-space:nowrap}.pcr-link-manual .search{flex:1 1 140px;min-width:0}@media (max-width: 460px){.pcr-link-manual .search,.pcr-link-manual .btn{flex:1 1 100%}}.ta-preview{margin-top:10px;padding:10px 12px;border:1px solid var(--hairline-strong);border-radius:var(--r-btn);background:var(--surface-2)}.ta-preview-head{margin:0 0 8px;font-size:var(--fs-body);font-weight:600}.ta-preview-list{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:4px;max-height:260px;overflow:auto}.ta-preview-list li{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;padding:5px 8px;border-radius:var(--r-xs);background:var(--bg);font-size:var(--fs-small)}.ta-preview-ref{font-weight:700}.ta-preview-mail{color:var(--text)}.ta-preview-name{color:var(--muted)}.ta-preview-what{flex:1 1 100%;color:var(--muted)}.ta-preview-list li.ta-warn .ta-preview-what{color:var(--st-missed)}.ta-preview-actions{display:flex;flex-wrap:wrap;gap:6px}.ta-preview-actions .btn{flex:0 0 auto;white-space:nowrap}.af-list{list-style:none;margin:8px 0 10px;padding:0;display:flex;flex-direction:column;gap:8px;max-height:320px;overflow:auto}.af-teacher{display:flex;flex-direction:column;gap:4px;padding:8px 10px;border-radius:var(--r-sm);background:var(--surface-2)}.af-teacher-name{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;font-weight:700;font-size:var(--fs-body)}.af-ref{font-weight:400;font-size:var(--fs-micro);color:var(--muted)}.af-weeks{display:flex;flex-wrap:wrap;gap:4px}.af-chip{display:inline-flex;align-items:baseline;gap:5px;padding:2px 7px;border-radius:var(--r-pill);border:1px solid var(--hairline);background:var(--bg);font-size:var(--fs-micro)}.af-wk{font-weight:700;color:var(--st-missed)}.af-more{align-self:center;font-size:var(--fs-micro);color:var(--muted)}.af-actions{display:flex;flex-wrap:wrap;gap:6px}.af-actions .btn{flex:0 0 auto;white-space:nowrap}:root{--cover: #cfe3ff;--cover-dim: rgba(207, 227, 255, .5);--cover-fill: rgba(147, 197, 253, .1)}body.admin:where(.theme-light){--cover: #2c5aa8;--cover-dim: rgba(44, 90, 168, .4);--cover-fill: #eef4fd}.card.student.is-cover{box-shadow:inset 4px 0 0 var(--cover),0 10px 30px -18px #000000e6}.card.student.is-cover-past{opacity:.82}.cover-flag{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin-bottom:8px;font-size:var(--fs-small)}.cover-flag-tag{border:1px dashed var(--cover-dim);background:var(--cover-fill);color:var(--cover);border-radius:var(--r-pill);padding:2px 9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.cover-flag-text{color:var(--muted);min-width:0;overflow-wrap:break-word}.cover-wait{border:1px dashed var(--cover-dim);background:var(--cover-fill);border-radius:var(--r-btn);padding:8px 10px;margin-bottom:8px;font-size:var(--fs-small);line-height:1.4;color:var(--muted)}.cover-given{border-style:dashed}.wr-orbit{fill:none;stroke:var(--cover-dim);stroke-width:1.2;stroke-dasharray:2.5 2.5}.wr-node.is-cover-mine .wr-orbit{stroke:var(--cover);stroke-width:1.6}.missed-reason-note{border:1px dashed var(--cover-dim);background:var(--cover-fill);border-radius:var(--r-btn);padding:7px 9px;font-size:var(--fs-small);line-height:1.4;color:var(--muted)}.cv-block{margin-top:14px}.cv-head{font-size:var(--fs-body);font-weight:700;margin-bottom:6px}.cv-subhead{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:var(--fs-small);font-weight:600;color:var(--muted);margin:10px 0 4px}.cv-reqs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.cv-reqs li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--r-btn);background:var(--bg);font-size:var(--fs-body)}.cv-req-who{display:flex;flex-direction:column;min-width:0}.cv-reqs li .btn{flex:0 0 auto;margin-left:auto;padding:6px 12px}.cv-form{display:flex;flex-wrap:wrap;gap:10px}.cv-field{display:flex;flex-direction:column;gap:4px;flex:1 1 200px;min-width:0;font-size:var(--fs-small);color:var(--muted)}.cv-field select{font-family:inherit;min-width:0}.cv-students{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:4px;max-height:260px;overflow-y:auto}.cv-students label{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--border);border-radius:var(--r-xs);background:var(--bg);font-size:var(--fs-body);cursor:pointer;min-width:0}.cv-students label span:first-of-type{min-width:0;overflow-wrap:break-word}.cv-students .fr-sub{margin-left:auto}.cv-note{margin-top:10px}.cv-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.cv-actions .btn{flex:0 0 auto}.cv-preview{margin-top:10px;border:1px dashed var(--cover-dim);background:var(--cover-fill);border-radius:var(--r-btn);padding:10px}.cv-preview-head{margin:0 0 6px;font-size:var(--fs-body);font-weight:600}.cv-preview-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px;font-size:var(--fs-small)}.cv-preview-list li{display:flex;flex-wrap:wrap;gap:8px}.review-table.cv-table .fr-row{grid-template-columns:minmax(0,1.5fr) 84px minmax(0,1.1fr) minmax(0,1.1fr) 108px}@media (max-width: 720px){.review-table.cv-table .fr-row{grid-template-columns:1fr}}.cv-field .combo{flex:1 1 auto;min-width:0}.cv-field .combo .search,.cv-field .week-select{font-family:inherit}.suggestion-empty{display:block;padding:8px 10px;font-size:var(--fs-body);color:var(--muted);cursor:default}.cv-filter{margin:0 0 6px}.cv-hidden-note{margin:6px 0 0;font-size:var(--fs-small)}.group-head .program-heading{display:flex;align-items:center;gap:10px;min-width:0;margin:0}.program-badge{width:46px;height:46px;flex:0 0 46px;object-fit:contain;filter:drop-shadow(0 1px 2px rgba(0,0,0,.35))}.program-wordmark{height:52px;width:auto;max-width:240px;object-fit:contain;filter:invert(1)}body.admin:where(.theme-light) .program-wordmark{filter:none}.program-mode{font-size:var(--fs-micro);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border:1px solid var(--border);border-radius:var(--r-pill);padding:2px 8px;white-space:nowrap}.group-head{align-items:center}.card.student.has-program{position:relative;--prog-badge-opacity: .1}body.admin:where(.theme-light) .card.student.has-program{--prog-badge-opacity: .07}.card.student.has-program:after{content:"";position:absolute;top:14px;right:12px;width:104px;height:96px;background-image:var(--prog-badge);background-repeat:no-repeat;background-size:contain;background-position:center;opacity:var(--prog-badge-opacity);pointer-events:none;z-index:0}.card.student.has-program>*{position:relative;z-index:1}.program-patch{flex:0 0 auto;object-fit:contain;vertical-align:middle}.report-program{align-items:center}.report-program .program-patch{margin-right:-2px}@media (max-width: 480px){.program-badge{width:34px;height:34px;flex:0 0 34px}.program-wordmark{height:40px;max-width:168px}.card.student.has-program:after{width:94px;height:86px}}.card.student.has-program .student-name{padding-right:104px;overflow-wrap:break-word}@media (max-width: 480px){.card.student.has-program .student-name{padding-right:94px}}body.admin .app-body,body.admin .topbar-inner{max-width:1180px}.admin-console{display:block}.admin-pane{display:flex;flex-direction:column;gap:14px;min-width:0}.admin-rail{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;margin:0 0 14px;padding-bottom:2px}.admin-rail::-webkit-scrollbar{display:none}.admin-railitem{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;border-radius:var(--r-btn);padding:9px 12px;font:inherit;font-size:var(--fs-body);font-weight:600;color:var(--muted);text-align:left;white-space:nowrap;cursor:pointer;flex:0 0 auto;transition:background-color var(--t-hover) var(--ease),color var(--t-hover) var(--ease)}.admin-railitem{display:inline-flex;align-items:center;gap:7px}.admin-raillabel{white-space:nowrap}.admin-railn{flex:0 0 auto;min-width:19px;padding:1px 6px;border-radius:var(--r-pill);background:var(--raised);color:var(--text);font-size:var(--fs-micro);font-weight:700;line-height:17px;text-align:center}.admin-railitem.is-on .admin-railn{background:var(--primary);color:var(--primary-text)}.admin-railitem:hover{background:var(--btn-hover-tint);color:var(--text)}.admin-railitem.is-on{background:var(--raised);color:var(--text);box-shadow:inset 0 -2px 0 var(--primary)}@media (min-width: 900px){.admin-console{display:grid;grid-template-columns:188px minmax(0,1fr);gap:26px;align-items:start}.admin-rail{flex-direction:column;gap:2px;overflow:visible;margin:0}.admin-railwrap{position:sticky;top:calc(var(--topbar-h, 56px) + 14px);max-height:calc(100vh - var(--topbar-h, 56px) - 28px);overflow-y:auto;scrollbar-width:thin;padding-right:2px}.admin-railitem.is-on{box-shadow:inset 2px 0 0 var(--primary)}}body.admin .admin-pane>div>.card.notice,body.admin .admin-pane>.card.notice{border-radius:0;padding:18px 2px 6px}body.admin:where(.theme-light) .admin-pane>div>.card.notice,body.admin:where(.theme-light) .admin-pane>.card.notice{background:transparent;border:0;border-top:1px solid var(--hairline);box-shadow:none}body.admin .admin-pane>*:first-child>.card.notice,body.admin .admin-pane>.card.notice:first-child{padding-top:4px}body.admin:where(.theme-light) .admin-pane>*:first-child>.card.notice,body.admin:where(.theme-light) .admin-pane>.card.notice:first-child{border-top:0}@media (min-width: 900px){body.admin .grid{grid-template-columns:repeat(auto-fill,minmax(270px,1fr))}}.card-intro{max-width:68ch;margin:10px 0 16px;padding:11px 14px;border-radius:var(--r-btn);background:var(--sunken);box-shadow:inset 3px 0 0 var(--primary);font-size:var(--fs-body);line-height:1.65}.card-intro strong{font-weight:650;color:var(--text)}.admin-railwrap{display:flex;flex-direction:column;gap:18px;min-width:0}.chapter-rail{display:flex;flex-direction:column;gap:2px;min-width:0}.chapter-lead{font-size:var(--fs-micro);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:0 12px 6px}.chapter-item{display:flex;align-items:center;gap:9px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;border-radius:var(--r-btn);padding:7px 10px;font:inherit;color:var(--muted);text-align:left;cursor:pointer;min-width:0;flex:0 0 auto;transition:background-color var(--t-hover) var(--ease),color var(--t-hover) var(--ease)}.chapter-item:hover{background:var(--btn-hover-tint);color:var(--text)}.chapter-badge{width:24px;height:24px;flex:0 0 24px;object-fit:contain}.chapter-badge-text{display:grid;place-items:center;border-radius:var(--r-xs);background:var(--raised);font-size:var(--fs-micro);font-weight:700;letter-spacing:.04em}.chapter-text{display:flex;flex-direction:column;min-width:0;line-height:1.2}.chapter-name{font-size:var(--fs-small);font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chapter-mode{font-size:var(--fs-micro);letter-spacing:.04em;text-transform:uppercase}.chapter-count{margin-left:auto;font-size:var(--fs-micro);font-variant-numeric:tabular-nums;opacity:.75}@media (max-width: 899px){.admin-railwrap{gap:10px;margin-bottom:14px}.chapter-rail{flex-direction:row;overflow-x:auto;scrollbar-width:none;gap:4px}.chapter-rail::-webkit-scrollbar{display:none}.chapter-lead{display:none}.chapter-item{padding:6px 10px}}.scrolltop{display:none}@media (max-width: 899px){.scrolltop{display:grid;place-items:center;position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));width:46px;height:46px;padding:0;border-radius:50%;border:1px solid var(--hairline);background:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:var(--text);box-shadow:0 10px 24px -10px #0009;cursor:pointer;z-index:20;flex:0 0 auto;opacity:0;transform:translateY(8px) scale(.92);pointer-events:none;transition:opacity var(--t-in) var(--ease),transform var(--t-in) var(--ease)}.scrolltop.is-on{opacity:1;transform:none;pointer-events:auto}.scrolltop:active{transform:scale(.94);transition-duration:var(--t-press)}.scrolltop svg{width:21px;height:21px}body.admin:where(.theme-light) .scrolltop{background:#ffffffd1;box-shadow:0 10px 24px -12px #17337a73}}@media (prefers-reduced-motion: reduce){.scrolltop{transition:none;transform:none}}body.motion-full .scrolltop{transition:opacity var(--t-in) var(--ease),transform var(--t-in) var(--ease)}body.motion-full .scrolltop:not(.is-on){transform:translateY(8px) scale(.92)}body.motion-reduced .scrolltop{transition:none;transform:none}.week-gap{margin:8px 0 10px;padding:10px 12px;border-radius:var(--r-btn);background:var(--tone-warn-fill);box-shadow:inset 3px 0 0 var(--tone-warn-line)}.week-gap-lead{margin:0;font-size:var(--fs-small);font-weight:700;color:var(--tone-warn)}.week-gap-body{margin:4px 0 0;font-size:var(--fs-small);line-height:1.55;color:var(--muted);max-width:54ch}.week-gap-form{display:flex;flex-direction:column;gap:6px;margin-top:8px}.week-gap-label{font-size:var(--fs-micro);font-weight:600;color:var(--text)}.week-gap-act{display:flex;flex-wrap:wrap;gap:8px;margin-top:9px}.week-gap-act .btn{flex:0 1 auto}:root{--btn-glow: rgba(70, 96, 143, .5);--btn-rim: rgba(255, 255, 255, .05)}body.admin:where(.theme-light){--btn-glow: rgba(29, 78, 216, .28);--btn-rim: rgba(255, 255, 255, .9)}.btn{border-radius:var(--r-sm);font-size:var(--fs-body);letter-spacing:-.003em;font-variant-numeric:tabular-nums;box-shadow:inset 0 1px 0 var(--btn-rim);transition:transform var(--t-press) var(--ease),background-color var(--t-hover) var(--ease),border-color var(--t-hover) var(--ease),box-shadow var(--t-hover) var(--ease)}.btn:hover:not(:disabled){border-color:var(--hairline-strong);background:var(--btn-hover-tint);transform:none;box-shadow:inset 0 1px 0 var(--btn-rim),inset 0 0 0 1px var(--btn-hover-tint)}.btn:active:not(:disabled){transform:scale(.985)}.btn:focus-visible{outline:none;box-shadow:inset 0 1px 0 var(--btn-rim),0 0 0 1px var(--bg),0 0 0 3px var(--ring)}.btn.primary{background:linear-gradient(180deg,var(--primary-hi),var(--primary));border-color:transparent;color:var(--primary-text);box-shadow:inset 0 1px #ffffff29,0 1px 2px #00000047,0 0 14px -4px var(--btn-glow)}.btn.primary:hover:not(:disabled){background:linear-gradient(180deg,var(--primary-hover-hi),var(--primary-hover));box-shadow:inset 0 1px #fff3,0 1px 2px #0000004d,0 0 20px -4px var(--btn-glow)}.btn.missed{border-color:var(--tone-warn-line);box-shadow:inset 0 1px 0 var(--btn-rim)}.btn.confirm{border-color:var(--tone-good-line);box-shadow:inset 0 1px 0 var(--btn-rim)}.btn.warn,.btn.warn:hover{box-shadow:none;transform:none}.btn:disabled{opacity:.55;box-shadow:none}@media (prefers-reduced-motion: reduce){.btn:active:not(:disabled){transform:none}}:root{--tone-warn-ink: #d9a463;--tone-warn-edge: rgba(245, 158, 11, .85);--tone-warn-wash: rgba(245, 158, 11, .055);--tone-warn-rule: rgba(245, 158, 11, .17)}body.admin:where(.theme-light){--tone-warn-ink: #8a4603;--tone-warn-edge: #d98b2b;--tone-warn-wash: #fdf7ef;--tone-warn-rule: #ecc99a}.btn-ico{width:15px;height:15px;flex:none;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;margin-top:-1px;opacity:.92}.btn:disabled .btn-ico{opacity:.6}.weekly-actions .btn.primary{flex:1.5 1 auto}.weekly-actions .btn.missed{flex:1 1 auto}.btn.missed{background:var(--tone-warn-wash);color:var(--tone-warn-ink);font-weight:600;border-color:var(--tone-warn-rule);box-shadow:inset 3px 0 0 var(--tone-warn-edge),inset 0 1px 0 var(--btn-rim);padding-left:15px}.btn.missed:hover:not(:disabled){background:var(--tone-warn-wash);border-color:var(--tone-warn-edge);color:var(--tone-warn-ink);box-shadow:inset 4px 0 0 var(--tone-warn-edge),inset 0 1px 0 var(--btn-rim)}.btn.missed:focus-visible{box-shadow:inset 3px 0 0 var(--tone-warn-edge),inset 0 1px 0 var(--btn-rim),0 0 0 1px var(--bg),0 0 0 3px var(--ring)}body.admin:where(.theme-light) .btn.missed,body.admin:where(.theme-light) .btn.missed:hover:not(:disabled){background:var(--tone-warn-wash);color:var(--tone-warn-ink);border-color:var(--tone-warn-rule)}body.admin:where(.theme-light) .btn.missed:hover:not(:disabled){border-color:var(--tone-warn-edge)}body.admin:where(.theme-light) .btn.missed:focus-visible{box-shadow:inset 3px 0 0 var(--tone-warn-edge),inset 0 1px 0 var(--btn-rim),0 0 0 1px #fff,0 0 0 3px var(--ring)}.btn.primary{background:radial-gradient(120% 150% at 50% 130%,var(--btn-glow) 0%,transparent 62%),linear-gradient(180deg,var(--primary-hi),var(--primary));box-shadow:inset 0 1px #ffffff2e,inset 0 -1px 0 var(--btn-glow),0 1px 2px #00000047,0 0 14px -4px var(--btn-glow)}.btn.primary:hover:not(:disabled){background:radial-gradient(130% 165% at 50% 122%,var(--btn-glow) 0%,transparent 66%),linear-gradient(180deg,var(--primary-hover-hi),var(--primary-hover));box-shadow:inset 0 1px #ffffff38,inset 0 -1px 0 var(--btn-glow),0 1px 2px #0000004d,0 0 22px -4px var(--btn-glow)}.btn.primary:disabled{background:var(--surface-2);color:var(--muted);border-color:var(--hairline);box-shadow:none;opacity:1}body.admin.dense .grid{grid-template-columns:repeat(auto-fill,minmax(226px,1fr));gap:10px}body.admin.dense .card.student{padding:9px 11px 10px;gap:1px;contain-intrinsic-size:auto 210px}body.admin.dense .grid>*{contain-intrinsic-size:auto 210px}body.admin.dense .card.student{position:relative}body.admin.dense .alert-flag{position:absolute;top:7px;right:8px;margin:0;padding:1px 6px;font-size:var(--fs-micro);border-radius:var(--r-xs);line-height:1.5;max-width:40%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}body.admin.dense .student-name{font-size:var(--fs-body);line-height:1.3;padding-right:42%}body.admin.dense .student-id,body.admin.dense .meta{font-size:var(--fs-micro);line-height:1.4}body.admin.dense .card.student.has-program{background-size:62px auto}body.admin.dense .weekly{margin:7px 0 0;padding:7px 0 0;border-top:1px solid var(--hairline)}body.admin.dense:where(.theme-light) .weekly{border:0;background:none}body.admin.dense .weekly-head{margin-bottom:2px}body.admin.dense .weekly-title{display:none}body.admin.dense .weekly-head{justify-content:flex-start}body.admin.dense .weekly-count{font-size:var(--fs-micro);font-weight:600}body.admin.dense .wr-rail:not(.is-paged) .wr{height:44px;width:auto;max-width:100%}body.admin.dense .wr-rail.is-paged{--wr-step: 30px}body.admin.dense .pay-lock{padding:3px 7px;font-size:var(--fs-micro);line-height:1.35;margin-bottom:5px;border-radius:var(--r-xs);display:-webkit-box;-webkit-line-clamp:1;line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}body.admin.dense .week-gap-body,body.admin.dense .missed-reason-note{font-size:var(--fs-micro);line-height:1.4}body.admin.dense .week-select{padding:4px 8px;font-size:var(--fs-small);border-radius:var(--r-xs)}body.admin.dense .weekly-row{margin-bottom:5px}body.admin.dense .weekly-dates{font-size:var(--fs-micro);gap:5px}body.admin.dense .weekly-now{font-size:var(--fs-tiny);padding:0 5px}body.admin.dense .weekly-actions,body.admin.dense .quick-missed,body.admin.dense .actions{gap:6px;margin-top:6px}body.admin.dense .btn{min-height:30px;padding:5px 9px;font-size:var(--fs-small);border-radius:var(--r-xs)}body.admin.dense .btn-ico{width:13px;height:13px}body.admin.dense .btn.missed{padding-left:11px}body.admin.dense:where(.theme-light) .btn.missed{box-shadow:inset 2px 0 0 var(--tone-warn-edge),inset 0 1px 0 var(--btn-rim)}body.admin.dense .weekly-status,body.admin.dense .quick-missed .btn{font-size:var(--fs-micro)}body.admin.dense .cover-flag,body.admin.dense .cover-wait{font-size:var(--fs-micro);padding:4px 7px;line-height:1.35}.density-toggle{display:inline-flex;gap:1px;background:var(--hairline);border:1px solid var(--hairline);border-radius:var(--r-xs);overflow:hidden;flex:none}.density-toggle button{flex:none;border:0;margin:0;padding:6px 11px;font:inherit;font-size:var(--fs-small);font-weight:600;line-height:1.4;cursor:pointer;background:var(--card);color:var(--muted);transition:background-color var(--t-hover) var(--ease),color var(--t-hover) var(--ease)}.density-toggle button:hover{color:var(--text)}.density-toggle button.is-on{background:var(--primary);color:var(--primary-text)}.density-toggle button:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--ring)}:root{--ink-2: #c3c9d6;--intro-rule: rgba(255, 255, 255, .14)}body.admin:where(.theme-light){--ink-2: #33475f;--intro-rule: #b9d0e9}.card-intro{max-width:62ch;margin:9px 0 15px;padding:1px 0 1px 13px;border-radius:0;background:none;box-shadow:inset 2px 0 0 var(--intro-rule);color:var(--ink-2);font-size:var(--fs-body);line-height:1.7;letter-spacing:-.002em;text-wrap:pretty}.card-intro strong{font-weight:600;color:var(--text)}.ta-lead.card-intro{margin-bottom:10px}.tma-panel .tma-list{margin-top:4px}.tma-foot{display:flex;gap:8px;align-items:center;justify-content:space-between}.tma-mute{flex:0 0 auto;font-size:var(--fs-small);color:var(--muted)}.tma-where{margin:8px 0 0;font-size:var(--fs-small);color:var(--muted);text-align:right}.tma-where strong{font-weight:600;color:var(--text)}.chapter-item.is-here{background:var(--raised);color:var(--text);box-shadow:inset 2px 0 0 var(--primary)}.chapter-item.is-here .chapter-name{color:var(--text)}.chapter-item.is-here .chapter-mode,.chapter-item.is-here .chapter-count{color:var(--text);opacity:.75}.chapter-item.is-here .chapter-badge{opacity:1}.chapter-item.is-here:hover{background:var(--raised)}@media (max-width: 899px){.chapter-item.is-here{box-shadow:inset 0 -2px 0 var(--primary)}}body.is-autoscrolling{cursor:progress;-webkit-user-select:none;user-select:none}.roster-tools{position:sticky;top:calc(var(--topbar-h, 56px) + var(--attention-h, 0px) + 12px);z-index:3;margin:0 0 14px}.roster-tools-inner{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--card);box-shadow:0 4px 14px #0000002e}body.admin:where(.theme-light) .roster-tools-inner{box-shadow:0 4px 14px #10233d14}.roster-tools .search{width:auto;flex:1 1 240px;min-width:160px;max-width:none}.roster-tools .term-select{flex:0 1 170px;min-width:120px}.roster-tools .teacher-search{flex:1 1 200px;min-width:0;max-width:300px;width:auto}.roster-tools .density-toggle{order:1}@media (min-width: 600px){.roster-tools-extra{display:contents}.roster-more{display:none}}@media (max-width: 599px){.roster-tools{top:calc(var(--topbar-h, 56px) + var(--attention-h, 0px) + 8px)}.roster-tools-inner{position:relative;padding:7px 8px;gap:8px}.roster-more{flex:0 0 auto;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);border-radius:var(--r-xs);background:var(--raised);color:var(--text);font:inherit;font-size:var(--fs-body);font-weight:600;padding:9px 12px;cursor:pointer}.roster-more[aria-expanded=true]{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}.roster-tools-extra{display:none}.roster-tools-extra.is-open{display:flex;flex-direction:column;gap:8px;position:absolute;top:calc(100% + 6px);left:0;right:0;padding:10px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--card);box-shadow:0 10px 24px #00000047}body.admin:where(.theme-light) .roster-tools-extra.is-open{box-shadow:0 10px 24px #10233d24}.roster-tools-extra.is-open .teacher-search,.roster-tools-extra.is-open .search,.roster-tools-extra.is-open .term-select{width:100%;max-width:none;flex:none}.roster-tools-extra.is-open .density-toggle{align-self:flex-start}}.theme-toggle{display:inline-flex;gap:1px;background:var(--hairline);border:1px solid var(--hairline);border-radius:var(--r-xs);overflow:hidden;flex:none}.theme-toggle button{flex:none;border:0;margin:0;padding:4px 9px;font:inherit;font-size:var(--fs-micro);font-weight:600;line-height:1.5;cursor:pointer;background:var(--card);color:var(--muted);transition:background-color var(--t-hover) var(--ease),color var(--t-hover) var(--ease)}.theme-toggle button:hover{color:var(--text)}.theme-toggle button.is-on{background:var(--primary);color:var(--primary-text)}.theme-toggle button:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--ring)}@media (max-width: 720px){.theme-toggle{display:none}}body.admin:where(.theme-dark) .program-wordmark{filter:invert(1)}.pcr-parsed-head .pcr-editbtn{flex:0 0 auto}.pcr-edits{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px 12px}.pcr-edit{display:grid;gap:4px;min-width:0;align-content:start}.pcr-edit-k{font-size:var(--fs-micro);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.pcr-edit-i{width:100%;min-width:0;font-size:var(--fs-body)}.pcr-edit-note{font-size:var(--fs-micro);line-height:1.45;color:var(--muted);text-wrap:pretty}.pcr-edit-note.is-changed{color:var(--tone-warn-ink)}.pcr-chip.is-changed{border-color:var(--tone-warn-rule);background:var(--tone-warn-wash)}.pcr-chip.is-changed .pcr-chip-v{color:var(--tone-warn-ink)}.pcr-parsed-none{margin:0;font-size:var(--fs-small);line-height:1.6;color:var(--muted);max-width:62ch;text-wrap:pretty}.td-map-wrap{margin-top:10px;max-height:340px;overflow:auto;overflow-x:auto;border:1px solid var(--hairline);border-radius:var(--r-btn);background:var(--sunken)}.td-map{border-collapse:collapse;width:100%;font-size:var(--fs-small)}.td-map th,.td-map td{padding:6px 9px;text-align:left;vertical-align:top;border-bottom:1px solid var(--hairline);white-space:nowrap}.td-map tbody tr:last-child td{border-bottom:0}.td-map th{position:sticky;top:0;z-index:1;background:var(--raised);box-shadow:inset 0 -1px 0 var(--hairline);border-bottom:0}.td-map td{font-family:ui-monospace,Andale Mono,monospace;max-width:260px;overflow:hidden;text-overflow:ellipsis;color:var(--text)}.td-map td.td-map-skip{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--hairline-strong)}body.admin .td-map-sel{display:block;height:30px;font-size:var(--fs-small);font-weight:400;min-width:132px;width:100%;padding:4px 24px 4px 8px;background-position:right 7px center;background-size:10px 7px;background-color:var(--card)}.td-map-src{display:block;margin-top:3px;font-size:var(--fs-micro);font-weight:400;letter-spacing:.02em;color:var(--muted);max-width:160px;overflow:hidden;text-overflow:ellipsis}.td-map-more{margin:6px 0 0;font-size:var(--fs-micro)}body:not(.admin) .pay-lock,body.admin:where(.theme-dark) .pay-lock{background:var(--tone-warn-wash);border:1px solid var(--tone-warn-rule);border-left:0;box-shadow:inset 3px 0 0 var(--tone-warn-edge);color:var(--tone-warn-ink)}body:not(.admin) .embed-frame,body.admin:where(.theme-dark) .embed-frame{border-color:var(--border)}body:not(.admin) .weekly-status,body.admin:where(.theme-dark) .weekly-status{color:var(--st-done)}body:not(.admin) .weekly-status.muted,body:not(.admin) .weekly-status.missed,body.admin:where(.theme-dark) .weekly-status.muted,body.admin:where(.theme-dark) .weekly-status.missed{color:var(--tone-warn-ink)}body:not(.admin) .ta-warn,body:not(.admin) .report-missed,body:not(.admin) .form-responses-flag,body.admin:where(.theme-dark) .ta-warn,body.admin:where(.theme-dark) .report-missed,body.admin:where(.theme-dark) .form-responses-flag{color:var(--tone-warn-ink)}body:not(.admin) .ta-confirm,body.admin:where(.theme-dark) .ta-confirm{border-left-color:var(--tone-warn-edge)}body:not(.admin) .report-cell,body.admin:where(.theme-dark) .report-cell{text-decoration-color:var(--hairline-strong)}.wr-rail.is-paged{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 9%,#000 91%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 9%,#000 91%,transparent 100%);touch-action:pan-y}.wr-strip{position:relative;will-change:transform}.wr-rail.is-paged{--wr-step: 40px;width:min(100%,calc(var(--wr-cols, 5) * var(--wr-step)));margin-inline:auto}.wr-rail.is-paged .wr-node{cursor:pointer}.wr-node.is-offmonth{opacity:.3}.wr-link.is-offmonth{opacity:.35}.wr-node.is-offmonth .wr-label{opacity:.6}.wr-wrap.is-blank .wr-node.is-overdue .wr-dot{fill:transparent;stroke:#ffffff42}.wr-wrap.is-blank .wr-node.is-overdue .wr-label,.wr-wrap.is-blank .wr-node.is-missed .wr-label{fill:var(--muted)}.wr-wrap.is-blank .wr-node.is-active.is-overdue .wr-dot{fill:#3a1d24;stroke:var(--st-missed)}.wr-wrap.is-blank .wr-node.is-active .wr-label{fill:var(--text)}.wr-wrap.is-blank .wr-link{stroke:#ffffff1a}.wr-wrap.is-blank .wr-node:hover .wr-dot{stroke:#fff}body.admin:where(.theme-light) .wr-wrap.is-blank .wr-node.is-overdue .wr-dot{fill:transparent;stroke:#10233d47}body.admin:where(.theme-light) .wr-wrap.is-blank .wr-link{stroke:#10233d1f}body.admin:where(.theme-light) .wr-wrap.is-blank .wr-node.is-overdue .wr-label,body.admin:where(.theme-light) .wr-wrap.is-blank .wr-node.is-missed .wr-label{fill:var(--muted)}body.admin:where(.theme-light) .wr-wrap.is-blank .wr-node.is-active.is-overdue .wr-dot{fill:#fee2e2;stroke:var(--st-missed)}body.admin:where(.theme-light) .wr-wrap.is-blank .wr-node.is-active .wr-label{fill:#10233d}.wr-months{display:flex;align-items:center;justify-content:center;gap:2px;margin-bottom:-2px}.wr-month{min-width:68px;text-align:center;font-size:var(--fs-micro);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-variant-numeric:tabular-nums}.wr-nav{flex:0 0 auto;display:grid;place-items:center;width:26px;height:26px;padding:0;border:1px solid transparent;border-radius:var(--r-xs);background:none;color:var(--muted);cursor:pointer;transition:color var(--t-hover) var(--ease),background var(--t-hover) var(--ease),border-color var(--t-hover) var(--ease)}.wr-nav svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.wr-nav:hover:not(:disabled){color:var(--text);background:var(--btn-hover-tint);border-color:var(--hairline)}.wr-nav:focus-visible{outline:none;color:var(--text);box-shadow:0 0 0 2px var(--ring)}.wr-nav:disabled{opacity:.28;cursor:default}.wf-choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;margin:12px 0}.wf-choice{display:grid;gap:5px;align-content:start;padding:11px 13px;border:1px solid var(--hairline);border-radius:var(--r-btn);background:var(--sunken)}.wf-choice.is-on{border-color:var(--hairline-strong);background:var(--raised);box-shadow:inset 2px 0 0 var(--primary)}.wf-choice-head{display:flex;align-items:center;gap:8px;font-size:var(--fs-body);font-weight:600;color:var(--text)}.wf-badge{padding:1px 7px;border:1px solid var(--hairline-strong);border-radius:var(--r-pill);font-size:var(--fs-micro);font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.wf-eg{font-size:var(--fs-small);font-family:ui-monospace,Andale Mono,monospace;color:var(--ink-2)}.wf-note{font-size:var(--fs-small);line-height:1.6;color:var(--muted);text-wrap:pretty}.wf-actions{display:flex;flex-wrap:wrap;gap:8px}.wf-actions>*{flex:0 0 auto}.wf-mine{margin-top:14px;padding-top:12px;border-top:1px solid var(--hairline)}.wf-mine-label{display:block;margin-bottom:7px;font-size:var(--fs-micro);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.wf-seg{display:inline-flex;gap:1px;background:var(--hairline);border:1px solid var(--hairline);border-radius:var(--r-xs);overflow:hidden;flex:none;max-width:100%}.wf-seg button{flex:none;border:0;margin:0;padding:5px 10px;font:inherit;font-size:var(--fs-micro);font-weight:600;line-height:1.5;cursor:pointer;background:var(--card);color:var(--muted);transition:background-color var(--t-hover) var(--ease),color var(--t-hover) var(--ease)}.wf-seg button:hover{color:var(--text)}.wf-seg button.is-on{background:var(--primary);color:var(--primary-text)}.wf-seg button:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--ring)}.wf-mine-note{margin:7px 0 0;font-size:var(--fs-micro)}.student-teacher{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin-top:2px;min-width:0}.st-who{display:inline-flex;align-items:baseline;gap:5px;flex:0 1 auto;min-width:0;max-width:100%;padding:1px 6px 1px 0;border:0;border-radius:var(--r-xs);background:none;font:inherit;color:var(--muted);text-align:left;cursor:pointer;transition:color var(--t-hover) var(--ease),background var(--t-hover) var(--ease)}.st-name{font-size:var(--fs-micro);font-weight:600;color:var(--text);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0}.st-ref{flex:0 0 auto;font-size:var(--fs-micro);font-variant-numeric:tabular-nums;letter-spacing:.02em;color:var(--muted);opacity:.85}.st-who:hover .st-name{text-decoration:underline}.st-who:focus-visible{outline:none;box-shadow:0 0 0 2px var(--ring)}.st-as{flex:0 0 auto;display:grid;place-items:center;width:18px;height:18px;padding:0;border:1px solid transparent;border-radius:var(--r-xs);background:none;color:var(--muted);cursor:pointer;transition:color var(--t-hover) var(--ease),background var(--t-hover) var(--ease),border-color var(--t-hover) var(--ease)}.st-as svg{width:10px;height:10px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.st-as:hover{color:var(--text);background:var(--btn-hover-tint);border-color:var(--hairline)}.st-as:focus-visible{outline:none;color:var(--text);box-shadow:0 0 0 2px var(--ring)}.st-cover{flex:0 0 auto;padding:0 5px;border-radius:var(--r-xs);font-size:var(--fs-micro);font-weight:600;line-height:1.6;color:var(--tone-info);background:var(--tone-info-fill)}.link-gaps{flex:1 1 100%;font-size:var(--fs-micro);line-height:1.5;color:var(--muted);opacity:.8;cursor:help}.alert-flag-short,body.admin.dense .alert-flag-long{display:none}body.admin.dense .alert-flag-short{display:inline}body.admin.dense .alert-flag{max-width:none;padding:1px 5px;font-variant-numeric:tabular-nums}body.admin.dense .student-name,body.admin.dense .card.student.has-program .student-name{padding-right:52px}body.admin.dense .student-teacher{margin-top:1px;gap:3px}body.admin.dense .st-name{font-size:var(--fs-micro)}body.admin.dense .st-who{padding:0}body.admin.dense .weekly-head{flex-wrap:wrap;column-gap:6px;row-gap:0}body.admin.dense .weekly-dates{margin:0;order:3}.view-as{flex:0 0 auto;white-space:nowrap}.tp-bar{position:sticky;top:0;z-index:60;display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:12px;padding:7px 12px;border:1px solid var(--tone-warn-line);border-radius:var(--r-card);background:var(--tone-warn-fill);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.tp-tag{font-size:var(--fs-micro);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tone-warn)}.tp-who{display:inline-flex;align-items:baseline;gap:6px;min-width:0}.tp-name{font-weight:700;font-size:var(--fs-lead);color:var(--text)}.tp-ref{font-size:var(--fs-micro);font-variant-numeric:tabular-nums;color:var(--muted)}.tp-count{font-size:var(--fs-micro);color:var(--muted)}.tp-step{display:inline-flex;align-items:center;gap:2px;margin-left:auto}.tp-pos{min-width:56px;text-align:center;font-size:var(--fs-micro);font-variant-numeric:tabular-nums;color:var(--muted)}.tp-nav{flex:0 0 auto;display:grid;place-items:center;width:26px;height:26px;padding:0;border:1px solid var(--hairline);border-radius:var(--r-xs);background:none;color:var(--text);cursor:pointer;transition:background var(--t-hover) var(--ease),border-color var(--t-hover) var(--ease)}.tp-nav svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.tp-nav:hover:not(:disabled){background:var(--btn-hover-tint)}.tp-nav:focus-visible{outline:none;box-shadow:0 0 0 2px var(--ring)}.tp-nav:disabled{opacity:.3;cursor:default}.tp-exit{flex:0 0 auto}.tp-note{flex:1 1 100%;font-size:var(--fs-micro);line-height:1.45;color:var(--muted)}.program-mode.mode-online{color:var(--muted);border-color:var(--border)}.program-mode.mode-onsite{color:var(--tone-warn);border-color:var(--tone-warn-line);background:var(--tone-warn-fill)}.program-mode.mode-hybrid{color:var(--tone-info);border-color:var(--tone-info-line);background:var(--tone-info-fill)}.chapter-mode.mode-onsite{color:var(--tone-warn);font-weight:600}.chapter-mode.mode-hybrid{color:var(--tone-info);font-weight:600}.student-mode{display:inline-block;margin-left:6px;padding:0 6px;border-radius:var(--r-pill);font-size:var(--fs-micro);font-weight:700;letter-spacing:.06em;text-transform:uppercase;vertical-align:baseline;white-space:nowrap;color:var(--tone-warn);border:1px solid var(--tone-warn-line);background:var(--tone-warn-fill)}.student-mode.mode-hybrid{color:var(--tone-info);border-color:var(--tone-info-line);background:var(--tone-info-fill)}.tracker-cleanup{margin:10px 0;padding:10px 12px;border:1px solid var(--tone-info-line);border-radius:var(--r-sm);background:var(--tone-info-fill)}.tracker-cleanup-head{display:flex;align-items:center;gap:10px;justify-content:space-between}.tracker-cleanup-head strong{font-size:var(--fs-body);color:var(--tone-info)}.tracker-cleanup-intro{margin:4px 0 8px;font-size:var(--fs-small);line-height:1.5;color:var(--text);opacity:.78}.tracker-cleanup-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.tracker-cleanup-list li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;justify-content:space-between;padding:7px 9px;border-radius:var(--r-xs);background:var(--card, var(--bg))}.tc-what{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1 1 200px}.tc-what strong{font-size:var(--fs-body)}.tc-actions{display:flex;align-items:center;gap:6px;flex:0 0 auto}.tracker-cleanup .btn{flex:0 0 auto;padding:5px 10px;font-size:var(--fs-small);white-space:nowrap}.fr-sortbar{display:flex;align-items:center;gap:8px;margin:10px 0 0}.fr-sortbar .week-select{width:auto;padding:5px 8px;font-size:var(--fs-small)}.responses-table .fr-head .report-sort{white-space:nowrap}.fr-settled{color:var(--muted);font-weight:400}.fr-show-reviewed{margin-top:8px;flex:0 0 auto;padding:5px 10px;font-size:var(--fs-small)}.fr-empty-note{margin:8px 0 0;font-size:var(--fs-small)}.tma-students{flex-direction:column;align-items:stretch;gap:6px}.tma-students .tma-pgroup{display:block;max-width:100%;padding:0;border:0;border-radius:0;background:none;font-size:inherit}.tma-pname{display:flex;align-items:center;gap:6px;margin-bottom:3px;font-size:var(--fs-micro);font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.tma-pname .program-mode{font-size:var(--fs-tiny);padding:1px 6px}.tma-pcount{font-variant-numeric:tabular-nums;opacity:.7}.tma-sublist{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px 6px;min-width:0}.tma-sublist li{display:inline-flex;align-items:baseline;gap:5px;max-width:100%;padding:1px 7px;border:1px solid var(--hairline);border-radius:var(--r-pill);background:var(--card);font-size:var(--fs-micro)}.pv-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.pv-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--sunken, var(--bg))}.pv-row.is-off{opacity:.72;border-style:dashed}.pv-who{display:flex;align-items:center;gap:9px;min-width:0;flex:1 1 220px}.pv-names{display:flex;flex-direction:column;gap:1px;min-width:0}.pv-name{display:flex;align-items:center;gap:7px;font-size:var(--fs-lead);font-weight:600}.pv-act{display:flex;align-items:center;gap:8px;flex:0 0 auto}.pv-state{font-size:var(--fs-micro);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tone-good)}.pv-state.is-off{color:var(--muted)}.pv .btn{flex:0 0 auto;padding:5px 10px;font-size:var(--fs-small);white-space:nowrap}.pv-foot{margin:10px 0 0;font-size:var(--fs-small)}.wr-node.is-moved .wr-dot{fill:#facc15;stroke:#fde68a}.wr-node.is-moved .wr-label{fill:#fde68a}.wr-node.is-madeup .wr-dot{fill:#a5d8f3;stroke:#d6eefc}.wr-node.is-madeup .wr-label{fill:#a5d8f3}.wr-node.is-broken .wr-dot{fill:#7f1d1d;stroke:#ef4444}.wr-node.is-broken .wr-label{fill:#fca5a5;font-weight:700}.wr-node.is-legacy .wr-dot,.wr-node.is-spare .wr-dot{fill:#a5d8f3;stroke:#d6eefc}.wr-node.is-spare .wr-label,.wr-node.is-legacy .wr-label{fill:#a5d8f3}.wr-node.is-before .wr-dot{fill:#5b6372;stroke:#878f9e}.wr-node.is-before .wr-label{fill:#878f9e}.wr-hole{fill:#7f1d1d;stroke:#ef444499;stroke-width:1.1;filter:drop-shadow(0 0 3px rgba(239,68,68,.5))}.wr-node.is-overdue .wr-dot{fill:#7f1d1d;stroke:#ef4444}.wr-node.is-overdue .wr-label{fill:#fca5a5;font-weight:700}.wr-node .wr-hole{transform-box:fill-box;transform-origin:center;transition:transform var(--t-hover) var(--ease)}.wr-node:hover .wr-hole,.wr-node:focus-visible .wr-hole{transform:scale(1.5)}.wr-tip-state.is-moved{color:#fde68a}.wr-tip-state.is-madeup,.wr-tip-state.is-legacy,.wr-tip-state.is-spare{color:#a5d8f3}.wr-tip-state.is-before{color:#9aa2b1}.wr-tip-state.is-broken{color:#fca5a5}.wr-tip-move{font-size:var(--fs-micro);line-height:1.35;color:var(--muted);border-left:2px solid var(--border);padding-left:7px}body.admin:where(.theme-light) .wr-node.is-moved .wr-dot{fill:#d97706;stroke:#b45309}body.admin:where(.theme-light) .wr-node.is-moved .wr-label{fill:#a35a06}body.admin:where(.theme-light) .wr-node.is-madeup .wr-dot{fill:#38a3d1;stroke:#1d7fa8}body.admin:where(.theme-light) .wr-node.is-madeup .wr-label{fill:#1d7fa8}body.admin:where(.theme-light) .wr-node.is-legacy .wr-dot{fill:#38a3d1;stroke:#1d7fa8}body.admin:where(.theme-light) .wr-node.is-spare .wr-dot{fill:#38a3d1;stroke:#1d7fa8}body.admin:where(.theme-light) .wr-node.is-spare .wr-label{fill:#1d7fa8}body.admin:where(.theme-light) .wr-node.is-legacy .wr-label{fill:#1d7fa8}body.admin:where(.theme-light) .wr-node.is-before .wr-dot{fill:#b6bcc7;stroke:#7b8492}body.admin:where(.theme-light) .wr-node.is-before .wr-label{fill:#6b7482}body.admin:where(.theme-light) .wr-node.is-broken .wr-dot{fill:#b91c1c;stroke:#7f1d1d}body.admin:where(.theme-light) .wr-node.is-broken .wr-label{fill:#991b1b}body.admin:where(.theme-light) .wr-hole{fill:#b91c1c;stroke:#7f1d1dbf;filter:drop-shadow(0 0 3px rgba(185,28,28,.35))}body.admin:where(.theme-light) .wr-node.is-overdue .wr-dot{fill:#b91c1c;stroke:#7f1d1d}body.admin:where(.theme-light) .wr-node.is-overdue .wr-label{fill:#991b1b}body.admin:where(.theme-light) .wr-tip-state.is-moved{color:#a35a06}body.admin:where(.theme-light) .wr-tip-state.is-madeup{color:#1d7fa8}body.admin:where(.theme-light) .wr-tip-state.is-legacy{color:#1d7fa8}body.admin:where(.theme-light) .wr-tip-state.is-spare{color:#1d7fa8}body.admin:where(.theme-light) .wr-tip-state.is-before{color:#6b7482}body.admin:where(.theme-light) .wr-tip-state.is-broken{color:#991b1b}.rank-fix{display:block;margin:6px 0 2px}.rank-fix .btn.small{font-size:var(--fs-micro);padding:2px 9px}.rank-fixed{color:#34d399;margin-top:4px}body.admin:where(.theme-light) .rank-fixed{color:#157f5f}.fr-sub.is-warn{color:var(--tone-warn)}.wl{margin:0 0 10px;border:1px solid var(--border);border-radius:var(--r-card);background:var(--surface-2);overflow:hidden}.wl-toggle{width:100%;display:flex;align-items:center;gap:10px;padding:8px 12px;background:none;border:0;color:var(--text);font:inherit;font-size:var(--fs-body);cursor:pointer;text-align:left}.wl-lead{font-weight:600}.wl-mini{display:inline-flex;gap:5px;margin-left:auto}.wl-chev{color:var(--muted);font-size:var(--fs-lead);width:12px;text-align:center}.wl-list{list-style:none;margin:0;padding:2px 12px 10px;display:grid;grid-template-columns:1fr 1fr;gap:6px 18px}.wl-list li{display:flex;align-items:flex-start;gap:8px}.wl-text{display:flex;flex-direction:column;gap:1px;min-width:0}.wl-text strong{font-size:var(--fs-small);font-weight:600}.wl-note{font-size:var(--fs-micro);line-height:1.35;color:var(--muted)}.wl-dot{flex:0 0 auto;width:11px;height:11px;margin-top:2px;border-radius:50%;border:1.5px solid transparent}.wl-dot.is-done{background:#fff;border-color:#fff}.wl-dot.is-leave{background:var(--st-leave);border-color:#cfe0ff}.wl-dot.is-current{background:var(--surface-2);border-color:#fff}.wl-dot.is-future{background:var(--surface-2);border-color:#ffffff4d}.wl-dot.is-missed{background:var(--st-missed);border-color:#ffd7d7}.wl-dot.is-moved{background:#facc15;border-color:#fde68a}.wl-dot.is-madeup,.wl-dot.is-legacy,.wl-dot.is-spare{background:#a5d8f3;border-color:#d6eefc}.wl-dot.is-before{background:#5b6372;border-color:#878f9e}.wl-dot.is-broken,.wl-dot.is-overdue{background:#7f1d1d;border-color:#ef4444;box-shadow:0 0 3px #ef444480}.wl-warn{margin:0;padding:8px 12px;border-top:1px solid var(--tone-urgent-line);background:var(--tone-urgent-fill);color:var(--text);font-size:var(--fs-micro);line-height:1.45}.wl-warn strong{color:var(--tone-urgent)}@media (max-width: 640px){.wl-list{grid-template-columns:1fr}.wl-mini{gap:4px}}body.admin:where(.theme-light) .wl-dot.is-done{background:#10233d;border-color:#10233d}body.admin:where(.theme-light) .wl-dot.is-current{border-color:#10233d}body.admin:where(.theme-light) .wl-dot.is-future{border-color:#10233d59}body.admin:where(.theme-light) .wl-dot.is-moved{background:#d97706;border-color:#b45309}body.admin:where(.theme-light) .wl-dot.is-madeup{background:#38a3d1;border-color:#1d7fa8}body.admin:where(.theme-light) .wl-dot.is-legacy{background:#38a3d1;border-color:#1d7fa8}body.admin:where(.theme-light) .wl-dot.is-spare{background:#38a3d1;border-color:#1d7fa8}body.admin:where(.theme-light) .wl-dot.is-before{background:#b6bcc7;border-color:#7b8492}body.admin:where(.theme-light) .wl-dot.is-broken{background:#b91c1c;border-color:#7f1d1d}body.admin:where(.theme-light) .wl-dot.is-overdue{background:#0f172a;border-color:#b91c1c;box-shadow:0 0 3px #b91c1c59}.missed-reason-note.is-warn{border-style:solid;border-color:var(--tone-warn-line);background:var(--tone-warn-fill);color:var(--tone-warn)}.adopt-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}.adopt-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--r-btn);background:var(--surface-2)}.adopt-who{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1 1 200px}.adopt-who strong{font-size:var(--fs-body)}.adopt-act{display:flex;align-items:center;gap:6px;flex:0 0 auto}.adopt-act .btn{flex:0 0 auto}.adopt-note{display:flex;flex-direction:column;gap:6px;flex:1 1 100%}.adopt-note-input{width:100%}@media (max-width: 560px){.adopt-row{flex-wrap:wrap}.adopt-act{width:100%}.adopt-act .btn{flex:1 1 auto}}.adopt-group{padding:8px 10px;border:1px solid var(--border);border-radius:var(--r-btn);background:var(--surface-2);margin-top:8px}.adopt-student{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.adopt-student strong{font-size:var(--fs-body)}.adopt-claims{display:flex;flex-direction:column;gap:6px;margin-top:6px}.adopt-claims .adopt-row{background:var(--surface-1)}.adopt-reason{font-size:var(--fs-micro);line-height:1.4;color:var(--muted);font-style:italic}.review-table.resched-table .fr-row{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1.5fr) minmax(0,1.3fr) auto}.review-table.resched-table .fr-row>span{min-width:0}.resched-move{display:block;font-weight:600;font-variant-numeric:tabular-nums;text-wrap:balance}.resched-note{font-size:var(--fs-small);line-height:1.4}.resched-pick{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.resched-select{background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:var(--r-btn);padding:5px 8px;font:inherit;font-size:var(--fs-small)}.fr-row.is-warn{box-shadow:inset 3px 0 0 var(--tone-warn-line)}.fr-warn{color:var(--tone-warn)}.fr-row.is-done{opacity:.62}.review-table.audit-table .fr-row{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,1.1fr) minmax(0,1.6fr) auto}.review-table.audit-table .fr-row>span{min-width:0}.audit-detail{font-size:var(--fs-small);line-height:1.4;color:var(--muted)}.audit-flag{display:block;width:fit-content;margin-top:3px;padding:1px 7px;border-radius:var(--r-lg);border:1px solid var(--border);font-size:var(--fs-micro);font-weight:600;line-height:1.3}.audit-flag.flag-not_open,.audit-flag.flag-expired_move{color:var(--tone-urgent);border-color:var(--tone-urgent-line);background:var(--tone-urgent-fill)}.audit-flag.flag-skipped{color:var(--tone-warn);border-color:var(--tone-warn-line);background:var(--tone-warn-fill)}.audit-repeat{margin:0 0 8px;padding:7px 9px;border:1px solid var(--tone-urgent-line);background:var(--tone-urgent-fill);border-radius:var(--r-btn);font-size:var(--fs-small);line-height:1.4}.audit-repeat strong{color:var(--tone-urgent)}.audit-reject{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.audit-reason{flex:1 1 220px;min-width:160px;background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:var(--r-btn);padding:6px 8px;font:inherit;font-size:var(--fs-small)}.audit-more{margin-top:8px}@media (max-width: 640px){.review-table.resched-table .fr-row,.review-table.audit-table .fr-row{grid-template-columns:minmax(0,1fr);row-gap:4px}.review-table.resched-table .fr-row>span:nth-child(3):before,.review-table.audit-table .fr-row>span:nth-child(3):before{content:""}.audit-reason{flex:1 1 100%;font-size:var(--fs-lead)}}.review-table.sd-table .fr-row{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,1.2fr) auto}.review-table.sd-table .fr-row>span{min-width:0}.sd-table .td-onfile a{color:var(--tone-info);text-decoration:none;border-bottom:1px dotted var(--tone-info-line);width:fit-content}.sd-table .td-onfile a:hover{border-bottom-style:solid}.td-field-hint{display:block;margin-top:3px;font-size:var(--fs-micro);line-height:1.35;color:var(--muted)}.sd-table+.report-filters,.form-responses .report-filters .report-search{min-width:0}@media (max-width: 640px){.review-table.sd-table .fr-row{grid-template-columns:minmax(0,1fr);row-gap:4px}.review-table.sd-table .fr-row>span:nth-child(3):before{content:""}}.rank-prompt{margin:10px 0 12px;padding:10px 12px;border:1px solid var(--tone-info-line);border-left-width:3px;border-radius:var(--r-btn);background:var(--tone-info-fill)}.rank-prompt.is-running{background:var(--sunken);border-color:var(--hairline)}.rank-prompt.is-running .rank-prompt-lead{color:var(--muted)}.rank-prompt-lead{margin:0 0 4px;font-size:var(--fs-body);font-weight:700;color:var(--tone-info)}.rank-prompt-body{margin:0 0 10px;font-size:var(--fs-small);line-height:1.45;color:var(--muted)}.rank-prompt-act{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.rank-prompt-more{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-small);color:var(--muted)}.rank-prompt-act>.btn,.rank-prompt-act>.inline-confirm,.rank-prompt-act>.inline-confirm>.btn{flex:0 0 auto;width:auto}.rank-prompt-more-label{white-space:nowrap}.rank-prompt-input{width:54px;text-align:center;padding:5px 6px}.rl-group{margin-top:12px}.rl-group-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:0 2px 6px;border-bottom:1px solid var(--hairline);font-size:var(--fs-body)}.rl-unit{font-size:var(--fs-micro);color:var(--muted)}.rl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;padding-top:8px}.rl-cell{display:grid;grid-template-columns:1fr auto;grid-template-areas:"rank input" "students input";align-items:center;gap:0 8px;padding:7px 9px;border:1px solid var(--hairline);border-radius:var(--r-btn-sm);background:var(--surface-1)}.rl-rank{grid-area:rank;font-size:var(--fs-small);font-weight:700;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.rl-students{grid-area:students;font-size:var(--fs-micro);color:var(--muted)}.rl-input{grid-area:input;width:54px;text-align:center;padding:6px}body.admin:where(.theme-light) .rl-cell{background:var(--surface-2)}.td-noparent{font-style:italic;color:var(--muted);opacity:.7;white-space:nowrap}.sd-flag-soft{font-size:var(--fs-micro);font-weight:400;color:var(--muted)}.start-week{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:6px 0 2px}.start-week-text{color:var(--muted);font-size:var(--fs-small)}.start-week.is-open{padding:8px;border:1px solid var(--hairline);border-radius:var(--r-btn);background:var(--sunken)}.start-week-select{width:auto;min-width:9rem}.start-week-fixed{display:inline-block;margin-left:8px;padding:1px 7px;border:1px solid var(--tone-info-line);border-radius:var(--r-pill);background:var(--tone-info-fill);color:var(--tone-info);font-size:var(--fs-micro);white-space:nowrap}.new-students-window{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px}.new-students-window p{flex-basis:100%;margin:4px 0 0}.new-students-group{margin:0 0 12px;border:1px solid var(--hairline);border-radius:var(--r-card);overflow:hidden}.new-students-teacher{display:flex;align-items:baseline;gap:8px;padding:8px 10px;background:var(--surface-2);border-bottom:1px solid var(--hairline)}.new-students-teacher .group-count{margin-left:auto}.new-students-row{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:8px 10px;flex-wrap:wrap}.new-students-row+.new-students-row{border-top:1px solid var(--hairline)}.new-students-row>span:last-child{display:flex;flex-wrap:wrap;gap:4px;align-items:center;justify-content:flex-end}.void-cleanup-lead{margin:0 0 6px;font-size:var(--fs-lead)}.void-cleanup-lead .fr-sub{display:inline-block;margin-left:8px}.void-cleanup-list{margin:8px 0 0;padding-left:18px;display:grid;gap:6px;font-size:var(--fs-body)}.void-cleanup-list .fr-sub{margin-top:2px}.void-cleanup.is-stuck{border-color:var(--tone-warn-line);background:var(--tone-warn-fill)}.start-week-warn{flex-basis:100%;font-size:var(--fs-micro);color:var(--tone-warn)}.ph-forms-list{display:grid;gap:8px;margin:10px 0}.ph-forms-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:8px 10px;border:1px solid var(--hairline);border-radius:var(--r-btn);background:var(--sunken)}.ph-forms-row.is-declared{opacity:.72}.ph-forms-link{word-break:break-all}.ph-forms-hide{margin-top:12px;padding-top:10px;border-top:1px solid var(--hairline)}.focus-note{margin:0 0 14px;padding:12px 14px;border-radius:var(--r-card);background:var(--sunken);box-shadow:inset 3px 0 0 var(--primary)}.focus-note-lead{margin:0;font-size:var(--fs-body);line-height:1.6;color:var(--text);max-width:72ch}.focus-note-rest{color:var(--muted)}.focus-note-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.focus-note-acts .btn{flex:0 0 auto}.focus-gaps{display:flex;flex-direction:column;gap:12px;margin-top:14px;padding-top:12px;border-top:1px solid var(--hairline)}.focus-gap-head{margin:0 0 3px;font-size:var(--fs-body);color:var(--text)}.focus-gap-fix{margin:0 0 4px;font-size:var(--fs-small);line-height:1.55;color:var(--muted);max-width:72ch}.focus-gap-who{margin:0;font-size:var(--fs-small);line-height:1.55;color:var(--muted);opacity:.85;max-width:78ch}.next-step{display:flex;align-items:baseline;gap:7px;margin:2px 0 8px;font-size:var(--fs-small);font-weight:600;line-height:1.45}.next-step-mark{font-size:var(--fs-tiny);line-height:1.9;flex:0 0 auto}.next-step-text{min-width:0}.next-step.is-ok{color:var(--muted);font-weight:500}.next-step.is-ok .next-step-mark{color:var(--tone-good)}.next-step.is-do{color:var(--text)}.next-step.is-do .next-step-mark{color:var(--tone-warn)}.next-step.is-stop{color:var(--text)}.next-step.is-stop .next-step-mark{color:var(--tone-urgent)}.ch-sub-h2{margin:-4px 0 12px;max-width:68ch}.admin-pane>div:empty{display:none}body.admin .admin-pane{gap:10px}body.admin .admin-pane>div>.card.notice,body.admin .admin-pane>.card.notice{padding:12px 14px}body.admin .admin-pane>*:first-child>.card.notice,body.admin .admin-pane>.card.notice:first-child{padding-top:12px}.card.student{gap:0}.card.student>*{margin-top:12px;margin-bottom:0}.card.student>*:first-child{margin-top:0}.card.student>.student-name{margin-top:0}.card.student>.next-step{margin-top:7px;margin-bottom:0}.card.student>.student-id{margin-top:7px}.card.student>.meta{margin-top:3px}.card.student>.student-teacher{margin-top:3px}.card.student>.quick-missed{margin:12px 0 0}.card.student>.weekly{margin:12px 0 0}.card.student>.actions{margin:12px 0 0}.card.student>.cover-flag{margin-top:0}.card.student>.cover-flag+*{margin-top:10px}.card.student>.cover-wait{margin-top:8px}.card.student>.alert-flag{margin-top:0;margin-bottom:0}.card.student>.alert-flag+.student-name{margin-top:8px}:root{--bg: #0a0d14;--surface-1: #11151f;--surface-2: #171c29;--surface-3: #1f2533;--glass: #11151f;--card: var(--surface-1);--sunken: #0d1118;--raised: #1f2533;--field: #0d1118;--track: #232a39;--hairline: rgba(176, 192, 222, .09);--hairline-strong: rgba(176, 192, 222, .2);--border: var(--hairline);--text: #dfe4ee;--muted: #8b95ab;--lantern: #e7b063;--lantern-soft: #c9985a;--lantern-line: rgba(231, 176, 99, .38);--lantern-fill: rgba(231, 176, 99, .1);--primary: #2a3448;--primary-hi: #2a3448;--primary-hover: #333e55;--primary-hover-hi: #333e55;--primary-line: rgba(176, 192, 222, .22);--primary-text: #eaeefa;--ring: rgba(231, 176, 99, .5);--st-done: #7fc0a2;--st-leave: #8aa7d6;--st-missed: #d78d86;--tone-urgent: #d78d86;--tone-urgent-line: rgba(215, 141, 134, .34);--tone-urgent-fill: rgba(215, 141, 134, .09);--tone-warn: var(--lantern);--tone-warn-line: var(--lantern-line);--tone-warn-fill: var(--lantern-fill);--tone-info: #8aa7d6;--tone-info-line: rgba(138, 167, 214, .3);--tone-info-fill: rgba(138, 167, 214, .08);--tone-good: #7fc0a2;--tone-good-fill: rgba(127, 192, 162, .1);--tone-good-line: rgba(127, 192, 162, .36);--btn-gloss: transparent;--btn-shadow: rgba(0, 0, 0, .5);--btn-hover-tint: rgba(176, 192, 222, .06);--row-hover: rgba(176, 192, 222, .04);--warn: var(--lantern-soft)}body:not(.admin),body.admin:not(.theme-light){background:var(--bg);background-attachment:scroll}body:not(.admin) .card{background:var(--surface-1);-webkit-backdrop-filter:none;backdrop-filter:none;border:1px solid var(--hairline)}body:not(.admin) .topbar,body.admin:not(.theme-light) .topbar{background:#0a0d14e0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--hairline)}.btn{border-width:1px;border-style:solid;box-shadow:none;font-weight:550;letter-spacing:.005em;transition:background-color var(--t-hover) var(--ease),border-color var(--t-hover) var(--ease),color var(--t-hover) var(--ease)}.btn:hover:not(:disabled){transform:none}.btn:active:not(:disabled){transform:none}.btn.primary,.btn.primary:hover:not(:disabled){background:var(--primary);border-color:var(--primary-line);color:var(--primary-text);box-shadow:none}.btn.primary:hover:not(:disabled){background:var(--primary-hover)}.btn.primary:disabled{background:var(--surface-2);border-color:var(--hairline);color:var(--muted)}.btn.missed{background:transparent;border-color:var(--lantern-line);color:var(--lantern);font-weight:550}.btn.missed:hover:not(:disabled){background:var(--lantern-fill);border-color:var(--lantern)}.btn.confirm{background:transparent;border-color:var(--tone-good-line);color:var(--tone-good)}.btn.confirm:hover:not(:disabled){background:var(--tone-good-fill)}.btn.whatsapp,.btn.ghost{background:transparent;border-color:var(--hairline);color:var(--muted);font-weight:550}.btn.whatsapp:hover:not(:disabled),.btn.ghost:hover:not(:disabled){background:var(--btn-hover-tint);border-color:var(--hairline-strong);color:var(--text)}.btn.armed{background:var(--lantern-fill);border-color:var(--lantern);color:var(--lantern)}.btn:focus-visible{outline:none;box-shadow:0 0 0 1px var(--bg),0 0 0 3px var(--ring)}body.admin .navlink.active,body:not(.admin) .navlink.active,body.admin.theme-light .navlink.active{background:var(--surface-3);color:var(--text);box-shadow:none}body.admin.theme-light .btn.missed{color:#8a5310;border-color:#e0c08a}body.admin.theme-light .btn.missed:hover:not(:disabled){background:#fdf6ec;border-color:#c28c38}body.admin.theme-light .btn.confirm{color:#0d6b4f;border-color:#8fcfb4}body.admin.theme-light .btn:focus-visible{box-shadow:0 0 0 1px #fff,0 0 0 3px #1d4ed873}.passport-card{background:var(--surface-2);border:1px solid var(--hairline);box-shadow:none;color:var(--text)}.passport-card:after{top:9px;right:9px;bottom:9px;left:9px;border:1px solid var(--hairline);background:transparent}.passport-card:hover{transform:translateY(-4px);box-shadow:none;border-color:var(--hairline-strong)}.passport-title{color:var(--lantern);letter-spacing:.3em}.passport-brand{font-weight:700;letter-spacing:.03em}.passport-brand .ast{color:var(--lantern)}.passport-welcome strong{color:var(--lantern);font-weight:650}.passport-mark{position:absolute;right:20px;bottom:16px;width:54px;height:54px;color:var(--lantern);opacity:.22}.home-card{background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-card);gap:6px;transition:background-color var(--t-hover) var(--ease),border-color var(--t-hover) var(--ease)}.home-card:hover{transform:none;background:var(--surface-2);border-color:var(--hairline-strong);box-shadow:none}.home-card-icon{display:inline-flex;margin-bottom:4px;color:var(--muted);transition:color var(--t-hover) var(--ease)}.home-card:hover .home-card-icon{color:var(--lantern)}.home-ico{width:26px;height:26px;display:block}.home-card-title{font-weight:650}.announce-sign{margin-top:14px;color:var(--lantern-soft);font-weight:600}.alert-flag{background:var(--lantern-fill);border:1px solid var(--lantern-line);color:var(--lantern);font-weight:600}.card.student.alert.sev-high .alert-flag{background:var(--tone-urgent-fill);border-color:var(--tone-urgent-line);color:var(--tone-urgent)}.card.student.alert{border-left:2px solid var(--lantern-soft)}.card.student.alert.sev-high{border-left-color:var(--tone-urgent)}.card.student.needs-attendance{border-left:2px solid var(--hairline-strong)}.pay-lock{background:var(--tone-urgent-fill);border:1px solid var(--tone-urgent-line);color:var(--tone-urgent)}.search,.week-select,.term-select,input[type=text],input[type=email],input[type=tel],input[type=search],select,textarea{background:var(--field);border:1px solid var(--hairline);color:var(--text);border-radius:var(--r-btn-sm)}.search:focus,.week-select:focus,.term-select:focus,input:focus,select:focus,textarea:focus{outline:none;border-color:var(--lantern-line);box-shadow:0 0 0 2px var(--lantern-fill)}body.admin.theme-light .search:focus,body.admin.theme-light input:focus,body.admin.theme-light select:focus,body.admin.theme-light textarea:focus{border-color:var(--primary);box-shadow:0 0 0 2px #1d4ed824}body:not(.admin) .weekly,body.admin:not(.theme-light) .weekly{background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-btn)}.linkish{color:var(--lantern-soft);text-decoration-color:var(--lantern-line)}.linkish:hover{color:var(--lantern)}body.admin.theme-light .linkish{color:var(--primary)}.wr-node.is-done .wr-dot{fill:var(--text);stroke:var(--text)}.wr-node.is-leave .wr-dot{fill:var(--st-leave);stroke:var(--st-leave)}.wr-node.is-missed .wr-dot{fill:var(--st-missed);stroke:var(--st-missed)}.wr-node.is-overdue .wr-dot{fill:var(--sunken);stroke:var(--st-missed)}.wr-node.is-current .wr-dot{fill:var(--surface-2);stroke:var(--lantern)}.wr-node.is-future .wr-dot{fill:var(--surface-2);stroke:var(--hairline-strong)}body.admin.theme-light .wr-node.is-done .wr-dot{fill:var(--text);stroke:var(--text)}:root{--fs-tiny: 9px;--fs-micro: 11px;--fs-small: 12px;--fs-body: 13px;--fs-lead: 15px;--fs-head: 18px;--fs-title: 22px;--fs-hero: 28px;--r-xs: 8px;--r-sm: 10px;--r-md: 12px;--r-lg: 16px;--r-pill: 999px}body{--wk-done: var(--text);--wk-turn: var(--lantern);--wk-rest: var(--st-leave);--wk-gone: var(--st-missed);--wk-none: var(--hairline-strong);--wk-dim: var(--muted)}.wr-node.is-done .wr-dot,body.admin.theme-light .wr-node.is-done .wr-dot{fill:var(--wk-done);stroke:var(--wk-done)}.wr-node.is-current .wr-dot,body.admin.theme-light .wr-node.is-current .wr-dot{fill:var(--surface-2);stroke:var(--wk-turn)}.wr-node.is-moved .wr-dot{fill:var(--wk-turn);stroke:var(--wk-turn)}.wr-node.is-leave .wr-dot,.wr-node.is-missed .wr-dot,.wr-node.is-madeup .wr-dot,.wr-node.is-legacy .wr-dot,.wr-node.is-spare .wr-dot{fill:var(--wk-rest);stroke:var(--wk-rest)}.wr-node.is-overdue .wr-dot,.wr-node.is-broken .wr-dot,body.admin.theme-light .wr-node.is-overdue .wr-dot{fill:var(--sunken);stroke:var(--wk-gone)}.wr-node.is-before .wr-dot,.wr-node.is-future .wr-dot,body.admin.theme-light .wr-node.is-future .wr-dot{fill:var(--surface-2);stroke:var(--wk-none)}.wr-hole{fill:var(--sunken);stroke:var(--wk-gone);stroke-width:1.1;filter:none}.wr-node.is-done .wr-label{fill:var(--wk-done)}.wr-node.is-current .wr-label,.wr-node.is-moved .wr-label{fill:var(--wk-turn)}.wr-node.is-leave .wr-label,.wr-node.is-missed .wr-label,.wr-node.is-madeup .wr-label,.wr-node.is-legacy .wr-label,.wr-node.is-spare .wr-label{fill:var(--wk-rest)}.wr-node.is-overdue .wr-label,.wr-node.is-broken .wr-label,body.admin.theme-light .wr-node.is-overdue .wr-label{fill:var(--wk-gone);font-weight:700}.wr-node.is-before .wr-label,.wr-node.is-future .wr-label{fill:var(--wk-dim)}.wr-node.is-active .wr-label,.wr-node.is-hover .wr-label,body.admin.theme-light .wr-node.is-active .wr-label{fill:var(--text)}.wr-node.is-active .wr-label{font-weight:800}.wr-link,body.admin.theme-light .wr-link{stroke:var(--wk-none)}.wr-link.is-lit,body.admin.theme-light .wr-link.is-lit{stroke:var(--wk-done);stroke-width:2.2;filter:none}.wr-link.is-cool,body.admin.theme-light .wr-link.is-cool{stroke:var(--wk-rest);stroke-width:2;filter:none}.wr-link.is-weak,body.admin.theme-light .wr-link.is-weak{stroke:var(--wk-none);stroke-width:1.6;stroke-dasharray:3.5 3.5;filter:none}.wr-link.is-sever,body.admin.theme-light .wr-link.is-sever{stroke:var(--wk-gone);filter:none}.wr-link.is-fade,.wr-link.is-void{filter:none}.wr-stop-warm,body.admin.theme-light .wr-stop-warm{stop-color:var(--wk-done)}.wr-stop-cool,body.admin.theme-light .wr-stop-cool{stop-color:var(--wk-rest)}.wr-stop-edge,body.admin.theme-light .wr-stop-edge{stop-color:var(--wk-done);stop-opacity:.55}.wr-stop-void,body.admin.theme-light .wr-stop-void{stop-color:var(--wk-done);stop-opacity:0}.wr-ripple i,body.admin.theme-light .wr-ripple i{border-color:var(--wk-gone)}.wr-ripple.is-current i,body.admin.theme-light .wr-ripple.is-current i{border-color:var(--wk-turn)}.wr-tip-state.is-done,body.admin.theme-light .wr-tip-state.is-done{color:var(--wk-done)}.wr-tip-state.is-current,.wr-tip-state.is-moved{color:var(--wk-turn)}.wr-tip-state.is-leave,.wr-tip-state.is-missed,.wr-tip-state.is-madeup,.wr-tip-state.is-legacy,.wr-tip-state.is-spare{color:var(--wk-rest)}.wr-tip-state.is-overdue,.wr-tip-state.is-broken{color:var(--wk-gone)}.wr-tip-state.is-before,.wr-tip-state.is-future{color:var(--wk-dim)}.wl-dot.is-done,body.admin.theme-light .wl-dot.is-done{background:var(--wk-done);border-color:var(--wk-done)}.wl-dot.is-current,.wl-dot.is-moved,body.admin.theme-light .wl-dot.is-current,body.admin.theme-light .wl-dot.is-moved{background:var(--wk-turn);border-color:var(--wk-turn)}.wl-dot.is-leave,.wl-dot.is-missed,.wl-dot.is-madeup,.wl-dot.is-legacy,.wl-dot.is-spare,body.admin.theme-light .wl-dot.is-madeup,body.admin.theme-light .wl-dot.is-legacy,body.admin.theme-light .wl-dot.is-spare{background:var(--wk-rest);border-color:var(--wk-rest)}.wl-dot.is-overdue,.wl-dot.is-broken,body.admin.theme-light .wl-dot.is-overdue,body.admin.theme-light .wl-dot.is-broken{background:var(--sunken);border-color:var(--wk-gone);box-shadow:none}.wl-dot.is-before,.wl-dot.is-future,body.admin.theme-light .wl-dot.is-before,body.admin.theme-light .wl-dot.is-future{background:var(--surface-2);border-color:var(--wk-none)}:root{--bg: #0d1119;--surface-1: #141923;--surface-2: #1a202c;--surface-3: #222936;--card: #141923;--sunken: #0a0e15;--raised: #222936;--field: #11161f;--track: #272f3e;--text: #e2e7f1;--muted: #929db4;--hairline: rgba(176, 192, 222, .1);--hairline-strong: rgba(176, 192, 222, .22);--border: rgba(176, 192, 222, .14)}body.admin.theme-light{--bg: #e2e8f1;--card: #eef2f9;--surface-1: #eef2f9;--surface-2: #e4eaf3;--surface-3: #d9e1ed;--sunken: #d8e0ec;--raised: #f2f5fa;--field: #f2f5fa;--glass: rgba(238, 242, 249, .82);--track: #cfd9e8;--border: rgba(26, 39, 64, .14);--hairline: rgba(26, 39, 64, .11);--hairline-strong: rgba(26, 39, 64, .24);--text: #1a2740;--muted: #5d6c86;--primary: #2b3b58;--primary-hover: #36486a;--primary-hi: #36486a;--primary-line: rgba(26, 39, 64, .26);--primary-text: #f2f5fb;--lantern: #9c6a2c;--lantern-soft: #815629;--lantern-line: rgba(156, 106, 44, .42);--lantern-fill: rgba(156, 106, 44, .1);--ring: rgba(156, 106, 44, .45);--warn: #815629;--st-done: #3c7c63;--st-leave: #45608d;--st-missed: #a34f4b;--tone-urgent: #8f3b38;--tone-urgent-line: rgba(143, 59, 56, .3);--tone-urgent-fill: rgba(143, 59, 56, .07);--tone-warn: #8a6027;--tone-warn-line: rgba(138, 96, 39, .3);--tone-warn-fill: rgba(138, 96, 39, .07);--tone-warn-edge: #a8762f;--tone-info: #3b5680;--tone-info-line: rgba(59, 86, 128, .28);--tone-info-fill: rgba(59, 86, 128, .07);--tone-good: #3c7c63;--tone-good-line: rgba(60, 124, 99, .3);--tone-good-fill: rgba(60, 124, 99, .07);--ink-2: #3a4a63;--intro-rule: rgba(26, 39, 64, .2);--btn-gloss: transparent;--btn-rim: transparent;--btn-shadow: rgba(26, 39, 64, .22);--btn-hover-tint: rgba(26, 39, 64, .045);--row-hover: rgba(26, 39, 64, .04)}body.admin.theme-light .card{box-shadow:0 1px 2px #1a27400d}body.admin.theme-light .home-card:hover,body.admin.theme-light .suggestions{box-shadow:0 10px 24px -16px #1a274059}body.admin.theme-light .weekly{background:var(--surface-2)}body.admin.theme-light .week-dot{background:var(--field)}body.admin.theme-light .wr-tip{background:var(--raised)}body.admin.theme-light .btn[data-tip]:after{background:var(--raised);box-shadow:0 12px 26px -14px #1a274059}body.admin.theme-light .card.student.alert{background:var(--tone-urgent-fill)}body.admin.theme-light .navlink:hover{background:var(--surface-3)}body.admin.theme-light .btn:focus-visible,body.admin.theme-light .navlink:focus-visible{box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--ring)}body.admin.theme-light .btn.missed:focus-visible{box-shadow:inset 3px 0 0 var(--tone-warn-edge),0 0 0 2px var(--bg),0 0 0 4px var(--ring)}body.admin.theme-light .btn.missed{color:var(--lantern-soft);border-color:var(--lantern-line)}body.admin.theme-light .btn.confirm{color:var(--st-done);border-color:var(--tone-good-line)}body.admin.theme-light .linkish,body.admin.theme-light .linklike{color:var(--lantern-soft)}body.admin.theme-light .linkish:hover,body.admin.theme-light .linklike:hover{color:var(--lantern)}body.admin.theme-light .wr-dot{stroke:var(--hairline-strong)}body.admin.theme-light .wr-node:hover .wr-dot{stroke:var(--text)}.admin-badge{background:var(--primary);color:var(--primary-text);font-weight:650;letter-spacing:.08em}body.admin:not(.theme-light){--tone-good-fill: rgba(127, 192, 162, .1);--btn-shadow: rgba(0, 0, 0, .5);--row-hover: rgba(176, 192, 222, .04)}body.admin.theme-light{--tone-good-fill: rgba(60, 124, 99, .09);--primary-hover-hi: #36486a;--btn-shadow: rgba(26, 39, 64, .22)}body.admin.theme-light{background:var(--bg);background-attachment:fixed}body.admin.theme-light .btn.confirm,body.admin.theme-light .btn.confirm:hover:not(:disabled),body.admin.theme-light .btn.missed,body.admin.theme-light .btn.missed:hover:not(:disabled){background:transparent}body.admin.theme-light .btn.confirm:hover:not(:disabled){background:var(--tone-good-fill);border-color:var(--tone-good)}body.admin.theme-light .btn.missed:hover:not(:disabled){background:var(--lantern-fill);border-color:var(--lantern)}body.admin.theme-light{--tone-warn-ink: var(--lantern-soft);--tone-warn-wash: transparent;--tone-warn-rule: var(--lantern-line)}:root{--bg: #0c1017;--surface-1: #161b26;--surface-2: #1e2430;--surface-3: #272e3c;--card: #161b26;--sunken: #090d13;--raised: #272e3c;--field: #10151d;--track: #2b3342}body.admin.theme-light{--bg: #dde3ec;--surface-1: #eff2f7;--surface-2: #e2e7ef;--surface-3: #d2d9e4;--card: #eff2f7;--sunken: #d4dbe6;--raised: #f5f7fa;--field: #f6f8fb;--track: #c8d2e0}body{--slab: #1b212d;--slab-line: rgba(176, 192, 222, .16);--slab-ink: #e4e9f3;--slab-dim: #9aa5bb;--night: #11161f;--night-2: #1a2130;--night-line: rgba(176, 192, 222, .14);--night-line-strong: rgba(176, 192, 222, .26);--night-ink: #e8ecf5;--night-dim: #94a0b8;--wk-done: #e8ecf5;--wk-turn: #e7b063;--wk-rest: #8aa7d6;--wk-gone: #d78d86;--wk-none: rgba(176, 192, 222, .26);--wk-dim: #94a0b8}body.admin.theme-light{--slab: #c9d2de;--slab-line: rgba(26, 39, 64, .22);--slab-ink: #16213a;--slab-dim: #4c5a74}.passport-card,body.admin.theme-light .passport-card{background:var(--slab);border:1px solid var(--slab-line);color:var(--slab-ink);box-shadow:none}.passport-card:after,body.admin.theme-light .passport-card:after{border:1px solid var(--slab-line)}body.admin.theme-light .passport-card:hover{border-color:#1a274057}.passport-welcome span{color:var(--slab-dim);opacity:1}.focus-note,body.admin.theme-light .focus-note{background:var(--surface-1);border:1px solid var(--hairline);box-shadow:inset 3px 0 0 var(--primary)}.wr-wrap,body.admin.theme-light .wr-wrap{margin:10px 0 2px;padding:8px 8px 6px;border:1px solid var(--night-line);border-radius:var(--r-md);background:var(--night);color:var(--night-ink)}.wl,body.admin.theme-light .wl{background:var(--night);border:1px solid var(--night-line);color:var(--night-ink)}.wl-toggle,body.admin.theme-light .wl-toggle{color:var(--night-ink)}.wl-chev,.wl-note,body.admin.theme-light .wl-chev,body.admin.theme-light .wl-note{color:var(--night-dim)}.wl-warn,body.admin.theme-light .wl-warn{background:transparent;border-top:1px solid var(--night-line);color:var(--night-dim)}.wl-warn strong,body.admin.theme-light .wl-warn strong{color:var(--wk-gone)}.wr-month,.wr-nav,body.admin.theme-light .wr-month,body.admin.theme-light .wr-nav{color:var(--night-dim)}.wr-nav:hover:not(:disabled),body.admin.theme-light .wr-nav:hover:not(:disabled){color:var(--night-ink);background:#b0c0de12;border-color:var(--night-line)}.wr-stars circle,body.admin .wr-stars circle,body.admin.theme-light .wr-stars circle{fill:#fff;opacity:.16}.wr-dot,body.admin.theme-light .wr-dot{stroke:var(--night-line-strong)}.wr-node:hover .wr-dot,body.admin.theme-light .wr-node:hover .wr-dot{stroke:var(--night-ink)}.wr-tip,body.admin.theme-light .wr-tip{background:var(--night-2);border-color:var(--night-line-strong);color:var(--night-ink);box-shadow:0 16px 34px -16px #000c}.wr-tip-line,body.admin.theme-light .wr-tip-line{color:var(--night-dim)}.wr-tip-move,body.admin.theme-light .wr-tip-move{color:var(--night-dim);border-left-color:var(--night-line)}.wr-node.is-current .wr-dot,body.admin.theme-light .wr-node.is-current .wr-dot{fill:var(--night-2);stroke:var(--wk-done);stroke-width:1.8}.wr-node.is-current .wr-label,body.admin.theme-light .wr-node.is-current .wr-label{fill:var(--wk-done)}.wr-ripple.is-current i,body.admin.theme-light .wr-ripple.is-current i{border-color:var(--wk-done)}.wl-dot.is-current,body.admin.theme-light .wl-dot.is-current{background:var(--night-2);border-color:var(--wk-done)}.wr-node.is-moved .wr-dot,body.admin.theme-light .wr-node.is-moved .wr-dot{fill:var(--wk-turn);stroke:var(--wk-turn)}body.admin.theme-light .wr-node.is-leave .wr-dot,body.admin.theme-light .wr-node.is-missed .wr-dot,body.admin.theme-light .wr-node.is-madeup .wr-dot,body.admin.theme-light .wr-node.is-legacy .wr-dot,body.admin.theme-light .wr-node.is-spare .wr-dot{fill:var(--wk-rest);stroke:var(--wk-rest)}body.admin.theme-light .wr-node.is-leave .wr-label,body.admin.theme-light .wr-node.is-missed .wr-label,body.admin.theme-light .wr-node.is-madeup .wr-label,body.admin.theme-light .wr-node.is-legacy .wr-label,body.admin.theme-light .wr-node.is-spare .wr-label{fill:var(--wk-rest)}body.admin.theme-light .wr-node.is-moved .wr-label{fill:var(--wk-turn)}body.admin.theme-light .wr-node.is-done .wr-dot{fill:var(--wk-done);stroke:var(--wk-done)}body.admin.theme-light .wr-node.is-done .wr-label,body.admin.theme-light .wr-node.is-active .wr-label,body.admin.theme-light .wr-node.is-hover .wr-label{fill:var(--night-ink)}body.admin.theme-light .wr-tip-state.is-done{color:var(--wk-done)}body.admin.theme-light .wr-tip-state.is-madeup,body.admin.theme-light .wr-tip-state.is-legacy,body.admin.theme-light .wr-tip-state.is-spare,body.admin.theme-light .wr-tip-state.is-leave,body.admin.theme-light .wr-tip-state.is-missed{color:var(--wk-rest)}body.admin.theme-light .wr-tip-state.is-moved,body.admin.theme-light .wr-tip-state.is-current{color:var(--wk-turn)}body.admin.theme-light .wr-tip-state.is-before,body.admin.theme-light .wr-tip-state.is-future{color:var(--wk-dim)}body.admin.theme-light .wr-link{stroke:var(--wk-none)}body.admin.theme-light .wr-link.is-lit{stroke:var(--wk-done)}body.admin.theme-light .wr-link.is-cool{stroke:var(--wk-rest)}body.admin.theme-light .wr-stop-warm{stop-color:var(--wk-done)}body.admin.theme-light .wr-stop-cool{stop-color:var(--wk-rest)}body.admin.theme-light .wr-stop-edge{stop-color:var(--wk-done);stop-opacity:.55}body.admin.theme-light .wr-stop-void{stop-color:var(--wk-done);stop-opacity:0}.wr-wrap.is-blank .wr-link,body.admin.theme-light .wr-wrap.is-blank .wr-link{stroke:var(--wk-none)}.wr-wrap.is-blank .wr-node.is-overdue .wr-dot,body.admin.theme-light .wr-wrap.is-blank .wr-node.is-overdue .wr-dot{fill:var(--night-2);stroke:var(--wk-none)}.wr-wrap.is-blank .wr-node.is-overdue .wr-label,.wr-wrap.is-blank .wr-node.is-missed .wr-label,body.admin.theme-light .wr-wrap.is-blank .wr-node.is-overdue .wr-label,body.admin.theme-light .wr-wrap.is-blank .wr-node.is-missed .wr-label{fill:var(--wk-dim)}.wr-wrap.is-blank .wr-node.is-active .wr-label,body.admin.theme-light .wr-wrap.is-blank .wr-node.is-active .wr-label{fill:var(--night-ink)}body{--void: #121823;--void-line: rgba(176, 192, 222, .17);--void-ink: #e6ebf5;--void-dim: #97a2b8;--void-warm: #e7b063;--night: #333c52;--night-2: #3d475f;--night-deep: #242c3c;--night-line: rgba(176, 192, 222, .18);--night-line-strong: rgba(176, 192, 222, .3);--night-ink: #eaeef7;--night-dim: #b9c3d6;--night-mat: #262e3d}body.admin.theme-light{--night-mat: #c8d1df}.passport-card,body.admin.theme-light .passport-card{background:var(--void);border:1px solid var(--void-line);color:var(--void-ink);box-shadow:none}.passport-card:after,body.admin.theme-light .passport-card:after{border:1px solid var(--void-line)}.passport-card:hover,body.admin.theme-light .passport-card:hover{border-color:var(--night-line-strong)}.passport-title,body.admin.theme-light .passport-title{color:var(--void-warm)}.passport-brand,body.admin.theme-light .passport-brand{color:var(--void-ink)}.passport-brand .ast,body.admin.theme-light .passport-brand .ast{color:var(--void-warm)}.passport-welcome span,body.admin.theme-light .passport-welcome span{color:var(--void-dim);opacity:1}.passport-welcome strong,body.admin.theme-light .passport-welcome strong{color:var(--void-warm)}.passport-mark,body.admin.theme-light .passport-mark{color:var(--void-warm);opacity:.24}.wr-wrap,body.admin.theme-light .wr-wrap{margin:13px 4px 7px;padding:8px 8px 6px;border:1px solid var(--night-line);border-radius:var(--r-md);background:var(--night);color:var(--night-ink);box-shadow:0 0 0 4px var(--night-mat)}.wl,body.admin.theme-light .wl{margin:0 4px 14px;background:var(--night);border:1px solid var(--night-line);color:var(--night-ink);box-shadow:0 0 0 4px var(--night-mat)}.wr-stars circle,body.admin .wr-stars circle,body.admin.theme-light .wr-stars circle{fill:#fff;opacity:.2}.wr-back,body.admin.theme-light .wr-back{fill:var(--night-2)}.wr-node.is-overdue .wr-dot,.wr-node.is-broken .wr-dot,body.admin.theme-light .wr-node.is-overdue .wr-dot,body.admin.theme-light .wr-node.is-broken .wr-dot,.wr-hole,body.admin.theme-light .wr-hole{fill:var(--night-deep);stroke:var(--wk-gone)}.wr-node.is-current .wr-dot,body.admin.theme-light .wr-node.is-current .wr-dot{fill:var(--night-deep);stroke:var(--wk-done);stroke-width:1.8}.wr-node.is-before .wr-dot,.wr-node.is-future .wr-dot,body.admin.theme-light .wr-node.is-before .wr-dot,body.admin.theme-light .wr-node.is-future .wr-dot,.wr-wrap.is-blank .wr-node.is-overdue .wr-dot,body.admin.theme-light .wr-wrap.is-blank .wr-node.is-overdue .wr-dot{fill:var(--night-2);stroke:var(--wk-none)}.wl-dot.is-overdue,.wl-dot.is-broken,body.admin.theme-light .wl-dot.is-overdue,body.admin.theme-light .wl-dot.is-broken{background:var(--night-deep);border-color:var(--wk-gone);box-shadow:none}.wl-dot.is-current,body.admin.theme-light .wl-dot.is-current{background:var(--night-deep);border-color:var(--wk-done)}.wl-dot.is-before,.wl-dot.is-future,body.admin.theme-light .wl-dot.is-before,body.admin.theme-light .wl-dot.is-future{background:var(--night-2);border-color:var(--wk-none)}.wr-tip,body.admin.theme-light .wr-tip{background:var(--night-deep);border-color:var(--night-line-strong);color:var(--night-ink)}.next-step.is-wait{color:var(--muted);font-weight:500}.next-step.is-wait .next-step-mark{color:var(--st-leave)}.roster-group-wrap{display:inline-flex;align-items:center;gap:7px;flex:none;min-width:0}.roster-group-lead{font-size:var(--fs-micro);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);white-space:nowrap}@media (max-width: 520px){.roster-group-lead{display:none}}.set-index-list{list-style:none;margin:2px 0 0;padding:0;display:flex;flex-direction:column;gap:0}.set-index-row+.set-index-row{border-top:1px solid var(--hairline)}.set-index-go{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 12px;width:100%;text-align:left;background:none;border:0;margin:0;padding:9px 4px;font:inherit;color:inherit;cursor:pointer;border-radius:var(--r-xs);transition:background-color var(--t-hover) var(--ease)}.set-index-go:hover{background:var(--btn-hover-tint)}.set-index-go:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--ring)}.set-index-name{font-size:var(--fs-body);font-weight:600;color:var(--text);min-width:0}.set-index-value{grid-column:2;grid-row:1;align-self:baseline;font-size:var(--fs-small);font-weight:600;color:var(--muted);white-space:nowrap}.set-index-value.is-changed{color:var(--lantern)}.set-index-means{grid-column:1 / -1;font-size:var(--fs-small);font-weight:400;line-height:1.5;color:var(--muted);max-width:72ch}@media (max-width: 420px){.set-index-go{grid-template-columns:minmax(0,1fr)}.set-index-value{grid-column:1;grid-row:2;white-space:normal}}.adm-clear{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0 2px;padding-top:8px;border-top:1px solid var(--hairline)}.adm-clear>.adm-clear-go{margin-left:auto}.adm-clear-text{display:flex;align-items:baseline;gap:6px;min-width:0;flex:1 1 auto;font-size:var(--fs-small);line-height:1.5;color:var(--muted);font-weight:500}.adm-clear-mark{flex:0 0 auto;font-size:var(--fs-tiny);line-height:1.9;color:var(--st-done)}.adm-clear.is-done{border-top-color:var(--hairline);opacity:.86}.adm-clear.is-done:hover,.adm-clear.is-done:focus-within{opacity:1}.adm-clear-go{white-space:nowrap}.af-fine{align-self:flex-start;flex:0 0 auto;margin-top:4px;white-space:nowrap}.roster-scope{display:inline-flex;align-items:center;gap:7px;flex:none;min-width:0}body.admin .roster-scope-sel{flex:0 1 auto;width:auto;max-width:15rem;-moz-appearance:none;appearance:none;-webkit-appearance:none;border-radius:var(--r-btn-sm);padding:6px 26px 6px 10px;font-size:var(--fs-small);font-weight:600;cursor:pointer;background-repeat:no-repeat;background-position:right 8px center;transition:border-color var(--t-hover) var(--ease),box-shadow var(--t-hover) var(--ease)}body.admin:where(.theme-light) .roster-scope-sel{background-color:var(--field);border:1px solid var(--hairline);color:var(--text);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%235a6b82' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}body.admin:where(.theme-dark) .roster-scope-sel{background-color:var(--field, var(--sunken));border:1px solid var(--border);color:var(--text);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%239aa3b2' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}body.admin .roster-scope-sel option{background:var(--surface-1, var(--card));color:var(--text)}@media (max-width: 520px){body.admin .roster-scope-sel{max-width:9rem}}.roster-group-wrap{flex-wrap:wrap;row-gap:6px}.report-filters .td-search{width:auto;flex:1 1 14rem;min-width:11rem;max-width:26rem}.td-found{margin:0 0 8px;font-size:var(--fs-small);line-height:1.6}@media (max-width: 560px){.report-filters .td-search{flex:1 1 100%;max-width:none}}.panel-wait{min-height:7.5rem}.panel-wait-note{font-style:italic;opacity:.75}.chase-teacher{white-space:nowrap}body.admin .card.student .actions .btn.whatsapp{flex:1 1 100%;white-space:nowrap}@media (max-width: 599px){.roster-tools-extra.is-open .view-as{align-self:flex-start}}.progress-acts{display:flex;flex-wrap:wrap;gap:8px}.progress-ring,body.admin.theme-light .progress-ring{background:conic-gradient(var(--text) var(--pct),var(--track) 0)}
