:root{--bg:#f6f8fb;--panel:#fff;--text:#162033;--muted:#667085;--border:#e5e7eb;--accent:#2563eb;--accent-soft:#eff6ff;--danger:#b42318;--success:#067647;--warn:#b54708;--shadow:0 6px 22px rgba(16,24,40,.06)}*{box-sizing:border-box}html,body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:var(--text);background:var(--bg)}a{color:inherit}.app-shell{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:100vh}.sidebar{background:#101828;color:#fff;padding:18px 14px;display:flex;flex-direction:column;gap:20px}.brand-row{display:flex;align-items:center;gap:10px;padding:6px}.brand-row small,.sidebar-foot small{display:block;color:#98a2b3}.brand-mark{width:58px;height:58px;border-radius:16px;background:#2563eb;color:#fff;display:grid;place-items:center;font-weight:800;font-size:22px}.brand-mark.sm{width:38px;height:38px;border-radius:10px;font-size:15px}.logo-img{width:42px;height:42px;object-fit:contain;background:#fff;border-radius:9px}.nav-link{display:block;text-decoration:none;padding:11px 12px;border-radius:9px;color:#d0d5dd;margin:2px 0}.nav-link:hover,.nav-link.active{background:#1d2939;color:#fff}.sidebar-foot{margin-top:auto;padding:10px 6px;border-top:1px solid #344054}.sidebar-foot a{display:block;margin-top:9px;color:#d0d5dd}.main-area{min-width:0}.topbar{position:sticky;top:0;z-index:10;background:rgba(255,255,255,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);padding:14px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px}.topbar h1{font-size:20px;margin:0}.top-actions{display:flex;gap:8px}.icon-btn{display:none;border:1px solid var(--border);background:#fff;border-radius:8px;padding:8px 10px}.content{padding:20px;max-width:1500px;margin:auto}.grid{display:grid;gap:14px}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:16px;box-shadow:var(--shadow)}.card h2,.card h3{margin-top:0}.metric strong{font-size:28px;display:block}.muted{color:var(--muted)}.help-box{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:10px;padding:11px;color:#475467;font-size:14px}.alert{padding:11px 14px;border-radius:10px;margin-bottom:12px}.alert.success{background:#ecfdf3;color:#067647}.alert.danger{background:#fef3f2;color:#b42318}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--border);background:#fff;border-radius:9px;padding:9px 13px;text-decoration:none;cursor:pointer;font-size:14px;color:var(--text)}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.danger{color:var(--danger);border-color:#fecdca}.btn.small{padding:7px 10px;font-size:13px}.btn:disabled{opacity:.5;cursor:not-allowed}.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;justify-content:space-between;margin-bottom:14px}.toolbar .group{display:flex;gap:8px;flex-wrap:wrap;align-items:center}input,select,textarea{width:100%;border:1px solid #d0d5dd;border-radius:9px;padding:10px 11px;background:#fff;color:var(--text);font:inherit}textarea{min-height:90px;resize:vertical}label{display:grid;gap:6px;font-size:14px;font-weight:600}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid .full{grid-column:1/-1}.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:12px;background:#fff}table{width:100%;border-collapse:collapse;min-width:720px}th,td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left;font-size:14px;vertical-align:top}th{background:#f8fafc;color:#475467;position:sticky;top:0}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:12px;background:#f2f4f7;color:#344054}.badge.confirmed,.badge.attended,.badge.paid{background:#ecfdf3;color:#067647}.badge.pending,.badge.partial{background:#fffaeb;color:#b54708}.badge.cancelled,.badge.error{background:#fef3f2;color:#b42318}.badge.attention,.badge.reprogram,.badge.reprogrammed{background:#eef4ff;color:#3538cd}.badge.no_show{background:#fff4ed;color:#b93815}.searchbox{max-width:420px}.actions{display:flex;gap:6px;flex-wrap:wrap}.tabs{display:flex;gap:6px;border-bottom:1px solid var(--border);margin-bottom:14px;overflow:auto}.tabs a{padding:9px 12px;text-decoration:none;white-space:nowrap;border-bottom:2px solid transparent}.tabs a.active{border-color:var(--accent);color:var(--accent);font-weight:700}.login-body{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(145deg,#eff6ff,#f8fafc)}.login-card{width:min(430px,100%);background:#fff;border:1px solid var(--border);border-radius:18px;padding:28px;box-shadow:var(--shadow)}.login-card h1{margin-bottom:4px}.stack{display:grid;gap:12px}.calendar-shell{background:#fff;border:1px solid var(--border);border-radius:14px;overflow:hidden}.cal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px;border-bottom:1px solid var(--border);flex-wrap:wrap}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.day-name,.month-cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.day-name{padding:8px;text-align:center;background:#f8fafc;font-weight:700;font-size:12px}.month-cell{min-height:120px;padding:7px}.month-cell.dim{background:#fafafa;color:#98a2b3}.date-num{font-weight:700;font-size:12px}.appt-chip{display:block;margin-top:5px;border-radius:7px;padding:5px 6px;background:#eff6ff;border-left:3px solid var(--accent);font-size:12px;text-decoration:none;overflow:hidden}.week-grid{display:grid;grid-template-columns:70px repeat(7,minmax(120px,1fr));min-width:950px}.week-wrap{overflow:auto}.week-grid>div{border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-height:56px;padding:5px}.time-cell{background:#f8fafc;font-size:12px;color:#667085}.day-grid{display:grid;grid-template-columns:72px minmax(0,1fr)}.day-grid>div{border-bottom:1px solid var(--border);min-height:64px;padding:7px}.appointment-block{background:#eff6ff;border-left:4px solid var(--accent);border-radius:8px;padding:8px;text-decoration:none;display:block}.clinical-alert{background:#fff4ed;border:1px solid #ffdac2;color:#b93815;border-radius:10px;padding:10px}.odont-grid{display:grid;grid-template-columns:repeat(16,minmax(34px,1fr));gap:6px;overflow:auto}.tooth{border:1px solid var(--border);background:#fff;border-radius:9px;padding:8px 4px;min-width:44px;text-align:center;cursor:pointer}.tooth.has-data{background:#eef4ff;border-color:#a4bcfd}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.photo-card img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:9px}.signature-pad{border:1px dashed #98a2b3;border-radius:10px;background:#fff;touch-action:none;width:100%;height:180px}.modal{position:fixed;inset:0;background:rgba(16,24,40,.45);display:none;align-items:center;justify-content:center;padding:16px;z-index:30}.modal.open{display:flex}.modal-card{background:#fff;border-radius:14px;max-width:620px;width:100%;max-height:90vh;overflow:auto;padding:18px}.right{margin-left:auto}.nowrap{white-space:nowrap}
@media(max-width:1000px){.grid.cols-4{grid-template-columns:repeat(2,1fr)}.grid.cols-3{grid-template-columns:1fr 1fr}.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-270px;top:0;bottom:0;width:250px;z-index:40;transition:left .2s}.sidebar.open{left:0}.icon-btn{display:inline-flex}.topbar{padding:12px}.content{padding:14px}}
@media(max-width:700px){.grid.cols-4,.grid.cols-3,.grid.cols-2,.form-grid{grid-template-columns:1fr}.top-actions .btn:first-child{display:none}.month-cell{min-height:92px;padding:4px}.day-name{font-size:10px;padding:6px 2px}.appt-chip{font-size:10px;padding:4px}.content{padding:10px}.card{padding:12px}.toolbar{align-items:stretch}.toolbar .group{width:100%}.searchbox{max-width:none}.odont-grid{grid-template-columns:repeat(8,minmax(42px,1fr))}.modal{align-items:flex-end;padding:0}.modal-card{border-radius:16px 16px 0 0;max-height:92vh}}
