/* Посещения: геометрия графиков, общая палитра — только bi-theme.css. */
.attendance-filters{grid-template-columns:repeat(3,minmax(0,1fr))}
.attendance-range-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px;min-width:0}
.attendance-filters>button{justify-self:start}
.attendance-metrics article{padding:0}
.attendance-metric-button{display:flex;flex-direction:column;align-items:stretch;width:100%;height:100%;border:0;border-radius:var(--radius-panel);padding:20px;text-align:left;background:transparent}
.attendance-metric-button:hover:not(:disabled){background:var(--green-soft)}
.attendance-metric-button:focus-visible{outline:3px solid var(--green);outline-offset:-3px}
.attendance-metric-button .attendance-metric-action{margin-top:12px;color:var(--green-dim);font-weight:600}
.attendance-person-link{border:0;background:transparent;box-shadow:none;padding:0;min-height:32px;text-align:left;white-space:normal;overflow-wrap:anywhere;color:var(--green-dim);font-size:inherit;font-weight:600}
.attendance-person-link:hover{text-decoration:underline}
.av{margin:28px 0 32px;min-width:0}
.av-heading,.av-chart-heading,.av-timebar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.av-heading{margin-bottom:20px}.av-heading h3{margin:4px 0 0;font-size:22px}
.av-eyebrow{font-size:10px;letter-spacing:2px;font-weight:650;color:var(--muted);margin:0}
.av-tabs{display:flex;gap:4px;padding:5px;border-radius:var(--radius-control);background:var(--bg);flex-wrap:wrap}
.av-tabs button{border:0;background:transparent;color:var(--muted);box-shadow:none;font-size:13px;padding:10px 14px}
.av-tabs button[aria-pressed="true"]{background:var(--panel);color:var(--ink);box-shadow:var(--shadow-sm)}
.av-card{border:1px solid var(--line);border-radius:var(--radius-panel);background:var(--panel);padding:20px;min-width:0;box-shadow:var(--shadow-sm)}
.av-card h4{font-size:15px;margin:0}.av-card .hint{font-size:12px;margin:8px 0 0;line-height:1.6}
.av-overview{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(240px,1fr);gap:16px}
.av-plot{overflow:auto;margin:18px 0 6px;scrollbar-width:thin}
.av-plot svg{display:block;width:100%;min-width:0;height:auto}
.av-roster #av-count{font:700 32px var(--mono);color:var(--green-dim);padding:2px 10px;min-height:42px;border-color:transparent;background:var(--green-soft)}
#av-roster{margin:12px 0;min-height:80px}
.av-roster-person{padding:8px 0;border-bottom:1px solid var(--line)}
.av-roster-person .muted{font-size:12px;overflow-wrap:anywhere}
.av .av-person-link{border:0;background:transparent;box-shadow:none;color:var(--ink);font-size:13px;line-height:1.6;text-align:left;white-space:normal;overflow-wrap:anywhere;padding:0;min-height:30px}
.av .av-person-link:hover{color:var(--green-dim);text-decoration:underline}
.av .av-detail-link{border:0;background:transparent;box-shadow:none;padding:4px 0;min-height:32px;color:var(--green-dim);font-size:12px;text-align:left;white-space:normal;overflow-wrap:anywhere}
.av .av-detail-link:hover{text-decoration:underline}
.av-timebar{margin:0 0 8px}.av-timebar label{font-size:13px;color:var(--muted)}.av-timebar output{display:inline-block;margin-left:12px;color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
.av-timebar button{font-size:12px;padding:7px 12px}
#av-time{width:100%;height:32px;min-height:32px;margin:0 0 20px;padding:0;accent-color:var(--green);box-shadow:none;border:0;cursor:pointer}
.av-grid{stroke:var(--line);stroke-width:1}.av-axis{fill:var(--muted);font:11px var(--sans)}
.av-line{stroke:var(--green);stroke-width:3;fill:none;stroke-linejoin:round;stroke-linecap:round}.av-area{fill:var(--green-soft)}
.av-cursor{stroke:var(--purple);stroke-width:1.5;stroke-dasharray:4 4;pointer-events:none}
.av-dot{fill:var(--green);stroke:var(--panel);stroke-width:2}.av-hit{fill:transparent}
.av-period-day{cursor:pointer}.av-period-day:hover .av-dot,.av-period-day:focus .av-dot{fill:var(--green-dim);stroke:var(--purple);stroke-width:3}
.av-period-day:focus{outline:none}.av-trend{pointer-events:none}
#av-activity>.av-card+.av-card{margin-top:16px}
.av-heat-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px}
.av-heat{width:100%;min-width:1140px;border-collapse:collapse;font-size:11px;table-layout:fixed}.av-heat th,.av-heat td{text-align:center;padding:5px 2px;border-bottom:1px solid var(--line)}
.av-heat thead{background:var(--panel2);color:var(--muted)}.av-heat th:first-child{width:175px;text-align:left;padding:12px;overflow-wrap:anywhere;font-weight:500}.av-heat :is(th,td):last-child{width:60px;font-weight:650}
.av .av-heat-cell{padding:4px 0;min-height:34px;width:100%;border:0;border-radius:5px;font:11px var(--mono);box-shadow:none}
.av-level-1{background:var(--green-soft);color:var(--green-dim)}.av-level-2{background:var(--green-soft);color:var(--ink);box-shadow:inset 0 0 0 1px var(--green)!important}.av-level-3{background:var(--green);color:var(--ink)}.av-level-4{background:var(--green-dim);color:white}
.av-heat-empty{color:var(--nodata)}.av-event-context{display:flex;justify-content:space-between;gap:16px;align-items:center;flex-wrap:wrap;padding:12px 16px;border:1px solid var(--line);border-radius:12px;background:var(--green-soft)}
.av-heat tbody th{text-transform:none;letter-spacing:normal;font-size:12px;color:var(--ink)}
@media(max-width:1100px){.av-overview{grid-template-columns:1fr}.av-roster{display:grid;grid-template-columns:1fr auto;align-items:start;gap:8px}.av-roster .av-chart-heading{grid-column:1/-1}#av-roster{min-height:0;margin:0}.av-heading h3{font-size:20px}}
@media(max-width:700px){.attendance-filters{grid-template-columns:1fr 1fr}.attendance-filters>label:nth-child(-n+3),.attendance-range-fields{grid-column:1/-1}.attendance-filters>label,.attendance-filters>div{min-width:0}.attendance-metrics article{padding:0}}
@media(max-width:600px){.av-card{padding:14px}.av-tabs{width:100%}.av-tabs button{flex:1;padding:10px 8px;font-size:12px}.av-heading{gap:14px}.av-timebar{gap:8px}.av-timebar output{margin-left:6px}.av-roster{display:block}.av-chart-heading{gap:8px}.av .pager{gap:8px}.av .pager span{font-size:11px}.attendance-metric-button{padding:16px}}
