:root{--color-primary: #2563EB;--color-doctor-accent: #7C3AED;--color-therapist-accent: #0D9488;--color-reception-accent: #2563EB;--color-success: #16A34A;--color-warning: #F59E0B;--color-danger: #EF4444;--color-bg: #F9FAFB;--color-surface: #FFFFFF;--color-border: #E5E7EB;--color-text-primary: #111827;--color-text-secondary: #6B7280;--color-platform-admin-accent: #334155;--color-user-admin-accent: #475569;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--tint-primary: #EFF6FF;--tint-doctor: #F5F3FF;--tint-therapist: #F0FDFA;--tint-success: #F0FDF4;--tint-warning: #FFFBEB;--tint-danger: #FEF2F2;--tint-admin: #F1F5F9;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-8: 3rem;--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-pill: 9999px;--shadow-card: 0 1px 3px rgba(17, 24, 39, .07), 0 1px 2px rgba(17, 24, 39, .04);--shadow-raised: 0 4px 12px rgba(17, 24, 39, .1);--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--sidebar-width: 248px;--header-height: 64px;--touch-target: 44px;--color-role-accent: var(--color-primary);--tint-role: var(--tint-primary)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-family-base);background:var(--color-bg);color:var(--color-text-primary);font-size:var(--text-base);line-height:1.5;-webkit-font-smoothing:antialiased}img,svg{max-width:100%;display:block}h1,h2,h3,h4{margin:0;font-weight:700}p{margin:0}a{color:var(--color-primary);text-decoration:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--touch-target);padding:0 var(--space-4);border-radius:var(--radius-md);border:1px solid transparent;font-family:inherit;font-size:var(--text-sm);font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .1s ease,filter .12s ease;white-space:nowrap}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--color-role-accent);color:#fff}.btn-primary:hover:not(:disabled){filter:brightness(1.08)}.btn-secondary{background:var(--color-surface);color:var(--color-text-primary);border-color:var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-bg)}.btn-danger{background:var(--color-surface);color:var(--color-danger);border-color:var(--color-danger)}.btn-danger:hover:not(:disabled){background:var(--tint-danger)}.btn-sm{min-height:34px;padding:0 var(--space-3);font-size:var(--text-xs)}.field{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.field-label{font-size:var(--text-sm);font-weight:700;color:var(--color-text-primary)}.field-label .req{color:var(--color-danger);margin-left:2px}.input,.select,.textarea{width:100%;min-height:var(--touch-target);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);font-family:inherit;font-size:var(--text-base);color:var(--color-text-primary);transition:border-color .15s ease,box-shadow .15s ease,outline-color .15s ease}.textarea{min-height:96px;resize:vertical}.input::placeholder,.textarea::placeholder{color:var(--color-text-secondary)}.input:focus,.select:focus,.textarea:focus{outline:2px solid var(--color-role-accent);outline-offset:1px;border-color:var(--color-role-accent)}.search-filter-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-3);margin-top:var(--space-3);margin-bottom:var(--space-4);width:100%}.search-filter-bar .field{margin-bottom:0}.search-control{flex:2 1 320px;min-width:240px}.filter-control{flex:1 1 180px;min-width:140px}@media(max-width:768px){.search-filter-bar{gap:var(--space-3)}.search-control{flex:1 1 100%;min-width:100%}.filter-control{flex:1 1 calc(50% - var(--space-2));min-width:140px}}@media(max-width:480px){.search-filter-bar{gap:var(--space-2)}.filter-control{flex:1 1 100%;min-width:100%}}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-4);transition:box-shadow .15s ease,border-color .15s ease,transform .15s ease}.card[style*="cursor:pointer"]:hover,.card[style*="cursor: pointer"]:hover{box-shadow:var(--shadow-raised);border-color:#2563eb40;transform:translateY(-1px)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px 10px;border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:600;white-space:nowrap}.badge-success{background:var(--tint-success);color:var(--color-success)}.badge-warning{background:var(--tint-warning);color:#b45309}.badge-danger{background:var(--tint-danger);color:var(--color-danger)}.badge-info{background:var(--tint-primary);color:var(--color-primary)}.badge-neutral{background:var(--tint-admin);color:var(--color-user-admin-accent)}.avatar{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--tint-role);color:var(--color-role-accent);font-weight:700;font-size:var(--text-sm);flex-shrink:0}.progress-track{height:8px;border-radius:var(--radius-pill);background:var(--color-border);overflow:hidden}.progress-fill{height:100%;border-radius:var(--radius-pill);background:var(--color-success);transition:width .25s ease}.stat-pills{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-4)}.stat-pill{display:inline-flex;align-items:center;gap:var(--space-2);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:600;box-shadow:var(--shadow-card);max-width:100%;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .12s ease}.stat-pill .num{font-size:var(--text-lg);font-weight:800;color:var(--color-role-accent)}.text-secondary{color:var(--color-text-secondary)}.text-sm{font-size:var(--text-sm)}.text-xs{font-size:var(--text-xs)}.mt-2{margin-top:var(--space-2)}.mt-4{margin-top:var(--space-4)}.flex{display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}@keyframes overlay-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-scale-in{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182773;display:flex;align-items:center;justify-content:center;z-index:60;padding:var(--space-4);animation:overlay-fade-in .15s ease-out}.modal{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-raised);width:100%;max-width:480px;max-height:90vh;display:flex;flex-direction:column;animation:modal-scale-in .18s cubic-bezier(.16,1,.3,1)}.modal-wide{max-width:680px}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border)}.modal-head h2{font-size:var(--text-lg)}.modal-close{background:none;border:none;cursor:pointer;color:var(--color-text-secondary);font-size:var(--text-base);min-width:var(--touch-target);min-height:var(--touch-target);border-radius:50%}.modal-close:hover{background:var(--color-bg)}.modal-body{padding:var(--space-5);overflow-y:auto}.modal-foot{padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border)}.table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface)}.data-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.data-table th{text-align:left;padding:var(--space-3) var(--space-4);color:var(--color-text-secondary);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--color-border);background:var(--color-bg);white-space:nowrap}.data-table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);vertical-align:middle}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:var(--color-bg)}@media(max-width:639px){.modal-overlay{padding:var(--space-2)}.modal-body,.modal-head,.modal-foot{padding:var(--space-3)}.data-table.stack-mobile thead{display:none}.data-table.stack-mobile tr{display:block;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border)}.data-table.stack-mobile td{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);border:none;padding:var(--space-1) 0;word-break:break-word}.data-table.stack-mobile td:before{content:attr(data-label);font-weight:700;color:var(--color-text-secondary);font-size:var(--text-xs);text-transform:uppercase;flex-shrink:0}}.color-row{display:flex;align-items:center;gap:var(--space-3)}.color-row input[type=color]{width:44px;height:44px;padding:2px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer}.input.invalid,.select.invalid,.textarea.invalid{border-color:var(--color-danger)!important}.error-msg{color:var(--color-danger);font-size:var(--text-xs);font-weight:600;margin-top:2px;display:block}@keyframes spin{to{transform:rotate(360deg)}}@keyframes skeleton-shimmer{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.spinner{display:inline-block;width:20px;height:20px;border:2.5px solid rgba(0,0,0,.12);border-top-color:var(--color-role-accent);border-radius:50%;animation:spin .8s linear infinite;vertical-align:middle}.spinner-sm{width:14px;height:14px;border-width:2px}.spinner-lg{width:32px;height:32px;border-width:3px}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-8) var(--space-4);color:var(--color-text-secondary);gap:var(--space-3);text-align:center}.skeleton-box{background:var(--color-border);background-image:linear-gradient(90deg,var(--color-border) 0px,#f3f4f6 40px,var(--color-border) 80px);background-size:300px 100%;background-repeat:no-repeat;border-radius:var(--radius-md);animation:skeleton-shimmer 1.5s infinite ease-in-out}.skeleton-text{height:14px;width:100%;margin-bottom:8px}.skeleton-text-sm{height:10px;width:60%}.skeleton-avatar{width:40px;height:40px;border-radius:50%}.skeleton-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:var(--space-3)}.btn-loading{pointer-events:none;opacity:.75}@keyframes toast-enter{0%{opacity:0;transform:translate(-50%,-10px) scale(.96)}to{opacity:1;transform:translate(-50%) scale(1)}}.toast{animation:toast-enter .18s cubic-bezier(.16,1,.3,1);transition:opacity .15s ease,transform .15s ease}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.spinner{animation:spin 1.5s linear infinite!important}.skeleton-box{animation:none!important}}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{height:var(--header-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);display:flex;align-items:center;gap:var(--space-4);padding:0 var(--space-4);position:sticky;top:0;z-index:40}.header-brand{display:flex;align-items:center;gap:var(--space-3);min-width:0}.header-brand img{height:32px;width:auto}.header-brand .clinic-name{font-weight:700;font-size:var(--text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-context{flex:1;display:flex;justify-content:center;min-width:0}.context-pill{display:inline-flex;align-items:center;gap:var(--space-2);background:var(--tint-role);color:var(--color-role-accent);border-radius:var(--radius-pill);padding:4px 14px;font-size:var(--text-xs);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-meta{display:flex;align-items:center;gap:var(--space-3)}.header-clock{font-size:var(--text-xs);color:var(--color-text-secondary);text-align:right;line-height:1.3}.header-bell{position:relative;background:none;border:none;cursor:pointer;color:var(--color-text-secondary);min-height:var(--touch-target);min-width:var(--touch-target);display:inline-flex;align-items:center;justify-content:center;border-radius:50%}.header-bell:hover{background:var(--color-bg)}.header-bell .bell-dot{position:absolute;top:8px;right:8px;width:8px;height:8px;border-radius:50%;background:var(--color-danger)}@keyframes dropdown-slide-down{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.notif-dropdown{animation:dropdown-slide-down .15s cubic-bezier(.16,1,.3,1)}.header-user{display:flex;align-items:center;gap:var(--space-2)}.role-badge{background:var(--tint-role);color:var(--color-role-accent);border-radius:var(--radius-pill);padding:2px 10px;font-size:var(--text-xs);font-weight:700}.app-body{flex:1;display:flex;min-height:0}.app-sidebar{width:var(--sidebar-width);background:var(--color-surface);border-right:1px solid var(--color-border);padding:var(--space-4) var(--space-3);flex-shrink:0;display:flex;flex-direction:column;gap:var(--space-1);position:sticky;top:var(--header-height);height:calc(100vh - var(--header-height))}.sidebar-nav-content{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-1)}.nav-section-label{font-size:.6875rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-secondary);padding:var(--space-2) var(--space-3)}.nav-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);min-height:var(--touch-target);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:600;border:none;background:none;cursor:pointer;text-align:left;width:100%;font-family:inherit;transition:background .15s ease,color .15s ease,transform .1s ease}.nav-item:active{transform:scale(.99)}.nav-item svg{flex-shrink:0}.nav-item:hover{background:var(--color-bg);color:var(--color-text-primary)}.nav-item.active{background:var(--color-role-accent);color:#fff}.sidebar-footer{margin-top:auto;display:flex;flex-direction:column;gap:var(--space-1)}@keyframes page-enter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.app-content{flex:1;min-width:0;padding:var(--space-5);max-width:1200px;animation:page-enter .18s cubic-bezier(.16,1,.3,1)}.bottom-tabs{display:none;position:fixed;bottom:0;left:0;right:0;background:var(--color-surface);border-top:1px solid var(--color-border);z-index:40;padding-bottom:env(safe-area-inset-bottom)}.bottom-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:var(--space-2) 0;min-height:56px;border:none;background:none;cursor:pointer;color:var(--color-text-secondary);font-size:.6875rem;font-weight:600;font-family:inherit}.bottom-tab.active{color:var(--color-role-accent)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-5)}.login-card{width:100%;max-width:400px;text-align:center}.login-card .login-logo{height:120px;margin:0 auto var(--space-5);width:auto}.login-error{background:var(--tint-danger);color:var(--color-danger);border-radius:var(--radius-md);padding:var(--space-3);font-size:var(--text-sm);font-weight:600;margin-bottom:var(--space-4)}.page-title{font-size:var(--text-xl);margin-bottom:var(--space-2)}.page-subtitle{color:var(--color-text-secondary);font-size:var(--text-sm);margin-bottom:var(--space-5)}.empty-state{text-align:center;padding:var(--space-8) var(--space-4);color:var(--color-text-secondary)}.empty-state .empty-icon{margin:0 auto var(--space-3);width:48px;height:48px;border-radius:50%;background:var(--tint-role);color:var(--color-role-accent);display:flex;align-items:center;justify-content:center}.install-banner{position:fixed;left:var(--space-4);right:var(--space-4);bottom:calc(64px + env(safe-area-inset-bottom) + var(--space-3));background:var(--color-text-primary);color:#fff;border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);display:flex;align-items:center;gap:var(--space-3);z-index:50;box-shadow:var(--shadow-raised);font-size:var(--text-sm)}.install-banner .btn{min-height:36px}@media(max-width:1024px){.app-content{padding:var(--space-4)}}@media(max-width:639px){.app-sidebar{display:none}.bottom-tabs{display:flex}.app-content{padding:var(--space-4) var(--space-3) 88px}.header-clock{display:none}.header-brand .clinic-name{max-width:110px}.context-pill{max-width:40vw}}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-head{margin-bottom:4px}.cal-dow{text-align:center;font-size:var(--text-xs);font-weight:700;color:var(--color-text-secondary);text-transform:uppercase;padding:var(--space-1) 0}.cal-cell{min-height:72px;border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:4px;background:var(--color-surface)}.cal-empty{border:none;background:transparent}.cal-today{outline:2px solid var(--color-role-accent);outline-offset:-2px}.cal-daynum{font-size:var(--text-xs);font-weight:700;color:var(--color-text-secondary);margin-bottom:2px}.cal-today .cal-daynum{color:var(--color-role-accent)}.cal-chips{display:flex;flex-direction:column;gap:2px}.cal-chip{font-size:.65rem;font-weight:600;padding:1px 5px;border-radius:var(--radius-sm);background:var(--tint-role);color:var(--color-role-accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-chip-done{background:var(--tint-success);color:var(--color-success)}.cal-chip-more{background:var(--color-border);color:var(--color-text-secondary)}@media(max-width:639px){.cal-cell{min-height:52px}.cal-chip{font-size:.6rem;padding:1px 3px}}
