/* Monthly report: shared typography and palette, table-only horizontal scrolling. */
.hsm-attendance-overview { min-width:0; max-width:100%; color:var(--hsm-text,var(--hsm-theme-text)); background:var(--hsm-surface,var(--hsm-theme-surface)); font-family:var(--hsm-font,var(--hsm-font-family)); font-size:var(--hsm-font-base); line-height:1.8; }
.hsm-attendance-overview *, .hsm-attendance-overview *::before, .hsm-attendance-overview *::after { box-sizing:border-box; }
.hsm-attendance-overview [hidden] { display:none!important; }
.hsm-ao-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:var(--hsm-space-2); margin-bottom:var(--hsm-space-3); }
.hsm-ao-heading h2 { margin:0; font-size:var(--hsm-font-xl); }
.hsm-ao-heading p,.hsm-ao-hint,.hsm-ao-unit { margin:var(--hsm-space-1) 0 var(--hsm-space-3); font-size:var(--hsm-font-sm); color:var(--hsm-muted,var(--hsm-theme-muted)); overflow-wrap:anywhere; }
.hsm-ao-readonly { flex-shrink:0; border-radius:var(--hsm-radius-sm); padding:var(--hsm-space-1) var(--hsm-space-2); font-size:var(--hsm-font-xs); color:var(--hsm-muted,var(--hsm-theme-muted)); background:var(--hsm-bg,var(--hsm-theme-background)); }
.hsm-ao-filters { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--hsm-space-3); align-items:end; }
.hsm-ao-filters label { display:flex; flex-direction:column; min-width:0; gap:var(--hsm-space-1); }
.hsm-attendance-overview :is(input,select) { min-width:0; max-width:100%; width:100%; min-height:var(--hsm-control-height); padding:var(--hsm-space-2); border:1px solid var(--hsm-border,var(--hsm-theme-border)); border-radius:var(--hsm-radius); background:var(--hsm-surface,var(--hsm-theme-surface)); color:inherit; font:inherit; font-size:var(--hsm-font-input); }
.hsm-attendance-overview button { min-height:var(--hsm-control-height); max-width:100%; font-family:inherit; font-size:var(--hsm-font-button); white-space:normal; overflow-wrap:anywhere; }
.hsm-attendance-overview :is(button,input,select,summary,[tabindex]):focus-visible { outline:2px solid var(--hsm-focus,var(--hsm-theme-focus)); outline-offset:2px; }
.hsm-ao-month { padding:0; margin:0; min-width:0; border:0; }
.hsm-ao-month legend { padding:0; margin-bottom:var(--hsm-space-1); }
.hsm-ao-month>div { display:grid; grid-template-columns:1fr 1fr; gap:var(--hsm-space-2); }
.hsm-ao-advanced { margin-block:var(--hsm-space-2); }
.hsm-attendance-overview summary { min-height:var(--hsm-control-height); padding:var(--hsm-space-2) 0; cursor:pointer; font-size:var(--hsm-font-sm); }
.hsm-ao-advanced>button { margin-block:var(--hsm-space-2); }
.hsm-ao-month-nav,.hsm-ao-pagination { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:var(--hsm-space-2); margin-block:var(--hsm-space-3); }
.hsm-ao-month-nav strong { min-width:8em; text-align:center; }
.hsm-ao-month-nav [data-overview-refresh] { margin-inline-start:auto; }
.hsm-attendance-overview [data-overview-message] { overflow-wrap:anywhere; margin-block:var(--hsm-space-2); font-size:var(--hsm-font-sm); }
.hsm-attendance-overview [data-overview-message]:empty { display:none; }
.hsm-attendance-overview .is-error { color:var(--hsm-danger-ink,var(--hsm-theme-danger-ink)); }
.hsm-ao-counts { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:var(--hsm-space-2); margin-block:var(--hsm-space-3); }
.hsm-ao-count { padding:var(--hsm-space-2) var(--hsm-space-3); border-radius:var(--hsm-radius); border:1px solid var(--hsm-border,var(--hsm-theme-border)); display:grid; grid-template-columns:1fr auto auto; align-items:center; gap:var(--hsm-space-1); min-width:0; font-size:var(--hsm-font-sm); }
.hsm-ao-count strong { font-size:var(--hsm-font-xl); }
.hsm-ao-count>span { min-width:0; overflow-wrap:anywhere; }
.hsm-ao-count small { font-size:var(--hsm-font-xs); }
.hsm-ao-count.is-present,.hsm-ao-legend-status.is-present,.hsm-ao-inline-counts .is-present,.hsm-attendance-overview [data-overview-status="present"] { color:var(--hsm-success-ink,var(--hsm-theme-success-ink)); background:var(--hsm-success-soft,var(--hsm-theme-success-soft)); }
.hsm-ao-count.is-absent,.hsm-ao-legend-status.is-absent,.hsm-ao-inline-counts .is-absent,.hsm-attendance-overview [data-overview-status="absent"] { color:var(--hsm-danger-ink,var(--hsm-theme-danger-ink)); background:var(--hsm-danger-soft,var(--hsm-theme-danger-soft)); }
.hsm-ao-count.is-late,.hsm-ao-legend-status.is-late,.hsm-ao-inline-counts .is-late,.hsm-attendance-overview [data-overview-status="late"] { color:var(--hsm-warning-ink,var(--hsm-theme-warning-ink)); background:var(--hsm-warning-soft,var(--hsm-theme-warning-soft)); }
.hsm-ao-count.is-excused,.hsm-ao-legend-status.is-excused,.hsm-ao-inline-counts .is-excused,.hsm-attendance-overview [data-overview-status="excused"] { color:var(--hsm-primary-ink,var(--hsm-theme-primary-ink)); background:var(--hsm-primary-soft,var(--hsm-theme-primary-soft)); }
.hsm-ao-count.is-unrecorded,.hsm-ao-legend-status.is-unrecorded,.hsm-ao-inline-counts .is-unrecorded,.hsm-attendance-overview [data-overview-status="unrecorded"] { color:var(--hsm-muted,var(--hsm-theme-muted)); background:var(--hsm-bg,var(--hsm-theme-background)); }
.hsm-ao-legend,.hsm-ao-daily { border-block-start:1px solid var(--hsm-border,var(--hsm-theme-border)); margin-block:var(--hsm-space-2); }
.hsm-ao-legend p { font-size:var(--hsm-font-sm); margin:var(--hsm-space-2) 0; }
.hsm-ao-legend-status { display:inline-block; padding:var(--hsm-space-1) var(--hsm-space-2); border-radius:var(--hsm-radius-sm); margin-inline-end:var(--hsm-space-2); margin-block:var(--hsm-space-1); font-size:var(--hsm-font-sm); }
.hsm-ao-classes h3 { font-size:var(--hsm-font-lg); margin:var(--hsm-space-3) 0 var(--hsm-space-1); }
.hsm-ao-class-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--hsm-space-3); }
.hsm-ao-class { min-width:0; padding:var(--hsm-space-3); border:1px solid var(--hsm-border,var(--hsm-theme-border)); border-radius:var(--hsm-radius); }
.hsm-ao-class>header,.hsm-ao-class>footer,.hsm-ao-record>header { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:var(--hsm-space-2); }
.hsm-ao-class>header>span,.hsm-ao-class>footer>small { color:var(--hsm-muted,var(--hsm-theme-muted)); font-size:var(--hsm-font-sm); }
.hsm-ao-inline-counts { display:flex; flex-wrap:wrap; gap:var(--hsm-space-1); margin-block:var(--hsm-space-2); }
.hsm-ao-inline-counts>span { display:inline-flex; align-items:center; gap:var(--hsm-space-1); padding:var(--hsm-space-1) var(--hsm-space-2); border-radius:var(--hsm-radius-sm); font-size:var(--hsm-font-xs); }
.hsm-ao-scroll { overflow:auto; max-width:100%; max-height:min(70vh,42rem); border:1px solid var(--hsm-border,var(--hsm-theme-border)); border-radius:var(--hsm-radius); overscroll-behavior-inline:contain; isolation:isolate; }
.hsm-ao-scroll table { border-collapse:separate; border-spacing:0; min-width:100%; width:max-content; margin:0; font-size:var(--hsm-font-sm); }
.hsm-ao-scroll caption { text-align:start; padding:var(--hsm-space-2); caption-side:top; color:var(--hsm-muted,var(--hsm-theme-muted)); }
.hsm-ao-scroll :is(th,td) { padding:var(--hsm-space-1); border-inline-end:1px solid var(--hsm-border,var(--hsm-theme-border)); border-block-end:1px solid var(--hsm-border,var(--hsm-theme-border)); vertical-align:middle; text-align:center; background:var(--hsm-surface,var(--hsm-theme-surface)); }
.hsm-ao-scroll thead th { position:sticky; top:0; z-index:2; height:var(--hsm-control-height); background:var(--hsm-bg,var(--hsm-theme-background)); }
.hsm-ao-scroll .hsm-ao-name { position:sticky; inset-inline-start:0; z-index:3; min-width:10em; max-width:13em; text-align:start; padding:var(--hsm-space-2); white-space:normal; overflow-wrap:anywhere; box-shadow:-1px 0 var(--hsm-border,var(--hsm-theme-border)); }
.hsm-ao-scroll thead .hsm-ao-name { z-index:4; }
.hsm-ao-matrix td { position:relative; min-width:calc(var(--hsm-control-height) + var(--hsm-space-2)); }
.hsm-ao-matrix td button { width:var(--hsm-control-height); min-width:var(--hsm-control-height); padding:var(--hsm-space-1); border:0; border-radius:var(--hsm-radius-sm); cursor:pointer; }
.hsm-ao-matrix .is-today { box-shadow:inset 0 2px var(--hsm-primary,var(--hsm-theme-primary)); }
.hsm-ao-note-mark { position:absolute; inset-inline-end:var(--hsm-space-1); bottom:0; color:var(--hsm-primary,var(--hsm-theme-primary)); line-height:1; font-size:var(--hsm-font-lg); }
.hsm-ao-row-counts { min-width:15em!important; }
.hsm-ao-empty { padding:var(--hsm-space-5); text-align:center; color:var(--hsm-muted,var(--hsm-theme-muted)); }
.hsm-ao-dialog { width:min(44rem,calc(100vw - var(--hsm-space-6))); max-width:calc(100vw - var(--hsm-space-6)); max-height:calc(100dvh - var(--hsm-space-6)); overflow:auto; padding:var(--hsm-space-4); border:1px solid var(--hsm-border,var(--hsm-theme-border)); border-radius:var(--hsm-radius-lg); color:var(--hsm-text,var(--hsm-theme-text)); background:var(--hsm-surface,var(--hsm-theme-surface)); font-family:var(--hsm-font,var(--hsm-font-family)); font-size:var(--hsm-font-base); }
.hsm-ao-dialog::backdrop { background:var(--hsm-dialog-backdrop,rgba(23,32,51,.5)); }
.hsm-ao-dialog>header { display:flex; align-items:center; justify-content:space-between; gap:var(--hsm-space-2); position:sticky; top:calc(-1 * var(--hsm-space-4)); background:var(--hsm-surface,var(--hsm-theme-surface)); z-index:5; padding-block:var(--hsm-space-2); }
.hsm-ao-dialog h3 { margin:0; min-width:0; font-size:var(--hsm-font-lg); overflow-wrap:anywhere; }
.hsm-ao-records { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--hsm-space-3); }
.hsm-ao-record { min-width:0; overflow-wrap:anywhere; padding:var(--hsm-space-3); border:1px solid var(--hsm-border,var(--hsm-theme-border)); border-radius:var(--hsm-radius); }
.hsm-ao-record p { margin-block:var(--hsm-space-2); font-size:var(--hsm-font-sm); }
.hsm-ao-note { white-space:pre-wrap; max-height:12em; overflow:auto; }
@media(max-width:700px) { .hsm-ao-filters { grid-template-columns:repeat(2,minmax(0,1fr)); } .hsm-ao-counts { grid-template-columns:repeat(2,minmax(0,1fr)); } .hsm-ao-count:last-child { grid-column:1/-1; } .hsm-ao-class-grid,.hsm-ao-records { grid-template-columns:minmax(0,1fr); } .hsm-ao-month-nav { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); } .hsm-ao-month-nav strong { min-width:0; font-size:var(--hsm-font-sm); } .hsm-ao-month-nav [data-overview-refresh] { grid-column:1/-1; margin:0; } .hsm-ao-scroll .hsm-ao-name { min-width:8em; max-width:8em; } .hsm-ao-dialog { padding:var(--hsm-space-3); } }

.hsm-ao-filter-actions{display:flex;align-items:center;gap:var(--hsm-space-3,12px);flex-wrap:wrap;margin-block-start:var(--hsm-space-3,12px)}
.hsm-ao-filter-actions small{color:var(--hsm-muted,#64748b)}
