*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--teal-50:#f0fdfa;--teal-100:#ccfbf1;--teal-200:#99f6e4;--teal-400:#2dd4bf;--teal-500:#14b8a6;--teal-600:#0d9488;--teal-700:#0f766e;--teal-800:#115e59;--teal-900:#134e4a;--green-500:#22c55e;--green-600:#16a34a;--white:#fff;--gray-50:#f9fafb;--gray-100:#f3f4f6;--gray-200:#e5e7eb;--gray-300:#d1d5db;--gray-400:#9ca3af;--gray-500:#6b7280;--gray-600:#4b5563;--gray-700:#374151;--gray-800:#1f2937;--gray-900:#111827;--red-500:#ef4444;--red-100:#fee2e2;--shadow-sm:0 1px 2px #0000000d;--shadow:0 1px 3px #0000001a, 0 1px 2px #0000000f;--shadow-md:0 4px 6px #00000012, 0 2px 4px #0000000f;--shadow-lg:0 10px 15px #0000001a, 0 4px 6px #0000000d;--radius:8px;--radius-lg:12px}body{background:var(--gray-50);color:var(--gray-800);-webkit-font-smoothing:antialiased;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}.app-layout{height:100vh;display:flex;overflow:hidden}.app-main{flex-direction:column;flex:1;display:flex;overflow:hidden}.app-content{background:var(--gray-50);flex:1;padding:24px;overflow-y:auto}.header{background:var(--white);border-bottom:1px solid var(--gray-200);height:60px;box-shadow:var(--shadow-sm);flex-shrink:0;justify-content:space-between;align-items:center;padding:0 24px;display:flex}.header-logo{color:var(--teal-700);align-items:center;gap:10px;font-size:18px;font-weight:700;display:flex}.header-logo-icon{background:var(--teal-600);border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;display:flex}.header-user{align-items:center;gap:12px;display:flex}.header-user-name{color:var(--gray-600);font-size:14px}.header-avatar{background:var(--teal-600);color:#fff;cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:14px;font-weight:700;display:flex}.btn-logout{border:1px solid var(--gray-200);border-radius:var(--radius);color:var(--gray-600);background:0 0;padding:6px 14px;font-size:13px;transition:all .15s}.btn-logout:hover{background:var(--gray-100);color:var(--gray-800)}.sidebar{background:var(--white);border-right:1px solid var(--gray-200);width:220px;box-shadow:var(--shadow-sm);flex-direction:column;flex-shrink:0;padding:16px 0;display:flex}.sidebar-label{letter-spacing:.08em;text-transform:uppercase;color:var(--gray-400);padding:8px 16px 4px;font-size:10px;font-weight:600}.sidebar-item{color:var(--gray-600);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:0;align-items:center;gap:10px;width:100%;padding:10px 16px;font-size:14px;transition:all .15s;display:flex;position:relative}.sidebar-item:hover{background:var(--teal-50);color:var(--teal-700)}.sidebar-item.active{background:var(--teal-50);color:var(--teal-700);font-weight:600}.sidebar-item.active:before{content:"";background:var(--teal-600);border-radius:0 3px 3px 0;width:3px;position:absolute;top:4px;bottom:4px;left:0}.sidebar-icon{text-align:center;width:20px;font-size:16px}.card{background:var(--white);border-radius:var(--radius-lg);border:1px solid var(--gray-200);box-shadow:var(--shadow);padding:24px}.card-header{border-bottom:1px solid var(--gray-100);justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:16px;display:flex}.card-title{color:var(--gray-800);font-size:16px;font-weight:600}.btn{border-radius:var(--radius);cursor:pointer;border:none;align-items:center;gap:6px;padding:8px 16px;font-size:14px;font-weight:500;transition:all .15s;display:inline-flex}.btn-primary{background:var(--teal-600);color:#fff}.btn-primary:hover{background:var(--teal-700)}.btn-secondary{background:var(--gray-100);color:var(--gray-700);border:1px solid var(--gray-200)}.btn-secondary:hover{background:var(--gray-200)}.btn-success{background:var(--green-600);color:#fff}.btn-success:hover{background:#15803d}.btn-danger{background:var(--red-500);color:#fff}.btn-danger:hover{background:#dc2626}.btn-sm{padding:5px 10px;font-size:12px}.btn-lg{padding:12px 24px;font-size:15px}.btn:disabled{opacity:.5;cursor:not-allowed}.form-group{margin-bottom:16px}.form-label{color:var(--gray-700);margin-bottom:6px;font-size:13px;font-weight:500;display:block}.form-input{border:1px solid var(--gray-300);border-radius:var(--radius);width:100%;color:var(--gray-800);background:#fff;outline:none;padding:9px 12px;font-size:14px;transition:border-color .15s,box-shadow .15s}.form-input:focus{border-color:var(--teal-500);box-shadow:0 0 0 3px #0d94881a}.form-input::placeholder{color:var(--gray-400)}.form-row{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}.form-row-3{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.table-wrapper{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}thead{background:var(--gray-50)}th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--gray-500);border-bottom:1px solid var(--gray-200);padding:10px 12px;font-size:12px;font-weight:600}td{border-bottom:1px solid var(--gray-100);color:var(--gray-700);padding:12px}tr:last-child td{border-bottom:none}tr:hover td{background:var(--teal-50)}.badge{border-radius:999px;align-items:center;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge-teal{background:var(--teal-100);color:var(--teal-700)}.badge-green{color:#15803d;background:#dcfce7}.badge-red{background:var(--red-100);color:#b91c1c}.badge-gray{background:var(--gray-100);color:var(--gray-600)}.search-wrapper{position:relative}.search-icon{color:var(--gray-400);font-size:14px;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.search-input{padding-left:34px}.modal-overlay{z-index:1000;background:#00000073;justify-content:center;align-items:center;padding:16px;animation:.15s fadeIn;display:flex;position:fixed;inset:0}.modal{border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);background:#fff;width:100%;max-width:560px;max-height:90vh;animation:.2s slideUp;overflow-y:auto}.modal-lg{max-width:780px}.modal-header{border-bottom:1px solid var(--gray-100);justify-content:space-between;align-items:center;padding:20px 24px 16px;display:flex}.modal-title{color:var(--gray-800);font-size:16px;font-weight:600}.modal-close{color:var(--gray-400);cursor:pointer;background:0 0;border:none;padding:4px;font-size:18px;line-height:1}.modal-close:hover{color:var(--gray-700)}.modal-body{padding:20px 24px}.modal-footer{border-top:1px solid var(--gray-100);justify-content:flex-end;gap:10px;padding:16px 24px 20px;display:flex}.toast-container{z-index:2000;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;right:24px}.toast{border-radius:var(--radius);box-shadow:var(--shadow-lg);border:1px solid var(--gray-200);background:#fff;align-items:center;gap:10px;min-width:260px;padding:12px 16px;font-size:14px;animation:.2s slideInRight;display:flex}.toast-success{border-left:4px solid var(--green-500)}.toast-error{border-left:4px solid var(--red-500)}.toast-info{border-left:4px solid var(--teal-500)}.toast-icon{font-size:16px}.auth-page{background:linear-gradient(135deg, var(--teal-600) 0%, var(--teal-800) 100%);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-card{border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);background:#fff;width:100%;max-width:420px;padding:40px}.auth-logo{text-align:center;margin-bottom:28px}.auth-logo-icon{background:var(--teal-600);border-radius:14px;justify-content:center;align-items:center;width:56px;height:56px;margin:0 auto 12px;font-size:28px;display:flex}.auth-logo h1{color:var(--teal-700);font-size:22px;font-weight:700}.auth-logo p{color:var(--gray-500);margin-top:4px;font-size:13px}.auth-divider{color:var(--gray-400);align-items:center;gap:12px;margin:16px 0;font-size:12px;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--gray-200);flex:1;height:1px}.btn-google{border:1px solid var(--gray-300);border-radius:var(--radius);width:100%;color:var(--gray-700);cursor:pointer;background:#fff;justify-content:center;align-items:center;gap:10px;padding:10px;font-size:14px;font-weight:500;transition:all .15s;display:flex}.btn-google:hover{background:var(--gray-50);border-color:var(--gray-400)}.auth-footer{text-align:center;color:var(--gray-500);margin-top:20px;font-size:13px}.auth-footer a{color:var(--teal-600);font-weight:500}.page-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.page-title{color:var(--gray-800);font-size:22px;font-weight:700}.page-subtitle{color:var(--gray-500);margin-top:2px;font-size:13px}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px;display:grid}.stat-card{border-radius:var(--radius-lg);border:1px solid var(--gray-200);box-shadow:var(--shadow);background:#fff;align-items:center;gap:16px;padding:20px;display:flex}.stat-icon{border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;font-size:22px;display:flex}.stat-icon-teal{background:var(--teal-50)}.stat-icon-green{background:#f0fdf4}.stat-icon-blue{background:#eff6ff}.stat-icon-purple{background:#faf5ff}.stat-value{color:var(--gray-800);font-size:26px;font-weight:700;line-height:1}.stat-label{color:var(--gray-500);margin-top:4px;font-size:12px}.odontograma{margin:16px 0}.odontograma-row{flex-wrap:wrap;justify-content:center;gap:4px;margin-bottom:6px;display:flex}.odontograma-label{color:var(--gray-400);text-align:center;margin-bottom:2px;font-size:11px}.dente-btn{border:1.5px solid var(--gray-300);cursor:pointer;background:#fff;border-radius:6px;flex-direction:column;align-items:center;width:44px;padding:4px 2px;font-size:10px;transition:all .15s;display:flex}.dente-btn:hover{border-color:var(--teal-500);box-shadow:var(--shadow);transform:translateY(-1px)}.dente-num{font-size:11px;font-weight:700;line-height:1}.dente-icon{margin-top:2px;font-size:14px}.dente-saudavel{border-color:var(--gray-300);background:#fff}.dente-carie{background:#fef3c7;border-color:#d97706}.dente-obturado{background:#dbeafe;border-color:#3b82f6}.dente-canal{background:#fce7f3;border-color:#ec4899}.dente-coroa{background:var(--teal-100);border-color:var(--teal-500)}.dente-implante{background:#d1fae5;border-color:#059669}.dente-protese{background:#ede9fe;border-color:#7c3aed}.dente-extracao{background:#fee2e2;border-color:#ef4444}.dente-extraido{background:var(--gray-100);border-color:var(--gray-400)}.dente-fratura{background:#fff7ed;border-color:#ea580c}.autocomplete-wrapper{position:relative}.autocomplete-dropdown{border:1px solid var(--gray-300);border-radius:0 0 var(--radius) var(--radius);box-shadow:var(--shadow-md);z-index:100;background:#fff;border-top:none;max-height:200px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.autocomplete-item{cursor:pointer;border-bottom:1px solid var(--gray-100);padding:10px 12px;font-size:14px}.autocomplete-item:last-child{border-bottom:none}.autocomplete-item:hover{background:var(--teal-50)}.autocomplete-item-name{color:var(--gray-800);font-weight:500}.autocomplete-item-detail{color:var(--gray-500);font-size:12px}.plano-banner{border-radius:var(--radius);color:#92400e;background:linear-gradient(135deg,#fef3c7,#fde68a);border:1px solid #f59e0b;justify-content:space-between;align-items:center;margin-bottom:16px;padding:10px 16px;font-size:13px;display:flex}.plano-banner-progress{background:#fde68a;border-radius:999px;height:6px;margin-top:4px;overflow:hidden}.plano-banner-bar{background:#f59e0b;border-radius:999px;height:100%;transition:width .3s}.procedimento-item{border-bottom:1px solid var(--gray-100);grid-template-columns:1fr auto auto auto;align-items:center;gap:8px;padding:8px 0;display:grid}.procedimento-item:last-child{border-bottom:none}.empty-state{text-align:center;color:var(--gray-400);padding:48px 24px}.empty-state-icon{margin-bottom:12px;font-size:48px}.empty-state-text{color:var(--gray-500);font-size:15px;font-weight:500}.empty-state-sub{margin-top:4px;font-size:13px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.mt-4{margin-top:16px}.mt-2{margin-top:8px}.mb-4{margin-bottom:16px}.flex{display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:8px}.gap-3{gap:12px}.text-sm{font-size:13px}.text-muted{color:var(--gray-500)}.font-bold{font-weight:700}.w-full{width:100%}.grid-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}.grid-3{grid-template-columns:1fr 1fr 1fr;gap:16px;display:grid}
