:root{--navy:#0a1628;--navy2:#0f2040;--teal:#0d9488;--teal2:#14b8a6;--teal3:#ccfbf1;--white:#ffffff;--gray50:#f8fafc;--gray100:#f1f5f9;--gray200:#e2e8f0;--gray400:#94a3b8;--gray600:#475569;--gray700:#334155;--gray800:#1e293b;--red:#ef4444;--amber:#f59e0b;--green:#10b981;--blue:#3b82f6;--purple:#8b5cf6;--sidebar-w:240px;}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'DM Sans',sans-serif;background:var(--gray50);color:var(--gray800);display:flex;height:100vh;overflow:hidden;}
/* LOGIN */
#login-screen{position:fixed;inset:0;z-index:9999;background:linear-gradient(135deg,#0a1628 0%,#0f2040 40%,#0a2840 100%);display:flex;align-items:center;justify-content:center;}
#login-screen.hidden{display:none;}
.login-bg-pattern{position:absolute;inset:0;opacity:0.04;background-image:radial-gradient(circle at 2px 2px,white 1px,transparent 0);background-size:32px 32px;}
.login-card{background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.1);backdrop-filter:blur(20px);border-radius:20px;padding:44px 48px;width:420px;max-width:95vw;box-shadow:0 32px 80px rgba(0,0,0,0.5);animation:loginFadeIn 0.6s ease;position:relative;z-index:1;}
@keyframes loginFadeIn{from{opacity:0;transform:translateY(30px);}to{opacity:1;transform:translateY(0);}}
.login-logo{text-align:center;margin-bottom:32px;}.login-logo h1{font-family:'Playfair Display',serif;font-size:2rem;color:white;}.login-logo h1 span{color:var(--teal2);}.login-logo p{color:rgba(255,255,255,0.5);font-size:0.82rem;margin-top:6px;}
.login-logo-icon{width:64px;height:64px;background:linear-gradient(135deg,var(--teal),#0ea5e9);border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:1.8rem;margin:0 auto 16px;box-shadow:0 8px 24px rgba(13,148,136,0.4);}
.login-field{margin-bottom:18px;}.login-field label{display:block;color:rgba(255,255,255,0.65);font-size:0.8rem;font-weight:500;margin-bottom:8px;}
.login-input{width:100%;padding:12px 16px;background:rgba(255,255,255,0.07);border:1.5px solid rgba(255,255,255,0.12);border-radius:10px;color:white;font-size:0.92rem;font-family:inherit;outline:none;transition:all 0.2s;}
.login-input:focus{border-color:var(--teal2);background:rgba(255,255,255,0.1);box-shadow:0 0 0 3px rgba(20,184,166,0.2);}.login-input::placeholder{color:rgba(255,255,255,0.3);}
.login-btn{width:100%;padding:13px;background:linear-gradient(135deg,var(--teal),var(--teal2));border:none;border-radius:10px;color:white;font-size:0.95rem;font-weight:600;cursor:pointer;font-family:inherit;margin-top:6px;transition:all 0.2s;box-shadow:0 4px 16px rgba(13,148,136,0.4);}
.login-btn:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(13,148,136,0.5);}
.login-error{background:rgba(239,68,68,0.15);border:1px solid rgba(239,68,68,0.3);color:#fca5a5;border-radius:8px;padding:10px 14px;font-size:0.82rem;margin-bottom:14px;display:none;}
.login-hint{margin-top:20px;padding:14px;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.08);border-radius:10px;color:rgba(255,255,255,0.4);font-size:0.75rem;text-align:center;line-height:1.7;}
.login-hint strong{color:rgba(255,255,255,0.6);}
/* APP */
#app-shell{display:flex;width:100%;height:100vh;overflow:hidden;}#app-shell.hidden{display:none;}
/* SIDEBAR */
#sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);background:var(--navy);height:100vh;display:flex;flex-direction:column;position:relative;z-index:100;}
.sidebar-logo{padding:20px 20px 16px;border-bottom:1px solid rgba(255,255,255,0.07);}.sidebar-logo h1{font-family:'Playfair Display',serif;color:var(--white);font-size:1.3rem;}.sidebar-logo h1 span{color:var(--teal2);}.sidebar-logo small{display:block;color:var(--gray400);font-size:0.68rem;margin-top:2px;}
.sidebar-nav{flex:1;padding:10px 0;overflow-y:auto;}.nav-section{font-size:0.6rem;text-transform:uppercase;letter-spacing:1.2px;color:var(--gray400);padding:12px 20px 5px;}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 20px;cursor:pointer;color:rgba(255,255,255,0.62);font-size:0.85rem;transition:all 0.18s;position:relative;}
.nav-item:hover{background:rgba(255,255,255,0.06);color:var(--white);}.nav-item.active{background:linear-gradient(90deg,rgba(13,148,136,0.25),rgba(13,148,136,0.05));color:var(--teal2);font-weight:600;}
.nav-item.active::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--teal2);border-radius:0 2px 2px 0;}.nav-icon{font-size:1rem;width:20px;text-align:center;}
.sidebar-bottom{padding:12px 14px;border-top:1px solid rgba(255,255,255,0.07);}.doc-badge{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.doc-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--teal),var(--blue));display:flex;align-items:center;justify-content:center;color:white;font-weight:700;font-size:0.85rem;flex-shrink:0;}
.doc-info strong{display:block;color:var(--white);font-size:0.82rem;}.doc-info span{font-size:0.68rem;color:var(--gray400);}
.sidebar-actions{display:flex;gap:6px;flex-wrap:wrap;}
.btn-sidebar-sm{flex:1;display:flex;align-items:center;justify-content:center;gap:4px;padding:7px 8px;border-radius:7px;font-size:0.72rem;font-weight:600;cursor:pointer;border:none;transition:all 0.18s;font-family:inherit;}
.btn-logout{background:rgba(239,68,68,0.15);color:#fca5a5;border:1px solid rgba(239,68,68,0.2);}.btn-logout:hover{background:rgba(239,68,68,0.25);}
.btn-backup-s{background:rgba(20,184,166,0.15);color:var(--teal2);border:1px solid rgba(20,184,166,0.2);}.btn-backup-s:hover{background:rgba(20,184,166,0.25);}
/* MAIN */
#main{flex:1;display:flex;flex-direction:column;overflow:hidden;}
#topbar{background:var(--white);border-bottom:1px solid var(--gray200);padding:0 20px;height:56px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;}
.topbar-left{display:flex;align-items:center;gap:12px;}.topbar-title{font-size:1.05rem;font-weight:600;color:var(--gray800);}
.topbar-right{display:flex;align-items:center;gap:7px;flex-shrink:0;}.topbar-date{font-size:0.76rem;color:var(--gray600);}
.topbar-search{display:flex;align-items:center;background:var(--gray100);border-radius:8px;padding:6px 11px;gap:7px;}.topbar-search input{background:none;border:none;outline:none;font-size:0.8rem;width:140px;color:var(--gray800);}
.notif-btn{width:34px;height:34px;border-radius:50%;background:var(--gray100);display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;font-size:0.95rem;border:none;flex-shrink:0;}
.notif-dot{position:absolute;top:6px;right:6px;width:8px;height:8px;background:var(--red);border-radius:50%;border:1.5px solid white;}
.tb-btn{display:inline-flex;align-items:center;gap:5px;padding:7px 12px;border-radius:8px;font-size:0.77rem;font-weight:600;cursor:pointer;font-family:inherit;transition:all 0.18s;white-space:nowrap;border:none;}
.tb-btn-print{background:var(--gray100);color:var(--gray700);border:1.5px solid var(--gray200);}.tb-btn-print:hover{background:var(--gray200);}
.tb-btn-pdf{background:linear-gradient(135deg,#dc2626,#b91c1c);color:white;box-shadow:0 2px 8px rgba(220,38,38,0.25);}.tb-btn-pdf:hover{transform:translateY(-1px);}
.tb-btn-backup{background:linear-gradient(135deg,#7c3aed,#6d28d9);color:white;}.tb-btn-backup:hover{transform:translateY(-1px);}
#content{flex:1;overflow-y:auto;padding:22px 26px;}
.page{display:none;}.page.active{display:block;animation:fadeIn 0.22s ease;}
@keyframes fadeIn{from{opacity:0;transform:translateY(5px);}to{opacity:1;transform:translateY(0);}}
.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;}
.page-header h2{font-size:1.4rem;font-weight:600;}.page-header p{font-size:0.8rem;color:var(--gray600);margin-top:2px;}
/* BUTTONS */
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:8px;font-size:0.83rem;font-weight:500;cursor:pointer;border:none;transition:all 0.18s;font-family:inherit;}
.btn-primary{background:var(--teal);color:white;}.btn-primary:hover{background:var(--teal2);transform:translateY(-1px);}
.btn-secondary{background:var(--gray100);color:var(--gray800);border:1px solid var(--gray200);}.btn-secondary:hover{background:var(--gray200);}
.btn-danger{background:#fef2f2;color:var(--red);border:1px solid #fecaca;}.btn-danger:hover{background:#fee2e2;}
.btn-edit{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;}.btn-edit:hover{background:#dbeafe;}
.btn-print-row{background:#f0fdf4;color:#15803d;border:1px solid #bbf7d0;}.btn-print-row:hover{background:#dcfce7;}
.btn-pdf-row{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca;}.btn-pdf-row:hover{background:#fee2e2;}
.btn-sm{padding:5px 11px;font-size:0.76rem;}.btn-icon{padding:5px 8px;}
.action-btns{display:flex;gap:3px;flex-wrap:nowrap;align-items:center;}
/* STATS */
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px;}
.stat-card{background:var(--white);border-radius:12px;padding:16px 18px;border:1px solid var(--gray200);position:relative;overflow:hidden;}
.stat-card::after{content:'';position:absolute;top:0;right:0;width:70px;height:70px;border-radius:50%;transform:translate(18px,-18px);}
.stat-card.teal::after{background:rgba(13,148,136,0.08);}.stat-card.amber::after{background:rgba(245,158,11,0.08);}.stat-card.green::after{background:rgba(16,185,129,0.08);}.stat-card.blue::after{background:rgba(59,130,246,0.08);}
.stat-icon{font-size:1.4rem;margin-bottom:8px;}.stat-label{font-size:0.72rem;color:var(--gray600);font-weight:500;text-transform:uppercase;letter-spacing:0.5px;}
.stat-value{font-size:1.8rem;font-weight:700;color:var(--gray800);margin:3px 0;}.stat-change{font-size:0.72rem;}.stat-change.up{color:var(--green);}.stat-change.down{color:var(--red);}
/* CARD */
.card{background:var(--white);border-radius:12px;border:1px solid var(--gray200);overflow:hidden;}
.card-header{padding:14px 18px;border-bottom:1px solid var(--gray200);display:flex;justify-content:space-between;align-items:center;}.card-header h3{font-size:0.92rem;font-weight:600;}
.card-body{padding:0;}
/* TABLE */
.tbl-wrap{overflow-x:auto;}
table{width:100%;border-collapse:collapse;}
th{background:var(--gray50);text-align:left;padding:9px 14px;font-size:0.71rem;font-weight:600;color:var(--gray600);text-transform:uppercase;letter-spacing:0.5px;border-bottom:1px solid var(--gray200);}
td{padding:9px 14px;font-size:0.83rem;border-bottom:1px solid var(--gray100);vertical-align:middle;}
tr:last-child td{border-bottom:none;}tr:hover td{background:var(--gray50);}
/* BADGE */
.badge{display:inline-flex;align-items:center;padding:3px 9px;border-radius:20px;font-size:0.7rem;font-weight:600;}
.badge-green{background:#dcfce7;color:#15803d;}.badge-amber{background:#fef3c7;color:#b45309;}.badge-blue{background:#dbeafe;color:#1d4ed8;}.badge-red{background:#fee2e2;color:#b91c1c;}.badge-gray{background:var(--gray100);color:var(--gray600);}.badge-teal{background:#ccfbf1;color:#0f766e;}.badge-purple{background:#f5f3ff;color:#6d28d9;}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px;}.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;}.mt-4{margin-top:16px;}
/* FORM */
.form-group{margin-bottom:14px;}.form-label{display:block;font-size:0.78rem;font-weight:500;color:var(--gray600);margin-bottom:4px;}
.form-control{width:100%;padding:8px 11px;border:1.5px solid var(--gray200);border-radius:8px;font-size:0.85rem;font-family:inherit;outline:none;transition:border-color 0.2s;background:white;color:var(--gray800);}
.form-control:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(13,148,136,0.1);}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:11px;}
/* MODAL */
.modal-overlay{position:fixed;inset:0;background:rgba(10,22,40,0.65);display:none;align-items:center;justify-content:center;z-index:1000;backdrop-filter:blur(4px);}
.modal-overlay.open{display:flex;}
.modal{background:white;border-radius:14px;width:90%;max-width:580px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,0.25);animation:modalIn 0.22s ease;}
@keyframes modalIn{from{transform:scale(0.95);opacity:0;}to{transform:scale(1);opacity:1;}}
.modal-header{padding:18px 22px 14px;border-bottom:1px solid var(--gray200);display:flex;justify-content:space-between;align-items:center;}
.modal-header h3{font-size:1rem;font-weight:600;}.modal-close{background:none;border:none;font-size:1.2rem;cursor:pointer;color:var(--gray400);padding:3px 7px;border-radius:6px;}
.modal-close:hover{background:var(--gray100);}.modal-body{padding:18px 22px;}.modal-footer{padding:12px 22px;border-top:1px solid var(--gray200);display:flex;justify-content:flex-end;gap:9px;}
/* AVATAR */
.avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:0.78rem;color:white;flex-shrink:0;}
.av-teal{background:linear-gradient(135deg,#0d9488,#0ea5e9);}.av-purple{background:linear-gradient(135deg,#8b5cf6,#ec4899);}.av-green{background:linear-gradient(135deg,#10b981,#3b82f6);}.av-amber{background:linear-gradient(135deg,#f59e0b,#ef4444);}.av-red{background:linear-gradient(135deg,#ef4444,#f97316);}
.search-bar{display:flex;gap:9px;margin-bottom:14px;align-items:center;}
.search-input{flex:1;padding:8px 13px;border:1.5px solid var(--gray200);border-radius:8px;font-size:0.85rem;outline:none;font-family:inherit;background:white;}
.search-input:focus{border-color:var(--teal);}
/* CALENDAR */
.cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}.cal-nav h3{font-size:0.95rem;font-weight:600;}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;}
.cal-head{text-align:center;font-size:0.67rem;font-weight:700;color:var(--gray400);text-transform:uppercase;padding:5px 0;}
.cal-day{min-height:68px;background:white;border:1px solid var(--gray100);padding:5px;border-radius:5px;cursor:pointer;transition:all 0.15s;}
.cal-day:hover{border-color:var(--teal2);background:var(--teal3);}.cal-day.today{border-color:var(--teal);background:rgba(13,148,136,0.04);}.cal-day.other-month{opacity:0.32;}
.cal-day-num{font-size:0.75rem;font-weight:600;color:var(--gray600);margin-bottom:3px;}.cal-day.today .cal-day-num{color:var(--teal);}
.cal-event{background:var(--teal);color:white;font-size:0.6rem;padding:2px 4px;border-radius:3px;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cal-event.cancelled{background:var(--red);}.cal-event.pending{background:var(--amber);}.cal-event.confirmed{background:var(--green);}
/* TOOTH */
.tooth-row{display:flex;justify-content:center;gap:4px;margin-bottom:6px;}
.tooth{width:34px;height:34px;border:2px solid var(--gray200);border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;font-size:0.6rem;font-weight:700;color:var(--gray600);transition:all 0.15s;background:white;position:relative;}
.tooth:hover{border-color:var(--teal);background:var(--teal3);}.tooth.healthy{border-color:#86efac;background:#f0fdf4;}.tooth.caries{border-color:#fca5a5;background:#fef2f2;}.tooth.treated{border-color:#93c5fd;background:#eff6ff;}.tooth.missing{border-color:var(--gray200);background:var(--gray50);opacity:0.5;}.tooth.crown{border-color:#fcd34d;background:#fffbeb;}
.tooth.selected{border-color:var(--teal)!important;box-shadow:0 0 0 3px rgba(13,148,136,0.25);transform:scale(1.08);}
.tooth-num{font-size:0.52rem;color:var(--gray400);}.tooth-legend{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:10px;}
.legend-item{display:flex;align-items:center;gap:5px;font-size:0.72rem;color:var(--gray600);}
.legend-dot{width:11px;height:11px;border-radius:3px;border:1.5px solid;}
/* TABS */
.tabs{display:flex;gap:0;border-bottom:2px solid var(--gray200);margin-bottom:18px;}
.tab{padding:9px 18px;font-size:0.83rem;font-weight:500;cursor:pointer;color:var(--gray600);border-bottom:2px solid transparent;margin-bottom:-2px;transition:all 0.18s;}
.tab:hover{color:var(--teal);}.tab.active{color:var(--teal);border-bottom-color:var(--teal);font-weight:600;}
.progress-bar{background:var(--gray200);border-radius:4px;height:7px;overflow:hidden;}.progress-fill{height:100%;border-radius:4px;background:var(--teal);transition:width 0.5s;}
.tl-item{display:flex;gap:12px;padding:10px 14px;border-radius:8px;transition:background 0.15s;cursor:pointer;}.tl-item:hover{background:var(--gray50);}
.tl-time{width:50px;font-size:0.75rem;font-weight:600;color:var(--teal);flex-shrink:0;padding-top:2px;}.tl-dot{width:9px;height:9px;border-radius:50%;background:var(--teal);flex-shrink:0;margin-top:5px;}.tl-content{flex:1;}.tl-name{font-size:0.85rem;font-weight:600;}.tl-detail{font-size:0.75rem;color:var(--gray600);margin-top:1px;}
.quick-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:11px;margin-bottom:20px;}
.qa-card{background:white;border:1px solid var(--gray200);border-radius:11px;padding:14px;text-align:center;cursor:pointer;transition:all 0.2s;}
.qa-card:hover{border-color:var(--teal);box-shadow:0 4px 16px rgba(13,148,136,0.12);transform:translateY(-2px);}.qa-icon{font-size:1.5rem;margin-bottom:7px;}.qa-label{font-size:0.75rem;font-weight:500;color:var(--gray600);}
.toast{position:fixed;bottom:22px;right:22px;background:var(--gray800);color:white;padding:11px 18px;border-radius:10px;font-size:0.83rem;display:none;z-index:9999;box-shadow:0 8px 24px rgba(0,0,0,0.2);}
.toast.show{display:flex;align-items:center;gap:8px;animation:slideUp 0.28s ease;}.toast.success{background:var(--green);}.toast.error{background:var(--red);}.toast.info{background:var(--purple);}
@keyframes slideUp{from{transform:translateY(16px);opacity:0;}to{transform:translateY(0);opacity:1;}}
.patient-header-card{background:linear-gradient(135deg,var(--navy),var(--navy2));border-radius:12px;padding:20px 22px;color:white;margin-bottom:16px;display:flex;justify-content:space-between;align-items:center;}
.patient-avatar-lg{width:54px;height:54px;border-radius:50%;background:linear-gradient(135deg,var(--teal),var(--blue));display:flex;align-items:center;justify-content:center;font-size:1.3rem;font-weight:800;color:white;margin-right:14px;}
.patient-name-block{display:flex;align-items:center;}.patient-name-lg{font-size:1.15rem;font-weight:700;}.patient-meta{font-size:0.77rem;opacity:0.72;margin-top:2px;}
.patient-stats{display:flex;gap:20px;}.pstat{text-align:center;}.pstat-val{font-size:1.25rem;font-weight:700;}.pstat-label{font-size:0.68rem;opacity:0.68;margin-top:2px;}
.stock-bar-wrap{display:flex;align-items:center;gap:7px;}.stock-bar{flex:1;height:5px;background:var(--gray200);border-radius:3px;overflow:hidden;}.stock-fill{height:100%;border-radius:3px;}
.stock-ok{background:var(--green);}.stock-low{background:var(--amber);}.stock-crit{background:var(--red);}
.chart-bar-group{display:flex;align-items:flex-end;gap:5px;height:110px;padding:0 3px;}
.bar-wrap{display:flex;flex-direction:column;align-items:center;flex:1;gap:3px;}.bar{width:100%;border-radius:4px 4px 0 0;background:var(--teal);transition:height 0.5s;}.bar-val{font-size:0.65rem;color:var(--gray600);font-weight:600;}
::-webkit-scrollbar{width:5px;height:5px;}::-webkit-scrollbar-track{background:transparent;}::-webkit-scrollbar-thumb{background:var(--gray200);border-radius:3px;}::-webkit-scrollbar-thumb:hover{background:var(--gray400);}
.empty-state{text-align:center;padding:44px 20px;color:var(--gray400);}.empty-state .ei{font-size:2.8rem;margin-bottom:11px;}
.filter-row{display:flex;gap:7px;align-items:center;}.filter-select{padding:7px 11px;border:1.5px solid var(--gray200);border-radius:8px;font-size:0.8rem;font-family:inherit;outline:none;background:white;color:var(--gray800);}
.filter-select:focus{border-color:var(--teal);}
.editing-indicator{display:inline-flex;align-items:center;gap:6px;background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;border-radius:6px;padding:4px 10px;font-size:0.73rem;font-weight:600;margin-bottom:12px;width:100%;}
.backup-option{border:2px solid var(--gray200);border-radius:12px;padding:18px;cursor:pointer;transition:all 0.2s;text-align:center;}
.backup-option:hover{border-color:var(--teal);background:var(--teal3);}.backup-option .bo-icon{font-size:2.2rem;margin-bottom:8px;}.backup-option h4{font-size:0.9rem;font-weight:700;margin-bottom:4px;}.backup-option p{font-size:0.75rem;color:var(--gray600);}
.backup-history{max-height:200px;overflow-y:auto;}.backup-item{display:flex;justify-content:space-between;align-items:center;padding:9px 12px;border-bottom:1px solid var(--gray100);font-size:0.82rem;}.backup-item:last-child{border-bottom:none;}
.finance-amount{font-size:1.35rem;font-weight:700;}.finance-amount.income{color:var(--green);}.finance-amount.expense{color:var(--red);}
/* Per-row print/PDF tooltip */
.row-actions-sep{width:1px;height:16px;background:var(--gray200);margin:0 1px;display:inline-block;}
/* PREVIEW BUTTON */
.btn-preview{background:linear-gradient(135deg,#7c3aed,#6d28d9);color:white;border:none;}.btn-preview:hover{transform:translateY(-1px);box-shadow:0 3px 10px rgba(124,58,237,0.35);}
/* DOCUMENT PREVIEW PANEL */
#doc-preview-panel{
  position:fixed;top:0;right:0;bottom:0;z-index:2000;
  width:min(820px,92vw);
  background:#f1f5f9;
  box-shadow:-8px 0 40px rgba(0,0,0,0.22);
  display:flex;flex-direction:column;
  transform:translateX(100%);
  transition:transform 0.32s cubic-bezier(0.22,1,0.36,1);
}
#doc-preview-panel.open{transform:translateX(0);}
.preview-topbar{
  background:var(--navy);color:white;
  padding:12px 18px;display:flex;align-items:center;gap:12px;
  flex-shrink:0;
}
.preview-topbar-title{flex:1;font-size:0.9rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.preview-tab-bar{
  background:white;border-bottom:1px solid var(--gray200);
  padding:0 14px;display:flex;gap:0;flex-shrink:0;overflow-x:auto;
}
.preview-tab{
  padding:9px 16px;font-size:0.8rem;font-weight:500;cursor:pointer;
  color:var(--gray600);border-bottom:2px solid transparent;margin-bottom:-1px;
  white-space:nowrap;transition:all 0.15s;
}
.preview-tab:hover{color:var(--teal);}
.preview-tab.active{color:var(--teal);border-bottom-color:var(--teal);font-weight:600;}
.preview-frame-wrap{flex:1;overflow:hidden;position:relative;}
#preview-iframe{width:100%;height:100%;border:none;background:white;}
.preview-bottom-bar{
  background:white;border-top:1px solid var(--gray200);
  padding:9px 16px;display:flex;gap:8px;flex-shrink:0;align-items:center;
}
.preview-bottom-bar span{flex:1;font-size:0.75rem;color:var(--gray400);}
/* Backdrop for preview panel */
#preview-backdrop{
  position:fixed;inset:0;background:rgba(0,0,0,0.35);z-index:1999;
  display:none;backdrop-filter:blur(2px);
}
#preview-backdrop.open{display:block;}
/* FILE UPLOAD */
.upload-zone{
  border:2px dashed var(--gray200);border-radius:12px;
  padding:22px 18px;text-align:center;cursor:pointer;
  transition:all 0.2s;background:var(--gray50);position:relative;
}
.upload-zone:hover,.upload-zone.dragover{border-color:var(--teal);background:var(--teal3);}
.upload-zone input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;}
.upload-zone-icon{font-size:2rem;margin-bottom:7px;}
.upload-zone-label{font-size:0.88rem;font-weight:600;color:var(--gray600);}
.upload-zone-sub{font-size:0.73rem;color:var(--gray400);margin-top:3px;}
/* FILE GRID */
.file-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin-top:14px;}
.file-card{
  background:white;border:1.5px solid var(--gray200);border-radius:10px;
  overflow:hidden;cursor:pointer;transition:all 0.18s;position:relative;
}
.file-card:hover{border-color:var(--teal);box-shadow:0 4px 16px rgba(13,148,136,0.14);transform:translateY(-2px);}
.file-thumb{height:80px;background:var(--gray50);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.file-thumb img{width:100%;height:100%;object-fit:cover;}
.file-thumb .file-icon-big{font-size:2.2rem;}
.file-info{padding:7px 8px;}
.file-name{font-size:0.7rem;font-weight:600;color:var(--gray800);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.file-meta{font-size:0.62rem;color:var(--gray400);margin-top:2px;}
.file-del-btn{
  position:absolute;top:4px;right:4px;
  background:rgba(239,68,68,0.9);color:white;
  border:none;border-radius:50%;width:20px;height:20px;
  font-size:0.65rem;cursor:pointer;
  display:none;align-items:center;justify-content:center;
  z-index:10;
}
.file-card:hover .file-del-btn{display:flex;}
.file-type-badge{
  position:absolute;top:4px;left:4px;
  background:var(--navy);color:white;
  border-radius:4px;padding:2px 5px;font-size:0.58rem;font-weight:700;
  text-transform:uppercase;
}
/* IMAGE LIGHTBOX */
#lightbox{
  position:fixed;inset:0;background:rgba(0,0,0,0.92);
  z-index:9998;display:none;align-items:center;justify-content:center;
  flex-direction:column;gap:14px;
}
#lightbox.open{display:flex;}
#lightbox img{max-width:88vw;max-height:78vh;border-radius:8px;box-shadow:0 20px 60px rgba(0,0,0,0.5);object-fit:contain;}
#lightbox video{max-width:88vw;max-height:78vh;border-radius:8px;}
.lightbox-name{color:rgba(255,255,255,0.75);font-size:0.85rem;}
.lightbox-close{position:absolute;top:18px;right:22px;background:rgba(255,255,255,0.12);border:none;color:white;font-size:1.2rem;cursor:pointer;border-radius:8px;padding:7px 12px;}
.lightbox-actions{display:flex;gap:10px;}

/* ============================================================
   PROCEDURE PICKER (modal-tretman inline add)
   ============================================================ */
.proc-picker{display:flex;gap:6px;align-items:stretch;}
.proc-picker select{flex:1;min-width:0;}
.btn-proc-add{
  flex-shrink:0;
  padding:0 12px;
  background:linear-gradient(135deg,#0d9488,#0ea5e9);
  color:white;border:none;border-radius:8px;
  font-size:0.78rem;font-weight:600;cursor:pointer;
  white-space:nowrap;transition:transform 0.15s,box-shadow 0.15s;
  box-shadow:0 2px 6px rgba(13,148,136,0.25);
}
.btn-proc-add:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(13,148,136,0.35);}
.btn-proc-add:active{transform:translateY(0);}

/* Procedure stranica — datalist input (custom kategorija) */
input[list]{cursor:text;}
input[list]::-webkit-calendar-picker-indicator{opacity:0.45;cursor:pointer;}

/* Mali responsive trik */
@media(max-width:600px){
  .proc-picker{flex-direction:column;}
  .btn-proc-add{width:100%;padding:8px;}
}

/* ============================================================
   SMART SLOT SUGGESTION (modal-zakazaj banner)
   ============================================================ */
.slot-suggestion{
  display:flex;align-items:center;gap:11px;
  background:linear-gradient(135deg,#ecfeff,#f0fdfa);
  border:1px solid #99f6e4;border-left:4px solid var(--teal);
  border-radius:10px;padding:11px 14px;margin-bottom:14px;
}
.slot-icon{font-size:1.4rem;flex-shrink:0;}
.slot-text{flex:1;min-width:0;}
.slot-title{font-size:0.72rem;font-weight:600;color:#0f766e;text-transform:uppercase;letter-spacing:0.5px;margin-bottom:2px;}
.slot-detail{font-size:0.87rem;color:var(--gray800);}
.btn-slot-apply{
  background:var(--teal);color:white;border:none;border-radius:8px;
  padding:7px 14px;font-size:0.78rem;font-weight:600;cursor:pointer;
  white-space:nowrap;transition:background 0.15s;
}
.btn-slot-apply:hover{background:#0f766e;}
.btn-slot-next{
  background:white;color:var(--teal);border:1px solid #99f6e4;
  border-radius:8px;padding:7px 10px;font-size:0.9rem;cursor:pointer;
  transition:all 0.15s;
}
.btn-slot-next:hover{background:var(--teal);color:white;}

/* Clickable rows / items */
.tl-item-clickable{cursor:pointer;transition:background 0.15s;}
.tl-item-clickable:hover{background:var(--gray50);}
.row-clickable{cursor:pointer;transition:background 0.15s;}
.row-clickable:hover{background:var(--gray50);}
.link-pat{color:var(--teal);text-decoration:none;font-weight:600;cursor:pointer;}
.link-pat:hover{text-decoration:underline;}

/* Hamburger button (hidden on desktop) */
.hamburger-btn{
  display:none;background:none;border:none;font-size:1.4rem;cursor:pointer;
  color:var(--gray700);padding:6px 10px;margin-right:4px;border-radius:6px;
}
.hamburger-btn:hover{background:var(--gray100);}

/* Sidebar backdrop (hidden on desktop) */
#sidebar-backdrop{
  display:none;position:fixed;inset:0;background:rgba(0,0,0,0.45);
  z-index:99;opacity:0;transition:opacity 0.2s;
}
#sidebar-backdrop.open{opacity:1;}

/* ============================================================
   RESPONSIVE / MOBILE (auto, ≤900px)
   ============================================================ */
@media(max-width:900px){
  /* Sidebar — postaje slide-in drawer */
  #sidebar{
    position:fixed;left:0;top:0;bottom:0;
    transform:translateX(-100%);
    transition:transform 0.25s ease;
    box-shadow:0 0 30px rgba(0,0,0,0.3);
  }
  #sidebar.open{transform:translateX(0);}
  #sidebar-backdrop{display:block;pointer-events:none;}
  #sidebar-backdrop.open{pointer-events:auto;}

  /* Hamburger vidljiv */
  .hamburger-btn{display:inline-block;}

  /* Topbar — skrati */
  #topbar{padding:0 10px;height:52px;}
  .topbar-title{font-size:0.95rem !important;}
  .topbar-date,.topbar-search,.tb-btn{display:none;}
  .topbar-right{gap:6px;}
  .notif-btn{padding:6px 8px;}

  /* Main content — manje paddinga */
  #content{padding:12px !important;}
  .page-header{flex-direction:column;align-items:flex-start;gap:10px;}
  .page-header h2{font-size:1.15rem !important;}
  .page-header .btn{width:100%;}
  .page-header > div:last-child{width:100%;display:flex;gap:6px;flex-wrap:wrap;}
  .page-header > div:last-child .btn{flex:1;}

  /* Grids — sve u jednu kolonu */
  .grid2,.grid3,.stats-grid{grid-template-columns:1fr !important;gap:10px !important;}
  .stats-grid{grid-template-columns:1fr 1fr !important;}

  /* Quick actions — 2 kolone na mobilnom */
  .quick-actions{grid-template-columns:1fr 1fr !important;}

  /* Modali — full-screen na mobilu */
  .modal-overlay{padding:0;align-items:flex-end;}
  .modal{width:100%;max-width:100% !important;max-height:95vh;border-radius:14px 14px 0 0;}
  .modal-body{padding:14px;}
  .modal-header{padding:14px;}
  .modal-footer{padding:12px 14px;flex-direction:column-reverse;gap:8px;}
  .modal-footer .btn{width:100%;}
  .form-row{grid-template-columns:1fr !important;}

  /* Tabele — postaju kartice na malim ekranima */
  .tbl-wrap{margin:0 -10px;padding:0 10px;}
  table{font-size:0.78rem;}
  th,td{padding:8px 6px !important;}
  /* Sakrij manje važne kolone na mobilu */
  .action-btns{flex-wrap:wrap;gap:2px;}
  .action-btns .btn-icon{padding:6px 8px;}
  .row-actions-sep{display:none;}

  /* Search bar — vertikalno */
  .search-bar{flex-direction:column;align-items:stretch;}
  .filter-select{width:100%;}

  /* Kalendar — kompaktniji */
  .cal-grid{font-size:0.7rem;}
  .cal-day{min-height:55px !important;padding:3px !important;}
  .cal-event{font-size:0.55rem !important;padding:1px 3px !important;}
  /* Zakazivanje — sidebar termini ispod kalendara */
  #page-zakazivanje .grid2{grid-template-columns:1fr !important;}

  /* Login */
  .login-card{padding:30px 22px;width:100%;max-width:95vw;border-radius:14px;}

  /* Touch targets ≥44px */
  .btn,.tb-btn,.nav-item,.tab,.filter-select,.form-control{min-height:40px;}
  .btn-sm,.btn-icon{min-height:34px;}

  /* Dashboard kartice — manje padding */
  .stat-card{padding:12px 14px;}
  .stat-value{font-size:1.4rem !important;}

  /* Preview panel (PDF/dokument) — full screen */
  #doc-preview-panel{width:100% !important;}
}

/* Vrlo mali ekrani */
@media(max-width:480px){
  .stats-grid{grid-template-columns:1fr !important;}
  .quick-actions{grid-template-columns:1fr !important;}
  .cal-day{min-height:45px !important;}
  .cal-day-num{font-size:0.7rem;}
  .cal-event{display:none;}
  .cal-day::after{content:attr(data-count);position:absolute;bottom:2px;right:3px;font-size:0.6rem;color:var(--teal);}
}

/* ============================================================
   DYNAMIC TOOTH COLORING (from toothStates catalog)
   ============================================================ */
.tooth.tooth-dyn{
  border-color:color-mix(in srgb, var(--st-color) 50%, white);
  background:color-mix(in srgb, var(--st-color) 8%, white);
}
.tooth.tooth-dyn[data-state="missing"]{opacity:0.5;}
.tooth.tooth-dyn[data-state="healthy"]{border-color:#86efac;}

.diag-summary{
  margin-top:14px;padding:10px 12px;border:1px dashed var(--gray200);
  border-radius:8px;background:var(--gray50);
}
.diag-chip{
  display:inline-block;background:white;border:1px solid;
  border-radius:14px;padding:3px 9px;font-size:0.72rem;
  margin:4px 4px 0 0;
}

/* ============================================================
   DAY SCHEDULE MODAL
   ============================================================ */
.day-stats{
  display:grid;grid-template-columns:repeat(4,1fr);gap:10px;
  margin-bottom:16px;
}
.ds-stat{
  background:var(--gray50);border:1px solid var(--gray200);
  border-radius:9px;padding:11px;display:flex;align-items:center;gap:9px;
}
.ds-stat-icon{font-size:1.3rem;flex-shrink:0;}
.ds-stat-val{font-size:1.15rem;font-weight:700;color:var(--gray800);line-height:1;}
.ds-stat-lbl{font-size:0.68rem;color:var(--gray600);margin-top:3px;text-transform:uppercase;letter-spacing:0.4px;}

.day-doc-summary{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:12px;}
.day-doc-chip{
  background:var(--teal3);color:var(--teal);
  padding:4px 11px;border-radius:14px;font-size:0.74rem;
}

.day-timeline{display:flex;flex-direction:column;gap:8px;}
.day-row{
  display:grid;grid-template-columns:80px 5px 1fr auto;gap:11px;
  background:white;border:1px solid var(--gray200);border-radius:10px;
  padding:11px 13px;align-items:stretch;
  transition:box-shadow 0.15s,border-color 0.15s;
}
.day-row:hover{border-color:var(--teal);box-shadow:0 3px 12px rgba(13,148,136,0.08);}
.day-time-h{font-size:1.05rem;font-weight:700;color:var(--teal);line-height:1;}
.day-time-d{font-size:0.7rem;color:var(--gray400);margin-top:3px;}
.day-status-bar{border-radius:3px;}
.day-status-bar.confirmed{background:var(--teal);}
.day-status-bar.pending{background:var(--amber);}
.day-status-bar.cancelled{background:var(--red);}
.day-status-bar.done{background:var(--blue);}
.day-info{min-width:0;}
.day-info-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;}
.day-patient{font-size:0.95rem;font-weight:700;color:var(--gray800);text-decoration:none;}
.day-patient:hover{color:var(--teal);text-decoration:underline;}
.day-info-mid{display:flex;gap:11px;flex-wrap:wrap;font-size:0.78rem;color:var(--gray600);}
.day-note{margin-top:5px;padding:6px 9px;background:#fef9c3;border-left:3px solid #eab308;border-radius:4px;font-size:0.76rem;color:#713f12;}
.day-allerg{display:inline-block;margin-top:5px;color:#b45309;font-size:0.74rem;font-weight:600;}
.day-actions{display:flex;flex-direction:column;gap:4px;align-items:center;justify-content:center;}

/* ============================================================
   TOOTH STATES MANAGER
   ============================================================ */
#tooth-states-list{display:flex;flex-direction:column;gap:6px;max-height:300px;overflow-y:auto;padding-right:4px;}
.ts-row{
  display:flex;align-items:center;gap:11px;padding:9px 11px;
  border:1px solid var(--gray200);border-radius:8px;background:var(--gray50);
}
.ts-prev{
  width:38px;height:38px;border-radius:7px;border:2px solid;
  display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:1rem;flex-shrink:0;
}
.ts-info{flex:1;min-width:0;}
.ts-name{font-weight:600;font-size:0.88rem;display:flex;align-items:center;gap:6px;}
.ts-default-tag{
  background:var(--gray200);color:var(--gray600);
  padding:1px 7px;border-radius:9px;font-size:0.62rem;font-weight:500;
}
.ts-desc{font-size:0.74rem;color:var(--gray600);margin-top:2px;}
.ts-usage{font-size:0.68rem;color:var(--teal);margin-top:2px;font-weight:600;}
.ts-actions{display:flex;gap:4px;flex-shrink:0;}

/* Mobile day-row */
@media(max-width:600px){
  .day-stats{grid-template-columns:1fr 1fr;}
  .day-row{grid-template-columns:60px 4px 1fr;}
  .day-actions{grid-column:3/4;flex-direction:row;justify-content:flex-end;}
  .day-time-h{font-size:0.95rem;}
}

/* Calendar day visual: hover hint + has-events indicator */
.cal-day{cursor:pointer;transition:background 0.15s,box-shadow 0.15s;}
.cal-day:hover{background:var(--teal3);box-shadow:inset 0 0 0 2px var(--teal);}
.cal-day.has-events::before{
  content:'';position:absolute;top:5px;right:5px;
  width:6px;height:6px;border-radius:50%;background:var(--teal);
}
.cal-day{position:relative;}
