:root{--bg: #f4f6f8;--surface: #ffffff;--border: #e2e6ea;--text: #1f2933;--muted: #6b7684;--primary: #2563eb;--primary-hover: #1d4ed8;--danger: #dc2626;--danger-hover: #b91c1c;--ok-bg: #ecfdf5;--ok-text: #047857;--err-bg: #fef2f2;--err-text: #b91c1c;--radius: 8px;--shadow: 0 1px 3px rgba(0, 0, 0, .08);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);line-height:1.5}.btn{border:1px solid transparent;border-radius:var(--radius);padding:.5rem .9rem;font-size:.9rem;font-weight:500;cursor:pointer;background:#eef1f4;color:var(--text);transition:background .15s ease}.btn:hover:not(:disabled){background:#e2e6ea}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--danger-hover)}.btn-ghost{background:transparent;border-color:var(--border)}.btn-ghost:hover:not(:disabled){background:#eef1f4}.btn-small{padding:.3rem .6rem;font-size:.8rem;margin-right:.35rem}.field{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.9rem;font-size:.85rem}.field>span{color:var(--muted);font-weight:500}.field input,.field select,.field textarea{padding:.5rem .6rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem;font-family:inherit;background:#fff;color:var(--text)}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px #2563eb26}.field-row{display:flex;gap:.9rem}.field-row .field{flex:1}.req{color:var(--danger);font-style:normal}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem}.card-title{margin:0 0 1rem;font-size:1.05rem}.alert{border-radius:var(--radius);padding:.55rem .75rem;font-size:.85rem;margin-bottom:.9rem}.alert-ok{background:var(--ok-bg);color:var(--ok-text)}.alert-error{background:var(--err-bg);color:var(--err-text)}.muted{color:var(--muted);font-size:.9rem}.login-wrap{min-height:100%;display:flex;align-items:center;justify-content:center;padding:1.5rem}.login-card{width:100%;max-width:360px}.login-title{margin:0 0 .25rem;font-size:1.4rem}.login-subtitle{margin:0 0 1.25rem;color:var(--muted);font-size:.9rem}.login-card .btn-primary{width:100%;margin-top:.25rem}.dashboard{min-height:100%;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1.5rem;background:var(--surface);border-bottom:1px solid var(--border)}.brand{font-weight:600;font-size:1.1rem}.content{flex:1;width:100%;max-width:1080px;margin:0 auto;padding:1.5rem;display:flex;flex-direction:column;gap:1.5rem}.dropzone{display:flex;align-items:center;justify-content:center;text-align:center;border:2px dashed var(--border);border-radius:var(--radius);padding:1.5rem 1rem;margin-bottom:.9rem;cursor:pointer;color:var(--muted);transition:border-color .15s ease,background .15s ease}.dropzone:hover,.dropzone-active{border-color:var(--primary);background:#f5f8ff}.dropzone input[type=file]{display:none}.dropzone-text{font-size:.9rem;word-break:break-word}.table-scroll{overflow-x:auto}.doc-table{width:100%;border-collapse:collapse;font-size:.88rem}.doc-table th,.doc-table td{text-align:left;padding:.55rem .6rem;border-bottom:1px solid var(--border);white-space:nowrap}.doc-table th{color:var(--muted);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.02em}.doc-table tbody tr:hover{background:#f9fafb}.cell-filename{max-width:220px;overflow:hidden;text-overflow:ellipsis}.col-actions{white-space:nowrap}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;display:flex;align-items:center;justify-content:center;padding:1.5rem;z-index:50}.modal{background:var(--surface);border-radius:var(--radius);width:100%;max-width:900px;height:85vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 10px 40px #0000004d}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;border-bottom:1px solid var(--border)}.modal-title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-body{flex:1;overflow:auto;background:#f1f3f5;display:flex;align-items:center;justify-content:center}.viewer-frame{width:100%;height:100%;border:none}.viewer-img{max-width:100%;max-height:100%;object-fit:contain}.viewer-loading{color:var(--muted)}.topbar-left{display:flex;align-items:center;gap:1.5rem}.topbar-right{display:flex;align-items:center;gap:1rem}.nav-tabs{display:flex;gap:.25rem}.nav-tab{padding:.4rem .75rem;border-radius:var(--radius);font-size:.88rem;font-weight:500;color:var(--muted);text-decoration:none}.nav-tab:hover{background:#eef1f4;color:var(--text)}.nav-tab-active{background:var(--primary);color:#fff}.nav-tab-active:hover{background:var(--primary-hover);color:#fff}.user-chip{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2}.user-name{font-weight:600;font-size:.9rem}.user-role{font-size:.75rem;color:var(--primary);font-weight:600}.user-clinic{font-size:.72rem;color:var(--muted)}.stack{display:flex;flex-direction:column;gap:1.5rem}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}@media (max-width: 720px){.two-col{grid-template-columns:1fr}}.back-link{color:var(--primary);text-decoration:none;font-size:.88rem}.back-link:hover{text-decoration:underline}.app-status{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem;color:var(--muted)}.detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem 1.5rem;margin:0}.detail-grid dt{font-size:.72rem;text-transform:uppercase;letter-spacing:.02em;color:var(--muted);font-weight:600}.detail-grid dd{margin:.1rem 0 0;font-size:.9rem}.patient-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.chip-list{list-style:none;padding:0;margin:0 0 .9rem;display:flex;flex-wrap:wrap;gap:.5rem}.chip{display:inline-flex;align-items:center;gap:.4rem;background:#eef1f4;border-radius:999px;padding:.25rem .35rem .25rem .7rem;font-size:.82rem}.chip-remove{border:none;background:transparent;cursor:pointer;color:var(--muted);font-size:.8rem;line-height:1;padding:.1rem .25rem;border-radius:999px}.chip-remove:hover:not(:disabled){background:#dbe0e6;color:var(--danger)}.assign-row,.lookup-form{display:flex;gap:.5rem;align-items:center}.assign-row select,.lookup-form input{flex:1;padding:.5rem .6rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem;font-family:inherit}.lookup-result{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:.75rem;padding:.6rem .75rem;background:#f9fafb;border-radius:var(--radius);font-size:.9rem}.remark-list{list-style:none;padding:0;margin:0 0 1rem;display:flex;flex-direction:column;gap:.75rem}.remark-item{border:1px solid var(--border);border-radius:var(--radius);padding:.6rem .75rem}.remark-meta{display:flex;align-items:center;gap:.6rem;margin-bottom:.3rem;font-size:.75rem;color:var(--muted)}.remark-author{font-weight:600;color:var(--text)}.remark-tag{background:#eef1f4;border-radius:999px;padding:.05rem .5rem;font-size:.68rem}.remark-body{font-size:.9rem;display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.remark-edit-btn{flex:none}.remark-edit textarea,.remark-add textarea{width:100%;padding:.5rem .6rem;border:1px solid var(--border);border-radius:var(--radius);font-family:inherit;font-size:.9rem;margin-bottom:.5rem}.remark-edit-actions{display:flex;gap:.5rem}.remark-add{display:flex;flex-direction:column;align-items:flex-start}.modal-remark{display:flex;align-items:center;gap:.5rem;padding:.6rem 1rem;border-top:1px solid var(--border)}.modal-remark input{flex:1;padding:.5rem .6rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem;font-family:inherit}.modal-remark-msg{font-size:.8rem;color:var(--muted)}.cell-remark{max-width:220px;overflow:hidden;text-overflow:ellipsis}.card-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.card-head .card-title{margin:0}.search-input{flex:1;min-width:200px;max-width:340px;padding:.5rem .7rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem;font-family:inherit;background:#fff;color:var(--text)}.search-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px #2563eb26}.result-count{margin-bottom:.5rem;font-size:.8rem}.roster{display:flex;flex-wrap:wrap;gap:1.5rem}.role-group{flex:1 1 180px;min-width:160px}.role-group-title{margin:0 0 .5rem;font-size:.95rem;display:flex;align-items:center;gap:.4rem}.role-count{background:#eef1f4;color:var(--muted);border-radius:999px;padding:.05rem .5rem;font-size:.75rem;font-weight:600}.roster-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.3rem;font-size:.9rem}.roster-disabled{color:var(--muted);text-decoration:line-through}.roster-note{text-decoration:none;font-size:.75rem}.roster-empty{margin:0}.upload-list{display:flex;flex-direction:column;gap:.75rem;margin-bottom:.9rem}.upload-item{border:1px solid var(--border);border-radius:var(--radius);padding:.6rem .75rem;background:#fafbfc}.upload-item-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.5rem}.upload-item-name{flex:1;font-weight:600;font-size:.88rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-item-status{font-size:.78rem;color:var(--muted)}.status-done{color:var(--ok-text)}.status-error{color:var(--err-text)}.doctor-picker{display:flex;flex-direction:column;gap:.35rem;border:1px solid var(--border);border-radius:var(--radius);padding:.6rem .75rem;max-height:180px;overflow-y:auto}.doctor-option{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.page-actions{display:flex;justify-content:flex-start;gap:.5rem}.import-errors{margin:.5rem 0 0;padding-left:1.1rem;font-size:.85rem}.consent-check{display:flex;align-items:flex-start;gap:.5rem;margin-bottom:.9rem;font-size:.85rem;color:var(--text)}.consent-check input[type=checkbox]{margin-top:.2rem;flex:none}.settings-row{align-items:flex-end}.settings-remove{margin-bottom:.9rem}.settings-actions{display:flex;gap:.75rem;align-items:center}
