/* Local system fonts; no trackers, CDNs or external assets. */
:root{--ink:#23342f;--muted:#62716a;--green:#27604e;--wash:#f3f5ef;--line:#dce4dc;--soft:#e9f0e6;--white:#fff;--red:#a23535;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--wash);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;line-height:1.6}a{color:var(--green);text-underline-offset:3px}a:hover{text-decoration-thickness:2px}button,input,select{font:inherit}button,a,input,select,summary{touch-action:manipulation}button,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline-offset:4px}input:focus,select:focus{outline:2px solid var(--green)}h1,h2,p{margin:0}h1{font-size:clamp(2.1rem,5.5vw,3.5rem);line-height:1.13;letter-spacing:-.045em;font-weight:700;margin:10px 0 20px}h2{font-size:1.25rem;line-height:1.35}p+p{margin-top:14px}.accent{color:var(--green)}.muted,.hint{color:var(--muted)}.hint{font-size:.86rem;margin-top:16px}.top{padding:22px max(24px,calc((100vw - 1240px)/2));display:flex;align-items:center;justify-content:space-between;gap:20px;background:white;border-bottom:1px solid var(--line)}.brand{display:flex;gap:13px;align-items:center;text-decoration:none;font-weight:650;color:var(--ink);font-size:.94rem;line-height:1.3}.brand small{display:block;font-size:.77rem;color:var(--muted);font-weight:400;margin-top:4px}.brand-mark{height:42px;width:42px;flex:0 0 42px;border-radius:13px;display:grid;place-items:center;font-size:2rem;line-height:1;color:white;background:var(--green)}.top>a.muted{font-size:.86rem}.account{display:flex;gap:20px;align-items:center;font-size:.88rem}.narrow{max-width:800px;margin:52px auto 64px;padding:0 24px}.wide{max-width:1240px;margin:48px auto 64px;padding:0 24px}.eyebrow{text-transform:uppercase;letter-spacing:.16em;font-size:.75rem;font-weight:700;color:var(--green)}.lead{font-size:1.08rem;color:var(--muted);max-width:600px;margin-bottom:28px}.card{border:1px solid var(--line);background:white;border-radius:20px;padding:30px;box-shadow:0 3px 0 rgba(35,52,47,.025)}.parent-form{margin-top:24px}fieldset{border:0;border-bottom:1px solid var(--line);margin:0 0 28px;padding:0 0 26px;min-width:0}legend{font-size:1.15rem;font-weight:650;margin-bottom:18px;padding:0}legend span{display:inline-grid;place-items:center;border-radius:50%;width:28px;height:28px;background:var(--soft);color:var(--green);margin-right:9px;font-size:.9rem}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:20px}label{display:block;font-size:.91rem;font-weight:550;margin:0 0 16px}label input:not([type=checkbox]),select{display:block;width:100%;min-width:0;background:#fcfdfb;border:1px solid #aebeb3;border-radius:9px;height:49px;padding:9px 12px;margin-top:7px;color:var(--ink)}input[type=checkbox]{width:20px;height:20px;accent-color:var(--green);flex-shrink:0}.check{display:flex;align-items:flex-start;gap:10px;font-size:.87rem;font-weight:400;margin-top:8px}.check input{margin-top:3px}details{margin-top:10px}summary{cursor:pointer;color:var(--green);font-size:.9rem;font-weight:600}details p{font-size:.9rem;margin:14px 0}button,.button,input[type=submit]{display:inline-flex;justify-content:center;align-items:center;gap:15px;min-height:46px;border:1px solid var(--green);border-radius:10px;padding:10px 20px;background:var(--green);color:white;cursor:pointer;text-decoration:none;font-weight:650;font-size:.91rem;line-height:1.4}button:hover,.button:hover{filter:brightness(.94)}.secondary{background:white;color:var(--green);border-color:#bccdc1}.small{min-height:40px;padding:7px 12px;font-size:.82rem}.challenge{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.challenge input{max-width:100px!important}.trap{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.notice{background:#edf2ea;border:1px solid #bfcebb;color:#2e513b;border-radius:12px;padding:16px 20px;margin:20px 0;font-size:.92rem}.notice.error{background:#fff1ee;border-color:#e8c2b9;color:#7d2d23}.notice ul{margin-bottom:0;padding-left:20px}.success-card{text-align:center;padding:42px}.success-icon{display:inline-grid;place-items:center;background:var(--soft);border-radius:50%;width:66px;height:66px;font-size:2rem;color:var(--green);margin-bottom:22px}.success-card h1{font-size:2.5rem}.success-card p{margin-bottom:20px}.receipt{padding:18px;background:var(--wash);border-radius:12px;margin:24px 0;font-size:.85rem;color:var(--muted)}.receipt strong{display:block;font-size:1.2rem;color:var(--ink);letter-spacing:.07em}.page-title{display:flex;align-items:center;justify-content:space-between;gap:30px;margin-bottom:30px}.page-title h1{margin-bottom:15px}.title-actions{display:flex;gap:10px;flex-shrink:0}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:26px 0}.stats>div{border-radius:16px;background:var(--soft);padding:21px 25px}.stats span{display:block;color:#466153;font-size:.85rem}.stats strong{font-size:2.3rem;line-height:1.4;font-weight:650;letter-spacing:-.035em}.filters{display:flex;align-items:end;gap:18px;padding:22px;margin:24px 0}.filters label{flex:1;margin:0}.filters button{margin-bottom:1px}.reports{display:grid;gap:14px}.report{padding:23px 26px}.report-main{display:flex;align-items:center;justify-content:space-between;gap:20px}.report-main h2{margin:7px 0 3px}.report-main p{color:var(--muted);font-size:.9rem}.pill{display:inline-block;border-radius:6px;padding:2px 9px;font-size:.7rem;letter-spacing:.035em;font-weight:700}.pill.new{background:#ffebbc;color:#735409}.pill.seen{background:#e7efe7;color:#336047}.pill.cancelled{background:#f1e8e5;color:#87493c}.period{text-align:right;display:grid;gap:3px}.period strong{font-size:.98rem}.period span{color:var(--muted);font-size:.85rem}.report-bottom{display:flex;align-items:center;justify-content:space-between;gap:18px;padding-top:17px;margin-top:18px;border-top:1px solid var(--line);font-size:.78rem}.record-actions{display:flex;gap:8px;flex-wrap:wrap}.office-details{padding-top:10px}.office-details summary{font-size:.8rem}.office-details p,.office-details li{overflow-wrap:anywhere}.pagination{display:flex;justify-content:space-between;gap:20px;font-size:.86rem;padding:25px 0 10px}.empty{text-align:center;padding:42px}.empty>span{display:block;font-size:2rem;color:var(--green);margin-bottom:14px}.empty p{margin-top:10px;color:var(--muted)}.login{max-width:540px;margin:0 auto}.login h1{font-size:2.8rem}.login form{margin-top:28px}.login label{margin-bottom:0}.login input:not([type=submit]){display:block;width:100%;height:48px;border:1px solid #afc0b1;border-radius:8px;margin:7px 0 18px;padding:10px}.skip{position:absolute;top:-80px;left:20px;background:white;padding:10px;z-index:10}.skip:focus{top:10px}footer{max-width:1240px;margin:0 auto;padding:28px 24px;border-top:1px solid var(--line);display:flex;gap:25px;flex-wrap:wrap;font-size:.77rem;color:var(--muted)}footer span{margin-right:auto}
@media(max-width:760px){.top{padding:18px;align-items:flex-start}.top>a.muted{max-width:105px;font-size:.75rem;text-align:right}.brand{font-size:.81rem}.account{align-items:flex-end;flex-direction:column;gap:3px;font-size:.75rem}.account span{max-width:120px;text-align:right}.narrow,.wide{padding:0 17px;margin-top:32px}.card{padding:23px;border-radius:16px}.grid2{grid-template-columns:1fr;gap:0}.page-title{align-items:flex-start;flex-direction:column;gap:5px}.title-actions{width:100%}.title-actions>*{flex:1}.stats{gap:8px}.stats>div{padding:16px 12px;border-radius:12px}.stats span{font-size:.69rem;line-height:1.4;min-height:38px}.stats strong{font-size:1.8rem}.filters{flex-wrap:wrap;gap:12px;padding:18px}.filters label{flex:1 1 calc(50% - 12px)}.filters label:nth-of-type(2){flex-basis:100%;order:-1}.filters button{width:100%}.report-main{align-items:flex-start;gap:12px}.period{max-width:150px}.period strong{font-size:.84rem}.report-bottom{align-items:flex-start;flex-direction:column;gap:10px}.record-actions{width:100%}.record-actions form:first-child{flex:1}.record-actions button{width:100%}.success-card{padding:28px 22px}.success-card h1{font-size:2rem}footer{gap:15px}footer span{width:100%}.parent-form>button{width:100%}.pagination{flex-wrap:wrap}.login h1{font-size:2.3rem}}
@media print{body{background:white;color:black;font-size:10pt}.top,.title-actions,.filters,.record-actions,.office-details,footer,.pagination a,.notice,.skip{display:none!important}.wide{max-width:none;padding:0;margin:0}h1{font-size:22pt}.page-title{margin:0 0 10px}.card{box-shadow:none;border-radius:0;break-inside:avoid;padding:12px}.stats{margin:10px 0}.stats>div{background:white;border:1px solid #ddd;padding:8px}.stats strong{font-size:20pt}.stats span{min-height:0}.report-bottom{border:0;margin:5px 0 0;padding:0}.reports{gap:8px}.pill{border:1px solid #999}.hint{font-size:8pt}}
/* Overview 0.2: compact rows, class tiles and a readable week on mobile. */
.wide{margin-top:36px}.page-title{margin-bottom:22px}.page-title h1{font-size:clamp(2rem,4vw,3rem)}.page-title .muted{font-size:.82rem}.stats{margin:22px 0}.stats>div{padding:15px 22px}.stats strong{font-size:2rem}.list-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:18px 0 12px}.list-heading h2{font-size:1rem}.list-heading>a{font-size:.82rem}.group-section{margin:24px 0}.group-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}.group-tile{display:grid;grid-template-columns:1fr auto;gap:4px 10px;padding:15px 18px;background:white;border:1px solid var(--line);border-radius:12px;text-decoration:none;color:var(--ink)}.group-tile:hover,.group-tile.selected{border-color:var(--green);background:#f7fbf5}.tile-label{font-weight:650;align-self:center;overflow-wrap:anywhere}.group-tile strong{font-size:1.65rem;color:var(--green);line-height:1.3}.tile-detail{grid-column:1/-1;color:var(--muted);font-size:.72rem}.favorites summary{font-size:.8rem}.favorites[open]{background:white;padding:16px;border:1px solid var(--line);border-radius:12px}.favorite-options{display:flex;flex-wrap:wrap;gap:0 24px}.favorites p{margin:10px 0}.favorite-options label{margin:8px 0 14px}.filters{display:grid;grid-template-columns:1fr 1.8fr 1fr 1fr;gap:14px;padding:18px;margin:20px 0}.filters label{font-size:.8rem}.filters input,.filters select{height:43px!important;font-size:.87rem;padding:8px!important}.filters .search-label{grid-column:1/4}.filters button{min-height:43px}.compact{gap:0;background:white;border:1px solid var(--line);border-radius:14px;overflow:hidden}.compact .report{padding:15px 20px;border-bottom:1px solid var(--line)}.compact .report:last-child{border-bottom:0}.report-row{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1.1fr) minmax(0,1fr);align-items:center;gap:16px}.student h2{font-size:.99rem;overflow-wrap:anywhere}.student p{color:var(--muted);font-size:.78rem;margin-top:3px}.changed{color:var(--green);font-weight:600}.compact .period{text-align:left}.compact .period strong{font-size:.83rem}.compact .period span{font-size:.75rem}.row-status{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}.row-status .record-actions{gap:6px}.row-status button{min-height:32px;font-size:.75rem;padding:5px 9px}.record-meta{font-size:.68rem;color:var(--muted);margin-top:7px}.office-details{padding-top:0;margin-top:6px}.week-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin-top:12px;max-width:620px}.week-day{display:flex;justify-content:space-between;align-items:center;border-radius:5px;padding:4px 9px;background:#f5f6f3;font-size:.72rem;color:var(--muted)}.week-day.absent{color:var(--green);background:var(--soft)}.week-day b{font-size:.65rem}.parent-edit>button{width:100%}
@media(max-width:760px){.wide{margin-top:26px}.group-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.group-tile{padding:12px}.tile-label{font-size:.85rem}.tile-detail{font-size:.64rem}.group-tile strong{font-size:1.4rem}.list-heading{gap:10px}.list-heading h2{font-size:.9rem}.list-heading>a{font-size:.75rem}.list-heading button{font-size:.72rem;padding:6px 9px}.filters{grid-template-columns:1fr 1fr;gap:12px}.filters label:nth-of-type(2){grid-column:1/-1;order:0}.filters label:first-of-type{grid-column:1}.filters label:nth-of-type(3){grid-column:2;grid-row:1}.filters .search-label{grid-column:1/-1}.filters button{align-self:end}.compact .report{padding:14px}.report-row{grid-template-columns:minmax(0,1fr) auto;gap:9px}.compact .period{grid-column:1;grid-row:2;max-width:none}.row-status{grid-column:2;grid-row:1/3;max-width:118px;flex-direction:column;align-items:flex-end}.row-status .record-actions{width:auto;flex-direction:column}.row-status .record-actions form:first-child{flex:initial}.row-status button{width:auto;max-width:118px}.student p{font-size:.74rem}.week-day{padding:4px 6px;font-size:.67rem;flex-direction:column}.stats>div{padding:14px 10px}.stats strong{font-size:1.8rem}.page-title .muted{font-size:.75rem}}
@media print{.group-section,.list-heading button,[data-refresh-status],.favorites{display:none!important}.compact{border-radius:0;overflow:visible}.compact .report{break-inside:avoid;padding:8px 10px}.report-row{grid-template-columns:1.4fr 1.1fr .6fr}.row-status{display:block;text-align:right}.student h2{font-size:10pt}.compact .period strong{font-size:9pt}.compact .period span,.student p{font-size:8pt}.record-meta{font-size:7pt}.week-strip{max-width:none}.week-day.absent{border:1px solid #777}.page-title h1{font-size:22pt}.stats{display:none}.week-day{padding:2px 6px}.reports{gap:0}}
/* 0.3: separate acknowledgement, excuse status and possible duplicate hints. */
.page-title .title-actions{flex-wrap:wrap;justify-content:flex-end;max-width:510px}.page-title .title-actions>*{white-space:nowrap}.workflow-line{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px;font-size:.69rem}.excuse-badge,.source-badge,.duplicate-badge{display:inline-block;padding:3px 8px;border-radius:5px;font-weight:550}.excuse-badge{background:#f3f4f0;color:#526159}.excuse-badge.checked{background:#e9f0e6;color:#27604e}.excuse-badge.submitted{background:#edf0fa;color:#455787}.source-badge{background:#eef3f6;color:#425b6b}.duplicate-badge{background:#fff0d3;color:#74531e}.excuse-details{margin-top:7px}.excuse-details summary{font-size:.77rem}.excuse-details[open]{padding:12px;background:var(--wash);border-radius:9px;margin-top:12px}.excuse-details .hint{margin-top:8px;font-size:.75rem}.excuse-form{display:flex;align-items:end;gap:10px;max-width:470px}.excuse-form label{flex:1;margin:0;font-size:.8rem}.excuse-form select{height:39px;margin-top:4px;font-size:.82rem}.excuse-form button{min-height:39px}.filters .search-label{grid-column:1/3}.filters .excuse-filter{grid-column:3/5}.filters .dupe-filter{grid-column:1/4;margin:0;align-items:center;font-size:.8rem;font-weight:400}.filters .dupe-filter input{height:20px!important;width:20px;padding:0!important;margin:0}.filters>button{grid-column:4}.phone-wrap{max-width:800px;margin:auto}.phone-wrap h1{font-size:clamp(2rem,4vw,3rem)}.phone-form{margin-top:24px}.form-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.duplicate-warning p{font-size:.85rem}.duplicate-warning li{overflow-wrap:anywhere}.compare-hint{margin:0 0 22px}.compare-hint+.reports{margin-top:18px}
@media(max-width:760px){.page-title .title-actions{max-width:none;justify-content:initial}.page-title .title-actions>*{white-space:normal}.page-title .title-actions>a:last-child:nth-child(3){flex-basis:100%}.filters .search-label,.filters .excuse-filter,.filters .dupe-filter,.filters>button{grid-column:1/-1}.filters .dupe-filter{margin:4px 0}.workflow-line{font-size:.66rem;gap:5px}.excuse-form{flex-wrap:wrap}.excuse-form label{flex-basis:100%}.form-actions>*{flex:1 1 100%}.phone-wrap h1{font-size:2rem}.compact .period strong{overflow-wrap:anywhere}.page-title>a.button{max-width:100%}}
@media print{.excuse-details,.phone-form,.compare-hint{display:none!important}.workflow-line{font-size:7pt;margin-top:5px}.excuse-badge,.source-badge,.duplicate-badge{background:white;border:1px solid #aaa;padding:2px 5px;color:black}.workflow-line a{text-decoration:none}}

/* Internal roster, follow-up and personal defaults (0.4). */
.portal-links{display:flex;flex-wrap:wrap;gap:12px;margin:0 0 24px}.portal-links strong{margin-left:8px}
.start-view{max-width:420px;margin:18px 0}.student-details{margin-top:14px}.student-details form{padding-top:12px;max-width:640px}.student-link{font-size:13px;color:var(--muted,#52685f);margin:12px 0 0}
.late-badge{display:inline-block;font-size:12px;font-weight:650;color:#775112;background:#fff1d4;padding:5px 10px;border-radius:6px;margin:10px 0 0}
.table-scroll{overflow-x:auto;margin:20px 0}.roster-table{border-collapse:collapse;width:100%;text-align:left}.roster-table th,.roster-table td{padding:12px;border-bottom:1px solid #dce7e1;vertical-align:top}.roster-table th{background:#f3f7f4}
textarea{box-sizing:border-box;width:100%;border:1px solid #baccc2;border-radius:8px;padding:12px;font:inherit;color:inherit;background:white}
.roster-person,.absence-case{margin-bottom:16px}.roster-person h2,.absence-case h2{margin:0}.roster-person .list-heading,.absence-case .list-heading{margin:0 0 16px}.roster-person p,.absence-case p{margin:8px 0}
.check-control{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin:18px 0}.check-control label{min-width:230px;flex:1;max-width:440px}.check-control button{margin-bottom:0}.attendance-warning{color:#795019;background:#fff4df;padding:12px;border-radius:8px}
@media(max-width:640px){.roster-person .list-heading,.absence-case .list-heading{align-items:start;gap:14px;flex-direction:column}.check-control label{min-width:0;width:100%;max-width:none}.check-control button{width:100%}.portal-links a{width:100%;justify-content:space-between}.roster-table th,.roster-table td{padding:8px}.student-details select{max-width:100%}}

/* 0.5: reports first, compact controls, clear review markers. */
.quick-periods{display:flex;gap:9px;flex-wrap:wrap;margin:16px 0}.quick-periods .button{min-height:42px;padding:9px 18px;font-size:.86rem}.quick-periods [aria-current=page]{box-shadow:0 0 0 2px #27604e20}
.stats.stats-inline{gap:12px;margin:16px 0}.stats-inline>div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px}.stats-inline span{min-height:0;line-height:1.35;font-size:.77rem}.stats-inline strong{font-size:1.6rem;flex-shrink:0}
.filters.team-filters{display:block;padding:16px 18px;margin:16px 0}.filter-basics{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) auto;gap:14px;align-items:end}.team-filters .filter-basics label{grid-column:auto;grid-row:auto;order:0}.team-filters .filter-basics button{width:auto;margin:0}.team-filters .advanced-filters{border-top:1px solid var(--line);margin-top:14px;padding-top:10px}.advanced-filters>summary{font-size:.82rem}.filter-extras{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:16px;align-items:end}.team-filters .filter-extras label{grid-column:auto;grid-row:auto;order:0}.filter-extras>.check{grid-column:1/3!important;align-self:center}.reset-filters{grid-column:3/5;font-size:.78rem;justify-self:end;align-self:center}.advanced-filters>button{margin:14px 0 0}
.group-disclosure{margin:26px 0 16px;border:1px solid var(--line);border-radius:12px;background:white;padding:16px 20px}.group-disclosure>summary{font-size:.91rem}.group-disclosure .group-section{margin:14px 0 0}.secondary-tools{margin:18px 0}.secondary-tools a{font-size:.82rem}
.compact .report.new-report{border-left:5px solid #27604e;background:#f4faf6}.compact .report.parent-changed{border-left:5px solid #a46708;background:#fff8e9}.attention-label{font-size:.74rem;line-height:1.4;font-weight:700;margin:0 0 9px;color:#245540}.parent-changed .attention-label{color:#805008}.parent-changed .pill.new{background:#f7deb0;color:#674300}.new-report .pill.new{background:#d9ecdf;color:#245540}
@media(max-width:760px){.stats.stats-inline{gap:7px}.stats-inline>div{display:block;padding:10px}.stats-inline span{font-size:.66rem;min-height:30px}.stats-inline strong{font-size:1.45rem}.quick-periods{gap:7px}.quick-periods .button{flex:1;padding:9px 10px;font-size:.8rem;white-space:nowrap}.filters.team-filters{padding:14px}.filter-basics{grid-template-columns:minmax(0,1fr) auto;gap:10px}.team-filters .filter-basics label:first-child{grid-column:1/-1}.team-filters .filter-basics label:nth-child(2){grid-column:1;grid-row:2}.team-filters .filter-basics button{grid-column:2;grid-row:2;padding:9px 12px}.filter-extras{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.reset-filters{grid-column:1/-1;justify-self:start}.filter-extras>.check{grid-column:1/-1!important}.group-disclosure{padding:14px}.group-disclosure>summary{font-size:.85rem}.attention-label{font-size:.7rem}}
@media print{.quick-periods,.group-disclosure,.secondary-tools,.attention-label{display:none!important}.compact .report.new-report,.compact .report.parent-changed{background:white;border-left:1px solid #aaa}}
