@import"https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=Public+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap";:root{--bg: #f3f2fb;--surface: #ffffff;--surface-2: #ece9fb;--ink: #1c1934;--ink-muted: #665f8c;--ink-faint: #9891b8;--accent: #4b3fe0;--accent-ink: #ffffff;--accent-soft: #ece9fb;--line: #e4e1f2;--danger: #a9302f;--danger-soft: #fbe9e9;--warn: #9c630b;--warn-soft: #fbeedb;--dot-ok: #2fae7a;--dot-progress: #e0972f;--dot-bad: #dd4747;--dot-flat: #b3aed4;--font-display: "Fraunces", Georgia, serif;--font-body: "Public Sans", "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--radius: 10px;--radius-lg: 16px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:15px}input,select,button{font-family:inherit;font-size:inherit}.app-shell{display:flex;min-height:100vh}.sidebar{width:224px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:1.25rem 1rem}.brand{font-family:var(--font-display);font-weight:600;font-size:1.5rem;color:var(--accent);margin-bottom:1.5rem;padding:0 .4rem}.sidebar nav{display:flex;flex-direction:column;gap:.2rem;flex:1}.sidebar nav a{padding:.6rem .75rem;border-radius:var(--radius);color:var(--ink-muted);text-decoration:none;font-weight:600;font-size:.9rem}.sidebar nav a:hover{background:var(--surface-2);color:var(--ink)}.sidebar nav a.active{background:var(--accent);color:var(--accent-ink)}.sidebar-footer{border-top:1px solid var(--line);padding-top:.9rem}.user-chip{padding:0 .4rem .5rem}.user-name{font-weight:600;font-size:.88rem}.user-role{font-family:var(--font-mono);font-size:.7rem;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.04em}.content{flex:1;padding:2rem 2.5rem;max-width:1180px}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.4rem;flex-wrap:wrap;gap:.8rem}.page-header h1{font-family:var(--font-display);font-weight:600;font-size:1.7rem;margin:0}.header-actions{display:flex;gap:.6rem;align-items:center}h2{font-size:1rem;font-weight:600;margin:0 0 .7rem}button{cursor:pointer;border:none;border-radius:var(--radius);padding:.55rem 1.05rem;font-weight:600}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover{background:#3c31c2}.btn-secondary{background:var(--accent-soft);color:var(--accent)}.btn-secondary:hover{background:#ddd8f7}.btn-ghost{background:transparent;color:var(--ink-muted);border:1px solid var(--line)}.btn-ghost:hover{border-color:var(--ink-faint);color:var(--ink)}button:disabled{opacity:.6;cursor:not-allowed}input,select{padding:.5rem .7rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink)}input:focus,select:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.search-box{width:100%;max-width:360px;margin-bottom:1rem}.inline-form,.panel{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:1.1rem 1.2rem;margin-bottom:1.2rem}.panel{flex-direction:column;align-items:stretch}.order-item-row{display:flex;gap:.6rem}.order-item-row select{flex:2}.order-item-row input{flex:1}.data-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden}.data-table th,.data-table td{text-align:left;padding:.7rem .9rem;border-bottom:1px solid var(--line);font-size:.9rem}.data-table th{font-family:var(--font-mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-faint);background:var(--surface-2);font-weight:500}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:var(--surface-2)}.data-table a{color:var(--ink);text-decoration:none;font-weight:600}.data-table a:hover{color:var(--accent)}.muted{color:var(--ink-faint)}.small{font-size:.82rem}.alert{background:var(--danger-soft);color:var(--danger);padding:.6rem .9rem;border-radius:var(--radius);margin-bottom:1rem;font-size:.9rem;font-weight:500}.status{display:inline-flex;align-items:center;gap:.45rem;font-size:.78rem;font-weight:600;color:var(--ink-muted);--dotc: var(--dot-flat)}.status:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--dotc);flex-shrink:0}.status-DONE,.status-PAID,.status-CONFIRMED,.status-ARRIVED{color:#1f7a54;--dotc: var(--dot-ok)}.status-CANCELLED,.status-NO_SHOW{color:var(--danger);--dotc: var(--dot-bad)}.status-PARTIALLY_PAID,.status-IN_PROGRESS{color:var(--warn);--dotc: var(--dot-progress)}.avatar{border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;font-family:var(--font-display);font-weight:600;flex-shrink:0}.person-cell{display:flex;align-items:center;gap:.65rem;color:var(--ink);text-decoration:none;font-weight:600}.person-cell:hover{color:var(--accent)}.person-cell .person-name{display:flex;flex-direction:column}.person-cell .person-sub{font-weight:400;font-size:.78rem;color:var(--ink-faint)}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1rem}.panel.card-grid-item{margin-bottom:0}.simple-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.simple-list li{font-size:.88rem;border-bottom:1px solid var(--line);padding-bottom:.5rem}.simple-list li:last-child{border-bottom:none;padding-bottom:0}.patient-meta{display:flex;gap:1.5rem;color:var(--ink-muted);font-size:.9rem;margin-bottom:1.2rem;flex-wrap:wrap}.patient-header-row{display:flex;align-items:center;gap:1rem}.pay-row{display:flex;gap:.4rem}.pay-row input{width:90px}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--bg),var(--accent-soft))}.login-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:2.2rem;width:340px;display:flex;flex-direction:column;gap:.9rem;box-shadow:0 24px 56px -30px #2b206e59}.login-brand{font-family:var(--font-display);font-size:1.8rem;color:var(--accent);font-weight:600}.login-sub{color:var(--ink-muted);margin:-.6rem 0 .2rem;font-size:.88rem}.login-card label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;color:var(--ink-muted);font-weight:500}.panel>select{align-self:flex-start}section.panel h2{margin-top:0}.schedule-wrap{position:relative}.schedule-grid{display:grid;grid-auto-rows:15px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:auto;max-height:74vh;position:relative;-webkit-user-select:none;user-select:none}.sg-corner{position:sticky;top:0;left:0;z-index:3;background:var(--surface-2);border-bottom:1px solid var(--line);border-right:1px solid var(--line)}.sg-doctor-head{position:sticky;top:0;z-index:2;background:var(--surface-2);border-bottom:1px solid var(--line);border-left:1px solid var(--line);padding:.5rem .6rem;display:flex;align-items:center;gap:.5rem}.sg-doctor-name{font-weight:600;font-size:.85rem}.sg-doctor-spec{font-size:.72rem;color:var(--ink-faint);margin-top:.1rem}.sg-time-label{position:sticky;left:0;z-index:1;background:var(--surface);border-right:1px solid var(--line);border-top:1px solid var(--line);font-family:var(--font-mono);font-size:.68rem;color:var(--ink-faint);padding:.15rem .3rem 0 0;text-align:right}.sg-slot{border-left:1px solid var(--line);border-top:1px dashed transparent;cursor:pointer}.sg-slot:hover{background:var(--accent-soft)}.sg-slot-hour{border-top:1px solid var(--line)}.sg-slot-dragover{background:var(--warn-soft)}.sg-slot-off{background:repeating-linear-gradient(135deg,var(--surface-2),var(--surface-2) 4px,var(--bg) 4px,var(--bg) 8px);cursor:not-allowed}.sg-appt{margin:1px 3px;border-radius:8px;padding:.2rem .45rem;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-left:3px solid var(--dotc, var(--dot-flat));overflow:hidden;cursor:grab;font-size:.74rem;line-height:1.2;z-index:1}.sg-appt:active{cursor:grabbing}.sg-appt.status-CANCELLED,.sg-appt.status-NO_SHOW{opacity:.7}.sg-appt-time{font-family:var(--font-mono);font-size:.68rem;color:var(--ink-faint)}.sg-appt-patient{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sg-appt-reason{color:var(--ink-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sg-hint{margin-top:.5rem}.sg-popover{position:absolute;z-index:10;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:.8rem;width:260px;display:flex;flex-direction:column;gap:.5rem;box-shadow:0 24px 56px -28px #2b206e66}.sg-popover-title{font-weight:600}.sg-popover-row{display:flex;gap:.4rem}.sg-popover-row>*{flex:1;min-width:0}.sg-popover-actions{display:flex;justify-content:space-between;gap:.5rem;margin-top:.3rem}
