.rhythm-page{display:grid;gap:18px;min-width:0}.rhythm-filter,.rhythm-card{min-width:0;background:var(--surface-container-lowest);border:1px solid var(--border-neutral);border-radius:12px;padding:18px}.rhythm-filter{display:flex;flex-wrap:wrap;align-items:end;gap:12px}.rhythm-filter>label{display:grid;gap:6px;flex:1 1 135px;font-size:13px;font-weight:600}.rhythm-filter>label:nth-child(3){flex-basis:210px}.rhythm-filter .form-control,.rhythm-filter .form-select{min-height:42px;font-size:14px}.rhythm-filter-help{flex-basis:100%;font-size:12px;color:var(--on-surface-variant)}.rhythm-overview{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.rhythm-overview h2{font-size:19px;margin:4px 0 8px}.rhythm-overview p,.rhythm-hint{font-size:13px;color:var(--on-surface-variant);line-height:1.6}.rhythm-eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--bs-primary);font-weight:700}.rhythm-date-nav{display:flex;gap:8px}.rhythm-legend{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;margin:8px 0 16px;align-items:center}.rhythm-legend>span{display:inline-flex;align-items:center;gap:5px}.rhythm-swatch{font-style:normal;display:inline-flex;align-items:center;justify-content:center;min-width:23px;height:23px;border:1px solid var(--border-neutral);border-radius:4px;font-weight:700}.rhythm-page .hit-1{background:var(--surface-container-low)!important;color:var(--on-surface)}.rhythm-page .hit-2{background:#ffe7a3!important;color:#694600}.rhythm-page .hit-3{background:#ffd0bb!important;color:#7d2d16}.rhythm-page .hit-4{background:#f6a5a5!important;color:#761424}.rhythm-page .is-special{box-shadow:inset 0 0 0 2px var(--bs-primary);color:#a3182b!important;font-weight:800}.rhythm-mark-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:14px;padding:12px;background:var(--surface-container-low);border-radius:8px;font-size:13px;margin-bottom:10px}.rhythm-mark-toolbar label{display:flex;gap:6px;align-items:center}.rhythm-mark-toolbar input{accent-color:var(--bs-primary)}.rhythm-hint{margin:10px 0}.rhythm-table-wrap{max-height:650px;overflow:auto;border:1px solid var(--border-neutral);position:relative;isolation:isolate}.rhythm-table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:calc(12px * var(--rhythm-zoom,1));font-variant-numeric:tabular-nums;text-align:center}.rhythm-table th,.rhythm-table td{height:calc(26px * var(--rhythm-zoom,1));min-width:calc(26px * var(--rhythm-zoom,1));box-sizing:border-box;padding:0;border-right:1px solid var(--border-neutral);border-bottom:1px solid var(--border-neutral);background:var(--surface-container-lowest)}.rhythm-table thead th,.rhythm-table thead td{position:sticky;z-index:3;background:var(--surface-container)}.rhythm-total-row>*{top:0;height:calc(72px * var(--rhythm-zoom,1))!important}.rhythm-number-row>*{top:calc(72px * var(--rhythm-zoom,1));height:calc(30px * var(--rhythm-zoom,1))!important}.rhythm-table tr>th:first-child{position:sticky;left:0;min-width:calc(104px * var(--rhythm-zoom,1));padding:0 8px;background:var(--surface-container-low);z-index:2;font-weight:500;white-space:nowrap}.rhythm-table thead tr>th:first-child{z-index:5;background:var(--surface-container-highest);color:var(--on-surface-variant);font-weight:700}.rhythm-table tfoot th,.rhythm-table tfoot td{position:sticky;bottom:0;background:var(--surface-container);font-weight:700;z-index:3}.rhythm-table tfoot th:first-child{z-index:5}.rhythm-table tbody tr:hover>td:not(.is-special){filter:brightness(.96)}.rhythm-table .rhythm-missing-row td{background:#f5f2ed;color:#94877d}.rhythm-table .is-marked{background-image:linear-gradient(#ffec7d50,#ffec7d50)!important;box-shadow:inset 2px 0 #d6a734,inset -2px 0 #d6a734}.rhythm-table .is-marked.is-special{box-shadow:inset 0 0 0 2px var(--bs-primary)}.rhythm-mark-button,.rhythm-number-button{border:0;padding:5px 4px;display:block;width:100%;height:100%;background:transparent;color:inherit;font:inherit;cursor:pointer}.rhythm-mark-button{font-weight:700;color:var(--bs-primary)}.rhythm-number-button{font-size:inherit;font-weight:700}.rhythm-mark-button:focus-visible,.rhythm-number-button:focus-visible{outline:2px solid var(--bs-primary);outline-offset:-3px}.rhythm-mark-button[aria-pressed=true]{background:var(--accent-gold);color:#513400}.rhythm-empty{padding:14px;background:var(--surface-container-low);border-radius:8px;font-size:14px}.rhythm-table [hidden],.rhythm-page [hidden],.rhythm-dialog [hidden]{display:none!important}.rhythm-dialog{width:min(650px,calc(100% - 28px));max-height:85vh;border:1px solid var(--border-neutral);border-radius:12px;padding:22px;color:var(--on-surface)}.rhythm-dialog::backdrop{background:#18100d80}.rhythm-dialog-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.rhythm-dialog-header h2{font-size:21px;margin:0}.rhythm-dialog>p{line-height:1.7;font-size:14px}.rhythm-cycle-table-wrap{overflow-x:auto;max-height:45vh}.rhythm-cycle-table-wrap th{font-size:13px;white-space:nowrap}.rhythm-cycle-table-wrap td{font-size:14px}@media(max-width:575px){.rhythm-filter,.rhythm-card{padding:12px}.rhythm-filter>button{width:100%}.rhythm-overview h2{font-size:17px}.rhythm-table-wrap{max-height:65vh}.rhythm-dialog{padding:15px}}

/* Dense number matrix with the site's red / warm cream palette. */
.rhythm-card { border-color: var(--border-neutral); }
.rhythm-cell { font-weight: 600; }
.rhythm-table tbody tr:nth-child(even) > td:not([class*="hit-"]) { background-color: var(--surface); }
.rhythm-table .rhythm-missing-row > td { background-color: #f5f2ed !important; }
.rhythm-table .rhythm-mark-button {
    display: flex; flex-direction: column; align-items: center; justify-content: flex-end;
    gap: 3px; padding: 4px 2px; min-height: calc(70px * var(--rhythm-zoom, 1));
}
.rhythm-frequency-value { line-height: 1.2; }
.rhythm-frequency-track { display: block; position: relative; height: calc(38px * var(--rhythm-zoom, 1)); width: calc(14px * var(--rhythm-zoom, 1)); background: var(--surface-container-highest); }
.rhythm-frequency-track i { position: absolute; left: 0; bottom: 0; width: 100%; height: var(--frequency-height); background: var(--bs-primary); }
.rhythm-frequency-max { display: block; margin-top: 4px; font-size: .9em; }
.rhythm-view-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 3px; margin-left: auto; color: var(--on-surface); font-size: 12px; }
.rhythm-view-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 3px; }
.rhythm-view-button { min-width: 28px; min-height: 28px; border: 1px solid var(--border-neutral); border-radius: 4px; padding: 2px 6px; background: var(--surface-container-lowest); color: var(--bs-primary); font-size: 12px; line-height: 1.4; font-weight: 600; }
.rhythm-view-button:hover:not(:disabled), .rhythm-view-button[aria-pressed="true"] { background: var(--accent-gold); }
.rhythm-view-button:disabled { opacity: .45; }
.rhythm-view-button:focus-visible { outline: 2px solid var(--bs-primary); outline-offset: 1px; }
#rhythm-zoom-value { min-width: 36px; text-align: center; font-size: 11px; font-variant-numeric: tabular-nums; }
.rhythm-expanded-active { overflow: hidden; }
.rhythm-page.rhythm-expanded { position: fixed; z-index: 1100; inset: 0; width: 100%; height: 100vh; height: 100dvh; box-sizing: border-box; display: flex; flex-direction: column; gap: 6px; padding: 10px; overflow: auto; background: var(--background); }
.rhythm-expanded .rhythm-view-toolbar, .rhythm-expanded .rhythm-filter { flex-shrink: 0; }
.rhythm-expanded .rhythm-card { display: flex; flex: 1; flex-direction: column; min-height: 240px; padding: 8px; }
.rhythm-expanded .rhythm-table-wrap { flex: 1; min-height: 100px; max-height: none; }
.rhythm-expanded .rhythm-overview, .rhythm-expanded .rhythm-legend, .rhythm-expanded .rhythm-mark-toolbar { flex-shrink: 0; }
@media(max-width:575.98px) {
    .rhythm-view-toolbar { flex: 1 1 auto; justify-content: flex-end; }
    .rhythm-view-button { min-height: 32px; }
    .rhythm-page.rhythm-expanded { padding: 5px; }
    .rhythm-expanded .rhythm-view-toolbar > strong { display: none; }
    .rhythm-expanded .rhythm-filter { margin-bottom: 0; }
}

.rhythm-page .rhythm-mark-button, .rhythm-view-button { color: #9e2834; }
