:root{color:#0f172a;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f4f7fb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}html,body,#root{height:100%;min-height:100%;margin:0}body{min-width:320px}button,input,textarea{font:inherit}a{color:inherit}.app-shell{color:#0f172a;background:#f4f7fb;width:100%;height:100dvh;margin:0;padding:0}.calendar{background:#fff;border:0;border-radius:0;flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}.calendar__toolbar{background:#fff;border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.calendar__title-wrap{flex-direction:column;gap:2px;display:flex}.calendar__title{margin:0;font-size:clamp(1.05rem,1.8vw,1.4rem);line-height:1.1}.calendar__meta{color:#64748b;margin:0;font-size:.86rem}.calendar__toolbar-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.view-toggle{border:1px solid #cbd5e1;border-radius:12px;display:inline-flex;overflow:hidden}.view-toggle .button{box-shadow:none;border:none;border-radius:0}.view-toggle .button+.button{border-left:1px solid #cbd5e1}.view-toggle__button--active{color:#fff;background:#4f46e5}.button,.icon-button,.calendar__day-header,.appointment-chip{font:inherit}.button,.icon-button{cursor:pointer;border:1px solid #0000;transition:background .16s,border-color .16s,color .16s,transform .16s,box-shadow .16s}.button{color:#fff;background:linear-gradient(135deg,#4f46e5 0%,#7c3aed 100%);border-radius:12px;justify-content:center;align-items:center;padding:.55rem .75rem;font-weight:600;display:inline-flex;box-shadow:0 8px 20px #4f46e533}.button:hover,.icon-button:hover,.calendar__day-header:hover,.appointment-chip:hover{transform:translateY(-1px)}.button:focus-visible,.icon-button:focus-visible,.calendar__day-header:focus-visible,.appointment-chip:focus-visible,.view-toggle button:focus-visible,.appointment-form input:focus-visible,.appointment-form textarea:focus-visible{outline-offset:2px;outline:3px solid #6366f1}.button:disabled,.icon-button:disabled{cursor:not-allowed;opacity:.6;box-shadow:none;transform:none}.button--secondary{color:#0f172a;background:#fff;border-color:#cbd5e1}.button--danger{color:#be123c;background:#fff1f2;border-color:#fecdd3}.banner{border-radius:10px;margin:8px 16px 0;padding:.6rem .8rem}.banner--error{color:#be123c;background:#fff1f2;border:1px solid #fecdd3;justify-content:space-between;align-items:center;gap:12px;display:flex}.banner--error .button{white-space:nowrap}.calendar__viewport{flex-direction:column;flex:1;min-height:0;display:flex}.calendar__weekdays,.calendar__grid{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.calendar__weekdays{flex:none}.calendar__grid{flex:1;grid-template-rows:repeat(6,minmax(0,1fr));min-height:0}.calendar--week .calendar__grid{grid-template-rows:minmax(0,1fr)}.calendar__weekday{text-align:center;color:#4338ca;background:#eef2ff;border-bottom:1px solid #dbe3ee;border-right:1px solid #dbe3ee;padding:8px;font-weight:700}.calendar__weekday:last-child{color:#dc2626;border-right:none}.calendar__day{background:#ffffffe6;border-bottom:1px solid #e2e8f0;border-right:1px solid #e2e8f0;flex-direction:column;gap:8px;min-height:0;padding:8px;display:flex}.calendar__day:nth-child(7n){border-right:none}.calendar__day--muted{background:#f8fafc}.calendar__day--today{background:linear-gradient(#eef2fff2,#f5f3fff2)}.calendar__day--selected{outline-offset:-2px;outline:2px solid #818cf8}.calendar__day-header{cursor:pointer;color:inherit;background:0 0;border:none;justify-content:space-between;align-items:center;padding:0;display:flex}.calendar__day-number{font-weight:700}.calendar__day-action{color:#4f46e5;font-size:.78rem;font-weight:600}.calendar__appointments{flex-direction:column;gap:6px;min-height:0;padding-right:2px;display:flex;overflow-y:auto}.calendar__empty{color:#64748b;margin:0;font-size:.78rem}.appointment-chip{text-align:left;color:#1e1b4b;cursor:pointer;background:linear-gradient(#f4f6ff 0%,#eef2ff 100%);border:1px solid #c7d2fe;border-radius:12px;gap:2px;width:100%;padding:6px 8px;display:grid}.appointment-chip__time{color:#4338ca;font-size:.74rem;font-weight:700}.appointment-chip__title{font-size:.84rem;font-weight:700}.appointment-chip__meta{color:#312e81;font-size:.78rem}.modal-backdrop{background:#0f172a73;justify-content:center;align-items:flex-start;padding:24px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:#fffffffa;border:1px solid #cbd5e1cc;border-radius:20px;flex-shrink:0;width:min(100%,680px);max-height:calc(100dvh - 48px);margin-block:auto;padding:24px;overflow-y:auto;box-shadow:0 20px 60px #0f172a24}.modal__header{justify-content:space-between;gap:16px;margin-bottom:16px;display:flex}.modal__eyebrow,.modal__subtitle{margin:0}.modal__eyebrow{letter-spacing:.14em;text-transform:uppercase;color:#4f46e5;font-size:.78rem;font-weight:700}.modal__subtitle{color:#475569;margin-top:8px}.modal__summary{color:#4338ca;flex-wrap:wrap;gap:12px;margin-bottom:18px;font-weight:600;display:flex}.icon-button{background:#fff;border-color:#cbd5e1;border-radius:999px;width:40px;height:40px}.appointment-form{gap:16px;display:grid}.appointment-form label{color:#0f172a;gap:8px;font-weight:600;display:grid}.appointment-form input,.appointment-form textarea{box-sizing:border-box;color:#0f172a;background:#fff;border:1px solid #cbd5e1;border-radius:12px;width:100%;padding:.85rem .9rem}.appointment-form textarea{resize:vertical}.appointment-form input:focus,.appointment-form textarea:focus{border-color:#818cf8;outline:2px solid #a5b4fc}.appointment-form small{color:#be123c;font-weight:500}.appointment-form__row{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.modal__actions{flex-wrap:wrap;justify-content:flex-end;gap:12px;display:flex}@media (width<=920px){.calendar__toolbar{flex-direction:column;align-items:stretch}.calendar__toolbar-actions{justify-content:flex-start}.view-toggle{width:fit-content}}@media (width<=767px){.calendar__toolbar{z-index:5;background:#fff;position:sticky;top:0}.calendar__toolbar-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.view-toggle{grid-column:1/-1;width:100%}.view-toggle .button{flex:1}.calendar__weekdays,.calendar__grid{min-width:720px}.calendar__viewport{-webkit-overflow-scrolling:touch;overflow:auto}.calendar__day{min-height:120px}}@media (width<=640px){.calendar__toolbar{gap:8px;padding:8px 10px}.calendar__title{font-size:1.05rem}.calendar__meta{font-size:.78rem}.calendar__toolbar-actions{-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;padding-bottom:2px;overflow-x:auto}.calendar__toolbar-actions::-webkit-scrollbar{display:none}.button{white-space:nowrap;border-radius:10px;flex:none;min-height:2rem;padding:.4rem .55rem;font-size:.82rem}.view-toggle{flex:none}.calendar__day{gap:6px;padding:6px}.calendar__day-action{align-items:center;min-height:28px;font-size:.72rem;display:inline-flex}.modal-backdrop{padding:12px}.modal{border-radius:16px;max-height:calc(100dvh - 24px);padding:18px}.appointment-form__row{grid-template-columns:1fr}}
