/* Дополнения для новых функций. Исходные base/layout/components/pages/charts.css сохранены без изменений. */
a.brand{color:inherit;text-decoration:none}
[hidden]{display:none!important}
.page-head{justify-content:space-between;margin-bottom:16px}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.card-head h2{margin-bottom:0}
.donut-layout{display:flex;align-items:center;justify-content:center;gap:38px;padding:20px 0 12px;flex-wrap:wrap}
.donut-wrap{width:195px;height:195px;position:relative;flex-shrink:0}
.donut{width:100%;height:100%;display:block;transform:rotate(-90deg)}
.donut-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;pointer-events:none}
.donut-center strong{font-size:34px;color:var(--blue);line-height:1.25}
.donut-center span{font-size:13px;color:var(--muted)}
.legend{width:230px;max-width:100%}
.legend-row{display:flex;align-items:center;gap:9px;font-size:13px;margin:13px 0}
.legend-dot{width:9px;height:9px;flex-shrink:0;border-radius:50%}
.legend-row strong{margin-left:auto;font-size:15px}
.legend-row small{color:var(--muted);width:35px;text-align:right}
.event-item{border-bottom:1px dashed #eef2f9;padding:9px 0}
.event-item:last-child{border-bottom:0}
.event-item a{color:inherit;text-decoration:none}
.event-item a:hover{text-decoration:underline}
.filters{display:flex;gap:16px;align-items:end;margin-bottom:16px;flex-wrap:wrap}
.filters .field{flex:1;min-width:180px;margin-bottom:0}
.filters .field:last-child{max-width:280px}
.form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.field-error,.form-error{font-size:12px;color:var(--red);margin-top:4px}
.field-error:empty,.form-error:empty{display:none}
.form-error{margin-bottom:13px;padding:10px 12px;background:#fff1ef;border:1px solid #f2d3cf;border-radius:9px}
input.invalid,select.invalid,textarea.invalid{border-color:var(--red);box-shadow:0 0 0 3px rgba(213,43,30,.12)}
.booking-layout{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:16px;align-items:start}
.info-line{padding:10px 0;border-bottom:1px dashed #eef2f9;font-size:13px}
.info-line:last-child{border-bottom:0}
.info-line b{display:block}
.info-line span{color:var(--muted);font-size:12px}
.section-gap{margin-top:20px}
.b-cancel{background:#fde8e6;color:#a81f14}
tr[id^="booking-"]{scroll-margin-top:100px}
tr.booking-highlight,tbody tr.booking-highlight:hover{background:#eef3ff}
.booking-actions{min-width:105px;gap:6px}
.review-details{min-width:100px;max-width:260px}
.review-details summary{cursor:pointer}
.review-text{margin:10px 0 0;font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere}
.password-wrap{display:flex;gap:6px}
.password-wrap input{min-width:0;flex:1}
.password-toggle{border:1px solid #cdd8f0;background:#fff;color:var(--blue);border-radius:9px;padding:0 8px;font:inherit;font-size:11px;cursor:pointer}
.btn-danger{background:#fff;color:var(--red);border-color:#edc3bf}
.empty-symbol{font-size:34px;margin-bottom:8px}
.app-dialog{background:#fff;border:0;border-radius:16px;padding:24px;width:calc(100% - 36px);max-width:440px;max-height:92vh;overflow:auto;color:var(--text);box-shadow:0 24px 60px rgba(0,0,0,.3)}
.app-dialog::backdrop{background:rgba(14,22,44,.55)}
.dialog-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}
.dialog-head h2{font-size:18px;margin:0}
.dialog-close{background:none;border:0;font-size:22px;line-height:1;cursor:pointer;color:var(--muted)}
.connection{padding:10px 18px;text-align:center;font-size:13px;background:#fff3da;color:#9a6300}
.loading{text-align:center;padding:55px 16px;color:var(--muted)}
.text-button{background:none;border:0;padding:0;color:var(--blue-2);font:inherit;font-weight:600;cursor:pointer}
.text-button:disabled{color:var(--muted);cursor:default}
.auth-explanation{margin:0 0 18px;overflow-wrap:anywhere}
.verification-code{font-size:22px;letter-spacing:.28em;font-variant-numeric:tabular-nums}
.duration-options{gap:8px;margin:12px 0 22px}
.booking-summary{margin:14px 0}
.booking-summary>div{display:flex;justify-content:space-between;gap:16px;padding:8px 0;border-bottom:1px dashed #eef2f9;font-size:13px}
.booking-summary dt{color:var(--muted);flex-shrink:0}
.booking-summary dd{margin:0;text-align:right;overflow-wrap:anywhere}
.availability-status{font-size:13px;color:#0f7a43;margin:15px 0}
.availability-conflict{color:var(--red)}
button:focus-visible,a:focus-visible{outline:3px solid #93b5ff;outline-offset:3px}
@media(max-width:640px){.form-row{grid-template-columns:1fr;gap:0}.filters{display:block}.filters .field{margin-bottom:13px}.filters .field:last-child{max-width:none}.donut-layout{gap:16px}.auth-area{margin-left:auto}.who{max-width:170px}.card-head h2{font-size:21px}.hero{padding:26px 20px}.hero h1{font-size:26px}.grid.c3{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.page,.toast{animation:none}.room-card:hover{transform:none}}
