:root{color-scheme:light;font-family:IBM Plex Sans,Segoe UI,sans-serif;--bg: #eaf4f2;--panel: #f8fcfb;--panel-strong: #ffffff;--ink: #143331;--muted: #52736f;--line: rgba(20, 51, 49, .14);--petrol: #0f766e;--petrol-dark: #0b5550;--teal-deep: #155e75;--alert: #b91c1c;--shadow: 0 18px 50px rgba(15, 64, 60, .12)}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:radial-gradient(circle at top left,rgba(15,118,110,.22),transparent 28%),radial-gradient(circle at bottom right,rgba(21,94,117,.18),transparent 28%),linear-gradient(180deg,#f7fbfa 0%,var(--bg) 100%)}button,input,select,textarea{font:inherit}textarea{min-height:110px;resize:vertical}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.auth-card,.panel,.stats-grid article,.sidebar{background:#f8fcfbeb;border:1px solid var(--line);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.auth-card{width:min(520px,100%);padding:32px;border-radius:28px}.eyebrow{margin:0 0 8px;font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--petrol);font-weight:700}.auth-card h1,.sidebar h1,.panel h2{margin:0;font-family:Iowan Old Style,Palatino Linotype,serif;letter-spacing:-.03em}.muted,.panel p{color:var(--muted)}.app-shell{min-height:100vh;display:grid;grid-template-columns:280px minmax(0,1fr);gap:18px;padding:18px}.sidebar{border-radius:28px;padding:24px;display:grid;gap:18px;align-content:start;position:sticky;top:18px;height:calc(100vh - 36px)}.menu-toggle{display:none;width:auto;min-width:96px;height:52px;padding:0 16px;margin-bottom:14px;align-items:center;justify-content:center}.menu{display:grid;gap:8px}.menu-item,.secondary{border:1px solid var(--line);background:var(--panel-strong);color:var(--ink)}.menu-item.active,button,.role-admin,.role-secretary,.role-doctor,.role-patient{background:linear-gradient(135deg,var(--petrol) 0%,var(--petrol-dark) 100%);color:#fff;border:0}.secondary{background:var(--panel-strong);color:var(--ink);border:1px solid var(--line)}.danger{background:linear-gradient(135deg,#b91c1c,#8f1717);color:#fff;border:0}.sidebar-footer{display:grid;gap:10px;margin-top:auto}.role-badge{width:fit-content;padding:8px 12px;border-radius:999px;font-size:.82rem;font-weight:700}.public-shell .sidebar{align-content:start}.public-shell{grid-template-columns:minmax(0,1fr) 320px}.public-login{padding:0;background:transparent;border:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.content{display:grid;gap:18px}.header-banner{display:none;overflow:hidden;border-radius:24px;border:1px solid var(--line);background:#f8fcfbeb;box-shadow:var(--shadow)}.header-banner img{display:block;width:100%;height:auto}.sidebar .header-banner{display:block}.stats-grid,.grid-2,.form-grid{display:grid;gap:16px}.stats-grid,.stats-grid-extended{grid-template-columns:repeat(4,minmax(0,1fr))}.stats-grid article,.panel{border-radius:24px;padding:20px}.stats-grid article span{display:block;color:var(--muted);margin-bottom:8px}.stats-grid article strong{font-size:2rem}.grid-2,.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.panel-header{display:flex;justify-content:space-between;gap:12px;margin-bottom:16px;align-items:end}.panel-header h2{font-size:1.7rem}input,select,textarea{width:100%;border-radius:16px;border:1px solid var(--line);padding:12px 14px;background:var(--panel-strong)}button{width:100%;border-radius:16px;border:0;padding:12px 14px;background:linear-gradient(135deg,var(--petrol) 0%,var(--petrol-dark) 100%);cursor:pointer;font-weight:700;color:#fff}button:disabled{opacity:.55;cursor:not-allowed}.stack,.list{display:grid;gap:12px}.list-item{display:grid;gap:5px;padding:14px;border-radius:18px;border:1px solid var(--line);background:var(--panel-strong)}.clickable{cursor:pointer;transition:transform .16s ease,border-color .16s ease}.clickable:hover{transform:translateY(-2px);border-color:#0f766e66}.checkbox{display:flex;align-items:center;gap:10px}.checkbox input{width:auto}.filter-row,.import-box{display:grid;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:14px}.field{display:grid;gap:6px}.field-label{display:none}.field-help{color:var(--muted);font-size:.78rem;line-height:1.25}.slot-info,.group-title{padding:12px 14px;border-radius:14px;background:#0f766e14;color:var(--petrol-dark);border:1px solid rgba(15,118,110,.16)}.calendar-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px}.form-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.group-block{display:grid;gap:12px;margin-bottom:12px}.compact-list .list-item{padding:10px 12px}.event-detail-item{transition:background-color .16s ease,border-color .16s ease}.event-detail-item:hover{background:#0f766ec7;border-color:#0f766ee6;color:#fff}.calendar-panel .fc{--fc-border-color: var(--line);--fc-page-bg-color: transparent;--fc-neutral-bg-color: rgba(255, 255, 255, .52);--fc-today-bg-color: rgba(15, 118, 110, .08)}.calendar-panel .fc .fc-event-title,.calendar-panel .fc .fc-event-main{white-space:normal}.calendar-event-stack{display:grid;gap:2px;line-height:1.05}.calendar-event-stack-month{gap:1px}.calendar-event-time,.calendar-event-city,.calendar-event-title-text{display:block;min-width:0}.calendar-event-time{font-size:.88rem;font-weight:700;overflow:hidden;text-overflow:ellipsis}.calendar-event-city,.calendar-event-title-text{font-size:.84rem}.calendar-event-title-text,.calendar-event-city{white-space:normal;overflow:visible;text-overflow:clip;word-break:break-word}.calendar-event-city-badge{width:100%;max-width:100%;padding:3px 8px;border-radius:8px;background:var(--petrol-dark);color:#fff;font-weight:700}.calendar-panel .calendar-schedule-event{font-weight:700;background:var(--petrol-dark)!important;border-color:var(--petrol-dark)!important;color:#fff!important}.calendar-panel .fc-daygrid-event.calendar-schedule-morning{background:#0f766e1f;border-color:#0f766e4d}.calendar-panel .fc-daygrid-event.calendar-schedule-afternoon{background:#ea7a1724;border-color:#ea7a1747}.calendar-panel .fc-daygrid-event.calendar-visit-event.calendar-schedule-morning{background:#0f766e1f;border-color:#0f766e2e}.calendar-panel .fc-daygrid-event.calendar-visit-event.calendar-schedule-afternoon{background:#ea7a1724;border-color:#ea7a172e}.calendar-panel .fc-daygrid-event.calendar-visit-event{transition:background-color .16s ease,border-color .16s ease,box-shadow .16s ease}.calendar-panel .fc-daygrid-event.calendar-visit-event:hover{background:#0f766e52!important;border-color:#0f766ebf!important;box-shadow:inset 0 0 0 1px #0f766e59}.calendar-panel .fc-daygrid-event.calendar-visit-event.calendar-schedule-afternoon:hover{background:#ea7a174d!important;border-color:#ea7a17b8!important;box-shadow:inset 0 0 0 1px #ea7a1759}.calendar-panel .fc-daygrid-event.calendar-schedule-event .calendar-event-city-badge{background:transparent;padding:0;border-radius:0}.calendar-panel .fc-daygrid-event.calendar-schedule-event .calendar-event-time,.calendar-panel .fc-daygrid-event.calendar-schedule-event .calendar-event-city,.calendar-panel .fc-daygrid-event.calendar-schedule-event .calendar-event-title-text{color:#fff!important}.calendar-panel .fc-daygrid-event.calendar-schedule-morning .calendar-event-time,.calendar-panel .fc-daygrid-event.calendar-schedule-afternoon .calendar-event-time,.calendar-panel .fc-daygrid-event.calendar-visit-event.calendar-schedule-morning .calendar-event-time,.calendar-panel .fc-daygrid-event.calendar-visit-event.calendar-schedule-afternoon .calendar-event-time{color:var(--ink)}.calendar-panel .fc-daygrid-event.calendar-schedule-event .calendar-event-time{color:#fff!important}.calendar-panel .fc-daygrid-event.calendar-schedule-gap{margin-top:8px}.calendar-panel .fc-timegrid-event-harness{inset-inline-end:0!important}.calendar-panel .fc-timegrid-col-events{margin-inline:0!important}.calendar-panel .fc-timegrid-event{inset-inline-start:0!important;inset-inline-end:0!important}.calendar-panel .fc-timegrid-event .fc-event-main{padding:3px 4px}.calendar-panel .fc-timegrid-event.calendar-visit-event{transition:background-color .16s ease,border-color .16s ease,box-shadow .16s ease,transform .16s ease}.calendar-panel .fc-timegrid-event.calendar-visit-event:hover{background:#0f766e!important;border-color:#0b5550!important;box-shadow:0 0 0 2px #0f766e59;transform:translate(1px)}.calendar-event-stack-visit{gap:1px}.calendar-event-time-range{display:grid;gap:1px}.calendar-event-time-range span{display:block}.toast-error,.error{color:var(--alert)}.toast-error{position:fixed;right:16px;bottom:16px;background:#fef2f2;border:1px solid #fecaca;padding:12px 14px;border-radius:14px}@media(max-width:1100px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto}.sidebar .header-banner{display:none}.content>.header-banner{display:block}.authenticated-shell .sidebar .header-banner{display:block}.authenticated-shell .content>.header-banner{display:none}.stats-grid,.stats-grid-extended{grid-template-columns:repeat(2,minmax(0,1fr))}.public-shell{grid-template-columns:1fr}.menu-toggle{display:inline-grid}.sidebar{gap:14px}.sidebar .menu,.sidebar .sidebar-footer{display:none}.sidebar.mobile-open .menu,.sidebar.mobile-open .sidebar-footer{display:grid}}@media(max-width:720px){.app-shell{padding:12px}.grid-2,.form-grid,.stats-grid,.stats-grid-extended,.filter-row,.import-box,.calendar-controls,.form-actions{grid-template-columns:1fr}.sidebar,.panel,.stats-grid article{border-radius:20px}.calendar-panel .fc .fc-daygrid-event{padding:1px 3px}.calendar-panel .fc .fc-daygrid-event .fc-event-main{padding:0}.calendar-panel .fc .fc-daygrid-event{overflow:visible}.calendar-event-time{font-size:.66rem}.calendar-event-city,.calendar-event-title-text{font-size:.62rem}.calendar-event-stack-month .calendar-event-city{line-height:.95}.calendar-event-city-vertical{writing-mode:vertical-rl;text-orientation:mixed;white-space:normal;overflow:visible;text-overflow:clip;max-height:100%;align-self:start;justify-self:start;margin-left:0}.calendar-event-stack-week{grid-template-columns:1fr;align-items:start;justify-content:start;justify-items:start;row-gap:2px}.calendar-event-stack-week .calendar-event-time-range{line-height:.92}.calendar-event-stack-week .calendar-event-time{overflow:visible;text-overflow:clip}.calendar-event-stack-week-visit .calendar-event-time{font-size:.6rem;line-height:.9;font-weight:700}.calendar-event-stack-week-visit .calendar-event-title-text{font-size:.66rem;line-height:.92;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;word-break:normal}}
