/* Shared typography: phrase wrapping, responsive space, and preserved authored breaks. */
body{overflow-wrap:normal;line-break:strict;word-break:normal}
.read-unit{display:inline-block;max-width:100%;vertical-align:baseline;overflow-wrap:normal;word-break:normal;white-space:pre-wrap}
.read-unit:empty{display:none}
.quantity{display:inline-block;white-space:nowrap}
.button-copy{display:block;min-width:0;text-wrap:balance}
.btn{white-space:normal!important;min-width:0;flex-shrink:1}
.btn .read-unit{max-width:100%}
.fixed-copy,.copy-notes p,[data-copy]{text-wrap:pretty;overflow-wrap:normal}
.copy-notes{display:grid;gap:8px}.copy-notes p{margin:0!important}
.member-list{list-style:none;padding:0;margin:8px 0 0;display:grid;gap:6px}
.member-list li{display:block;min-width:0;margin:0;padding:3px 0}
.member-name{overflow-wrap:anywhere;word-break:normal}
.member-name .read-unit,.page-heading h1 .read-unit,.break .read-unit{overflow-wrap:anywhere}
.check>.button-copy{min-width:0;text-align:left}
.member-picker{display:grid!important;gap:8px}.member-picker label{margin:0;align-items:start}
.metric-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,9em),1fr));gap:8px;margin:12px 0}
.metric-list>div{background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:10px;min-width:0}
.metric-list dt{font-size:14px;color:var(--muted)}.metric-list dd{margin:4px 0 0;font-weight:600}
.classified-people>div{display:block}.classified-people .member-list{margin-left:12px}
.summary-grid p,.day-summary,.group-person-list>article,.group-actuals>li{overflow-wrap:normal}
.summary-grid strong{font-size:15px}.summary-grid article{padding:12px}
.detail-description{white-space:pre-wrap;overflow-wrap:anywhere}
.error{white-space:pre-line;overflow-wrap:normal}
.audit-entry dd{white-space:pre-wrap;overflow-wrap:anywhere}.metric-value{overflow-wrap:anywhere}
.stat>div{display:inline-flex;align-items:baseline;gap:3px;white-space:nowrap}.stat small{display:inline!important;margin:0!important}
.catalog-section{border-top:1px solid var(--line);padding-top:20px;margin-top:20px}
.catalog-item{padding:14px 0;border-bottom:1px solid var(--line);display:grid;gap:10px}
.catalog-item .actions{gap:8px}.catalog-item>header{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.catalog-item .metric-list{margin:0}.catalog-item .metric-list dd{font-weight:500}
.catalog-state{font-size:14px}.catalog-item[data-state=deleted]{opacity:.8}
.study-candidate{padding:16px;border:1px solid var(--line);border-radius:10px;display:grid;gap:12px}
.study-candidate .field{min-width:0}.study-candidate .check{align-items:start}
.study-summary{display:grid;gap:12px}.coverage-person{border-top:1px solid var(--line);padding:8px 0}
.stage-list{list-style:none;margin:10px 0;padding:0;display:grid;gap:8px}
.stage-list li{border-left:4px solid var(--line);padding:7px 12px}.stage-list li.current{border-color:var(--green);background:var(--green-light)}
.detail-aside .stack{gap:14px}
dialog{padding:24px;scroll-padding:20px}dialog h2{margin-bottom:14px}dialog .actions{margin-top:18px}
.offline-page{max-width:700px;padding:28px 20px;margin:auto}.offline-page h1{font-size:26px}.offline-page p{margin-top:18px}
@media(max-width:700px){
 body{font-size:16px}.small,small,.help-note,.card .small,.fixed-copy.small{font-size:14px}
 .main{padding-left:14px;padding-right:14px}.card{padding:16px}
 .page-heading{grid-template-columns:minmax(0,1fr);gap:12px}
 .page-heading .eyebrow,.page-heading h1,.page-heading>div>p,.page-heading>.btn{grid-column:1;grid-row:auto}
 .page-heading>.btn{justify-self:start;font-size:14px;padding:10px 14px}
 .page-heading h1{font-size:25px;overflow-wrap:anywhere}
 .page-heading>div>p{font-size:15px;margin:0}
 .page-heading .eyebrow{font-size:12px}
 .attendance-controls{flex-wrap:wrap}.attendance-controls .check{font-size:15px}
 .member-class-row,.saved-attendance{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}
 .member-class-row>.btn,.saved-attendance>.btn{max-width:8em}
 .table-wrap:has(.report-table),.table-wrap:has(.member-table){overflow:visible;border:0;padding:0;background:none}
 .report-table,.member-table{min-width:0;width:100%;display:block}
 .report-table thead,.member-table thead{display:none}.report-table tbody,.member-table tbody{display:grid;gap:12px}
 .report-table tr,.member-table tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--white)}
 .report-table td,.member-table td{display:block;padding:0;border:0;white-space:normal!important;min-width:0}
 .report-table td:before,.member-table td:before{content:attr(data-label);display:block;color:var(--muted);font-size:13px}
 .report-table td:nth-child(-n+2),.member-table td{grid-column:1/-1}
 .report-table td:nth-child(2){font-weight:600}
 .resource-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,165px),1fr))}
 .schedule-modes .btn{flex:1 1 90px}.calendar-toolbar strong{white-space:normal;text-wrap:balance}
 .calendar-toolbar .btn{flex:1 1 90px}.top-title{font-size:14px}
 .upload-box{text-align:left}.upload-box>svg{display:block;margin:auto}
 .summary-grid{grid-template-columns:minmax(0,1fr)}
}

/* Grid and form tracks shrink at 200% text size without clipping copy. */
.stack,.study-candidate{grid-template-columns:minmax(0,1fr);min-width:0}
.stack>*{min-width:0}
input,select,textarea{min-width:0;max-width:100%}

/* Word fragments inherit their component styling, never generic span rules. */
.read-unit{display:inline-block!important;font:inherit!important;letter-spacing:inherit}
.copy-flow{display:block!important;font:inherit!important;min-width:0;max-width:100%;overflow-wrap:normal}

@media(max-width:700px){
 .schedule-modes{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,5.6em),1fr));font-size:14px}
 .schedule-modes .btn{font-size:inherit;padding-left:8px;padding-right:8px}
 .calendar-toolbar strong{flex:1 1 100%;order:-1}
}
@media(max-width:360px){.schedule-modes{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Short date labels and counts keep their natural width when text grows. */
.stats{grid-template-columns:repeat(auto-fit,minmax(min(100%,6.6em),1fr))}
@media(max-width:700px){.event-card{grid-template-columns:minmax(46px,max-content) minmax(0,1fr)}}

/* Native file selectors do not wrap their shadow text in iPhone browsers.
   Keep the native accessible control and expose its associated full-text label. */
.upload-box{position:relative}
.upload-box .file-input{position:absolute!important;width:1px!important;height:1px!important;min-width:0;min-height:0;max-width:1px;padding:0;border:0;clip:rect(0,0,0,0);clip-path:inset(50%);overflow:hidden;white-space:nowrap}
.file-input:focus-visible+.file-picker-button{outline:3px solid var(--accent);outline-offset:3px}
.file-picker-button{cursor:pointer;margin:12px 0;max-width:100%}
.event-card .detail-description{margin:0;white-space:pre-wrap}
