:root{--bg: #ffffff;--text: #111111;--card: #ffffff;--muted-bg: #f5f5f7;--border: #d0d0d4;--primary: #1976d2;--primary-contrast: #ffffff;--danger: #c62828;--ct-accent: #26a69a;--calendar-focus-glow: rgba(255, 152, 0, .75);--today-bg: #e3f2fd;--series-accent: #f9a825;--overlay-bg: rgba(255,255,255,.6);--placeholder: #5f6368;--fc-page-bg-color: var(--bg);--fc-neutral-bg-color: var(--muted-bg);--fc-border-color: var(--border);--fc-now-indicator-color: #ff5252;--fc-today-bg-color: var(--today-bg);--fc-event-text-color: #111111}[data-theme=dark]{--bg: #121212;--text: #eaeaea;--card: #1e1e1e;--muted-bg: #1a1a1a;--border: #333333;--primary: #90caf9;--danger: #ef5350;--ct-accent: #80cbc4;--calendar-focus-glow: rgba(255, 183, 77, .85);--today-bg: rgba(144, 202, 249, .12);--series-accent: #ffd54f;--overlay-bg: rgba(0,0,0,.4);--placeholder: #9aa0a6;--fc-page-bg-color: var(--bg);--fc-neutral-bg-color: var(--muted-bg);--fc-border-color: var(--border);--fc-now-indicator-color: #ff867c;--fc-today-bg-color: var(--today-bg);--fc-event-text-color: #f5f5f5}body{font-family:Arial,sans-serif;background:var(--bg);color:var(--text);margin:0;min-height:100vh;-webkit-font-smoothing:antialiased}.modal-overlay{position:fixed;left:0;right:0;top:0;bottom:0;background:#0006;display:flex;align-items:flex-start;justify-content:center;z-index:2000;padding:24px 16px;padding-bottom:max(24px,env(safe-area-inset-bottom,24px));box-sizing:border-box;overflow-y:auto;overscroll-behavior:contain;min-height:100vh;min-height:100dvh;-webkit-overflow-scrolling:touch;touch-action:pan-y}.modal{background:var(--card);padding:16px;border-radius:8px;width:500px;max-width:95%;box-sizing:border-box;z-index:2100;position:relative;margin:32px auto;display:flex;flex-direction:column;gap:12px;max-height:min(90vh,720px);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.modal-close{position:absolute;top:12px;right:12px;background:transparent;border:none;color:var(--text);font-size:1.5rem;line-height:1;cursor:pointer;padding:4px}.modal-close:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.modal label{display:block;margin-bottom:8px}.modal input,.modal textarea,.modal select{width:100%;padding:6px;margin-top:4px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px}fieldset{margin-bottom:8px}.flag-row{display:flex;align-items:center;gap:8px;padding:8px;margin:6px 0;border-radius:6px;background:var(--muted-bg);border-left:4px solid #2e7d32}.flag-check{display:flex;align-items:center;gap:8px}.flag-badge{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#2e7d32;color:#fff;font-size:12px}.app-container{display:flex;height:100vh}.sidebar{position:fixed;top:0;left:0;bottom:0;width:280px;transform:translate(-100%);transition:transform .25s ease;background:var(--card);border-right:1px solid var(--border);z-index:2100;box-shadow:0 4px 16px #00000026;max-width:min(480px,calc(100vw - 24px));overscroll-behavior:contain}.sidebar.open{transform:translate(0)}.sidebar-content{height:100%;display:flex;flex-direction:column;gap:8px;padding:12px}.quick-new-patient{border:1px solid var(--border);border-radius:8px;padding:8px;background:var(--card)}.quick-new-patient .row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.quick-new-patient label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--text)}.quick-new-patient input,.quick-new-patient select{width:100%;padding:6px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font:inherit}.quick-new-patient input::placeholder{color:var(--placeholder);opacity:1}.error-text{color:var(--danger);font-size:12px;margin:4px 0}.sidebar-header{display:flex;justify-content:space-between;align-items:center}.sidebar-resizer{position:absolute;top:0;right:-3px;width:6px;height:100%;cursor:col-resize;background:transparent}.sidebar-resizer:hover{background:#7f7f7f33}.search-row{display:flex;gap:8px}.sort-row{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.sort-control{display:flex;align-items:center;gap:6px;font-size:.78rem;color:var(--muted-color, #6b7280)}.sort-control select{font-size:.78rem;padding:4px 6px}.patient-count{font-size:12px;opacity:.7}.patient-folder{border:1px solid var(--border-color, #d8d8d8);border-radius:10px;background:var(--surface-1, rgba(0, 0, 0, .02));margin:12px 0;overflow:hidden}.patient-folder-header{width:100%;border:none;background:transparent;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px;font-size:.95rem;font-weight:600;cursor:pointer;color:var(--text, #1f2937);transition:background .2s ease}.patient-folder-header:hover{background:#00000008}.patient-folder-count{font-weight:500;color:var(--muted-color, #6b7280);margin-left:6px}.patient-folder-chevron{transition:transform .2s ease}.patient-folder-header[aria-expanded=false] .patient-folder-chevron{transform:rotate(-90deg)}.patient-folder-list{flex:none;max-height:280px;overflow-y:auto;border-top:1px solid var(--border-color, #ededed);background:var(--card, #fff)}.patient-folder-list .patient-item{margin:0;border-radius:0;padding:10px 14px}.patient-folder-list .patient-item+.patient-item{border-top:1px solid var(--border-color, #f0f0f0)}.patient-list{list-style:none;padding:0;margin:0;overflow:auto;flex:1}.patient-item{margin:5px 0;cursor:pointer;display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px}.patient-item:hover{background:var(--muted-bg)}.patient-item.selected{outline:2px solid var(--primary)}.patient-empty{opacity:.6;padding:8px}.avatar{width:28px;height:28px;border-radius:50%;background:var(--muted-bg);display:grid;place-items:center;font-weight:700}.patient-name{font-weight:600;display:flex;align-items:center;gap:8px}.patient-name-text{flex:1 1 auto;min-width:0}.patient-name .patient-edit-btn{flex:0 0 auto;white-space:nowrap}.patient-course-list{display:flex;flex-direction:column;gap:4px;margin-top:4px}.patient-course-summary-line{display:block;font-size:.78rem;color:var(--text, #1f2937);font-weight:500}.patient-course-summary-line.muted{color:var(--muted-color, #6b7280)}.patient-course-summary-line.error{color:#b91c1c}.patient-course-summary-line.soon{color:#b45309}[data-theme=dark] .patient-course-summary-line.soon{color:#fbbf24}.patient-course-toggle{border:none;background:transparent;color:var(--accent-color, #2563eb);font-size:.72rem;font-weight:600;cursor:pointer;padding:0;text-transform:uppercase;letter-spacing:.04em}.patient-course-toggle:hover{text-decoration:underline}.patient-course-expanded{margin-top:6px;display:grid;gap:4px;max-height:140px;overflow-y:auto;padding-right:2px}.patient-course-expanded-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:.75rem;padding:6px 8px;border-radius:8px;background:#ffffffb3;border:1px solid rgba(148,163,184,.3);cursor:pointer;transition:background .2s ease,border-color .2s ease}.patient-course-expanded-row:hover{background:#3b82f614;border-color:#3b82f659}.patient-course-expanded-title{font-weight:600;color:var(--text, #1f2937);flex:1 1 auto;min-width:0}.patient-course-expanded-status{font-size:.72rem;font-weight:600;color:var(--muted-color, #6b7280)}.patient-course-expanded-row.status-in_progress{border-color:#fb923c59}.patient-course-expanded-row.status-completed{border-color:#22c55e66}.patient-course-expanded-row.status-cancelled{border-color:#94a3b866}.patient-course-expanded-row.status-missed{border-color:#f8717166}.patient-course-expanded-row.status-scheduled{border-color:#6366f166}.patient-edit-btn{margin-left:4px;padding:4px 8px;font-size:12px}.patient-name .patient-qr-btn{margin-left:auto;flex:0 0 auto;white-space:nowrap}.patient-qr-btn{padding:4px 8px;font-size:12px}.patient-qr-btn[disabled]{opacity:.65;cursor:default}.patient-qr-modal{max-width:420px;width:100%;display:flex;flex-direction:column;gap:12px}.patient-qr-header{display:flex;flex-direction:column;gap:4px}.patient-qr-body{display:flex;flex-direction:column;gap:12px}.patient-qr-patient{display:flex;flex-direction:column;gap:2px;font-size:.9rem}.patient-qr-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--placeholder)}.patient-qr-preview{display:flex;flex-direction:column;align-items:center;gap:8px}.patient-qr-canvas{width:260px;height:260px;background:#fff;border-radius:12px;padding:12px;box-sizing:border-box;border:1px solid var(--border);image-rendering:pixelated}.patient-qr-instructions{font-size:.85rem;color:var(--placeholder);text-align:center;margin:0}.patient-qr-meta{display:grid;gap:8px}.patient-qr-code-line{display:block;word-break:break-all;font-size:.78rem;background:var(--muted-bg);padding:4px 6px;border-radius:6px}.patient-qr-actions{display:flex;justify-content:flex-end;gap:8px}.patient-qr-status{margin-top:8px;font-size:.85rem;text-align:center;color:var(--placeholder)}.patient-qr-error{display:flex;align-items:center;gap:8px;color:var(--danger);font-size:.85rem}.patient-qr-overlay{z-index:2300}.note-form-page{min-height:100vh;display:flex;justify-content:center;align-items:center;background:var(--muted-bg);padding:32px 16px}.note-form-card{background:var(--card);border-radius:16px;padding:28px;width:min(520px,100%);box-shadow:0 24px 50px #0f172a2e;display:grid;gap:18px}.note-form-header{display:grid;gap:8px;text-align:center}.note-form-header h1{margin:0;font-size:1.6rem;color:var(--text)}.note-form-header p{margin:0;color:var(--placeholder);font-size:.95rem}.note-form{display:grid;gap:12px}.note-form-label{font-size:.9rem;font-weight:600;color:var(--text)}.note-form textarea{min-height:160px;border-radius:12px;border:1px solid var(--border);padding:12px;font-size:1rem;resize:vertical;font-family:inherit;color:var(--text);background:var(--bg)}.note-form textarea:focus{outline:2px solid var(--primary);border-color:var(--primary)}.note-form button{justify-self:flex-end}.note-form-status{min-height:1.2em;font-size:.95rem;text-align:center;color:var(--placeholder)}.note-form-status.error{color:var(--danger)}.note-form-status.success{color:#15803d}.note-form-footer{font-size:.75rem;color:var(--placeholder);display:grid;gap:4px;text-align:center}.main-content{flex:1;position:relative}.burger-button{position:fixed;top:10px;left:10px;z-index:2050;background:var(--card);border:1px solid var(--border);cursor:pointer;border-radius:8px;width:40px;height:40px;display:grid;place-items:center}.burger-button .burger-bar{display:block;width:18px;height:2px;background:var(--text);margin:2px 0;transition:transform .2s ease,opacity .2s ease}.burger-button[data-open=true]{opacity:.2;pointer-events:none}.sidebar-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay-bg);z-index:2050;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.calendar-wrapper{padding:20px}.calendar-event-focus{position:relative;z-index:5;box-shadow:0 0 0 3px var(--calendar-focus-glow),0 0 0 7px #ffb74d73;outline:2px solid rgba(255,171,64,.9);outline-offset:3px}.calendar-grid-wrapper{position:relative;width:100%;overflow-x:hidden}.calendar-grid-wrapper .fc{width:100%}.calendar-grid-wrapper .fc-col-header{position:sticky;top:0;z-index:10;background:var(--card)}.calendar-grid-wrapper .fc-col-header table{transition:transform .1s ease}.calendar-grid-wrapper .fc-timegrid-body{position:relative}.selected-patient{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:10px;background-color:var(--muted-bg);border-radius:5px}.fab-create{position:fixed;right:20px;bottom:20px;width:48px;height:48px;border-radius:50%;background:var(--primary);color:var(--primary-contrast);border:none;box-shadow:0 2px 6px #0003;cursor:pointer;font-size:24px;z-index:2200}.scroll-top-btn{position:fixed;right:24px;bottom:24px;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:999px;background:var(--card);color:var(--text);border:1px solid var(--border);box-shadow:0 8px 24px #0000002e;cursor:pointer;font-weight:600;letter-spacing:.02em;transition:transform .2s ease,box-shadow .2s ease,background-color .2s ease,color .2s ease;z-index:2250}.scroll-top-icon{font-size:1.35rem;line-height:1}.scroll-top-btn:hover{background:var(--muted-bg);transform:translateY(-2px);box-shadow:0 12px 28px #0003}.scroll-top-btn:active{transform:translateY(0);box-shadow:0 6px 16px #0000002e}.scroll-top-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--overlay-bg);display:flex;align-items:center;justify-content:center;z-index:1500;transition:opacity .15s ease}.spinner{border:4px solid #f3f3f3;border-top:4px solid #3498db;border-radius:50%;width:28px;height:28px;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fc-tooltip{position:fixed;background:#333;color:#fff;padding:6px 8px;border-radius:4px;font-size:12px;pointer-events:none;z-index:2000;white-space:pre-line}.toast-container{position:fixed;right:20px;bottom:80px;display:flex;flex-direction:column;gap:8px;z-index:2300}.toast{background:var(--card);color:var(--text);padding:8px 12px;border-radius:6px;box-shadow:0 2px 6px #0003;border:1px solid var(--border)}.toast-success{background:var(--success);color:var(--success-contrast)}.toast-error{background:var(--danger);color:#fff}.header-actions{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:12px}.header-actions__title{flex:1 1 240px;min-width:200px}.header-actions__title-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:12px;margin-left:5%}.header-actions__title h1{margin:0;font-size:1.6rem}.header-actions__cluster{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding-left:12px;border-left:1px solid var(--border)}.header-actions__cluster:first-of-type{border-left:none;padding-left:0}.header-actions__cluster[data-empty=true]{display:none}.header-actions__button{white-space:nowrap}.header-actions__select{min-width:72px;padding:6px 10px}.calendar-view{position:relative}.calendar-controls{display:flex;flex-wrap:wrap;gap:0;align-items:flex-start;margin-bottom:12px}.calendar-controls__cluster{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;column-gap:4px;row-gap:4px;margin:2px}.calendar-controls__cluster--view{flex:1 1 240px}.calendar-controls__cluster--navigation{display:grid;grid-template-columns:repeat(3,minmax(0,auto));column-gap:4px;row-gap:4px;align-items:center}.calendar-controls__cluster--navigation .calendar-controls__subtitle{grid-column:1 / -1}.calendar-controls__cluster--navigation .calendar-controls__button{justify-self:start;min-width:32px;padding:6px 8px}.calendar-controls__cluster--navigation .calendar-controls__field{grid-column:1 / -1;margin:2px 0 0;padding-left:.5%;padding-right:.5%}.calendar-controls__cluster--navigation .calendar-controls__field{grid-column:1 / -1}.calendar-controls__cluster--navigation .calendar-controls__button{justify-self:flex-start}.calendar-controls__cluster--timing{display:grid;grid-template-columns:repeat(2,minmax(80px,1fr));column-gap:4px;row-gap:4px;align-items:stretch}.calendar-controls__cluster--timing .calendar-controls__field{min-width:0;width:100%}.calendar-controls__cluster--filters{display:grid;grid-template-columns:repeat(3,minmax(200px,1fr));column-gap:4px;row-gap:4px;align-items:stretch}.calendar-controls__cluster--filters .calendar-controls__field{width:100%;flex:1 1 auto}@media(max-width:1100px){.calendar-controls__cluster--filters{grid-template-columns:repeat(2,minmax(200px,1fr))}}@media(max-width:700px){.calendar-controls__cluster--filters,.calendar-controls__cluster--timing{grid-template-columns:minmax(0,1fr)}}.calendar-controls__cluster--schedule{flex:1 1 260px;align-items:flex-start}.calendar-controls__field{display:flex;flex-direction:column;gap:4px;flex:0 1 auto;min-width:120px;width:fit-content}.calendar-controls__field--multiselect{flex:0 1 auto;min-width:220px}.calendar-controls__field--multiselect .multi-select{min-width:220px;width:fit-content}.calendar-controls__cluster--filters .calendar-controls__field--multiselect .multi-select{width:100%}.calendar-controls__label{font-size:.82rem;font-weight:600;color:var(--muted)}.calendar-controls__subtitle{display:block;flex:1 1 100%;font-size:.82rem;font-weight:600;color:var(--primary);background:#1976d21f;border-radius:6px}.calendar-controls__heading{width:100%;font-size:.88rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-strong, var(--muted));margin-bottom:2px}.calendar-controls__input,.calendar-controls__select{border:2px solid var(--border);border-radius:6px;padding:6px 10px;background:var(--card);color:var(--text);width:max-content;min-width:90px;max-width:100%;box-sizing:border-box;height:32px;min-height:32px}.calendar-controls__input:focus,.calendar-controls__select:focus{outline:2px solid var(--primary);outline-offset:2px}.calendar-controls__button{flex-shrink:0;display:flex;align-items:center;justify-content:center;min-width:40px}.theme-toggle{background:var(--card);color:var(--text);border:1px solid var(--border);padding:6px 10px;border-radius:8px;cursor:pointer}.fc .series-event{outline:2px solid var(--series-accent);outline-offset:-1px}.fc .series-event:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(135deg,rgba(255,255,255,.08) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.08) 50%,rgba(255,255,255,.08) 75%,transparent 75%,transparent);background-size:8px 8px;border-radius:inherit}.fc .ct-prepared{outline:2px solid var(--ct-accent);outline-offset:-1px}.fc .ct-prepared:after{content:"H";position:absolute;top:2px;right:4px;font-size:11px;font-weight:700;color:var(--ct-accent);text-shadow:0 1px 1px rgba(0,0,0,.2)}.fraction-modal-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;padding-right:48px}.fraction-modal-header h3{margin:0}.fraction-modal-header .btn{flex-shrink:0}.fraction-modal .fraction-meta{margin-bottom:12px;display:grid;gap:4px;font-size:.9em}.fraction-quick-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.fraction-quick-actions .btn{padding:6px 12px;font-size:.85em}.fraction-modal .fraction-meta-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.fraction-manage-btn{padding:4px 10px;font-size:.85em}.fraction-modal .form-row{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:12px}.fraction-modal label{display:flex;flex-direction:column;gap:4px;font-size:.95em}.fraction-modal input,.fraction-modal select,.fraction-modal textarea{font-size:.95em}.fraction-modal textarea{resize:vertical}.fraction-delete-btn{border-color:#c6282866;background:#c6282814;color:var(--danger, #c62828)}.fraction-delete-btn:hover:not(:disabled){border-color:var(--danger, #c62828);background:#c6282826}.fraction-delete-btn:disabled{opacity:.6;cursor:not-allowed}.fc .rt-fraction-event{color:#fff!important;overflow:hidden;--fraction-accent: rgba(255, 255, 255, .25)}.fc .rt-fraction-event:before{content:"";position:absolute;top:0;left:0;bottom:0;width:6px;background:var(--fraction-accent);opacity:.9}.fc .rt-fraction-event:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,rgba(255,255,255,.18),transparent 58%);pointer-events:none}.fc .rt-fraction-status-scheduled{--fraction-accent: #b197fc}.fc .rt-fraction-status-in_progress{--fraction-accent: #ffd166}.fc .rt-fraction-status-completed{--fraction-accent: #b7f2d5}.fc .rt-fraction-status-missed{--fraction-accent: #ff85a1}.fc .rt-fraction-status-cancelled{--fraction-accent: #d6dfe8}.btn{background:var(--card);color:var(--text);border:1px solid var(--border);padding:6px 10px;border-radius:8px;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.btn:hover{background:var(--muted-bg)}.btn:active{transform:translateY(1px)}.btn.btn-primary{background:linear-gradient(135deg,#4f46e5,#7c3aed);border-color:transparent;color:#fff;box-shadow:0 8px 20px #4f46e540;font-weight:600;letter-spacing:.01em;transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease}.btn.btn-primary:hover:not(:disabled){box-shadow:0 10px 25px #4f46e559;transform:translateY(-1px)}.btn.btn-primary:disabled{opacity:.7;box-shadow:none;cursor:not-allowed}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger:hover{filter:brightness(.95)}.btn-danger:disabled{opacity:.7;cursor:not-allowed}.button-group{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.button-group.align-end{justify-content:flex-end}.sidebar-form-actions{margin-top:4px}.modal-action-buttons{margin-top:10px;width:100%;align-items:stretch}.modal-action-buttons>button,.modal-action-buttons>.btn{flex:1 1 200px;min-width:160px}.admin-users-modal{width:clamp(480px,80vw,1200px);max-width:calc(100vw - 32px);min-height:500px;max-height:90vh;resize:both;overflow:hidden}.admin-modal-header{display:flex;justify-content:space-between;align-items:center;gap:12px}.admin-modal-body{margin-top:12px;flex:1;display:flex;flex-direction:column;gap:12px;overflow:auto}.admin-toolbar{display:flex;gap:8px;flex-wrap:wrap}.admin-table-scroll{overflow:auto;max-height:clamp(200px,40vh,420px);padding:4px;border:1px solid var(--border);border-radius:6px}.admin-users-table{width:100%;border-collapse:collapse}.admin-user-table{table-layout:fixed}.admin-users-table th,.admin-users-table td{padding:6px 12px;vertical-align:middle}.admin-user-table th:nth-child(2),.admin-user-table td:nth-child(2){width:160px}.admin-user-table th:nth-child(5),.admin-user-table td:nth-child(5){width:220px}.admin-users-table select,.admin-users-table input{width:100%;box-sizing:border-box}.admin-user-table td:nth-child(5){overflow-wrap:anywhere}.admin-users-table td:last-child{text-align:right}.admin-sessions-table{table-layout:auto;min-width:720px}.admin-sessions-table th,.admin-sessions-table td{white-space:nowrap}.admin-sessions-table td.session-agent{white-space:normal;word-break:break-word;max-width:360px}.multi-select{position:relative;min-width:160px;width:100%}.multi-select-display{display:flex;align-items:center;gap:6px;padding:6px 10px;border:2px solid var(--border);border-radius:6px;background:var(--card);color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;width:fit-content}.multi-select-display:focus{outline:2px solid var(--primary);outline-offset:2px}.multi-select-display .caret{margin-left:auto;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid currentColor;opacity:.7;transition:transform .2s ease,opacity .2s ease}.multi-select-display[aria-expanded=true] .caret{transform:rotate(180deg);opacity:.9}.multi-select-options{position:absolute;z-index:1100;margin-top:4px;background:var(--card);border:1px solid var(--border);border-radius:6px;padding:8px;box-shadow:0 4px 12px #0000001f;display:flex;flex-direction:column;gap:6px;min-width:180px;max-height:240px;overflow:auto}.multi-select-option{display:flex;align-items:center;gap:6px;font-size:.9em}.multi-select-option input{margin:0}.multi-select-group{display:flex;flex-direction:column;gap:6px;padding:6px 0;border-top:1px solid var(--border)}.multi-select-group:first-child{border-top:none;padding-top:0}.location-manager{margin-top:6px;padding:8px;border:1px solid var(--border);border-radius:6px;background:var(--muted-bg);display:flex;flex-direction:column;gap:8px}.location-list{display:flex;flex-direction:column;gap:4px;max-height:160px;overflow:auto}.location-item{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:4px 6px;border-radius:4px;background:var(--card);border:1px solid var(--border)}.location-empty{font-size:.85em;color:#0009}.location-add{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.location-add input{flex:1;min-width:160px}.btn.btn-text{background:none;border:none;color:var(--primary);padding:0;cursor:pointer;font-size:.85em}.btn.btn-text:hover{text-decoration:underline}.btn.btn-text.active{font-weight:600}.btn.btn-text.danger{color:var(--danger)}.btn.btn-text.danger:hover{text-decoration:underline}.fc-timegrid-slot,.fc-daygrid-day-frame{touch-action:pan-y}@media(max-width:640px){.fc .fc-event,.fc .fc-timegrid-event{touch-action:none;cursor:grab}.fc .fc-event:active,.fc .fc-timegrid-event:active{cursor:grabbing}}@media(min-width:1024px){.modal-overlay{align-items:center}.modal{margin:40px auto}}@media(max-width:1200px){.calendar-wrapper{padding:18px 20px}}@media(max-width:900px){.app-container{flex-direction:column;height:auto;min-height:100vh}.calendar-wrapper{padding:24px 16px}.header-actions__title-row{margin-left:0}.calendar-controls__cluster--navigation{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:768px){.calendar-wrapper{padding:60px 12px 28px}.calendar-controls{flex-direction:column;gap:18px}.calendar-controls__cluster{width:100%}.calendar-controls__field{min-width:100%}.calendar-controls__cluster--navigation{grid-template-columns:minmax(0,1fr)}.calendar-controls__field--multiselect .multi-select{width:100%}.header-actions{flex-direction:column;align-items:stretch;gap:12px}.header-actions__title{width:100%}.header-actions__title-row{margin-left:0}.header-actions__title h1{margin:0;font-size:1.4rem}.header-actions__cluster{width:100%;flex-wrap:wrap;justify-content:flex-start;gap:6px;border-left:none;padding-left:0}.selected-patient{flex-direction:column;align-items:flex-start;gap:8px}.sidebar{max-width:min(440px,95vw);box-shadow:0 12px 32px #0000003d}.sidebar-content{padding:18px}.sidebar-resizer{display:none}.quick-new-patient .row{grid-template-columns:1fr}.search-row{flex-direction:column;align-items:stretch;gap:6px}.search-row .btn{width:100%}.sort-row{flex-direction:column;align-items:stretch}.sort-control{width:100%;justify-content:space-between}.sort-control select{width:100%}.patient-item{align-items:flex-start}.burger-button{width:48px;height:48px}.toast-container{right:12px;left:12px;bottom:20px}.toast-container .toast{width:100%;max-width:none}.modal-overlay{align-items:flex-start;padding:24px 12px 32px}.modal{width:92vw;max-width:92vw;margin:16px auto;padding:20px 16px;max-height:none}}@media(max-width:600px){.calendar-wrapper{padding:56px 10px 24px}.header-actions h1{font-size:1.25rem}.btn{padding:6px 8px}.burger-button{top:8px;left:8px}.sidebar{max-width:100vw;border-radius:0}.sidebar-content{padding:20px 16px 32px}.modal-overlay{padding:16px 12px calc(32px + env(safe-area-inset-bottom,0));align-items:flex-start}.modal{width:calc(100vw - 24px);max-width:calc(100vw - 24px);margin:0 auto;padding:20px 16px;max-height:none}.rt-course-upcoming li{grid-template-columns:1fr;gap:4px}}.modal.modal-large{max-width:900px;width:96%}.fraction-table-wrapper{overflow-x:auto;margin-top:12px}.fraction-table{width:100%;border-collapse:collapse;font-size:.9rem}.fraction-table th,.fraction-table td{border:1px solid var(--border-color, #d8d8d8);padding:6px 8px;text-align:left}.fraction-table input,.fraction-table select,.fraction-table textarea{width:100%;box-sizing:border-box}.fraction-table textarea{resize:vertical;min-height:32px}.fraction-sequence-value{display:inline-flex;align-items:center;justify-content:center;min-width:32px;font-weight:600;margin:0 auto;text-align:center}.fraction-table-empty{text-align:center;padding:12px 8px;color:var(--muted-color, #666);font-size:.9rem}.modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:16px}.modal-actions .btn{min-width:140px}.generator-block{margin-top:16px;border:1px solid var(--border-color, #d8d8d8);padding:12px;border-radius:8px;display:grid;gap:12px}.generator-preview{background:var(--muted-bg);border:1px solid var(--border);border-radius:8px;padding:10px;display:grid;gap:10px;max-height:300px;overflow-y:auto}.generator-preview-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.generator-preview-card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:10px;display:grid;gap:8px;box-shadow:0 1px 2px #00000014}.generator-preview-card-title{display:flex;align-items:center;justify-content:space-between;gap:8px;font-weight:600;font-size:.9rem;color:var(--text)}.generator-preview-delete{font-size:.75rem;padding:0;align-self:flex-start}.generator-preview-field-grid{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.generator-preview-field{display:flex;flex-direction:column;gap:3px;font-size:.8rem;color:var(--muted-color, #6b7280)}.generator-preview-field span{font-weight:600;color:var(--text);font-size:.75rem;text-transform:uppercase;letter-spacing:.02em}.generator-preview-field input,.generator-preview-field select,.generator-preview-field textarea{width:100%;box-sizing:border-box;padding:5px;border-radius:6px;border:1px solid var(--border);background:var(--bg);color:var(--text)}.generator-preview-field textarea{min-height:32px;resize:vertical}.generator-preview-field--wide{grid-column:1 / -1}.generator-preview-card-add{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border:2px dashed var(--border-color, #d8d8d8);background:linear-gradient(145deg,#6366f10d,#0ea5e90d);color:var(--muted-color, #6b7280);cursor:pointer;min-height:180px;text-align:center;transition:border-color .2s ease,color .2s ease,background .2s ease,transform .2s ease}.generator-preview-card-add:hover:not(:disabled),.generator-preview-card-add:focus-visible:not(:disabled){border-color:var(--primary, #2563eb);color:var(--primary, #2563eb);background:linear-gradient(145deg,#6366f11f,#0ea5e91a);transform:translateY(-2px)}.generator-preview-card-add:focus-visible{outline:none;box-shadow:0 0 0 2px #2563eb33}.generator-preview-card-add:disabled{opacity:.5;cursor:not-allowed;transform:none}.generator-preview-add-icon{width:44px;height:44px;border-radius:50%;border:2px solid currentColor;display:flex;align-items:center;justify-content:center;font-size:1.8rem;line-height:1;background:#ffffffa6}.generator-preview-add-label{font-weight:600;font-size:.95rem}.generator-preview-actions{display:flex;justify-content:flex-end}.generator-preview-actions .btn{min-width:160px}.generator-block legend{padding:0 8px;font-weight:600}.generator-block .form-row{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}.generator-block input{min-width:96px}.existing-fractions-panel{margin-top:16px;border:1px solid var(--border, var(--border-color, #d8d8d8));border-radius:8px;padding:12px;background:var(--muted-bg, #f5f5f7);display:flex;flex-direction:column;gap:12px}.existing-fractions-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.existing-fractions-title{font-weight:600;font-size:.95rem;color:var(--text, #222)}.existing-fractions-caption{color:var(--muted-color, #666);font-size:.8rem;margin-top:2px}.existing-fractions-count{font-size:.85rem;color:var(--text, #333);white-space:nowrap}.existing-fractions-summary{display:flex;gap:16px;flex-wrap:wrap;font-size:.85rem;color:var(--text, #333)}.existing-fractions-summary strong{font-weight:600}.existing-fractions-table-wrapper{overflow-x:auto}.existing-fractions-table{width:100%;border-collapse:collapse;font-size:.85rem;background:var(--card, #fff);border-radius:6px;border:1px solid var(--border, var(--border-color, #d8d8d8));overflow:hidden;color:var(--text, #222)}.existing-fractions-table th,.existing-fractions-table td{padding:6px 8px;text-align:left;border-bottom:1px solid var(--border, var(--border-color, #ededed))}.existing-fractions-table th{background:var(--muted-bg, #f3f3f3);font-weight:600;color:var(--text, #333);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.existing-fractions-table tbody tr:last-child td{border-bottom:none}.existing-fraction-sequence{font-weight:600;color:var(--text, #222)}.rt-course-inline{display:flex;align-items:center;gap:12px;margin:18px 0}.rt-course-inline-hint{font-size:.85rem;color:var(--muted-color, #666)}.rt-course-panel{margin-top:24px;border-top:1px solid var(--border-color, #d8d8d8);padding-top:16px;display:grid;gap:12px}.rt-course-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.rt-course-header-actions{display:flex;align-items:center;gap:8px}.btn.btn-icon{width:32px;height:32px;min-width:32px;border-radius:50%;display:grid;place-items:center;padding:0;font-size:1.3rem;line-height:1}.btn.btn-icon span{line-height:1}.rt-course-list{list-style:none;margin:0;padding:0;display:grid;gap:12px;max-height:360px;overflow-y:auto}.rt-course-card{background:var(--surface-2, #fff);border:1px solid var(--border-color, #d8d8d8);border-radius:10px;padding:12px;display:grid;gap:12px}.rt-course-card-header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.rt-course-title{font-weight:600;font-size:1rem}.rt-course-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.status-pill{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;font-size:.75rem;text-transform:capitalize;background:var(--badge-bg, #e4e7ec);color:var(--badge-color, #374151)}.status-completed{background:#d2f4d2;color:#256029}.status-progress{background:#dce6ff;color:#1d4ed8}.status-cancelled{background:#fce2e2;color:#a11b1b}.rt-course-subtitle{font-size:.85rem;color:var(--muted-color, #666);margin:4px 0}.progress-bar{position:relative;width:100%;height:8px;background:var(--border-color, #d8d8d8);border-radius:999px;overflow:hidden}.progress-bar-fill{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,#4f8bff,#60d9ff)}.rt-course-progress{display:grid;gap:6px}.progress-text{font-size:.85rem;display:flex;gap:8px;align-items:center}.progress-remaining{font-size:.8rem;color:var(--muted-color, #666)}.progress-next{font-size:.8rem;color:var(--muted-color, #555);display:flex;gap:6px;flex-wrap:wrap}.near-complete-badge{background:#ffe6ba;color:#8a5900;padding:2px 8px;border-radius:999px;font-size:.7rem;text-transform:uppercase;letter-spacing:.3px}.rt-course-upcoming{display:grid;gap:6px}.rt-course-upcoming ul{margin:0;padding:0;list-style:none;display:grid;gap:4px}.rt-course-upcoming li{display:grid;grid-template-columns:minmax(70px,1fr) minmax(120px,1fr) minmax(120px,1fr) auto;gap:8px;align-items:center;font-size:.85rem}.fraction-location{font-size:.8rem;color:var(--muted-color, #666)}.upcoming-title{font-weight:600;font-size:.85rem}.fraction-status{font-size:.75rem;color:var(--muted-color, #555)}.rt-course-details{overflow-x:auto}.rt-course-details table{width:100%;border-collapse:collapse;font-size:.85rem}.rt-course-details th,.rt-course-details td{border:1px solid var(--border-color, #d8d8d8);padding:6px 8px;text-align:left}.rt-course-loading,.rt-course-empty,.upcoming-empty{font-size:.85rem;color:var(--muted-color, #666)}.rt-course-near-complete{border-color:#ffd080;box-shadow:0 0 0 1px #ffd080 inset}.rt-course-panel .btn-link{background:transparent;border:none;color:var(--accent-color, #2563eb);text-decoration:underline;padding:0;cursor:pointer}.fraction-table-wrapper input[type=time]{min-width:110px}.location-manager{border:1px solid var(--border-color, #d8d8d8);border-radius:8px;padding:10px;display:grid;gap:8px;background:var(--card)}.location-manager-form{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.location-manager-form input{flex:1 1 220px;min-width:160px}.location-manager-list{display:grid;gap:6px}.rt-course-editor-modal{max-width:1100px;width:calc(100% - 60px)}.rt-course-editor-layout{display:flex;gap:16px;align-items:stretch;min-height:520px}.rt-course-editor-sidebar{flex:0 0 260px;display:flex;flex-direction:column;gap:12px;border-right:1px solid var(--border-color, #d8d8d8);padding-right:12px}.rt-course-editor-sidebar-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.rt-course-editor-sidebar-header h3{margin:0;font-size:1rem;font-weight:600}.rt-course-editor-search{width:100%;padding:6px 10px;border-radius:8px;border:1px solid var(--border-color, #d8d8d8);background:var(--surface-1, #fff);color:var(--text-color, #1f2937)}.rt-course-editor-course-list{flex:1 1 auto;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-right:6px}.rt-course-editor-course{display:grid;gap:6px;padding:10px;border-radius:10px;border:1px solid transparent;text-align:left;background:var(--surface-2, #f8fafc);color:inherit;cursor:pointer;transition:border-color .2s ease,background .2s ease,box-shadow .2s ease}.rt-course-editor-course:hover{border-color:var(--border-color, #d8d8d8);background:var(--surface-1, #fff);box-shadow:0 2px 6px #0f172a14}.rt-course-editor-course.selected{border-color:var(--accent-color, #2563eb);box-shadow:0 0 0 2px #2563eb1f;background:var(--surface-1, #fff)}.rt-course-editor-course-title{font-weight:600;font-size:.95rem}.rt-course-editor-course-meta{display:flex;flex-wrap:wrap;gap:6px;font-size:.8rem;color:var(--muted-color, #6b7280)}.rt-course-editor-content{flex:1 1 auto;min-width:0}.rt-course-editor-empty{border:1px dashed var(--border-color, #d8d8d8);border-radius:12px;padding:24px;text-align:center;color:var(--muted-color, #6b7280);font-size:.95rem;display:flex;align-items:center;justify-content:center;min-height:220px}.rt-course-editor-error{display:grid;gap:12px}.rt-course-editor-summary{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px;border:1px solid var(--border-color, #d8d8d8);border-radius:12px;padding:16px;background:var(--surface-2, #f8fafc);margin-bottom:16px}.rt-course-editor-title{margin:0 0 8px;font-size:1.1rem;font-weight:600}.rt-course-editor-line{font-size:.9rem;color:var(--text-color, #1f2937)}.rt-course-editor-fractions{display:grid;gap:12px;margin-bottom:18px}.rt-course-editor-fractions-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.rt-course-editor-fractions-header h4{margin:0;font-size:1rem;font-weight:600}.rt-course-editor-fractions-count{font-size:.85rem;color:var(--muted-color, #6b7280)}.rt-course-editor-fractions-table{overflow-x:auto;border:1px solid var(--border-color, #d8d8d8);border-radius:12px}.rt-course-editor-fractions-table table{width:100%;border-collapse:collapse;min-width:540px;font-size:.85rem}.rt-course-editor-fractions-table th,.rt-course-editor-fractions-table td{padding:8px 10px;border-bottom:1px solid var(--border-color, #d8d8d8);text-align:left}.rt-course-editor-fractions-table tr:last-child th,.rt-course-editor-fractions-table tr:last-child td{border-bottom:none}@media(max-width:980px){.rt-course-editor-layout{flex-direction:column;min-height:0}.rt-course-editor-sidebar{border-right:none;border-bottom:1px solid var(--border-color, #d8d8d8);padding-right:0;padding-bottom:12px}.rt-course-editor-course-list{max-height:220px}}.location-manager-item{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--border-color, #d8d8d8);border-radius:6px;background:var(--muted-bg)}.location-empty{font-size:.85rem;color:var(--muted-color, #666);text-align:center;padding:6px 0}.patient-modal-chat,.fraction-modal-chat{margin-top:16px;display:flex;flex-direction:column;gap:8px}.patient-modal-chat h3,.fraction-modal-chat h3{margin:0;font-size:1rem;font-weight:600}.subscription-toggle-group{display:flex;align-items:center;gap:8px;margin:8px 0}.subscription-toggle-label{font-size:.85rem;color:var(--placeholder)}.chat-thread{border:1px solid var(--border);border-radius:8px;background:var(--card);display:flex;flex-direction:column;min-height:180px;max-height:min(70vh,600px);overflow:hidden}.chat-thread-header{display:flex;justify-content:flex-end;padding:6px 10px;border-bottom:1px solid var(--border);background:var(--card)}.chat-thread[data-loading=true]{opacity:.75}.chat-thread-messages{flex:1;overflow-y:auto;padding:8px 12px;display:flex;flex-direction:column;gap:8px;background:var(--muted-bg)}.chat-thread-placeholder,.chat-thread-inline-error{font-size:.9rem;color:var(--placeholder);display:flex;align-items:center;gap:12px}.chat-thread-inline-error{margin-top:4px}.chat-message{background:var(--card);border-radius:8px;padding:8px 10px;border:1px solid transparent;display:flex;flex-direction:column;gap:6px;font-size:.92rem}.chat-message[data-own=true]{align-self:flex-end;background:#1976d226;border-color:#1976d259}[data-theme=dark] .chat-message[data-own=true]{background:#90caf92e;border-color:#90caf959}.chat-message-meta{display:flex;justify-content:space-between;gap:12px;font-size:.75rem;color:var(--placeholder)}.chat-message-body{white-space:pre-wrap;word-break:break-word}.chat-thread-composer{border-top:1px solid var(--border);padding:8px;background:var(--card);display:flex;flex-direction:column;gap:8px}.chat-thread-composer textarea{width:100%;border-radius:6px;border:1px solid var(--border);padding:8px;box-sizing:border-box;resize:none;overflow-y:hidden;font-family:inherit;font-size:.95rem;line-height:1.4;min-height:calc(2.8em + 16px);color:var(--text);background:var(--bg)}.chat-thread-composer textarea:disabled{opacity:.7}.chat-thread-actions{display:flex;justify-content:space-between;align-items:center;gap:12px}.chat-thread-hint{font-size:.75rem;color:var(--placeholder)}.chat-thread-error{color:var(--danger);font-size:.85rem}.notification-button{position:relative;display:inline-flex;align-items:center;justify-content:center}.notification-button span[aria-hidden=true]{font-size:1.2rem}.notification-badge{position:absolute;top:-4px;right:-4px;background:var(--danger);color:var(--primary-contrast);border-radius:999px;padding:0 6px;font-size:.7rem;line-height:1.4;min-width:20px;text-align:center}.notification-panel{position:fixed;top:76px;right:18px;width:320px;max-width:calc(100% - 36px);max-height:70vh;background:var(--card);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 32px #0000002e;display:flex;flex-direction:column;z-index:2400}.notification-panel-header{padding:12px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:8px}.notification-panel-actions{display:flex;align-items:center;gap:8px}.notification-panel-body{padding:10px 14px;overflow-y:auto;display:grid;gap:10px}.notification-item{background:var(--muted-bg);border-radius:8px;border:1px solid transparent;padding:10px;display:grid;gap:6px;font-size:.9rem}.notification-item[role=button]{cursor:pointer;text-align:left}.notification-item:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.notification-item.unread{border-color:var(--primary);background:#1976d21f}[data-theme=dark] .notification-item.unread{background:#90caf92e}.notification-message{white-space:pre-wrap;word-break:break-word}.notification-meta{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:.75rem;color:var(--placeholder)}.notification-empty{padding:24px 0;text-align:center;font-size:.9rem;color:var(--placeholder)}.fc-line-notes{font-size:.7em;line-height:1.1;margin-top:2px;opacity:.85;white-space:normal}
