@import url('https://cdn.jsdelivr.net/gh/rastikerdar/vazirmatn@v33.003/Vazirmatn-font-face.css');

:root{
    --navy: #0d2b45;
    --navy-dark: #071a2c;
    --navy-light: #1c3f5f;
    --green: #1f8a5f;
    --green-light: #26a374;
    --green-bg: #e7f5ef;
    --bg: #eef3fb;
    --card: #ffffff;
    --border: #dee6f0;
    --border-strong: #c7d4e5;
    --text: #1e2a33;
    --text-muted: #6b7a85;
    --danger: #c0392b;
    --warning: #c98a1a;
    --radius: 8px;
    --radius-sm: 6px;
    --shadow: 0 1px 3px rgba(13,43,69,0.06);
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
    font-family: 'Vazirmatn', Tahoma, sans-serif;
    background: var(--bg);
    color: var(--text);
    direction: rtl;
    font-size: 14px;
    line-height: 1.9;
}
a{color:var(--green);text-decoration:none;}
h1,h2,h3,h4{font-weight:700;margin:0 0 10px;}

/* ---------- Layout ---------- */
.app-shell{display:flex;min-height:100vh;}
.sidebar{
    width:240px;
    background: linear-gradient(180deg,var(--navy),var(--navy-dark));
    color:#dfe8ee;
    padding:18px 14px;
    flex-shrink:0;
    position:sticky;top:0;height:100vh;overflow-y:auto;
}
.sidebar .brand{font-size:17px;font-weight:800;color:#fff;margin-bottom:16px;padding:0 6px;}
.sidebar .brand span{color:var(--green-light);}

.sidebar-profile{
    display:flex;align-items:center;gap:10px;
    background:rgba(255,255,255,0.06);
    border-radius:16px;
    padding:12px 14px;
    margin-bottom:18px;
}
.sidebar-avatar{
    width:38px;height:38px;border-radius:50%;
    background:var(--green);color:#fff;
    display:flex;align-items:center;justify-content:center;
    font-weight:700;font-size:15px;flex-shrink:0;
}
.sidebar-profile-name{color:#fff;font-size:13.5px;font-weight:700;}
.sidebar-profile-sub{color:#a9bacb;font-size:11px;margin-top:1px;}

.sidebar nav{display:flex;flex-direction:column;gap:3px;}
.sidebar nav a.nav-item{
    display:flex;align-items:center;gap:10px;
    padding:9px 10px;border-radius:14px;
    color:#c3d2dc;font-size:13px;font-weight:500;
    transition:.15s;
}
.nav-item-icon{
    width:30px;height:30px;border-radius:10px;flex-shrink:0;
    background:rgba(255,255,255,0.07);
    display:flex;align-items:center;justify-content:center;
    font-size:14px;
}
.sidebar nav a.nav-item:hover{background:rgba(255,255,255,0.05);color:#fff;}
.sidebar nav a.nav-item.active{
    background:rgba(255,255,255,0.14);
    color:#fff;font-weight:700;
}
.sidebar nav a.nav-item.active .nav-item-icon{background:var(--green);}
.sidebar nav a.nav-item-logout{margin-top:14px;color:#e6a3a3;}
.sidebar nav a.nav-item-logout .nav-item-icon{background:rgba(230,163,163,0.12);}

.main{flex:1;padding:22px 26px;max-width:100%;overflow-x:hidden;}
.topbar{
    display:flex;justify-content:space-between;align-items:center;
    margin-bottom:20px;flex-wrap:wrap;gap:10px;
}
.topbar .user-box{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text-muted);flex-wrap:wrap;}
.topbar .user-box b{color:var(--navy);}

/* ---------- Mobile nav toggle ---------- */
.mobile-nav-toggle{
    display:none;width:38px;height:38px;border-radius:10px;
    background:var(--navy);color:#fff;border:none;font-size:16px;
    align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;
}
.sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(7,26,44,.5);z-index:998;}
.sidebar-backdrop.active{display:block;}

@media(max-width:880px){
    .app-shell{position:relative;}
    .mobile-nav-toggle{display:flex;}
    .sidebar{
        position:fixed;top:0;right:0;height:100vh;z-index:999;
        transform:translateX(100%);transition:transform .25s ease;
        box-shadow:-8px 0 30px rgba(0,0,0,.25);
    }
    .sidebar.open{transform:translateX(0);}
    .main{padding:16px;width:100%;}
    .card{padding:16px;}
}
@media(max-width:600px){
    table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap;}
    .grid-2,.grid-3,.grid-4{grid-template-columns:1fr !important;}
    .modal-box{padding:16px;max-height:92vh;}
    .modal-box.wide{max-width:100%;}
    .btn{padding:9px 16px;font-size:13px;}
    .case-detail-grid{grid-template-columns:repeat(2,1fr);}
    .wh-status-group{flex-direction:column;align-items:stretch;}
    .wh-status-group .wh-status-btn{width:100%;text-align:center;}
}

/* ---------- Cards ---------- */
.card{
    background:var(--card);
    border:1px solid var(--border);
    border-radius:var(--radius);
    box-shadow: var(--shadow);
    padding:20px;
    margin-bottom:18px;
}
.card-title{
    font-size:15px;font-weight:700;color:var(--navy);
    margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid var(--border);
    display:flex;align-items:center;justify-content:space-between;
}

.grid{display:grid;gap:14px;}
.grid-2{grid-template-columns:1fr 1fr;}
.grid-3{grid-template-columns:1fr 1fr 1fr;}
.grid-4{grid-template-columns:1fr 1fr 1fr 1fr;}
@media(max-width:900px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr;}}

/* ---------- Forms ---------- */
label{display:block;font-size:12.5px;color:var(--text-muted);margin-bottom:5px;}
input[type=text],input[type=number],input[type=password],input[type=tel],input[type=date],textarea,select{
    width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:var(--radius-sm);
    font-family:inherit;font-size:13.5px;background:#fbfcfd;color:var(--text);
    transition:.15s;
}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--green);background:#fff;box-shadow:0 0 0 3px rgba(31,138,95,0.1);}
textarea{min-height:80px;resize:vertical;}
.form-group{margin-bottom:13px;}

/* ---------- Buttons ---------- */
.btn{
    display:inline-flex;align-items:center;gap:6px;
    padding:10px 20px;border-radius:11px;border:none;
    font-family:inherit;font-size:13.5px;font-weight:600;cursor:pointer;
    transition:.18s;letter-spacing:.1px;
}
.btn:active{transform:scale(.97);}
.btn-primary{background:var(--navy);color:#fff;box-shadow:0 2px 6px rgba(13,43,69,0.18);}
.btn-primary:hover{background:var(--navy-light);box-shadow:0 3px 10px rgba(13,43,69,0.24);}
.btn-green{background:var(--green);color:#fff;box-shadow:0 2px 6px rgba(31,138,95,0.18);}
.btn-green:hover{background:var(--green-light);box-shadow:0 3px 10px rgba(31,138,95,0.24);}
.btn-outline{background:#fff;border:1.3px solid var(--border-strong);color:var(--text);}
.btn-outline:hover{border-color:var(--navy);color:var(--navy);background:#f7f9fc;}
.btn-danger{background:#fdecea;color:var(--danger);}
.btn-danger:hover{background:#fbdcd8;}
.btn-sm{padding:7px 14px;font-size:12px;border-radius:9px;}

/* ---------- Table ---------- */
table{width:100%;border-collapse:collapse;font-size:13px;}
table th{background:var(--green-bg);color:var(--navy);text-align:right;padding:11px 13px;font-weight:700;}
table th:first-child{border-radius:8px 0 0 0;}
table th:last-child{border-radius:0 8px 0 0;}
table td{padding:11px 13px;border-bottom:1px solid var(--border);}
table tr:hover td{background:#fafcfd;}
.table-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:8px;}
.table-scroll table{min-width:640px;}

/* ---------- Badges ---------- */
.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11.5px;font-weight:600;}
.badge-green{background:var(--green-bg);color:var(--green);}
.badge-warning{background:#fdf3e0;color:var(--warning);}
.badge-danger{background:#fdecea;color:var(--danger);}
.badge-navy{background:#e6ecf1;color:var(--navy);}

/* ---------- Tabs ---------- */
.tabs{display:flex;gap:4px;border-bottom:2px solid var(--border);margin-bottom:18px;}
.tabs button{
    background:none;border:none;padding:10px 18px;font-family:inherit;
    font-size:13.5px;font-weight:600;color:var(--text-muted);cursor:pointer;
    border-bottom:2px solid transparent;margin-bottom:-2px;
}
.tabs button.active{color:var(--navy);border-bottom-color:var(--green);}
.tab-content{display:none;}
.tab-content.active{display:block;}

/* تب‌های سگمنت‌شده (مثل شکایات) */
.segment-tabs{display:flex;gap:6px;background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:5px;margin-bottom:18px;}
.segment-tabs button{
    flex:1;display:flex;align-items:center;justify-content:center;gap:6px;
    background:transparent;border:none;border-radius:7px;
    padding:11px 16px;font-family:inherit;font-size:13.5px;font-weight:600;
    color:var(--text-muted);cursor:pointer;transition:.15s;
}
.segment-tabs button:hover{color:var(--navy);}
.segment-tabs button.active{background:var(--navy);color:#fff;box-shadow:var(--shadow);}

/* باکس جزئیات یک کار لابراتوار - نمایش مرتب */
.case-detail-card{background:#fbfcfd;border:1px solid var(--border);border-radius:8px;padding:14px 16px;margin-top:10px;}
.case-detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--border);}
.case-detail-header b{color:var(--navy);font-size:14px;}
.case-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:12px;}
.case-detail-stat{background:#fff;border:1px solid var(--border);border-radius:6px;padding:8px 10px;}
.case-detail-stat-label{font-size:11px;color:var(--text-muted);margin-bottom:3px;}
.case-detail-stat-value{font-size:12.5px;font-weight:600;color:var(--text);}
.case-detail-teeth-title{font-size:12px;font-weight:700;color:var(--green);margin:10px 0 6px;padding-right:8px;border-right:3px solid var(--green);}
.case-detail-tooth-chip{display:inline-block;background:var(--green-bg);color:var(--green);font-size:11.5px;font-weight:600;padding:5px 10px;border-radius:8px;margin:0 4px 6px 0;}
.case-detail-expected{background:#fff;border:1px solid var(--border);border-radius:6px;padding:10px 12px;font-size:12.5px;line-height:1.8;margin-top:8px;}

/* ---------- Print Reports Module ---------- */
.print-page{
    background:#fff;max-width:794px;margin:0 auto 30px;
    padding:34px 38px;border-radius:10px;border:1px solid var(--border);
    box-shadow:0 4px 20px rgba(13,43,69,.06);
}
.print-header{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:3px solid var(--navy);padding-bottom:14px;margin-bottom:18px;}
.print-clinic-name{font-size:18px;font-weight:800;color:var(--navy);}
.print-clinic-meta{font-size:11.5px;color:var(--text-muted);margin-top:3px;}
.print-report-title{text-align:left;font-size:13px;font-weight:700;color:var(--green);}
.print-date{font-size:11px;color:var(--text-muted);font-weight:400;margin-top:3px;}

.print-patient-box{background:var(--green-bg);border-radius:9px;padding:14px 18px;margin-bottom:20px;}
.print-patient-name{font-size:16px;font-weight:800;color:var(--navy);margin-bottom:6px;}
.print-patient-meta{display:flex;gap:18px;flex-wrap:wrap;font-size:12px;color:var(--text);margin-top:3px;}

.print-section{margin-bottom:18px;}
.print-section-title{font-size:13.5px;font-weight:800;color:var(--navy);border-right:4px solid var(--green);padding-right:10px;margin-bottom:10px;}
.print-empty{font-size:12px;color:var(--text-muted);padding:8px 0;}
.print-plan-item{border:1px solid var(--border);border-radius:8px;padding:10px 14px;margin-bottom:10px;background:#fbfcfd;}
.print-plan-meta{font-size:11px;color:var(--text-muted);margin-bottom:6px;}
.print-plan-line{font-size:12px;margin-bottom:3px;}
.print-plan-desc{font-size:11.5px;color:var(--text-muted);margin:2px 0 4px 14px;}

.print-table{width:100%;border-collapse:collapse;font-size:11.5px;}
.print-table th{background:var(--navy);color:#fff;padding:7px 9px;text-align:right;}
.print-table td{padding:7px 9px;border-bottom:1px solid var(--border);}

.print-acc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.print-acc-box{background:#fbfcfd;border:1px solid var(--border);border-radius:8px;padding:9px 12px;text-align:center;}
.print-acc-box span{display:block;font-size:10.5px;color:var(--text-muted);margin-bottom:3px;}
.print-acc-box b{font-size:13px;color:var(--navy);}
.print-acc-remaining{background:#fdecea;border-color:#f3c6c0;}
.print-acc-remaining b{color:var(--danger);}

.print-footer{margin-top:26px;padding-top:14px;border-top:1px dashed var(--border);font-size:11.5px;color:var(--text-muted);text-align:left;}

/* ==================== Ticket System ==================== */
.ticket-shell{display:flex;gap:0;height:calc(100vh - 130px);min-height:520px;background:#fff;border:1px solid var(--border);border-radius:14px;overflow:hidden;box-shadow:0 4px 20px rgba(13,43,69,.05);}

.ticket-list-pane{width:320px;flex-shrink:0;border-left:1px solid var(--border);background:#fbfcfd;padding:16px;overflow-y:auto;}
.ticket-list-item{display:block;text-decoration:none;color:var(--text);background:#fff;border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin-bottom:10px;transition:.15s;}
.ticket-list-item:hover{border-color:var(--green);transform:translateY(-1px);box-shadow:0 3px 10px rgba(31,138,95,.08);}
.ticket-list-item.active{border-color:var(--navy);background:linear-gradient(135deg,#eef3fb,#fff);box-shadow:0 3px 12px rgba(13,43,69,.1);}
.ticket-list-item-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;}
.ticket-list-other-name{font-weight:700;font-size:12.5px;color:var(--navy);}
.ticket-unread-dot{background:var(--danger);color:#fff;font-size:10px;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 5px;}
.ticket-list-subject{font-size:12px;font-weight:600;color:var(--text);margin-bottom:3px;}
.ticket-list-preview{font-size:11px;color:var(--text-muted);margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ticket-list-meta{display:flex;gap:6px;}

.ticket-thread-pane{flex:1;display:flex;flex-direction:column;min-width:0;}
.ticket-empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;}
.ticket-thread-header{display:flex;justify-content:space-between;align-items:center;padding:16px 22px;border-bottom:1px solid var(--border);background:#fff;}
.ticket-thread-subject{font-size:15px;font-weight:800;color:var(--navy);}
.ticket-thread-meta{font-size:11.5px;color:var(--text-muted);margin-top:4px;display:flex;gap:8px;align-items:center;}

.ticket-messages{flex:1;overflow-y:auto;padding:22px;display:flex;flex-direction:column;gap:16px;background:
    radial-gradient(circle at 20% 20%, rgba(31,138,95,.03) 0%, transparent 40%),
    radial-gradient(circle at 80% 80%, rgba(13,43,69,.03) 0%, transparent 40%);}
.ticket-msg{display:flex;gap:10px;max-width:70%;}
.ticket-msg.mine{align-self:flex-end;flex-direction:row-reverse;}
.ticket-msg.theirs{align-self:flex-start;}
.ticket-msg-avatar{width:32px;height:32px;border-radius:50%;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex-shrink:0;}
.ticket-msg.mine .ticket-msg-avatar{background:var(--green);}
.ticket-msg-bubble{background:#fff;border:1px solid var(--border);border-radius:14px;padding:10px 14px;box-shadow:0 2px 8px rgba(13,43,69,.05);}
.ticket-msg.mine .ticket-msg-bubble{background:var(--navy);color:#fff;border-color:var(--navy);}
.ticket-msg-sender{font-size:10.5px;font-weight:700;color:var(--green);margin-bottom:3px;}
.ticket-msg.mine .ticket-msg-sender{color:#bfe3d3;}
.ticket-msg-text{font-size:13px;line-height:1.7;}
.ticket-msg-time{font-size:9.5px;color:var(--text-muted);margin-top:5px;text-align:left;}
.ticket-msg.mine .ticket-msg-time{color:rgba(255,255,255,.65);}

.ticket-reply-box{display:flex;gap:10px;align-items:flex-end;padding:14px 20px;border-top:1px solid var(--border);background:#fff;}
.ticket-reply-box textarea{flex:1;resize:none;border-radius:12px;}
.ticket-reply-box button{flex-shrink:0;height:42px;}

/* Ticket permission matrix */
.ticket-perm-matrix{border-collapse:separate;border-spacing:4px;}
.ticket-perm-matrix th{background:transparent;color:var(--navy);font-size:11px;font-weight:700;padding:6px 8px;text-align:center;white-space:nowrap;}
.ticket-perm-corner{color:var(--text-muted) !important;font-size:10px !important;}
.ticket-perm-row-label{text-align:right !important;background:var(--green-bg) !important;border-radius:8px;}
.ticket-perm-cell{padding:0 !important;text-align:center;}
.ticket-perm-cell.disabled{color:var(--border);}
.ticket-perm-btn{width:34px;height:34px;border-radius:9px;border:1.5px solid var(--border);background:#fff;color:transparent;cursor:pointer;font-weight:800;transition:.15s;}
.ticket-perm-btn:hover{border-color:var(--green);}
.ticket-perm-btn.allowed{background:var(--green);border-color:var(--green);color:#fff;}

@media(max-width:880px){
    .ticket-shell{flex-direction:column;height:auto;}
    .ticket-list-pane{width:100%;border-left:none;border-bottom:1px solid var(--border);max-height:280px;}
    .ticket-msg{max-width:88%;}
}


@media print{
    .sidebar, .topbar, .no-print, .mobile-nav-toggle, .sidebar-backdrop, .demo-banner{display:none !important;}
    .main{padding:0 !important;}
    body{background:#fff !important;}
    .print-page{
        box-shadow:none;border:none;max-width:100%;margin:0;padding:14mm;
        page-break-after:always;border-radius:0;
    }
    .print-page:last-child{page-break-after:auto;}
}


/* ---------- Tooth Chart ---------- */
.tooth-chart-wrap{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:14px;text-align:center;max-width:440px;margin:0 auto;}
.tooth-arc-box{position:relative;width:100%;height:340px;margin:0 auto;}
.tooth-arc-box .quadrant-label{position:absolute;font-size:13px;font-weight:800;color:var(--navy);opacity:.55;}
.tooth-arc-box .ql-q1{top:8px;right:8px;}
.tooth-arc-box .ql-q2{top:8px;left:8px;}
.tooth-arc-box .ql-q3{bottom:8px;left:8px;}
.tooth-arc-box .ql-q4{bottom:8px;right:8px;}
.tooth-arc-box .jaw-center-label{position:absolute;left:50%;transform:translateX(-50%);font-size:11px;color:var(--text-muted);font-weight:700;letter-spacing:1px;}
.tooth-arc-box .jaw-center-label.upper{top:38%;}
.tooth-arc-box .jaw-center-label.lower{top:56%;}
.tooth.has-service{background:var(--green);color:#fff;border-color:var(--green);}
.dentition-toggle{display:flex;justify-content:center;gap:6px;margin-top:8px;}
.dentition-toggle button{
    background:#fbfcfd;border:1px solid var(--border);border-radius:10px;
    padding:7px 20px;font-family:inherit;font-size:12.5px;cursor:pointer;color:var(--text-muted);transition:.15s;
}
.dentition-toggle button:hover{border-color:var(--green);}
.dentition-toggle button.active{background:var(--navy);color:#fff;border-color:var(--navy);}
.tooth{
    width:30px;height:38px;border:1.5px solid #b9c6ce;border-radius:3px 3px 5px 5px;
    display:flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:700;
    cursor:pointer;background:#fbfcfd;color:var(--navy);transition:.15s;
    position:absolute;
}
.tooth:hover{border-color:var(--green);background:var(--green-bg);}
.tooth.has-service{background:var(--green);color:#fff;border-color:var(--green);}
.jaw-label{font-size:12px;color:var(--text-muted);font-weight:700;margin:6px 0;letter-spacing:1px;}

/* ---------- Modal ---------- */
.modal-overlay{
    display:none;position:fixed;inset:0;background:rgba(7,26,44,0.55);
    z-index:1000;align-items:center;justify-content:center;padding:20px;
}
.modal-overlay.active{display:flex;}
.modal-box{
    background:#fff;border-radius:var(--radius);padding:22px;
    width:100%;max-width:520px;max-height:88vh;overflow-y:auto;
    box-shadow:0 10px 40px rgba(0,0,0,0.2);
}
.modal-box.wide{max-width:820px;}
.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;}
.modal-header h3{color:var(--navy);font-size:16px;}
.modal-close{background:none;border:none;font-size:20px;cursor:pointer;color:var(--text-muted);width:30px;height:30px;border-radius:9px;transition:.15s;}
.modal-close:hover{background:var(--bg);color:var(--danger);}

/* ---------- Treatment plan form ---------- */
.tp-line-item{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px dashed var(--border);}
.tp-line-item label{width:140px;flex-shrink:0;margin:0;color:var(--navy);font-weight:600;font-size:13px;}
.tp-line-item input{flex:1;}
.tp-tooth-row{padding:8px 0;border-bottom:1px dashed var(--border);}
.tp-tooth-row-top{display:flex;align-items:center;gap:10px;}
.tp-tooth-label{width:150px;flex-shrink:0;color:var(--navy);font-weight:700;font-size:14px;}
.tp-dash-line{flex:1;border-top:1.5px dashed #b9c6ce;}
.tp-plus-btn{width:26px;height:26px;border-radius:9px;border:1.5px solid var(--border-strong);color:var(--navy);background:#fff;font-size:16px;font-weight:700;line-height:1;cursor:pointer;flex-shrink:0;padding:0;display:flex;align-items:center;justify-content:center;transition:.15s;}
.tp-plus-btn:hover{border-color:var(--green);}
.tp-plus-btn.has-selection{background:var(--green);color:#fff;border-color:var(--green);}
.tp-tooth-chips{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px;padding-right:160px;}
.tp-line-desc{width:100%;margin-top:6px;font-size:12px;padding:7px 9px;border:1px solid var(--border);border-radius:8px;font-family:inherit;resize:vertical;background:#fbfcfd;min-height:36px;}
.tp-line-desc:focus{background:#fff;}
.tp-tooth-chip{background:var(--green-bg);color:var(--green);font-size:12px;font-weight:600;padding:3px 10px;border-radius:10px;}
.tooth-plus-grid{position:relative;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:0;min-height:170px;}
.tooth-plus-grid::before{content:'';position:absolute;top:6px;bottom:6px;right:50%;width:2px;background:var(--navy);opacity:.35;}
.tooth-plus-grid::after{content:'';position:absolute;left:6px;right:6px;top:50%;height:2px;background:var(--navy);opacity:.35;}
.tp-arm{display:flex;gap:5px;flex-wrap:wrap;align-content:center;justify-content:center;padding:14px 10px;}
.tp-arm-num{width:30px;height:30px;border-radius:10px;font-size:12px;font-weight:700;cursor:pointer;border:1.4px solid var(--border);background:#fff;color:var(--navy);transition:.15s;}
.quad-manual-input{text-align:center;font-variant-numeric:tabular-nums;}
.tp-arm-num:hover{border-color:var(--green);}
.tp-arm-num.active{background:var(--green);border-color:var(--green);color:#fff;}
.acc-box{border:1px solid var(--border);border-right:3px solid var(--border-strong,#c7cfd6);border-radius:9px;padding:14px 16px;margin-bottom:14px;background:#fff;transition:.15s;}
.acc-box-label{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--text-muted);margin-bottom:9px;letter-spacing:.2px;}
.acc-box-icon{font-size:15px;opacity:.85;}
.acc-box-value{font-size:20px;font-weight:700;color:var(--navy);font-variant-numeric:tabular-nums;letter-spacing:.2px;}
.acc-unit{font-size:12.5px;font-weight:500;color:var(--text-muted);margin-right:3px;}
.acc-input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:16px;font-weight:600;color:var(--navy);font-family:inherit;background:#fbfcfd;font-variant-numeric:tabular-nums;letter-spacing:.2px;transition:.15s;}
.acc-input:focus{outline:none;border-color:var(--green);background:#fff;box-shadow:0 0 0 3px rgba(31,138,95,0.08);}
.acc-box.acc-c-green{border-right-color:var(--green);}
.acc-box.acc-c-navy{border-right-color:var(--navy);}
.acc-box.acc-c-amber{border-right-color:#c98a1a;}
.acc-box.acc-c-teal{border-right-color:#2f9e8f;}
.acc-box.acc-c-purple{border-right-color:#8264c2;}
.acc-box.acc-c-red{border-right-color:#c0392b;}
.acc-box.acc-c-red .acc-box-value{color:#c0392b;}
.jdp-popup{position:absolute;z-index:2000;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 30px rgba(13,43,69,0.16);padding:12px;width:230px;display:none;max-width:calc(100vw - 24px);}
.jdp-popup.active{display:block;}
.jdp-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12.5px;font-weight:700;color:var(--navy);}
.jdp-nav{cursor:pointer;padding:2px 8px;border-radius:3px;color:var(--text-muted);}
.jdp-nav:hover{background:var(--bg);color:var(--navy);}
.jdp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;}
.jdp-daylabel{font-size:9.5px;text-align:center;color:var(--text-muted);padding:2px 0;}
.jdp-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:11px;border-radius:8px;cursor:pointer;color:var(--text);transition:.12s;}
.jdp-day:hover{background:var(--green-bg);color:var(--green);}
.jdp-day.empty{cursor:default;}
.jdp-day.today{border:1px solid var(--green);}
.jdp-header-label{display:flex;gap:6px;}
.jdp-clickable{cursor:pointer;padding:2px 6px;border-radius:6px;transition:.12s;}
.jdp-clickable:hover{background:var(--green-bg);color:var(--green);}
.jdp-list-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;max-height:220px;overflow-y:auto;}
.jdp-list-item{padding:9px 4px;text-align:center;border-radius:8px;cursor:pointer;font-size:12px;border:1px solid var(--border);color:var(--text);transition:.12s;}
.jdp-list-item:hover{border-color:var(--green);color:var(--green);}
.jdp-list-item.active{background:var(--navy);border-color:var(--navy);color:#fff;font-weight:700;}
.jdp-list-item.current-year{border-color:var(--green);font-weight:700;}
.jdp-years-grid{grid-template-columns:repeat(4,1fr);}
.jdp-today-btn{margin-top:8px;text-align:center;padding:7px;border-radius:8px;background:var(--green-bg);color:var(--green);font-size:11.5px;font-weight:700;cursor:pointer;transition:.12s;}
.jdp-today-btn:hover{background:var(--green);color:#fff;}
.same-day-patient-item{padding:10px 13px;font-size:13px;cursor:pointer;border-bottom:1px solid var(--border);transition:.12s;}
.check-note-input{width:100%;min-width:150px;margin-top:6px;font-size:11.5px;padding:7px 9px;border:1px solid var(--border);border-radius:8px;font-family:inherit;resize:vertical;background:#fbfcfd;}
.check-note-input:focus{outline:none;border-color:var(--green);background:#fff;}
.same-day-patient-item:last-child{border-bottom:none;}
.same-day-patient-item:hover{background:var(--green-bg);color:var(--green);}

/* ---------- Warehouse module (matching cPanel-style reference) ---------- */
.wh-panel{background:#fff;border:1px solid var(--border);border-radius:8px;padding:16px 18px;margin-bottom:16px;}
.wh-panel-title{text-align:center;font-weight:700;font-size:14px;color:var(--text);margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid var(--border);}
.wh-row{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px dashed var(--border);font-size:13px;}
.wh-row:last-child{border-bottom:none;}
.wh-row-label{color:var(--text);}
.wh-row-value{color:#2f6fed;font-weight:600;}
.wh-status-group{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;}
.wh-status-btn{padding:8px 16px;border-radius:10px;border:1.5px solid var(--border);background:#fff;color:var(--text);font-size:12.5px;font-family:inherit;cursor:pointer;transition:.15s;}
.wh-status-btn:hover{border-color:var(--navy);}
.wh-status-btn.selected{box-shadow:0 0 0 2px #2f6fed, 0 0 0 4px rgba(47,111,237,0.15);border-color:#2f6fed;color:#2f6fed;font-weight:700;}
.wh-product-card{background:#fafcfd;border:1px solid var(--border);border-radius:8px;padding:12px 14px;margin-bottom:10px;}
.wh-product-card.low-stock{background:#fdf3f0;border-color:#f0c4b8;}
.wh-low-stock-alert{background:#fdecea;color:var(--danger);border:1px solid #f3c6c0;border-radius:9px;padding:10px 14px;font-size:12.5px;font-weight:600;margin-top:8px;}
.status-btn-selected{box-shadow:0 0 0 2px #2f6fed, 0 0 0 4px rgba(47,111,237,0.15) !important;position:relative;}
.tp-box{border:1.3px solid var(--border-strong,#c7cfd6);border-right-width:4px;border-radius:10px;padding:12px 14px;margin-bottom:14px;background:#fbfcfd;}
.tp-box .tp-box-title{font-weight:700;font-size:13.5px;color:var(--navy);margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid var(--border);}
.tp-box.tp-c-blue{border-right-color:#3d7dbf;} .tp-box.tp-c-blue .tp-box-title{color:#2f6499;}
.tp-box.tp-c-red{border-right-color:#c0605a;} .tp-box.tp-c-red .tp-box-title{color:#a8493f;}
.tp-box.tp-c-navy{border-right-color:var(--navy);} .tp-box.tp-c-navy .tp-box-title{color:var(--navy);}
.tp-box.tp-c-green{border-right-color:var(--green);} .tp-box.tp-c-green .tp-box-title{color:var(--green);}
.tp-box.tp-c-amber{border-right-color:#c98a1a;} .tp-box.tp-c-amber .tp-box-title{color:#a8730f;}
.tp-box.tp-c-teal{border-right-color:#2f9e8f;} .tp-box.tp-c-teal .tp-box-title{color:#25806f;}
.tp-box.tp-c-purple{border-right-color:#8264c2;} .tp-box.tp-c-purple .tp-box-title{color:#6a4fab;}
.tp-box.tp-c-gray{border-right-color:#8b98a3;} .tp-box.tp-c-gray .tp-box-title{color:#5c6b76;}
.tp-check-item{display:flex;align-items:center;gap:9px;padding:8px 0;}
.tp-check-item input[type=checkbox]{width:19px;height:19px;accent-color:var(--green);cursor:pointer;flex-shrink:0;}
.tp-check-item label{margin:0;color:var(--text);font-size:14px;}
.tp-section-title{color:var(--green);font-weight:700;font-size:13.5px;margin:16px 0 8px;padding-right:8px;border-right:3px solid var(--green);}

/* ---------- Calendar ---------- */
.jalali-calendar{background:#fff;border-radius:var(--radius);}
.cal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;}
.cal-day-name{text-align:center;font-size:11.5px;color:var(--text-muted);font-weight:700;padding:6px 0;}
.cal-day{
    aspect-ratio:1;border:1px solid var(--border);border-radius:var(--radius-sm);
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    cursor:pointer;font-size:12.5px;position:relative;background:#fbfcfd;
}
.cal-day:hover{border-color:var(--green);}
.cal-day.empty{background:transparent;border:none;cursor:default;}
.cal-day .dot{width:6px;height:6px;border-radius:50%;position:absolute;bottom:5px;}
.cal-day .count{font-size:10px;color:var(--green);font-weight:700;margin-top:2px;}
.dot-pending{background:var(--warning);}
.dot-passed{background:var(--green);}
.dot-failed{background:var(--danger);}

/* ---------- Notifications ---------- */
.notif-item{padding:12px 14px;border-radius:var(--radius-sm);background:#fafcfd;border:1px solid var(--border);margin-bottom:8px;font-size:13px;}
.notif-item.unread{border-right:3px solid var(--green);background:var(--green-bg);}
.notif-time{font-size:11px;color:var(--text-muted);margin-top:4px;}

/* ---------- Login ---------- */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--navy),var(--navy-dark));}
.login-card{background:#fff;padding:38px 34px;border-radius:12px;width:100%;max-width:380px;box-shadow:0 20px 60px rgba(0,0,0,0.3);}
.login-card h2{color:var(--navy);text-align:center;margin-bottom:4px;}
.login-card p{text-align:center;color:var(--text-muted);font-size:12.5px;margin-bottom:24px;}

.alert{padding:10px 14px;border-radius:var(--radius-sm);font-size:13px;margin-bottom:14px;}
.alert-danger{background:#fdecea;color:var(--danger);}
.alert-success{background:var(--green-bg);color:var(--green);}

.text-muted{color:var(--text-muted);}
.mt-2{margin-top:10px;}
.flex{display:flex;}
.flex-between{display:flex;justify-content:space-between;align-items:center;}
.gap-2{gap:10px;}
.small{font-size:12px;}
.w-full{width:100%;}
