@import"https://fonts.googleapis.com/css2?family=Figtree:wght@400;500;600;700&display=swap";.dv-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:var(--stage);color:var(--stage-ink);display:flex;flex-direction:column;font-family:Figtree,system-ui,sans-serif}.dv-header{flex:none;min-height:64px;display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;padding:8px 20px;background:var(--stage-2);border-bottom:1px solid var(--stage-line)}.dv-title{min-width:0}.dv-title strong{display:block;font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46vw}.dv-title span{font-size:13px;color:var(--stage-muted)}.dv-spacer{flex:1}.dv-counter{font-size:14px;color:var(--stage-muted);font-variant-numeric:tabular-nums}.dv-icon-btn,.dv-btn{min-height:44px;border-radius:10px;border:1px solid var(--stage-line-2);background:transparent;color:var(--stage-ink);font-weight:600;font-size:14px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 16px;transition:background .15s ease}.dv-icon-btn{width:44px;padding:0}.dv-icon-btn.solid{background:#1e2c2a;border-color:#1e2c2a}.dv-icon-btn:hover,.dv-btn:hover{background:#1e2c2a}.dv-overlay button:focus-visible,.dv-overlay select:focus-visible,.dv-overlay input:focus-visible{outline:3px solid var(--stage-accent);outline-offset:2px}.dv-body{flex:1;min-height:0;display:flex;position:relative}.dv-msg{margin:auto;color:var(--stage-muted)}.dv-error{position:absolute;top:12px;left:50%;transform:translate(-50%);background:#5a1a16;color:#ffd9d5;padding:8px 18px;border-radius:10px;z-index:5}.dv-pdf{flex:1;background:#fff}.dv-pdf iframe{width:100%;height:100%;border:none}.dv-docx{flex:1;overflow:auto;padding:24px;background:#fff;color:#222;display:flex;justify-content:center}.dv-unsupported{margin:auto;text-align:center;display:flex;flex-direction:column;align-items:center;gap:18px;color:var(--stage-muted)}.dv-footer{flex:none;background:var(--stage-3);border-top:1px solid var(--stage-line);padding:10px 16px;display:flex;flex-direction:column;gap:8px}.dv-notes{margin:0;font-size:14px;color:var(--stage-muted);font-style:italic}.dv-strip{display:flex;gap:10px;overflow-x:auto;padding-bottom:2px}.dv-thumb{flex:none;width:128px;padding:0;border-radius:10px;border:2.5px solid var(--stage-line);background:#000;color:var(--stage-ink);overflow:hidden;text-align:left}.dv-thumb:hover,.dv-thumb.on{border-color:var(--stage-accent)}.dv-thumb img,.dv-thumb-icon{display:flex;width:100%;height:66px;object-fit:cover;align-items:center;justify-content:center;color:var(--stage-muted)}.dv-thumb-name{display:block;padding:4px 8px;font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.iv{flex:1;min-width:0;min-height:0;display:flex}.iv-tools{width:80px;flex:none;background:var(--stage-3);border-right:1px solid var(--stage-line);padding:12px 0;display:flex;flex-direction:column;align-items:center;gap:6px;overflow-y:auto}.iv-tool{width:64px;min-height:58px;padding:0;border-radius:12px;border:1.5px solid transparent;background:transparent;color:#c9d8d5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11.5px;font-weight:600}.iv-tool:hover{background:#1e2c2a}.iv-tool.on{border-color:var(--stage-accent);background:var(--stage-accent-bg);color:#8cf0df}.iv-stage-wrap{flex:1;min-width:0;position:relative;background:#000}.iv-stage{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;gap:2px;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.iv-stage:active{cursor:grabbing}.iv-pane{flex:1;min-width:0;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.iv-pane img{max-width:100%;max-height:100%;object-fit:contain;transition:transform .08s linear;-webkit-user-drag:none}.iv-pane-tag,.iv-pane-msg{position:absolute;left:14px;top:12px;padding:4px 10px;border-radius:8px;background:#0a100fc7;font-size:13px;font-weight:600;color:var(--stage-ink)}.iv-pane-msg{left:50%;top:50%;transform:translate(-50%,-50%)}.iv-zoombar{position:absolute;left:50%;bottom:14px;transform:translate(-50%);display:flex;align-items:center;gap:4px;padding:4px;border-radius:12px;background:#121c1beb;border:1px solid var(--stage-line-2)}.iv-zoombar button{width:44px;height:44px;padding:0;border:0;border-radius:8px;background:transparent;color:var(--stage-ink);font-size:22px;font-weight:600}.iv-zoombar button:hover{background:#1e2c2a}.iv-zoombar span{min-width:62px;text-align:center;font-weight:700;font-variant-numeric:tabular-nums}.iv-panel,.m3d-panel{width:300px;flex:none;background:var(--stage-2);border-left:1px solid var(--stage-line);padding:18px;display:flex;flex-direction:column;gap:18px;overflow-y:auto}.iv-h{font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--stage-muted);margin-bottom:8px}.iv-presets{display:grid;grid-template-columns:1fr 1fr;gap:6px}.iv-preset{min-height:44px;padding:0 8px;border-radius:10px;border:1.5px solid var(--stage-line-2);background:transparent;color:var(--stage-ink);font-weight:600;font-size:14px}.iv-preset:hover{background:#1e2c2a}.iv-preset.on{border-color:var(--stage-accent);background:var(--stage-accent-bg);color:#8cf0df}.iv-sliders label{display:flex;justify-content:space-between;margin:8px 0 0;font-size:14px;font-weight:600;color:var(--stage-ink)}.iv-sliders label span:last-child{color:var(--stage-muted);font-variant-numeric:tabular-nums}.iv-panel input[type=range]{accent-color:var(--stage-accent);width:100%;height:28px;padding:0;border:0;background:transparent}.iv-reset{margin-top:8px;width:100%;min-height:44px;border-radius:10px;border:1px solid var(--stage-line-2);background:transparent;color:var(--stage-ink);font-weight:600;font-size:14px}.iv-reset:hover{background:#1e2c2a}.iv-select{width:100%;min-height:44px;border-radius:10px;border:1px solid var(--stage-line-2);background:var(--stage);color:var(--stage-ink);font-size:14px;padding:0 10px}.iv-note{margin:0;font-size:13px;line-height:1.5;color:var(--stage-muted)}.m3d{flex:1;min-width:0;min-height:0;display:flex}.m3d-stage{flex:1;min-width:0;position:relative}.model-3d-canvas{position:absolute;top:0;right:0;bottom:0;left:0;cursor:grab}.model-3d-loading,.model-3d-error{position:absolute;top:70px;left:50%;transform:translate(-50%);background:#121c1beb;border:1px solid var(--stage-line-2);color:var(--stage-ink);padding:8px 18px;border-radius:20px;font-size:14px}.model-3d-error{background:#5a1a16;color:#ffd9d5;border-color:#7a2a24}.model-3d-hint{position:absolute;bottom:16px;left:50%;transform:translate(-50%);background:#121c1beb;border:1px solid var(--stage-line-2);color:var(--stage-ink);padding:8px 16px;border-radius:12px;font-size:13px;pointer-events:none;text-align:center;max-width:calc(100% - 32px)}.m3d-views{position:absolute;left:16px;top:16px;display:flex;flex-wrap:wrap;gap:6px}.m3d-view{min-height:44px;padding:0 14px;border-radius:10px;border:1.5px solid var(--stage-line-2);background:#121c1beb;color:var(--stage-ink);font-weight:600;font-size:14px}.m3d-view:hover:not(:disabled){border-color:var(--stage-accent)}.m3d-view:disabled{opacity:.5;cursor:default}.m3d-toggles{display:flex;flex-direction:column;gap:6px}.m3d-toggle{min-height:48px;padding:0 14px;border-radius:10px;border:1.5px solid var(--stage-line-2);background:transparent;color:var(--stage-ink);font-weight:600;font-size:14.5px;display:flex;align-items:center;justify-content:space-between;text-align:left}.m3d-toggle:hover{background:#1e2c2a}.m3d-toggle.on{border-color:var(--stage-accent);background:var(--stage-accent-bg)}.m3d-toggle-label{display:inline-flex;align-items:center;gap:10px}.m3d-switch{width:40px;height:22px;border-radius:11px;background:#3a4e4b;position:relative;flex:none}.m3d-switch span{position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:left .15s ease}.m3d-toggle.on .m3d-switch{background:#14b8a6}.m3d-toggle.on .m3d-switch span{left:21px}.m3d-info{margin:0;display:grid;grid-template-columns:90px 1fr;gap:8px 10px;font-size:14px}.m3d-info dt{color:var(--stage-muted)}.m3d-info dd{margin:0;font-weight:600}@media (max-width: 900px){.iv,.m3d{flex-direction:column}.iv-tools{width:auto;flex-direction:row;border-right:0;border-bottom:1px solid var(--stage-line);padding:8px;overflow-x:auto;overflow-y:hidden}.iv-tool{flex:none}.iv-stage-wrap,.m3d-stage{flex:1 1 55%;min-height:260px}.iv-panel,.m3d-panel{width:auto;flex:none;max-height:38%;border-left:0;border-top:1px solid var(--stage-line)}.dv-title strong{max-width:60vw}.dv-btn span{display:none}}.document-viewer-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem;animation:fadeIn .3s ease}.document-viewer-modal{background:#fff;border-radius:12px;display:flex;flex-direction:column;width:100%;max-width:90vw;height:90vh;box-shadow:0 20px 60px #0000004d;overflow:hidden;animation:slideUp .3s ease}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.viewer-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #eee;background:#f9f9f9}.viewer-header h2{margin:0;color:#333;font-size:1.3rem;word-break:break-word;flex:1}.carousel-counter{background:#ff9800;color:#fff;font-weight:600;font-size:.85rem;padding:.3rem .75rem;border-radius:20px;margin-left:1rem;white-space:nowrap}.close-button{background:#f44;color:#fff;border:none;border-radius:50%;width:40px;height:40px;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;margin-left:1rem;transition:all .3s ease}.close-button:hover{background:#c00;transform:scale(1.1)}.viewer-content{flex:1;position:relative;display:flex;align-items:center;justify-content:center;overflow:auto;background:#f0f0f0}.carousel-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:10;width:48px;height:48px;border-radius:50%;border:none;background:#00000080;color:#fff;font-size:2rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.carousel-arrow:hover{background:#ff9800e6;transform:translateY(-50%) scale(1.1)}.carousel-arrow-left{left:1rem}.carousel-arrow-right{right:1rem}.pdf-viewer{width:100%;height:100%}.pdf-viewer iframe{width:100%;height:100%;border:none}.image-viewer{display:flex;align-items:center;justify-content:center;padding:2rem;max-width:100%;max-height:100%}.image-viewer img{max-width:100%;max-height:100%;border-radius:8px;box-shadow:0 4px 12px #0003;object-fit:contain}.model-3d-viewer{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2rem;padding:3rem;text-align:center}.model-info{font-size:1.2rem;color:#333;font-weight:600;margin:0}.download-hint{color:#666;max-width:400px;line-height:1.6;margin:0}.model-3d-canvas-wrapper{position:relative;width:100%;height:100%}.model-3d-canvas{width:100%;height:100%;cursor:grab}.model-3d-canvas:active{cursor:grabbing}.model-3d-canvas canvas{display:block}.model-3d-loading,.model-3d-error{position:absolute;top:1rem;left:50%;transform:translate(-50%);background:#000000b3;color:#fff;padding:.5rem 1.25rem;border-radius:20px;font-size:.9rem}.model-3d-error{background:#c81e1ed9}.model-3d-hint{position:absolute;bottom:1rem;left:50%;transform:translate(-50%);background:#0000008c;color:#fff;padding:.4rem 1rem;border-radius:20px;font-size:.8rem;pointer-events:none}.docx-viewer{width:100%;height:100%;overflow:auto;padding:2rem;background:#fff;display:flex;justify-content:center}.docx-content{max-width:800px;width:100%;color:#222;line-height:1.6;font-size:.95rem}.docx-content img{max-width:100%}.download-button-small{padding:.5rem 1rem;font-size:.85rem}.unsupported-file{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2rem;padding:3rem;text-align:center}.unsupported-file p{color:#666;font-size:1.1rem;margin:0}.download-button{display:inline-block;background:#ff9800;color:#fff;padding:.75rem 1.5rem;border-radius:8px;text-decoration:none;font-weight:600;transition:all .3s ease;cursor:pointer;border:none;font-size:1rem}.download-button:hover{background:#f57c00;transform:translateY(-2px);box-shadow:0 4px 12px #ff98004d}.viewer-footer{padding:1rem 1.5rem;border-top:1px solid #eee;background:#f9f9f9;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}.file-info{color:#666;font-size:.9rem;margin:0}.treatment-notes{color:#555;font-size:.95rem;margin:0;font-style:italic;flex:1}.error-message{background:#f8d7da;color:#721c24;padding:1rem;border-radius:6px;margin:1rem;text-align:center}@media (max-width: 768px){.document-viewer-modal{max-width:100vw;height:100vh;border-radius:0}.viewer-header{padding:1rem}.viewer-header h2{font-size:1rem}.close-button{width:36px;height:36px;font-size:1.2rem}.viewer-content{padding:0}.model-3d-viewer,.unsupported-file{padding:1.5rem}}.tooth-drawer-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0006;z-index:900;display:flex;justify-content:flex-end;animation:fadeIn .25s ease}.tooth-drawer{background:#fff;width:100%;max-width:440px;height:100%;display:flex;flex-direction:column;box-shadow:-8px 0 30px #00000040;animation:slideIn .25s ease}@keyframes slideIn{0%{transform:translate(30px);opacity:0}to{transform:translate(0);opacity:1}}.tooth-drawer-header{display:flex;justify-content:space-between;align-items:flex-start;padding:1.5rem;background:linear-gradient(135deg,#ff9800,#f57c00);color:#fff}.tooth-drawer-header h2{margin:0;font-size:1.4rem}.tooth-drawer-subtitle{margin:.25rem 0 0;font-size:.9rem;opacity:.9}.tooth-drawer-close{background:#ffffff40;border:none;color:#fff;border-radius:50%;width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .2s ease}.tooth-drawer-close:hover{background:#fff6}.tooth-drawer-tabs{display:flex;border-bottom:1px solid #eee;background:#fafafa}.tooth-drawer-tabs button{flex:1;padding:.9rem .5rem;border:none;background:transparent;font-weight:600;font-size:.85rem;color:#777;cursor:pointer;border-bottom:3px solid transparent;transition:all .2s ease}.tooth-drawer-tabs button:hover{color:#ff9800}.tooth-drawer-tabs button.active{color:#ff9800;border-bottom-color:#ff9800}.tooth-drawer-body{flex:1;overflow-y:auto;padding:1.5rem}.tooth-drawer-loading{text-align:center;color:#999;padding:2rem}.empty-tab{text-align:center;color:#999;font-style:italic;padding:1.5rem 0}.tooth-tab-estado label{display:block;font-weight:600;color:#555;margin-bottom:.5rem;font-size:.85rem;text-transform:uppercase;letter-spacing:.03em}.status-options{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}.status-pill{padding:.5rem 1rem;border-radius:20px;border:2px solid #ddd;background:#fff;color:#555;font-weight:600;font-size:.85rem;cursor:pointer;transition:all .2s ease}.status-pill:hover{border-color:#ff9800}.status-pill.selected.status-sano{background:#90ee90;border-color:#228b22;color:#1a5c1a}.status-pill.selected.status-cariado{background:#ffb6c6;border-color:#ff1493;color:#a10a5f}.status-pill.selected.status-obturado{background:#a8d8ff;border-color:#0b5ea8;color:#0b5ea8}.status-pill.selected.status-endodonciado{background:plum;border-color:#9932cc;color:#6a1b9a}.status-pill.selected.status-implante{background:silver;border-color:#555;color:#333}.status-pill.selected.status-corona{background:#f4e2a1;border-color:#9a7408;color:#6b5006}.status-pill.selected.status-faltante{background:#d3d3d3;border-color:#888;color:#333}.tooth-notes{background:#f9f9f9;padding:1rem;border-radius:8px;color:#555;line-height:1.5}.treatment-form{background:#fff8ee;border:1px solid #ffe0b2;border-radius:10px;padding:1.25rem;margin-bottom:1.5rem}.treatment-form h4{margin:0 0 1rem;color:#f57c00;font-size:1rem}.treatment-form label{display:block;font-size:.8rem;font-weight:600;color:#666;margin:.75rem 0 .3rem}.treatment-form-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.treatment-form input,.treatment-form select,.treatment-form textarea{width:100%;padding:.6rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem;font-family:inherit;box-sizing:border-box}.treatment-form textarea{resize:vertical}.btn-toggle-extended{display:flex;align-items:center;gap:.4rem;margin-top:1rem;background:none;border:1px dashed #ccc;border-radius:6px;padding:.5rem .75rem;color:#777;font-size:.8rem;font-weight:600;cursor:pointer;transition:all .2s ease;width:100%;justify-content:center}.btn-toggle-extended:hover{border-color:#ff9800;color:#ff9800;background:#fff9f0}.extended-fields{margin-top:1rem;padding-top:1rem;border-top:1px dashed #ddd;display:flex;flex-direction:column;gap:1.25rem}.extended-group h5{margin:0 0 .6rem;color:#f57c00;font-size:.85rem}.extended-field{margin-bottom:.6rem}.extended-field label{margin:0 0 .3rem}.extended-field input,.extended-field textarea{width:100%;padding:.55rem;border:1px solid #ddd;border-radius:6px;font-size:.85rem;font-family:inherit;box-sizing:border-box}.treatment-extra-details{margin-top:.75rem;padding:.75rem;background:#fff;border:1px solid #eee;border-radius:6px}.extra-detail-row{display:flex;justify-content:space-between;gap:1rem;padding:.3rem 0;font-size:.82rem;border-bottom:1px solid #f5f5f5}.extra-detail-row:last-child{border-bottom:none}.extra-detail-label{color:#888;font-weight:600;flex-shrink:0}.extra-detail-value{color:#333;text-align:right;word-break:break-word}.treatment-form-actions{display:flex;gap:.5rem;margin-top:1rem}.btn-save-treatment{flex:1;background:#ff9800;color:#fff;border:none;padding:.75rem;border-radius:8px;font-weight:600;cursor:pointer;transition:background .2s ease}.btn-save-treatment:hover:not(:disabled){background:#f57c00}.btn-save-treatment:disabled{opacity:.6;cursor:not-allowed}.btn-cancel-edit{background:#fff;color:#888;border:1px solid #ccc;padding:.75rem 1.25rem;border-radius:8px;font-weight:600;cursor:pointer;transition:all .2s ease}.btn-cancel-edit:hover{background:#f5f5f5;color:#555}.history-title{margin:0 0 .75rem;color:#333}.treatment-list{list-style:none;margin:0;padding:0}.treatment-item{padding:.9rem;border-left:3px solid #ff9800;background:#fafafa;border-radius:6px;margin-bottom:.75rem;transition:box-shadow .2s ease,border-color .2s ease}.treatment-item-editing{border-left-color:#007aff;box-shadow:0 0 0 2px #007aff33;background:#f0f7ff}.treatment-item-header{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.treatment-item-meta{display:flex;align-items:center;flex-wrap:wrap}.treatment-item-actions{display:flex;gap:.4rem;flex-shrink:0}.treatment-action-btn{position:relative;background:#fff;border:1px solid #ddd;border-radius:6px;width:30px;height:30px;font-size:.9rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.treatment-action-btn:hover{background:#fff3e0;border-color:#ff9800;transform:translateY(-1px)}.treatment-doc-count{position:absolute;top:-6px;right:-6px;background:#007aff;color:#fff;font-size:.6rem;font-weight:700;min-width:14px;height:14px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:0 2px}.treatment-date{font-weight:700;color:#f57c00;font-size:.85rem}.treatment-type{display:inline-block;margin-left:.5rem;background:#ff9800;color:#fff;font-size:.7rem;font-weight:600;padding:.15rem .5rem;border-radius:10px;text-transform:uppercase}.treatment-desc{margin:.5rem 0 .25rem;color:#555;font-size:.9rem;line-height:1.4}.treatment-dentist{font-size:.8rem;color:#888}.assign-doc-box{background:#f0f8ff;border:1px solid #cce5ff;border-radius:8px;padding:1rem;margin-bottom:1.5rem}.assign-doc-box label{display:block;font-weight:600;font-size:.85rem;color:#333;margin-bottom:.5rem}.assign-doc-row{display:flex;gap:.5rem}.assign-doc-row select{flex:1;padding:.5rem;border-radius:6px;border:1px solid #ccc}.assign-doc-row button{background:#007aff;color:#fff;border:none;padding:.5rem 1rem;border-radius:6px;cursor:pointer;font-weight:600;white-space:nowrap}.assign-doc-row button:disabled{opacity:.5;cursor:not-allowed}.doc-group{margin-bottom:1.5rem}.doc-group h4{color:#ff9800;margin-bottom:.75rem;font-size:.95rem}.doc-thumb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.75rem}.doc-thumb-wrapper{position:relative}.doc-thumb-remove{position:absolute;top:-6px;right:-6px;z-index:1;width:20px;height:20px;border-radius:50%;border:none;background:#f44;color:#fff;font-size:.7rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px #0003;transition:all .2s ease}.doc-thumb-remove:hover{background:#c00;transform:scale(1.15)}.doc-thumb-delete{position:absolute;top:-6px;left:-6px;z-index:1;width:22px;height:22px;border-radius:50%;border:1px solid #ddd;background:#fff;font-size:.7rem;line-height:1;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center}.doc-thumb-delete:hover{background:#ffe5e5;border-color:#f44}.mark-status-check{display:flex;align-items:flex-start;gap:.5rem;margin:.6rem 0;font-size:.82rem;color:#444;line-height:1.35;cursor:pointer}.mark-status-check input{margin-top:.15rem}.material-chips{display:flex;flex-wrap:wrap;gap:.35rem;margin:.2rem 0 .4rem}.material-chip:hover{border-color:#007aff}.doc-thumb{width:100%;display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:.75rem .5rem;border:2px solid #ff9800;border-radius:8px;background:#fff9f0;cursor:pointer;transition:all .2s ease}.doc-thumb:hover{background:#fff;transform:translateY(-3px);box-shadow:0 6px 14px #ff980040}.doc-thumb-icon{font-size:1.8rem}.doc-thumb-name{font-size:.7rem;color:#555;text-align:center;word-break:break-word;line-height:1.2}.attach-box,.upload-box{margin-top:1rem;padding:.9rem;background:#f0f7ff;border:1px dashed #90caf9;border-radius:8px}.upload-box{margin:0 0 1.5rem}.attach-box h5{margin:0 0 .6rem;color:#0b5ea8;font-size:.85rem}.upload-box label{display:block;font-weight:600;font-size:.85rem;color:#0b5ea8;margin-bottom:.6rem}.attach-type-options{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.6rem}.attach-type-pill{padding:.35rem .7rem;border-radius:16px;border:2px solid #ddd;background:#fff;color:#555;font-weight:600;font-size:.75rem;cursor:pointer;transition:all .2s ease}.attach-type-pill:hover{border-color:#007aff}.attach-type-pill.selected{background:#e3f2fd;border-color:#007aff;color:#0b5ea8}.attach-box input[type=file],.upload-box input[type=file]{width:100%;font-size:.8rem;box-sizing:border-box}.attach-file-list{list-style:none;margin:.5rem 0 0;padding:0;font-size:.78rem;color:#555;max-height:110px;overflow-y:auto}.attach-file-list li{padding:.15rem 0;word-break:break-all}.attach-msg{margin:.6rem 0 0;padding:.45rem .7rem;border-radius:6px;font-size:.8rem}.attach-msg-success{background:#d4edda;color:#155724}.attach-msg-error{background:#f8d7da;color:#721c24}.btn-tab-upload{width:100%;margin-top:.75rem;background:#007aff;color:#fff;border:none;padding:.65rem;border-radius:8px;font-weight:600;cursor:pointer}.btn-tab-upload:hover:not(:disabled){background:#0051d5}.btn-tab-upload:disabled{opacity:.5;cursor:not-allowed}.btn-confirm-remove{background:#f44;color:#fff;border:none;padding:.75rem 1.25rem;border-radius:8px;font-weight:600;cursor:pointer;transition:background .2s ease}.btn-confirm-remove:hover:not(:disabled){background:#c00}.btn-confirm-remove:disabled{opacity:.6;cursor:not-allowed}@media (max-width: 600px){.tooth-drawer{max-width:100%}.treatment-form-row{grid-template-columns:1fr}}.upload-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:950;display:flex;align-items:center;justify-content:center;padding:1rem}.upload-modal{background:#fff;border-radius:16px;max-width:480px;width:100%;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #0000004d}.upload-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;background:linear-gradient(135deg,#ff9800,#f57c00);color:#fff;border-radius:16px 16px 0 0}.upload-header h2{margin:0;font-size:1.2rem}.upload-close{background:#ffffff40;border:none;color:#fff;border-radius:50%;width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer}.upload-body{padding:1.5rem;overflow-y:auto}.upload-body label{display:block;font-size:.8rem;font-weight:600;color:#666;margin:1rem 0 .4rem}.upload-body label:first-child{margin-top:0}.upload-body select,.upload-body input[type=text],.upload-body input[type=file]{width:100%;padding:.6rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem;font-family:inherit;box-sizing:border-box}.upload-type-options{display:flex;flex-wrap:wrap;gap:.5rem}.upload-type-pill{padding:.5rem .9rem;border-radius:20px;border:2px solid #ddd;background:#fff;color:#555;font-weight:600;font-size:.82rem;cursor:pointer;transition:all .2s ease}.upload-type-pill:hover{border-color:#ff9800}.upload-type-pill.selected{background:#fff3e0;border-color:#ff9800;color:#e65100}.upload-file-list{list-style:none;margin:.6rem 0 0;padding:0;max-height:140px;overflow-y:auto;font-size:.82rem;color:#555}.upload-file-list li{display:flex;justify-content:space-between;gap:.5rem;padding:.25rem 0;word-break:break-all}.upload-file-list span{color:#999;flex-shrink:0}.upload-result{margin-top:1rem;padding:.6rem .8rem;border-radius:6px;background:#d4edda;color:#155724;font-size:.85rem}.upload-result.has-errors{background:#fff3cd;color:#664d03}.upload-result p{margin:.15rem 0}.btn-upload-submit{width:100%;margin-top:1.25rem;background:#ff9800;color:#fff;border:none;padding:.8rem;border-radius:8px;font-weight:600;font-size:1rem;cursor:pointer;transition:background .2s ease}.btn-upload-submit:hover:not(:disabled){background:#f57c00}.btn-upload-submit:disabled{opacity:.55;cursor:not-allowed}.upload-undo{margin-top:.6rem;background:#fff;border:1px solid #c8a200;color:#664d03;border-radius:6px;padding:.4rem .8rem;font-size:.82rem;font-weight:600;cursor:pointer}.upload-undo:hover:not(:disabled){background:#fff8db}.doc-edit-name{margin:0 0 .5rem;font-size:.85rem;color:#555;word-break:break-all}.btn-doc-delete{width:100%;margin-top:.75rem;background:#fff;color:#c62828;border:1px solid #e0b4b4;padding:.65rem;border-radius:8px;font-weight:600;cursor:pointer}.btn-doc-delete:hover:not(:disabled){background:#ffeaea}.doc-delete-confirm{margin-top:.75rem;padding:.75rem;border:1px solid #e0b4b4;background:#fff5f5;border-radius:8px}.doc-delete-confirm p{margin:0 0 .6rem;font-size:.85rem;color:#7a1c1c}.doc-delete-actions{display:flex;gap:.5rem}.doc-delete-actions button{flex:1;padding:.55rem;border-radius:6px;border:1px solid #ccc;background:#fff;font-weight:600;cursor:pointer}.doc-delete-actions button.danger{background:#f44;border-color:#f44;color:#fff}.odontogram-container{padding:2rem;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a}.odontogram-container h1{text-align:center;color:#333;margin-bottom:2rem;font-size:2rem}.odontogram-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;flex-wrap:wrap;gap:1rem}.button-group{display:flex;gap:.75rem;flex-wrap:wrap}.btn-docs{background:#ff9800;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:8px;font-weight:600;cursor:pointer;transition:all .3s ease;font-size:1rem}.btn-docs:hover{background:#f57c00;transform:scale(1.05)}.btn-docs.btn-upload{background:#2e7d32}.btn-docs.btn-upload:hover{background:#1b5e20}.btn-docs.active{background:#ff6f00;box-shadow:0 4px 12px #ff98004d}.documents-panel{background:#fff;border-radius:12px;padding:2rem;box-shadow:0 2px 8px #0000001a;margin-bottom:2rem}.empty-docs{text-align:center;color:#999;padding:2rem;font-style:italic}.doc-section{margin-bottom:2rem}.doc-section:last-child{margin-bottom:0}.doc-section h3{color:#ff9800;font-size:1.2rem;margin-bottom:1.5rem;border-bottom:2px solid #ff9800;padding-bottom:.5rem}.docs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1.5rem}.doc-card{background:#f9f9f9;border:2px solid #ff9800;border-radius:8px;padding:1.5rem;text-align:center;transition:all .3s ease;cursor:default;position:relative}.doc-card-clickable{cursor:pointer}.doc-card-clickable:hover{transform:translateY(-4px);box-shadow:0 8px 16px #ff980033;border-color:#f57c00;background:#fff}.view-hint{display:none;position:absolute;bottom:.5rem;right:.5rem;background:#ff9800;color:#fff;padding:.25rem .5rem;border-radius:4px;font-size:.8rem}.doc-card-clickable:hover .view-hint{display:inline-block}.doc-icon{font-size:2.5rem;margin-bottom:.5rem}.doc-card h4{color:#333;font-size:.95rem;margin-bottom:.5rem;word-break:break-word}.doc-desc{color:#666;font-size:.85rem;margin-bottom:.75rem}.doc-date{color:#999;font-size:.8rem}.dental-arch-wrapper{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:2rem 1rem;background:linear-gradient(180deg,#f7f9fc,#eef1f6);border-radius:16px;margin-bottom:1.5rem}.arch-label{font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#999;margin:.25rem 0}.arch-midline{width:60%;max-width:500px;height:1px;background:repeating-linear-gradient(90deg,#ccc 0 6px,transparent 6px 12px);margin:1.5rem 0}.tooth-arch{display:flex;align-items:flex-start;justify-content:center;gap:.35rem;flex-wrap:nowrap;overflow-x:auto;padding:.5rem;max-width:100%}.tooth-arch-lower{align-items:flex-end}.tooth-shape{position:relative;flex-shrink:0;width:36px;height:52px;border:2px solid #999;background:#fff;cursor:pointer;display:flex;align-items:flex-end;justify-content:center;padding-bottom:4px;transition:transform .2s ease,box-shadow .2s ease;font-family:inherit}.tooth-shape-incisor.tooth-shape-upper{border-radius:45% 45% 15% 15%/65% 65% 15% 15%}.tooth-shape-incisor.tooth-shape-lower{border-radius:15% 15% 45% 45%/15% 15% 65% 65%}.tooth-shape-molar{width:42px}.tooth-shape-molar.tooth-shape-upper{border-radius:30% 30% 20% 20%/45% 45% 20% 20%}.tooth-shape-molar.tooth-shape-lower{border-radius:20% 20% 30% 30%/20% 20% 45% 45%}.tooth-shape:hover{transform:scale(1.12);box-shadow:0 6px 14px #00000026;z-index:2}.tooth-shape.selected{border-color:#007aff;box-shadow:0 0 0 3px #007aff4d;transform:scale(1.15);z-index:3}.tooth-shape-number{font-size:.68rem;font-weight:700;color:#444;background:#ffffffb3;border-radius:3px;padding:0 2px}.tooth-badge{position:absolute;top:-6px;min-width:15px;height:15px;border-radius:50%;font-size:.6rem;font-weight:700;color:#fff;display:flex;align-items:center;justify-content:center;padding:0 2px}.tooth-badge-docs{right:-6px;background:#ff9800}.tooth-badge-treatments{left:-6px;background:#007aff}.tooth-shape-sano{background:#fff;border-color:#bbb}.tooth-shape-cariado{background:#ffb6c6;border-color:#ff1493}.tooth-shape-obturado{background:#a8d8ff;border-color:#0b5ea8}.tooth-shape-endodonciado{background:plum;border-color:#9932cc}.tooth-shape-implante{background:silver;border-color:#555}.tooth-shape-faltante{background:#e8e8e8;border-color:#999;opacity:.6}.arch-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:1rem;margin-top:1.5rem;padding-top:1rem;border-top:1px solid #ddd;width:100%}.legend-item{display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#666}.legend-swatch{display:inline-block;width:14px;height:14px;border-radius:4px;border-width:2px;border-style:solid}.tooth-detail-panel{background:linear-gradient(135deg,#f5f7fa,#c3cfe2);border-radius:12px;padding:2rem;box-shadow:0 8px 32px #0000001a;animation:slideUp .3s ease}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;border-bottom:2px solid rgba(0,122,255,.3);padding-bottom:1rem}.detail-header h2{color:#333;font-size:1.5rem;margin:0}.close-btn{background:#f44;color:#fff;border:none;border-radius:50%;width:40px;height:40px;font-size:1.5rem;cursor:pointer;transition:all .3s ease}.close-btn:hover{background:#c00;transform:scale(1.1)}.detail-content{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem}.detail-section{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 8px #0000000d}.detail-section h3{color:#007aff;font-size:1.1rem;margin:0 0 1rem;border-bottom:2px solid #007AFF;padding-bottom:.5rem}.detail-section p{color:#666;line-height:1.6;margin:0}.detail-section.empty{grid-column:1 / -1;text-align:center;color:#999;font-style:italic}.status{padding:.75rem 1.5rem;border-radius:6px;font-weight:600;text-transform:capitalize;display:inline-block}.status-sano{background:#90ee90;color:#228b22}.status-cariado{background:#ffb6c6;color:#ff1493}.status-endodonciado{background:plum;color:#9932cc}.status-faltante{background:#d3d3d3;color:#333}.status-corona{background:#f4e2a1;color:#6b5006}.status-implante{background:silver;color:#333}.status-obturado{background:#a8d8ff;color:#0b5ea8}.files-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1rem}.file-card{border:2px dashed #007AFF;border-radius:6px;padding:1rem;text-align:center;position:relative;transition:all .3s ease;cursor:pointer}.file-card:hover{border-style:solid;background:#f0f8ff;transform:translateY(-4px);box-shadow:0 4px 12px #007aff33}.file-type-badge{display:inline-block;background:#007aff;color:#fff;padding:.25rem .75rem;border-radius:12px;font-size:.75rem;font-weight:600;margin-bottom:.5rem;text-transform:uppercase}.file-name{font-size:.9rem;font-weight:600;color:#333;word-break:break-word}.file-description{font-size:.85rem;color:#666;margin-top:.5rem}.history-panel{background:#fff;border-radius:12px;padding:2rem;box-shadow:0 2px 8px #0000001a;margin-bottom:2rem}.history-panel h2{color:#ff9800;font-size:1.5rem;margin-bottom:2rem;text-align:center}.history-timeline{position:relative;padding:0}.history-timeline:before{content:"";position:absolute;left:20px;top:0;bottom:0;width:2px;background:linear-gradient(180deg,#ff9800,#f57c00)}.history-event{display:flex;margin-bottom:2rem;position:relative}.event-marker{position:absolute;left:8px;top:0;width:24px;height:24px;background:#ff9800;border:3px solid white;border-radius:50%;box-shadow:0 2px 8px #ff98004d}.event-content{margin-left:60px;padding:1.5rem;background:#f9f9f9;border-radius:8px;border-left:3px solid #ff9800}.event-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem;flex-wrap:wrap;gap:1rem}.event-header h3{color:#333;font-size:1.1rem;margin:0;flex:1}.event-date{color:#ff9800;font-weight:600;font-size:.9rem;white-space:nowrap}.event-description{color:#555;font-weight:600;margin:.5rem 0 0;text-transform:capitalize}.event-details{color:#888;font-size:.9rem;margin:.75rem 0 0;font-style:italic}.event-clickable{cursor:pointer}.event-clickable:hover .event-content{background:#fff;border-left-color:#f57c00;box-shadow:0 4px 12px #ff980026}.event-action{display:block;margin-top:.75rem;padding-top:.75rem;border-top:1px solid #e0e0e0;color:#ff9800;font-weight:600;font-size:.9rem}.empty-history{text-align:center;color:#999;padding:2rem;font-style:italic}@media (max-width: 768px){.odontogram-grid{grid-template-columns:1fr;gap:1rem}.odontogram-container{padding:1rem}.tooth-button{width:45px;height:45px;font-size:.8rem}.detail-content{grid-template-columns:1fr}.detail-header h2{font-size:1.2rem}.button-group{width:100%;flex-direction:column}.btn-docs{flex:1}.event-header{flex-direction:column}.event-date{width:100%}}.odo-head-actions{display:flex;flex-wrap:wrap;gap:8px}.odo-layout{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start}.odo-main{flex:999 1 640px;min-width:0}.odo-side{flex:1 1 380px;max-width:460px;min-width:0;position:sticky;top:92px}.odo-side-empty p{color:var(--muted);line-height:1.5}.odo-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.odo-filters{display:flex;flex-wrap:wrap;gap:6px}.odo-legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;color:var(--ink-2)}.odo-legend-item{display:inline-flex;align-items:center;gap:6px}.odo-legend-swatch{width:14px;height:14px;border-radius:4px;border-width:2px}.odo-scroll{overflow-x:auto;padding-bottom:4px}.odo-arches{min-width:780px}.odo-arch-label{display:flex;justify-content:space-between;font-size:12px;font-weight:600;letter-spacing:.08em;color:var(--muted);padding:6px 4px}.odo-row{display:flex;gap:4px;align-items:stretch}.odo-midline{height:1px;background:var(--line);margin:14px 0;position:relative}.odo-midline span{position:absolute;left:50%;top:-9px;transform:translate(-50%);background:var(--surface);padding:0 10px;font-size:11px;letter-spacing:.08em;color:var(--muted);font-weight:600}.odo-tooth{min-width:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 2px 8px;border-radius:12px;border:2px solid transparent;background:transparent;position:relative;transition:background .15s ease,opacity .15s ease}.odo-tooth.lower{flex-direction:column-reverse}.odo-tooth:hover{background:#eef4f3}.odo-tooth.selected{border-color:var(--accent);background:var(--accent-tint)}.odo-tooth-num{font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink-2)}.tooth-svg-body{width:100%;max-width:54px;height:auto;display:block}.surface-svg{width:70%;max-width:34px;height:auto;display:block}.odo-badges{position:absolute;top:4px;right:3px;display:flex;flex-direction:column;gap:2px;align-items:flex-end}.odo-tooth.lower .odo-badges{top:auto;bottom:4px}.odo-badge{min-width:16px;height:16px;padding:0 4px;border-radius:8px;color:#fff;font-size:10.5px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.odo-badge.docs{background:var(--accent)}.odo-badge.treat{background:var(--warn);border-radius:4px}.odo-footnote{display:flex;flex-wrap:wrap;gap:8px 20px;margin-top:14px;padding-top:14px;border-top:1px solid #edf1f0;font-size:13px;color:var(--muted)}.odo-footnote span{display:inline-flex;align-items:center;gap:6px}.tooth-drawer-docked-wrap{width:100%}.tooth-drawer.docked{max-width:none;height:auto;max-height:calc(100vh - 112px);border:1px solid var(--line);border-radius:18px;box-shadow:none;overflow:hidden;animation:none}.tooth-drawer.docked .tooth-drawer-header{background:var(--surface);color:var(--ink);border-bottom:1px solid #edf1f0;align-items:center;gap:14px}.tooth-drawer.docked .tooth-drawer-header>div:first-of-type{flex:1}.tooth-drawer.docked .tooth-drawer-close{background:#eef3f2;color:var(--ink)}.tooth-drawer.docked .tooth-drawer-subtitle{opacity:1;color:var(--muted)}.surface-editor{display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin:8px 0 4px}.surface-svg-edit{width:148px;height:148px;max-width:none;flex:none}.surface-brushes{flex:1 1 150px;min-width:0;display:flex;flex-direction:column;gap:6px}.surface-brush{min-height:44px;padding:0 12px;border-radius:10px;border:1.5px solid var(--line-strong);background:#fff;color:var(--ink);font-weight:600;font-size:14px;text-align:left;display:inline-flex;align-items:center;gap:8px}.surface-brush.on{border-color:var(--accent);background:var(--accent-tint)}.surface-brush i{width:14px;height:14px;border-radius:4px;display:inline-block}.tooth-badge-big{width:52px;height:52px;flex:none;border-radius:14px;border-width:2px;color:var(--ink);font-size:22px;font-weight:700;display:flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums}.surface-hint{font-size:13px;color:var(--muted);margin:4px 0 0}.home-hello{margin:0;font-size:32px;line-height:1.15;letter-spacing:-.01em}.home-sub{margin:6px 0 0;color:var(--muted);font-size:16px}.pg-two{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start}.pg-grow{flex:999 1 560px;min-width:0}.pg-side{flex:1 1 340px;max-width:460px;min-width:0}.pg-stack{display:flex;flex-direction:column;gap:20px}.pg-head-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.pg-tabs{display:flex;flex-wrap:wrap;gap:6px}.pg-card-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px}.pg-card-head h2{margin:0}.pg-link{background:none;padding:0;color:var(--accent);font-weight:600;font-size:15px}.pg-link:hover{text-decoration:underline}.pg-empty{color:var(--muted);font-size:14.5px;margin:0}.doc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}.doc-grid.small{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px}.doc-tile{display:flex;flex-direction:column;padding:0;text-align:left;border-radius:14px;border:2px solid var(--line);overflow:hidden;background:var(--surface);color:var(--ink);transition:border-color .15s ease,transform .15s ease}.doc-tile:hover{border-color:var(--accent);transform:translateY(-2px)}.doc-thumb-img,.doc-thumb-icon{display:flex;width:100%;aspect-ratio:4 / 3;object-fit:cover;align-items:center;justify-content:center;background:#0e1514}.doc-tile-body{padding:10px 12px;display:flex;flex-direction:column;gap:2px;min-width:0}.doc-kind{align-self:flex-start;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:700}.doc-name{font-weight:600;font-size:14.5px;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.doc-meta{font-size:13px;color:var(--muted)}.timeline{list-style:none;margin:0;padding:0}.timeline li{display:flex;gap:14px;position:relative}.timeline li:before{content:"";position:absolute;left:5px;top:18px;bottom:0;width:2px;background:var(--line)}.timeline li:last-child:before{display:none}.timeline-dot{width:12px;height:12px;border-radius:50%;margin-top:5px;flex:none}.timeline-body{flex:1;min-width:0;padding-bottom:18px}.timeline-date{font-size:12.5px;font-weight:700;letter-spacing:.04em;color:var(--muted)}.timeline-title{font-weight:700;text-transform:capitalize}.timeline-desc,.timeline-link{font-size:14px;color:var(--ink-2)}.timeline-link{background:none;padding:0;text-align:left;color:var(--accent);font-weight:500;word-break:break-word}.timeline-link:hover{text-decoration:underline}.gen-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.gen-card{border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:3px;background:#fbfcfb;font-size:14px;color:var(--ink-2)}.gen-card strong{font-size:16px;color:var(--ink)}.gen-icon{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:6px}.gen-sub{font-size:13px;color:var(--muted)}.next-appt{background:var(--accent);color:#fff;border-radius:18px;padding:22px}.next-appt-label{font-size:13px;font-weight:700;letter-spacing:.08em;opacity:.88}.next-appt-date{font-size:26px;font-weight:700;margin-top:6px;letter-spacing:-.01em;text-transform:capitalize}.next-appt-sub{margin-top:4px;font-size:15.5px}.next-appt-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.next-appt-actions button{min-height:44px;padding:0 16px;border-radius:10px;border:1.5px solid rgba(255,255,255,.7);background:transparent;color:#fff;font-weight:600;font-size:14.5px}.next-appt-actions button.solid{background:#fff;border-color:#fff;color:var(--accent);font-weight:700}.activity{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}.activity li{display:flex;gap:12px;align-items:flex-start}.activity-dot{width:10px;height:10px;border-radius:50%;margin-top:6px;flex:none}.activity li>div{flex:1;min-width:0}.activity strong{display:block;text-transform:capitalize}.activity span{font-size:13.5px;color:var(--muted);word-break:break-word}.activity time{font-size:13px;color:var(--muted);white-space:nowrap}.doc-tile-wrap{position:relative}.doc-tile-wrap .doc-tile{width:100%;height:100%}.doc-tile-edit{position:absolute;top:8px;right:8px;z-index:2;height:30px;padding:0 10px;border-radius:15px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:.78rem;font-weight:600;cursor:pointer;box-shadow:0 1px 4px #00000040}.doc-tile-edit:hover{border-color:var(--accent)}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:1rem}.login-card{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;padding:2.5rem 2rem;max-width:380px;width:100%;text-align:center}.login-logo{width:72px;height:72px;border-radius:12px;margin-bottom:1rem;object-fit:cover}.login-card h1{font-size:1.4rem;color:#333;margin:0}.login-subtitle{color:#888;font-size:.85rem;margin:.25rem 0 2rem}.login-card form{text-align:left}.login-card label{display:block;font-size:.8rem;font-weight:600;color:#555;margin:0 0 .4rem}.login-card input{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:8px;font-size:1rem;margin-bottom:1.25rem;box-sizing:border-box;transition:border-color .2s ease}.login-card input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea26}.login-error{color:#c00;background:#fdecea;border-radius:6px;padding:.6rem .8rem;font-size:.85rem;margin:-.5rem 0 1rem}.login-hint{margin:-.9rem 0 1rem;font-size:.75rem;color:#999}.login-info{color:#155724;background:#d4edda;border-radius:6px;padding:.6rem .8rem;font-size:.85rem;margin:-.5rem 0 1rem}.login-debug{background:#fff3cd;color:#664d03;border-radius:6px;padding:.6rem .8rem;font-size:.8rem;margin:0 0 1rem}.login-debug a{color:#664d03;font-weight:700}.login-links{display:flex;flex-direction:column;gap:.5rem;margin-top:1.25rem}.login-card .login-links button{background:none;color:#667eea;padding:.25rem;font-size:.85rem;font-weight:500;text-decoration:underline}.login-card .login-links button:hover:not(:disabled){background:none;color:#4a5bc4}.login-card form button{width:100%;background:#667eea;color:#fff;border:none;padding:.85rem;border-radius:8px;font-weight:600;font-size:1rem;cursor:pointer;transition:background .2s ease}.login-card form button:hover:not(:disabled){background:#5568d3}.login-card form button:disabled{opacity:.6;cursor:not-allowed}.appointments-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:900;display:flex;align-items:center;justify-content:center;padding:1rem}.appointments-modal{background:#fff;border-radius:16px;max-width:520px;width:100%;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #0000004d}.appointments-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;background:linear-gradient(135deg,#007aff,#0051d5);color:#fff;border-radius:16px 16px 0 0}.appointments-header h2{margin:0;font-size:1.3rem}.appointments-close{background:#ffffff40;border:none;color:#fff;border-radius:50%;width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease}.appointments-close:hover{background:#fff6}.appointments-body{padding:1.5rem;overflow-y:auto}.next-appointment-banner{background:linear-gradient(135deg,#e3f2fd,#bbdefb);border:1px solid #90caf9;border-radius:10px;padding:1.25rem;margin-bottom:1.5rem;text-align:center}.next-appointment-label{display:inline-block;background:#007aff;color:#fff;font-size:.7rem;font-weight:700;letter-spacing:.05em;padding:.25rem .75rem;border-radius:12px;margin-bottom:.5rem}.next-appointment-date{font-size:1.1rem;font-weight:700;color:#0051d5;margin:.5rem 0;text-transform:capitalize}.next-appointment-location{color:#555;margin:0 0 1rem;font-size:.9rem}.btn-ics{background:#007aff;color:#fff;border:none;padding:.75rem 1.25rem;border-radius:8px;font-weight:600;cursor:pointer;transition:all .2s ease}.btn-ics:hover{background:#0051d5;transform:translateY(-1px)}.appointment-form{background:#f9fbff;border:1px solid #d6e6ff;border-radius:10px;padding:1.25rem;margin-bottom:1.5rem}.appointment-form h4{margin:0 0 1rem;color:#0051d5}.appointment-form label{display:block;font-size:.8rem;font-weight:600;color:#666;margin:.75rem 0 .3rem}.appointment-form-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.6rem}.appointment-form input,.appointment-form textarea{width:100%;padding:.6rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem;font-family:inherit;box-sizing:border-box}.appointment-form textarea{resize:vertical}.appointment-form-actions{display:flex;gap:.5rem;margin-top:1rem}.btn-save-appointment{flex:1;background:#007aff;color:#fff;border:none;padding:.75rem;border-radius:8px;font-weight:600;cursor:pointer}.btn-save-appointment:hover:not(:disabled){background:#0051d5}.btn-save-appointment:disabled{opacity:.6;cursor:not-allowed}.btn-cancel-edit-appt{background:#fff;color:#888;border:1px solid #ccc;padding:.75rem 1.25rem;border-radius:8px;font-weight:600;cursor:pointer}.btn-cancel-edit-appt:hover{background:#f5f5f5}.appointments-list-title{color:#333;margin-bottom:.75rem}.appointments-loading,.empty-appointments{text-align:center;color:#999;font-style:italic;padding:1.5rem 0}.appointments-list{list-style:none;margin:0;padding:0}.appointment-item{padding:1rem;border-left:3px solid #007AFF;background:#fafafa;border-radius:6px;margin-bottom:.75rem}.appointment-cancelled{border-left-color:#ccc;opacity:.65}.appointment-item-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem}.appointment-item-date{font-weight:700;color:#0051d5;font-size:.9rem;text-transform:capitalize}.appointment-status-badge{background:#999;color:#fff;font-size:.65rem;font-weight:700;padding:.15rem .5rem;border-radius:10px}.appointment-item-location,.appointment-item-reason,.appointment-item-notes{margin:.4rem 0 0;font-size:.85rem;color:#555}.appointment-item-actions{display:flex;gap:.4rem;margin-top:.6rem}.appointment-item-actions button{background:#fff;border:1px solid #ddd;border-radius:6px;padding:.4rem .6rem;cursor:pointer;font-size:.9rem;transition:all .2s ease}.appointment-item-actions button:hover{background:#eef4ff;border-color:#007aff}.confirm-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:1100;display:flex;align-items:center;justify-content:center;padding:1rem}.confirm-box{background:#fff;border-radius:12px;padding:1.5rem;max-width:360px;width:100%;box-shadow:0 10px 40px #0000004d}.confirm-box p{margin:0 0 1.25rem;color:#333;line-height:1.5;font-size:.95rem}.confirm-actions{display:flex;gap:.5rem}.confirm-actions button{flex:1}.btn-confirm-remove{background:#f44;color:#fff;border:none;padding:.75rem 1.25rem;border-radius:8px;font-weight:600;cursor:pointer}.btn-confirm-remove:hover{background:#c00}@media (max-width: 500px){.appointment-form-row{grid-template-columns:1fr}}.contacts-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1rem}.contacts-modal{background:#fff;border-radius:16px;max-width:480px;width:100%;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #0000004d}.contacts-header{display:flex;justify-content:space-between;align-items:center;padding:1.1rem 1.4rem;background:linear-gradient(135deg,#25a56a,#128c7e);color:#fff;border-radius:16px 16px 0 0}.contacts-header h2{margin:0;font-size:1.15rem}.contacts-close{background:#ffffff40;border:none;color:#fff;border-radius:50%;width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer}.contacts-body{padding:1.25rem 1.4rem 1.4rem;overflow-y:auto}.contacts-body h4{margin:1.1rem 0 .2rem;font-size:.95rem;color:#1d4e47}.contacts-body label{display:block;font-size:.78rem;font-weight:600;color:#666;margin:.6rem 0 .25rem}.contacts-body input[type=text],.contacts-body input[type=tel]{width:100%;padding:.6rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem;font-family:inherit;box-sizing:border-box}.contacts-muted{color:#777;font-size:.82rem;margin:.2rem 0}.contacts-error{margin-top:.8rem;padding:.5rem .7rem;background:#fff3cd;color:#664d03;border-radius:6px;font-size:.85rem}.contact-card{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.85rem 1rem;border:1px solid #e2e8e6;border-radius:12px;margin-bottom:.7rem}.contact-card strong{font-size:.92rem}.contact-card p{margin:.15rem 0 0;font-size:.85rem;color:#555;word-break:break-word}.btn-whatsapp{display:inline-flex;align-items:center;gap:6px;padding:.55rem .95rem;background:#25d366;color:#fff;border-radius:10px;font-weight:700;font-size:.88rem;text-decoration:none;white-space:nowrap}.btn-whatsapp:hover{background:#1ebe5b}.btn-contact-add,.btn-contact-edit{padding:.5rem .9rem;background:#fff;border:1px solid #c8d1cf;border-radius:10px;font-weight:600;font-size:.85rem;cursor:pointer;white-space:nowrap}.btn-contact-add:hover,.btn-contact-edit:hover{border-color:#128c7e}.btn-contact-save{padding:.7rem 1.2rem;background:#128c7e;color:#fff;border:none;border-radius:10px;font-weight:700;cursor:pointer}.btn-contact-save:disabled{opacity:.6}.contacts-actions{display:flex;gap:.6rem;margin-top:1.1rem}.pending-actions{display:flex;gap:.4rem;flex-shrink:0}.btn-pending-approve,.btn-pending-reject{padding:.5rem .9rem;border:none;border-radius:10px;font-weight:700;font-size:.85rem;color:#fff;cursor:pointer}.btn-pending-approve{background:#128c7e}.btn-pending-reject{background:#e04444}.btn-pending-approve:disabled,.btn-pending-reject:disabled{opacity:.6}.appt-share{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.6rem}.appt-share a,.appt-share button{display:inline-flex;align-items:center;gap:5px;padding:.4rem .7rem;border-radius:8px;border:1px solid #c8d1cf;background:#fff;color:#1a2b29;font-size:.78rem;font-weight:600;text-decoration:none;cursor:pointer}.appt-share a:hover,.appt-share button:hover{border-color:#128c7e}.appt-share .wa{background:#e8f8ef;border-color:#9ddcb9;color:#0e6b3c}.appt-share .disabled{opacity:.55;cursor:help}.appt-saved{margin-bottom:1rem;padding:.8rem 1rem;border:1px solid #9ddcb9;background:#f1fbf5;border-radius:12px}.appt-saved p{margin:0 0 .2rem;font-weight:700;font-size:.9rem;color:#0e6b3c}.general-treatments-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:900;display:flex;align-items:center;justify-content:center;padding:1rem}.general-treatments-modal{background:#fff;border-radius:16px;max-width:560px;width:100%;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #0000004d}.general-treatments-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;background:linear-gradient(135deg,#26a69a,#00796b);color:#fff;border-radius:16px 16px 0 0}.general-treatments-header h2{margin:0;font-size:1.3rem}.general-treatments-close{background:#ffffff40;border:none;color:#fff;border-radius:50%;width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease}.general-treatments-close:hover{background:#fff6}.general-treatments-tabs{display:flex;border-bottom:1px solid #eee;background:#fafafa}.general-treatments-tabs button{flex:1;padding:.9rem .5rem;border:none;background:transparent;font-weight:600;font-size:.85rem;color:#777;cursor:pointer;border-bottom:3px solid transparent;transition:all .2s ease}.general-treatments-tabs button:hover{color:#00796b}.general-treatments-tabs button.active{color:#00796b;border-bottom-color:#00796b}.general-treatments-body{padding:1.5rem;overflow-y:auto}.general-treatment-form{background:#f2fbfa;border:1px solid #b2dfdb;border-radius:10px;padding:1.25rem;margin-bottom:1.5rem}.general-treatment-form h4{margin:0 0 1rem;color:#00796b}.general-treatment-form label{display:block;font-size:.8rem;font-weight:600;color:#666;margin:.75rem 0 .3rem}.general-form-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.general-treatment-form input,.general-treatment-form select,.general-treatment-form textarea{width:100%;padding:.6rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem;font-family:inherit;box-sizing:border-box}.general-treatment-form textarea{resize:vertical}.ferula-subtype-options{display:flex;gap:.5rem;flex-wrap:wrap}.ferula-subtype-pill{padding:.5rem 1rem;border-radius:20px;border:2px solid #ddd;background:#fff;color:#555;font-weight:600;font-size:.85rem;cursor:pointer;transition:all .2s ease}.ferula-subtype-pill:hover{border-color:#00796b}.ferula-subtype-pill.selected{background:#e0f2f1;border-color:#00796b;color:#00796b}.btn-save-general-treatment{width:100%;margin-top:1.25rem;background:#00796b;color:#fff;border:none;padding:.75rem;border-radius:8px;font-weight:600;cursor:pointer;transition:background .2s ease}.btn-save-general-treatment:hover:not(:disabled){background:#00574b}.btn-save-general-treatment:disabled{opacity:.6;cursor:not-allowed}.general-list-title{color:#333;margin-bottom:.75rem}.general-loading,.empty-general{text-align:center;color:#999;font-style:italic;padding:1.5rem 0}.general-treatment-list{list-style:none;margin:0;padding:0}.general-treatment-item{padding:1rem;border-left:3px solid #00796b;background:#fafafa;border-radius:6px;margin-bottom:.75rem}.general-treatment-item-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem}.general-treatment-date{font-weight:700;color:#00796b;font-size:.9rem}.general-treatment-type-badge{display:inline-block;margin-left:.5rem;background:#00796b;color:#fff;font-size:.7rem;font-weight:600;padding:.15rem .5rem;border-radius:10px}.general-treatment-actions{display:flex;gap:.4rem}.general-action-btn{position:relative;background:#fff;border:1px solid #ddd;border-radius:6px;width:30px;height:30px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.general-action-btn:hover{background:#e0f2f1;border-color:#00796b}.general-doc-count{position:absolute;top:-6px;right:-6px;background:#007aff;color:#fff;font-size:.6rem;font-weight:700;min-width:14px;height:14px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:0 2px}.general-treatment-dentist,.general-treatment-desc{margin:.4rem 0 0;font-size:.85rem;color:#555}.general-extra-details{margin-top:.75rem;padding:.75rem;background:#fff;border:1px solid #eee;border-radius:6px}.general-extra-row{display:flex;justify-content:space-between;gap:1rem;padding:.3rem 0;font-size:.82rem;border-bottom:1px solid #f5f5f5}.general-extra-row:last-child{border-bottom:none}.general-extra-label{color:#888;font-weight:600;flex-shrink:0}.general-extra-value{color:#333;text-align:right;word-break:break-word}@media (max-width: 500px){.general-form-row{grid-template-columns:1fr}}.lab-box{margin-top:.9rem;padding:.75rem .9rem .9rem;border:1px dashed #b9c6e4;border-radius:10px;background:#f6f9ff}.lab-box h5{margin:0 0 .2rem;font-size:.9rem;color:#274690}.material-chips{display:flex;flex-wrap:wrap;gap:.35rem;margin:.2rem 0 .5rem}.material-chip{padding:.25rem .6rem;border-radius:14px;border:1.5px solid #ddd;background:#fff;font-size:.72rem;font-weight:600;color:#555;cursor:pointer}.material-chip.on{background:#e3f2fd;border-color:#007aff;color:#0b5ea8}.general-file-list{list-style:none;margin:.4rem 0 0;padding:0;font-size:.8rem;color:#555;word-break:break-all}.general-msg{margin:.75rem 0 0;padding:.5rem .7rem;border-radius:6px;font-size:.82rem}.general-msg-error{background:#fff3cd;color:#664d03}.general-delete-confirm{margin-top:.6rem;padding:.6rem .75rem;border:1px solid #e0b4b4;background:#fff5f5;border-radius:8px}.general-delete-confirm p{margin:0 0 .4rem;font-size:.85rem;color:#7a1c1c}.general-delete-files{display:flex;gap:.4rem;align-items:flex-start;font-size:.78rem;color:#444;margin-bottom:.5rem}.general-delete-actions{display:flex;gap:.5rem}.general-delete-actions button{flex:1;padding:.45rem;border-radius:6px;border:1px solid #ccc;background:#fff;font-weight:600;cursor:pointer}.general-delete-actions button.danger{background:#f44;border-color:#f44;color:#fff}.settings-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:900;display:flex;align-items:center;justify-content:center;padding:1rem}.settings-modal{background:#fff;border-radius:16px;max-width:440px;width:100%;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #0000004d}.settings-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;background:linear-gradient(135deg,#555,#333);color:#fff;border-radius:16px 16px 0 0}.settings-header h2{margin:0;font-size:1.3rem}.settings-close{background:#ffffff40;border:none;color:#fff;border-radius:50%;width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease}.settings-close:hover{background:#fff6}.settings-body{padding:1.5rem;overflow-y:auto;display:flex;flex-direction:column;gap:1.5rem}.settings-section{background:#f9f9f9;border:1px solid #eee;border-radius:10px;padding:1.25rem}.settings-section h4{margin:0 0 1rem;color:#333}.settings-section label{display:block;font-size:.8rem;font-weight:600;color:#666;margin:.75rem 0 .3rem}.settings-section input{width:100%;padding:.6rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem;box-sizing:border-box}.settings-msg{margin:.75rem 0 0;font-size:.85rem;padding:.5rem .75rem;border-radius:6px}.settings-msg-success{background:#d4edda;color:#155724}.settings-msg-error{background:#f8d7da;color:#721c24}.settings-section button{width:100%;margin-top:1rem;background:#333;color:#fff;border:none;padding:.75rem;border-radius:8px;font-weight:600;cursor:pointer;transition:background .2s ease}.settings-section button:hover:not(:disabled){background:#111}.settings-section button:disabled{opacity:.6;cursor:not-allowed}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5}.app-container{display:flex;flex-direction:column;min-height:100vh}.navbar{background:linear-gradient(135deg,#007aff,#0051d5);color:#fff;padding:1.5rem 2rem;box-shadow:0 2px 8px #0000001a;display:flex;justify-content:space-between;align-items:center}.nav-brand{display:flex;align-items:center;gap:1rem}.navbar-logo{height:60px;width:auto;border-radius:8px;background:#fff;padding:4px}.brand-text h1{font-size:1.8rem;font-weight:700;margin-bottom:.25rem}.brand-text p{font-size:.9rem;opacity:.9}.nav-menu{display:flex;gap:1rem}.nav-menu button{background:#fff3;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:6px;cursor:pointer;font-size:1rem;font-weight:500;transition:all .3s ease}.nav-menu button:hover{background:#ffffff4d}.nav-menu button.active{background:#fff;color:#007aff}.navbar-actions{display:flex;align-items:center;gap:.75rem}.admin-patient-select{background:#fff3;color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:6px;padding:.7rem .75rem;font-weight:600;max-width:200px;cursor:pointer}.admin-patient-select option{color:#333}.btn-appointments-nav{background:#fff3;color:#fff;border:1px solid rgba(255,255,255,.4);padding:.75rem 1.5rem;border-radius:6px;cursor:pointer;font-weight:600;transition:all .3s ease}.btn-appointments-nav:hover{background:#ffffff4d;transform:scale(1.05)}.btn-qr-nav{background:#ff9800;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:6px;cursor:pointer;font-weight:600;transition:all .3s ease}.btn-qr-nav:hover{background:#f57c00;transform:scale(1.05)}.btn-logout-nav{background:#ffffff26;color:#fff;border:none;width:42px;height:42px;border-radius:50%;cursor:pointer;font-size:1.1rem;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.btn-logout-nav:hover{background:#ffffff4d;transform:scale(1.05)}.main-content{flex:1;padding:2rem;max-width:1200px;margin:0 auto;width:100%}.card{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px #0000001a;margin-bottom:1.5rem}.card h2{font-size:1.5rem;margin-bottom:1rem;color:#333}.card h3{font-size:1.2rem;margin:1rem 0 .5rem;color:#333}.table-container{overflow-x:auto}table{width:100%;border-collapse:collapse;margin-top:1rem}thead{background-color:#f0f0f0}th{padding:1rem;text-align:left;font-weight:600;color:#333;border-bottom:2px solid #ddd}td{padding:1rem;border-bottom:1px solid #eee;color:#666}tbody tr:hover{background-color:#fafafa}button{padding:.75rem 1.5rem;border:none;border-radius:6px;font-size:1rem;cursor:pointer;font-weight:500;transition:all .3s ease}.btn-primary{background-color:#007aff;color:#fff}.btn-primary:hover{background-color:#0051d5}.btn-secondary{background-color:#e0e0e0;color:#333}.btn-secondary:hover{background-color:#d0d0d0}.btn-danger{background-color:#ff3b30;color:#fff}.btn-danger:hover{background-color:#d62a1e}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem;margin-bottom:2rem}.stat-card{background:#fff;padding:1.5rem;border-radius:12px;box-shadow:0 2px 8px #0000001a;text-align:center}.stat-card .stat-value{font-size:2.5rem;font-weight:700;color:#007aff;margin-bottom:.5rem}.stat-card .stat-label{color:#666;font-size:.95rem}label{display:block;margin-bottom:.5rem;font-weight:500;color:#333}input,select,textarea{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:6px;font-size:1rem;font-family:inherit;transition:border-color .3s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:#007aff;box-shadow:0 0 0 3px #007aff1a}.loading{text-align:center;padding:2rem;color:#666}.empty-state{text-align:center;padding:2rem;color:#999}.empty-state p{margin-bottom:1rem}.qr-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.qr-modal{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:500px;width:90%;max-height:90vh;overflow-y:auto;animation:slideUp .3s ease}@keyframes slideUp{0%{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}.qr-modal-header{display:flex;justify-content:space-between;align-items:center;padding:2rem;border-bottom:2px solid #f0f0f0}.qr-modal-header h2{margin:0;color:#333;font-size:1.5rem}.qr-close-btn{background:none;border:none;font-size:2rem;cursor:pointer;color:#999;padding:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;transition:all .3s ease}.qr-close-btn:hover{color:#333;transform:rotate(90deg)}.qr-modal-content{padding:2rem}.qr-instruction{text-align:center;color:#666;margin-bottom:2rem;line-height:1.6}.qr-display{display:flex;justify-content:center;margin:2rem 0}.qr-code-wrapper{background:#fff;border:1px solid #eee;border-radius:12px;padding:1.25rem;box-shadow:0 2px 10px #0000000f}.qr-placeholder{background:#f5f5f5;border:2px dashed #007AFF;padding:2rem;border-radius:8px;font-size:1.5rem;color:#007aff;font-weight:600;text-align:center;min-width:250px}.qr-code-text{margin:2rem 0;padding:1.5rem;background:#f9f9f9;border-radius:8px}.qr-code-text h3{color:#333;margin-bottom:1rem;font-size:1.1rem}.code-copy-box{display:flex;gap:.5rem;align-items:center;background:#fff;padding:1rem;border-radius:6px;border:1px solid #ddd}.code-copy-box code{font-family:monospace;color:#007aff;font-weight:600;flex:1;overflow:auto;font-size:.9rem}.btn-copy{background:#007aff;color:#fff;border:none;padding:.75rem 1rem;border-radius:6px;cursor:pointer;font-weight:600;white-space:nowrap;transition:all .3s ease}.btn-copy:hover{background:#0051d5}.qr-info{margin-top:2rem;padding:1.5rem;background:#e8f4fd;border-left:4px solid #007AFF;border-radius:6px}.qr-info h3{color:#007aff;margin-bottom:1rem;font-size:1.1rem}.qr-info ul{margin:0;padding-left:1.5rem;color:#666;line-height:1.8}.qr-info li{margin-bottom:.5rem}.dentist-access-container{max-width:1000px;margin:0 auto}.dentist-access-container h1{text-align:center;color:#333;margin-bottom:.5rem;font-size:2.2rem}.subtitle{text-align:center;color:#666;font-size:1.1rem;margin-bottom:2rem}.access-content{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-bottom:3rem}.qr-section,.code-section{background:#fff;padding:2rem;border-radius:12px;box-shadow:0 2px 8px #0000001a;text-align:center}.qr-section h2,.code-section h2{color:#007aff;margin-bottom:.5rem;font-size:1.5rem}.description{color:#666;margin-bottom:1.5rem;font-size:.95rem}.qr-container{background:#f9f9f9;padding:1.5rem;border-radius:8px;margin:1rem 0;display:flex;justify-content:center}.code-box{background:#f5f5f5;padding:1.5rem;border-radius:8px;margin:1rem 0;font-family:monospace;font-size:1.1rem;letter-spacing:.1em;display:flex;align-items:center;justify-content:space-between;gap:1rem}.code-box code{flex:1;word-break:break-all;color:#007aff;font-weight:600}.btn-copy{background:#007aff;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:6px;cursor:pointer;font-weight:600;white-space:nowrap;transition:all .3s ease}.btn-copy:hover{background:#0051d5;transform:scale(1.05)}.info-box{background:#e8f4fd;border-left:4px solid #007AFF;padding:1.5rem;border-radius:6px;margin-top:1.5rem;text-align:left}.info-box h3{color:#007aff;margin-bottom:1rem;font-size:1.1rem}.info-box ol{margin-left:1.5rem;color:#666;line-height:1.8}.info-box li{margin-bottom:.5rem}.features-section h2{text-align:center;color:#333;margin:2rem 0 1.5rem;font-size:1.8rem}.features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem;margin-bottom:2rem}.feature-card{background:#fff;padding:1.5rem;border-radius:12px;box-shadow:0 2px 8px #0000001a;text-align:center;transition:all .3s ease}.feature-card:hover{transform:translateY(-5px);box-shadow:0 8px 16px #007aff33}.feature-icon{font-size:3rem;display:block;margin-bottom:.5rem}.feature-card h3{color:#333;margin-bottom:.5rem;font-size:1.1rem}.feature-card p{color:#666;font-size:.9rem}.security-note{background:linear-gradient(135deg,#fff3cd,#fff9e6);border-left:4px solid #ffc107;padding:1.5rem;border-radius:8px;margin-top:2rem}.security-note h3{color:#ff9800;margin-bottom:.5rem}.security-note p{color:#666;margin:0}@media (max-width: 768px){.navbar{flex-direction:column;text-align:center}.nav-brand{flex-direction:column;gap:.5rem}.navbar-logo{height:50px}.nav-menu{margin-top:1rem;width:100%;justify-content:center;flex-wrap:wrap}.main-content{padding:1rem}.stats-grid,.access-content{grid-template-columns:1fr}table{font-size:.9rem}th,td{padding:.75rem}}.dentist-login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:1rem}.login-card{background:#fff;border-radius:12px;padding:2.5rem;box-shadow:0 20px 60px #0000004d;max-width:400px;width:100%}.login-card h1{text-align:center;color:#333;margin-bottom:.5rem;font-size:2rem}.login-card .subtitle{text-align:center;color:#666;margin-bottom:2rem;font-size:.95rem}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.75rem;font-weight:600;color:#333}.form-input,.form-file-input{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:6px;font-size:1rem;font-family:inherit;transition:all .3s ease}.form-input:focus,.form-file-input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.file-name{color:#667eea;font-size:.9rem;margin-top:.5rem;font-weight:500}.message{padding:1rem;border-radius:6px;margin-top:1rem;text-align:center;font-weight:500}.message.success{background:#d4edda;color:#155724;border:1px solid #c3e6cb}.message.error{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.info-box{background:#e7f3ff;border-left:4px solid #667eea;padding:1rem;border-radius:6px;margin-top:1.5rem;color:#333;text-align:center}.dentist-upload-container{max-width:1000px;margin:0 auto;padding:2rem 1rem;display:grid;grid-template-columns:1fr 1fr;gap:2rem}.upload-card{background:#fff;padding:2rem;border-radius:12px;box-shadow:0 2px 8px #0000001a}.upload-card h1{color:#333;margin-bottom:.5rem;font-size:1.8rem}.upload-info{background:#fff;padding:2rem;border-radius:12px;box-shadow:0 2px 8px #0000001a}.upload-info h2{color:#333;margin-bottom:1.5rem;font-size:1.5rem}.format-grid{display:grid;grid-template-columns:1fr;gap:1rem}.format-item{display:flex;align-items:center;padding:1rem;background:#f9f9f9;border-radius:6px;border-left:4px solid #667eea}.format-item span{font-size:1.5rem;margin-right:1rem}.format-item strong{color:#333;margin-right:.5rem}.format-item p{color:#666;margin:0;font-size:.9rem}@media (max-width: 768px){.dentist-upload-container,.form-row{grid-template-columns:1fr}.login-card{padding:1.5rem}}:root{--bg: #f3f5f4;--surface: #ffffff;--ink: #12201e;--ink-2: #3f514e;--muted: #5b6b68;--line: #dde4e2;--line-strong: #c9d4d1;--accent: #0b6b63;--accent-ink: #ffffff;--accent-tint: #e3f1ef;--warn: #a25a00;--danger: #b3261e;--stage: #0a100f;--stage-2: #121c1b;--stage-3: #0f1716;--stage-line: #22312f;--stage-line-2: #2e4240;--stage-ink: #e6efed;--stage-muted: #9db0ac;--stage-accent: #5eead4;--stage-accent-bg: #0f3b37;--radius: 14px}body{font-family:Figtree,system-ui,-apple-system,Segoe UI,sans-serif;background:var(--bg);color:var(--ink)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.hd-nav{background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}.hd-nav-inner{max-width:1680px;margin:0 auto;padding:12px 24px;display:flex;flex-wrap:nowrap;align-items:center;gap:12px 20px}.hd-brand{display:flex;align-items:center;gap:12px;flex-shrink:0;white-space:nowrap}.hd-brand img{height:44px;width:44px;object-fit:contain;border-radius:12px;border:1px solid var(--line);background:#fff}.hd-brand strong{display:block;font-size:16px;letter-spacing:.02em}.hd-brand span{display:block;font-size:12.5px;color:var(--muted)}.hd-tabs{display:flex;flex-wrap:nowrap;gap:4px;flex:1 1 auto;min-width:0}.hd-tab{white-space:nowrap;min-height:44px;padding:0 14px;border-radius:10px;background:transparent;color:var(--ink-2);font-weight:500;font-size:15px;display:inline-flex;align-items:center;gap:8px}.hd-tab:hover{background:#eef3f2}.hd-tab.active{background:var(--accent-tint);color:var(--accent);font-weight:600}.hd-actions{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;flex-shrink:0;margin-left:auto}.hd-btn-alert{border-color:#d99a00;background:#fff6dc}.hd-btn-alert b{background:#d99a00;color:#fff;border-radius:10px;padding:1px 7px;font-size:12px}.hd-btn{min-height:44px;padding:0 16px;border-radius:10px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);font-weight:600;font-size:14px;display:inline-flex;align-items:center;gap:8px;transition:border-color .15s ease,background .15s ease}.hd-btn:hover{border-color:var(--accent)}.hd-btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.hd-btn.primary:hover{background:#095a54}.hd-btn.icon{width:44px;padding:0;justify-content:center}.hd-select{min-height:44px;width:auto;max-width:220px;border-radius:10px;border:1px solid var(--line-strong);background:var(--surface);font-weight:600;font-size:14px;padding:0 10px}.hd-page{max-width:1360px;margin:0 auto;padding:24px 24px 56px;width:100%;display:flex;flex-direction:column;gap:20px}.hd-page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}.hd-page-head h1{font-size:30px;line-height:1.15;letter-spacing:-.01em;margin:0}.hd-page-head p{margin:4px 0 0;color:var(--muted)}.hd-card{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:20px}.hd-card h2{margin:0 0 14px;font-size:19px;color:var(--ink)}.hd-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}.hd-stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}.hd-stat .label{font-size:13px;color:var(--muted);font-weight:500}.hd-stat .value{font-size:28px;font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums}.hd-stat .hint{font-size:13px;color:var(--muted)}.hd-chip{min-height:44px;padding:0 14px;border-radius:999px;border:1.5px solid var(--line-strong);background:var(--surface);color:var(--ink);font-weight:600;font-size:14px}.hd-chip:hover{border-color:var(--accent)}.hd-chip.on{background:var(--accent);border-color:var(--accent);color:#fff}@media (max-width: 1500px){.hd-brand span{display:none}.hd-select{max-width:170px}}@media (max-width: 1350px){.hd-actions .hd-label{display:none}.hd-actions .hd-btn:not(.icon){padding:0 12px}}@media (max-width: 1150px){.hd-tab:not(.active) .hd-label{display:none}.hd-tab{padding:0 12px}}@media (max-width: 768px){.hd-nav-inner{padding:10px 14px;flex-wrap:wrap}.hd-tabs{order:3;flex-basis:100%;overflow-x:auto}.hd-page{padding:16px 14px 40px}}.tooth-drawer{max-width:460px;font-family:Figtree,system-ui,sans-serif}.tooth-drawer-header{background:var(--accent)}.tooth-drawer-tabs button:hover,.tooth-drawer-tabs button.active{color:var(--accent)}.tooth-drawer-tabs button.active{border-bottom-color:var(--accent)}.main-content.main-content-wide{max-width:none;padding:0}
