.calendar{background:var(--color-white);border-radius:var(--radius-lg);width:100%;max-width:none;box-shadow:var(--shadow-card);border:1px solid #1b3a2f1a;gap:1.25rem;padding:1.75rem 2rem;display:grid}.calendar__toolbar{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:.75rem 1rem;display:flex}.calendar__toolbar label,.calendar__find-row label{color:var(--color-forest-deep);gap:.35rem;font-size:.95rem;font-weight:600;display:grid}.calendar__toolbar select,.calendar__find-row select{background:var(--color-white);min-width:8rem;font:inherit;border:1px solid #1b3a2f38;padding:.5rem .65rem;font-size:.95rem}.calendar__toolbar select{min-width:10rem}.calendar__nav{align-items:center;gap:.5rem;display:flex}.calendar__nav h2{text-align:center;min-width:4.5rem;margin:0;font-size:1.35rem}.calendar__nav button{border-radius:var(--radius-sm);background:var(--color-fog);width:2.75rem;height:2.75rem;color:var(--color-forest);cursor:pointer;transition:background-color .2s var(--ease-out);border:1px solid #1b3a2f33;justify-content:center;align-items:center;font-size:1.35rem;display:inline-flex}.calendar__nav button:hover{background:#1b3a2f1f}.calendar__find{border-top:1px solid #1b3a2f1a;gap:.55rem;padding-top:.25rem;display:grid}.calendar__find-title{color:var(--color-forest-deep);margin:0;font-size:.95rem;font-weight:700}.calendar__find-row{flex-wrap:wrap;align-items:end;gap:.65rem;display:flex}.calendar__find-results{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.calendar__find-results li{border-bottom:1px solid #1b3a2f14;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding:.45rem 0;font-size:.92rem;display:flex}.calendar__find-results span{color:#147a3a;font-weight:600}.calendar__find-results button{font:inherit;background:var(--color-white);color:var(--color-forest);cursor:pointer;border:1px solid #1b3a2f38;padding:.4rem .75rem;font-weight:600}.calendar__find-results button:hover{border-color:var(--color-forest)}.calendar__find-empty{color:var(--color-busy);margin:0}.calendar__legend{color:var(--color-muted);flex-wrap:wrap;gap:.85rem;font-size:.85rem;display:flex}.dot{vertical-align:middle;border-radius:50%;width:.7rem;height:.7rem;margin-right:.35rem;display:inline-block}.dot--free{background:#1b8a45}.dot--busy{background:#c62828}.dot--selected{background:var(--color-mist)}.calendar__year{transition:opacity .25s var(--ease-out);grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 1.15rem;display:grid}.calendar__year.is-loading{opacity:.45}.calendar__month{min-width:0}.calendar__month-title{color:var(--color-forest-deep);margin:0 0 .35rem;font-size:.92rem;font-weight:700}.calendar__month-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:.12rem;display:grid}.calendar__dow{text-align:center;color:var(--color-mist);padding:.05rem 0 .15rem;font-size:.62rem;font-weight:700}.calendar__day{aspect-ratio:1;border-radius:var(--radius-xs);min-height:0;max-height:2.1rem;font:inherit;font-variant-numeric:tabular-nums;cursor:pointer;transition:background .2s var(--ease-out), color .2s var(--ease-out), border-color .2s var(--ease-out);background:0 0;border:1px solid #0000;padding:0;font-size:.76rem;font-weight:700;line-height:1}.calendar__day--free{color:#0d6b32;background:#d8f0e0;border-color:#8dcf9f}.calendar__day--free:hover:not(:disabled){background:#c3e8cf;border-color:#1b8a45}.calendar__day--busy{color:#b71c1c;cursor:not-allowed;background:#f8d4d4;border-color:#ef9a9a}.calendar__day--past{color:#9aa39d;cursor:not-allowed;background:#eceeec;border-color:#dde0dd}.calendar__day--selected,.calendar__day--in-range{background:var(--color-mist)!important;color:var(--color-white)!important;border-color:var(--color-mist)!important}.calendar__day--empty{visibility:hidden}.calendar__hint,.calendar__status{color:var(--color-muted);margin:0;font-size:.92rem}.calendar__actions{gap:.75rem;display:flex}.calendar__actions .btn{padding:.7rem 1.1rem;font-size:.95rem}@media (width>=720px){.calendar__year{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.15rem 1.35rem}.calendar__day{max-height:2rem;font-size:.74rem}}@media (width>=980px){.calendar__year{grid-template-columns:repeat(4,minmax(0,1fr))}.calendar__day{max-height:2.15rem;font-size:.78rem}.calendar__dow{font-size:.68rem}}
