/* ================================================================
   EINFACH-TERMIN — style.css  (LAVENDER EDITION · OBSIDIAN GOLD)
   ─────────────────────────────────────────────────────────────────
   Brand-Palette (TASK 12):
     · Deep Obsidian #1A1225        — Hauptmarke (statt vorher #3D2B56)
     · Lavender Gold  #D4AF37        — Akzent / Ribbons / Hover
     · Off-White      #F8F9FA        — Hintergrund (statt reines Weiß)
     · Charcoal       #2A2335        — Text auf Light-Mode
     · Pearl Grey     #E5E1DC        — Subtile Borders & Dividers

   Idee: nicht „weißes SaaS", sondern wertiges Brief-Papier mit
   golden Akzenten. Medizinischer Ernst, premium statt cyber.
================================================================ */

/* ── 1. CSS-VARIABLEN · LIGHT MODE ────────────────────────────── */
:root {
    /* Hintergrund: warmes Off-White (kein reines #FFF) */
    --bg:           #F8F9FA;
    --card:         #ffffff;
    --text:         #2A2335;       /* Charcoal mit Lila-Unterton */
    --text-muted:   #6B6378;

    /* Brand: Deep Obsidian */
    --primary:      #1A1225;       /* DEEP OBSIDIAN — Hauptmarke */
    --primary-dark: #0F0818;       /* noch tiefer für Hover */
    --primary-light:#F0EDF5;       /* sehr hell — Hintergrund für Akzente */
    --accent:       #D4AF37;       /* LAVENDER GOLD — Akzentfarbe */
    --accent-light: #FAF3D8;       /* helles Gold */
    --accent-dark:  #B8941F;       /* tiefes Gold */
    --lavender:     #F0EDF5;       /* sehr blasse Lavendel-Nuance */
    --lavender-deep:#D8C8EC;
    --border:       #E5E1DC;       /* Pearl Grey — kühlere, neutralere Border */
    --gold-divider: rgba(212,175,55,.35);

    /* Radien */
    --r:    16px;
    --r-sm: 10px;

    /* Status — bewusst gedämpft, kein knallig-RGB */
    --danger:        #B91C1C;
    --danger-light:  #FEF2F2;
    --success:       #15803D;
    --success-light: #F0FDF4;
    --warning:       #B45309;
    --warning-light: #FEF3C7;

    /* Schatten — sehr subtil, weich (Obsidian-Tönung) */
    --shadow:      0 2px 12px rgba(26,18,37,.05);
    --shadow-md:   0 8px 32px rgba(26,18,37,.08);
    --shadow-gold: 0 4px 20px rgba(212,175,55,.15);

    /* Termin-Typen — alle in Obsidian-Familie */
    --type-exam:      #1A1225;
    --type-procedure: #0F0818;
    --type-consult:   #3D2B56;
    --type-operation: #06030E;

    /* Sidebar */
    --sidebar-w:224px;
    --sidebar-bg:          #ffffff;
    --sidebar-border:      #E5E1DC;
    --sidebar-active-bg:   #F0EDF5;
    --sidebar-active-color:#1A1225;
}

/* ── 2. CSS-VARIABLEN · DARK MODE · Royal Obsidian ────────────── */
body.dark-mode {
    --bg:           #0F0818;       /* tiefer als zuvor — fast schwarz */
    --card:         #1A1225;       /* echtes Obsidian */
    --text:         #F5EDD6;       /* cremig-gold */
    --text-muted:   #B8A8D4;
    --primary:      #D4AF37;       /* im Dark wird Gold zur Hauptmarke */
    --primary-dark: #B8941F;
    --primary-light:rgba(212,175,55,.12);
    --accent:       #D4AF37;
    --accent-light: rgba(212,175,55,.18);
    --accent-dark:  #B8941F;
    --lavender:     #1A1225;
    --lavender-deep:#2A1B40;
    --border:       rgba(212,175,55,.18);
    --gold-divider: rgba(212,175,55,.4);
    --shadow:      0 4px 24px rgba(0,0,0,.55);
    --shadow-md:   0 8px 40px rgba(0,0,0,.7);
    --shadow-gold: 0 4px 24px rgba(212,175,55,.22);
    --sidebar-bg:          #0A0512;
    --sidebar-border:      rgba(212,175,55,.15);
    --sidebar-active-bg:   rgba(212,175,55,.12);
    --sidebar-active-color:#D4AF37;
}
body.dark-mode header           { background:rgba(8,6,15,.95); border-color:rgba(150,123,182,.12); }
body.dark-mode input,
body.dark-mode select           { background:#1a1428; color:var(--text); border-color:var(--border); }
body.dark-mode .card,
body.dark-mode .appt-row,
body.dark-mode .praxis-card,
body.dark-mode .hero-card,
body.dark-mode .kanban-card,
body.dark-mode .doctor-item     { background:var(--card); border-color:var(--border); }
body.dark-mode .slot            { background:#1a1428; color:var(--text); border-color:var(--border); }
body.dark-mode .slot.sel        { background:#3d2c70; color:#d4b8ff; }
body.dark-mode .slot.taken      { background:#0d0b18; color:#333; }
body.dark-mode .modal-box       { background:#0f0d1a; color:var(--text); }
body.dark-mode .skeleton        { background:linear-gradient(90deg,#1a1428 25%,#2d2050 50%,#1a1428 75%); background-size:200% 100%; }
body.dark-mode .ss-results      { background:#0f0d1a; border-color:var(--border); }
body.dark-mode .ss-item:hover   { background:#1a1428; }
body.dark-mode .kanban-col.drag-over { background:#1a1428; }
body.dark-mode .reminder-center { border-color:var(--border); }
body.dark-mode .sidebar         { background:var(--sidebar-bg); border-color:var(--sidebar-border); }
body.dark-mode .sidebar-nav-item.active { background:var(--sidebar-active-bg); color:var(--sidebar-active-color); }
body.dark-mode .sidebar-footer-avatar  { box-shadow:0 2px 10px rgba(150,123,182,.25); }
body.dark-mode .sidebar-logo    { background:linear-gradient(135deg,rgba(150,123,182,.1),transparent); }
body.dark-mode .private-note-wrap  { background:linear-gradient(135deg,#1a1000,#120f00); border-color:#7a5000; }
body.dark-mode .private-note-input { color:#ffcc80; }
/* Auth-shell в тёмной теме */
body.dark-mode .auth-shell      { background:linear-gradient(135deg,#08060F 0%,#130d22 100%); }
body.dark-mode .auth-shell .card { background:#0f0d1a !important; border-color:rgba(150,123,182,.2) !important; }
body.dark-mode .auth-shell input { background:#1a1428 !important; color:#e8e4f8 !important; }
body.dark-mode .auth-shell h2   { color:#e8e4f8; }
body.dark-mode .auth-shell label { color:rgba(200,170,255,.7); }
body.dark-mode .auth-shell .logo { color:#c8aaff !important; }
body.dark-mode .auth-shell .logo span { color:#967BB6 !important; }

/* ── 3. СБРОС И BASE ──────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'DM Sans',sans-serif;background:var(--bg);color:var(--text);font-size:15px;line-height:1.6;overflow-x:hidden;transition:background .25s ease,color .25s ease;}
::-webkit-scrollbar{width:6px;} ::-webkit-scrollbar-track{background:var(--lavender);} ::-webkit-scrollbar-thumb{background:var(--lavender-deep);border-radius:3px;}

/* ── 4. ОБЩИЕ КОМПОНЕНТЫ ──────────────────────────────────────── */
.wrap{width:min(1180px,96%);margin:0 auto;}
header{background:rgba(255,255,255,.92);backdrop-filter:blur(12px);padding:14px 0;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:90;box-shadow:var(--shadow);}
nav{display:flex;justify-content:space-between;align-items:center;}
.logo{font-family:'Fraunces',serif;font-weight:900;font-size:1.5rem;color:var(--primary);cursor:pointer;letter-spacing:-.02em;}
.logo span{color:var(--accent);font-style:italic;}
.logo .admin-badge,.admin-badge{font-family:'DM Sans',sans-serif;font-size:.65rem;font-weight:700;background:var(--primary);color:#fff;padding:2px 7px;border-radius:6px;margin-left:6px;vertical-align:middle;font-style:normal;}
.page{display:none;padding:32px 0;animation:fi .3s ease;} .page.active{display:block;}
@keyframes fi{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:translateY(0);}}
.card{background:var(--card);border-radius:var(--r);border:1px solid var(--border);padding:22px 24px;margin-bottom:16px;box-shadow:var(--shadow);}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:18px;} .g4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;}
.btn{padding:11px 18px;border-radius:var(--r-sm);border:none;cursor:pointer;font-weight:700;font-size:.93rem;width:100%;margin-top:8px;font-family:'DM Sans',sans-serif;transition:all .18s;display:inline-flex;align-items:center;justify-content:center;gap:6px;}
.btn-main {
    background: var(--primary);
    color: #fff;
    position: relative;
    overflow: hidden;
}
.btn-main::before {
    content:'';
    position:absolute;
    inset:0;
    background: linear-gradient(135deg, rgba(212,175,55,0.18) 0%, transparent 60%);
    opacity: 0;
    transition: opacity 0.22s ease;
    pointer-events: none;
}
.btn-main:hover {
    background: var(--primary-dark);
    transform: translateY(-1px);
    box-shadow: 0 4px 16px rgba(26,18,37,.22), 0 0 0 1px rgba(212,175,55,.3);
}
.btn-main:hover::before { opacity: 1; }
.btn-outline{background:transparent;border:2px solid var(--primary);color:var(--primary);} .btn-outline:hover{background:var(--primary-light);}
.btn-text{background:transparent;color:var(--primary);font-size:.88rem;text-decoration:underline;border:none;cursor:pointer;margin-top:8px;font-family:'DM Sans',sans-serif;}
.btn-sm{padding:5px 11px;border-radius:7px;font-size:.78rem;font-weight:700;cursor:pointer;border:1.5px solid;background:transparent;margin:0;font-family:'DM Sans',sans-serif;transition:all .15s;}
.btn-ok{border-color:var(--success);color:var(--success);} .btn-ok:hover{background:var(--success);color:#fff;}
.btn-cancel{border-color:var(--danger);color:var(--danger);} .btn-cancel:hover{background:var(--danger);color:#fff;}
.btn-danger{background:var(--danger);color:#fff;border:none;}
input,select{width:100%;padding:10px 12px;margin:5px 0 14px;border:1.5px solid var(--border);border-radius:var(--r-sm);font-size:.93rem;background:var(--card);color:var(--text);font-family:'DM Sans',sans-serif;transition:border-color .15s,box-shadow .15s;}
input:focus,select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(26,18,37,.12);}
label{font-weight:600;font-size:.82rem;color:var(--text-muted);display:block;margin-bottom:2px;}
.err{color:var(--danger);font-size:.82rem;margin-bottom:10px;display:none;}
.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;font-size:.75rem;font-weight:700;}
.b-pending{background:#fff3cd;color:#7a4800;} .b-confirmed{background:var(--success-light);color:var(--success);} .b-cancelled{background:var(--danger-light);color:var(--danger);}
.stat-card{border-radius:var(--r-sm);padding:15px 16px;}
.stat-num{font-size:1.9rem;font-weight:800;line-height:1;font-family:'Fraunces',serif;}
.stat-lbl{font-size:.77rem;color:var(--text-muted);margin-top:4px;}

/* ── ЗАДАЧА 4: Виджеты-карточки Обзор ── */
.overview-widgets{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px;}
.ow-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:18px 20px;display:flex;flex-direction:column;gap:6px;position:relative;overflow:hidden;transition:box-shadow .2s,transform .15s;}
.ow-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);}
.ow-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;border-radius:var(--r) var(--r) 0 0;}
.ow-card.ow-today::before{background:linear-gradient(90deg,var(--primary),var(--lavender-deep));}
.ow-card.ow-subscription::before{background:linear-gradient(90deg,var(--success),#20bf6b);}
.ow-card.ow-subscription.expired::before{background:linear-gradient(90deg,var(--danger),#fc5c65);}
.ow-card.ow-slots::before{background:linear-gradient(90deg,var(--warning),#f7b731);}
.ow-card.ow-doctors::before{background:linear-gradient(90deg,#4b7bec,#3867d6);}
.ow-icon{font-size:1.5rem;line-height:1;}
.ow-value{font-size:2rem;font-weight:900;font-family:'Fraunces',serif;line-height:1;color:var(--text);}
.ow-label{font-size:.78rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;}
.ow-sub{font-size:.75rem;color:var(--text-muted);margin-top:2px;}
.ow-badge{display:inline-flex;align-items:center;gap:4px;font-size:.7rem;font-weight:700;padding:2px 8px;border-radius:999px;margin-top:4px;width:fit-content;}
.ow-badge.ok{background:var(--success-light);color:var(--success);}
.ow-badge.warn{background:var(--warning-light);color:var(--warning);}
.ow-badge.danger{background:var(--danger-light);color:var(--danger);}
.ow-badge.info{background:var(--primary-light);color:var(--primary);}
.ow-progress{height:5px;border-radius:3px;background:var(--border);margin-top:8px;overflow:hidden;}
.ow-progress-bar{height:100%;border-radius:3px;transition:width .4s ease;}
.section-label{font-size:.78rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;margin:16px 0 8px;}
.empty{color:#aaa;font-size:.88rem;text-align:center;padding:18px 0;}
#toast-container{position:fixed;bottom:24px;right:24px;z-index:9999;}
.toast{background:#2d1b69;color:#fff;padding:13px 20px;border-radius:var(--r-sm);margin-top:10px;box-shadow:var(--shadow-md);animation:toastIn .3s ease,toastOut .3s ease 2.7s forwards;font-size:.9rem;font-weight:500;}
.toast.t-success{background:#155c30;} .toast.t-error{background:var(--danger);} .toast.t-warning{background:var(--warning);} .toast.t-emergency{background:#7a0e00;font-weight:700;}
@keyframes toastIn{from{transform:translateX(110%);opacity:0;}to{transform:translateX(0);opacity:1;}}
@keyframes toastOut{to{transform:translateX(110%);opacity:0;}}
.skeleton{background:linear-gradient(90deg,var(--lavender) 25%,#f0ecfa 50%,var(--lavender) 75%);background-size:200% 100%;animation:skel 1.4s infinite;border-radius:var(--r-sm);}
@keyframes skel{from{background-position:200% 0;}to{background-position:-200% 0;}}
.type-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:12px;font-size:.68rem;font-weight:700;margin-top:4px;}
.type-exam{background:#f0ebff;color:var(--type-exam);} .type-procedure{background:var(--primary-light);color:var(--type-procedure);}
.type-consult{background:#e8f4f8;color:var(--type-consult);} .type-operation{background:#ede8f9;color:var(--type-operation);}
.appt-type-exam{border-left:4px solid var(--type-exam)!important;} .appt-type-procedure{border-left:4px solid var(--type-procedure)!important;}
.appt-type-consult{border-left:4px solid var(--type-consult)!important;} .appt-type-operation{border-left:4px solid var(--type-operation)!important;}
.slot-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:8px 0 16px;}
.slot{padding:8px 0;text-align:center;border-radius:8px;border:1.5px solid var(--border);font-size:.82rem;font-weight:700;cursor:pointer;background:var(--card);color:var(--text);transition:all .15s;}
.slot:hover:not(.taken):not(.break-slot){border-color:var(--primary);background:var(--primary-light);}
.slot.sel{border-color:var(--primary);background:var(--primary-light);color:var(--primary);}
.slot.taken{background:#f8f6ff;color:#ccc;cursor:not-allowed;text-decoration:line-through;border-color:#eee;}
.slot.break-slot{background:var(--warning-light);color:var(--warning);border-color:#ffe0a0;cursor:not-allowed;font-size:.72rem;}
.doctor-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.dot-active{background:#27ae60;} .dot-urlaub{background:#f39c12;} .dot-krank{background:var(--danger);}
.star-row{display:flex;gap:4px;margin-top:6px;}
.star{font-size:1.3rem;cursor:pointer;color:#ddd;transition:color .15s,transform .15s;line-height:1;}
.star:hover,.star.on{color:#f39c12;transform:scale(1.2);}
.star-display{color:#f39c12;font-size:.9rem;letter-spacing:1px;}
.health-bar{height:8px;border-radius:4px;background:var(--lavender);overflow:hidden;flex:1;}
.health-bar-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,var(--primary),var(--accent));}
.week-bar-wrap{display:flex;align-items:flex-end;gap:6px;height:60px;margin-top:8px;overflow-x:auto;min-width:180px;}
.week-bar-col{display:flex;flex-direction:column;align-items:center;flex:1;min-width:22px;}
.week-bar{width:100%;background:var(--primary);border-radius:4px 4px 0 0;min-height:4px;transition:height .3s;}
.week-bar.peak{background:var(--accent)!important;}
.week-bar-lbl{font-size:.68rem;color:var(--text-muted);margin-top:3px;}
.week-bar-peak-lbl{font-size:.65rem;color:var(--accent);font-weight:700;margin-top:1px;}
.pw-strength{height:4px;border-radius:2px;margin-top:-10px;margin-bottom:10px;transition:width .3s,background .3s;}
.gdpr-pop{position:fixed;bottom:0;left:0;width:100%;background:var(--card);border-top:2px solid var(--primary);padding:16px 0;z-index:10002;display:none;box-shadow:0 -5px 20px rgba(26,18,37,.15);animation:slideUp .4s ease;}
@keyframes slideUp{from{transform:translateY(100%);}to{transform:translateY(0);}}
.modal-overlay{position:fixed;inset:0;background:rgba(44,27,105,.35);backdrop-filter:blur(4px);z-index:1000;display:none;align-items:center;justify-content:center;}
.modal-overlay.open{display:flex;}
.modal-box{background:var(--card);border-radius:var(--r);padding:32px;max-width:540px;width:94%;max-height:82vh;overflow-y:auto;box-shadow:0 20px 60px rgba(44,27,105,.2);}
.modal-box h3{margin:0 0 14px;font-family:'Fraunces',serif;}
.modal-box p{font-size:.88rem;color:var(--text-muted);line-height:1.6;margin-bottom:10px;}
.lang-switch select{width:auto;padding:5px 10px;margin:0;border-radius:7px;font-size:.82rem;border:1.5px solid var(--border);background:var(--card);cursor:pointer;}
@media print{body>*:not(#print-area){display:none!important;}#print-area{display:block!important;position:fixed;top:0;left:0;width:100%;z-index:99999;background:#fff;}}
#print-area{display:none;}
.ticket-box{font-family:'DM Sans',sans-serif;max-width:420px;margin:30px auto;border:2px solid var(--text);border-radius:var(--r);padding:30px;}
.ticket-box .t-header{text-align:center;border-bottom:1px dashed var(--border);padding-bottom:16px;margin-bottom:18px;}
.ticket-box .t-logo{font-size:1.5rem;font-weight:900;color:var(--primary);font-family:'Fraunces',serif;}
.ticket-box .t-row{display:flex;justify-content:space-between;margin-bottom:9px;font-size:.88rem;}
.ticket-box .t-label{color:#888;} .ticket-box .t-val{font-weight:700;}
.ticket-box .t-footer{text-align:center;font-size:.68rem;color:#aaa;margin-top:16px;border-top:1px dashed var(--border);padding-top:12px;line-height:1.6;}

/* ── 5. ТОЛЬКО INDEX.HTML ─────────────────────────────────────── */
.hero-cards{display:grid;grid-template-columns:1fr 1fr;gap:20px;max-width:640px;margin:32px auto 0;}
.hero-card{background:var(--card);border:2px solid var(--border);border-radius:20px;padding:36px 28px;text-align:center;cursor:pointer;transition:border-color .2s,box-shadow .2s,transform .2s;}
.hero-card:hover{border-color:var(--primary);box-shadow:var(--shadow-md);transform:translateY(-4px);}
.hero-card .hc-icon{font-size:3rem;margin-bottom:14px;}
.hero-card h2{margin:0 0 6px;font-size:1.15rem;font-family:'Fraunces',serif;}
.hero-card p{margin:0;font-size:.84rem;color:var(--text-muted);line-height:1.4;}
.hero-card.hc-patient{border-color:var(--lavender-deep);} .hero-card.hc-praxis{border-color:#b8e8c8;}
.praxis-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:20px;margin-bottom:14px;cursor:pointer;transition:all .2s;box-shadow:var(--shadow);}
.praxis-card:hover{border-color:var(--primary);box-shadow:var(--shadow-md);transform:translateY(-2px);}
.praxis-card.selected{border-color:var(--primary);border-width:2px;background:var(--primary-light);}
.pc-header{display:flex;align-items:center;gap:14px;margin-bottom:12px;}
.praxis-icon{width:54px;height:54px;background:linear-gradient(135deg,var(--primary-light),var(--lavender-deep));border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:1.6rem;flex-shrink:0;}
.praxis-name{font-family:'Fraunces',serif;font-size:1.05rem;font-weight:700;}
.praxis-addr{font-size:.8rem;color:var(--text-muted);margin-top:2px;}
.doctor-chip{background:var(--primary-light);border:1px solid var(--lavender-deep);color:var(--primary);border-radius:20px;padding:5px 12px;font-size:.78rem;font-weight:600;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:6px;margin:3px;}
.doctor-chip:hover{background:var(--primary);color:#fff;} .doctor-chip.selected{background:var(--primary);color:#fff;}
.doctor-chip.unavail{opacity:.5;cursor:not-allowed;background:var(--danger-light);color:var(--danger);border-color:#f5c6cb;}
.appt-row{display:flex;justify-content:space-between;align-items:flex-start;padding:14px 16px;border-radius:var(--r-sm);border:1px solid var(--border);margin-bottom:9px;background:var(--card);transition:box-shadow .15s;}
.appt-row:hover{box-shadow:var(--shadow);}
.appt-l{display:flex;flex-direction:column;gap:3px;flex:1;}
.appt-r{display:flex;gap:7px;align-items:flex-start;}
.appt-name{font-weight:700;font-size:.93rem;}
.appt-meta{font-size:.8rem;color:var(--text-muted);}
.urgent-task{border-left:5px solid var(--danger)!important;background:var(--danger-light)!important;}
.urgent-badge{background:var(--danger);color:#fff;font-size:10px;padding:2px 6px;border-radius:4px;text-transform:uppercase;display:inline-block;margin-bottom:4px;}
.btn-cancel-appt{background:var(--danger-light);color:var(--danger);border:1px solid var(--danger);font-size:.8rem;padding:5px 10px;border-radius:7px;cursor:pointer;}
.lock-text{font-size:.75rem;color:var(--danger);font-weight:600;}
.print-ticket-btn{display:inline-flex;align-items:center;gap:6px;background:var(--primary-light);border:1.5px solid var(--lavender-deep);color:var(--primary);border-radius:var(--r-sm);padding:5px 10px;font-size:.76rem;font-weight:700;cursor:pointer;}
.next-visit-banner{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;border-radius:var(--r);padding:18px 22px;margin-bottom:18px;display:flex;align-items:center;gap:16px;}
.nv-icon{font-size:2rem;} .nv-label{font-size:.7rem;opacity:.75;text-transform:uppercase;letter-spacing:.08em;}
.nv-main{font-family:'Fraunces',serif;font-size:1rem;margin-top:2px;} .nv-sub{font-size:.82rem;opacity:.82;margin-top:3px;}
.smart-search-wrap{position:relative;margin-bottom:12px;}
.smart-search-wrap input{padding-left:36px;margin:0;}
.smart-search-wrap .ss-icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);pointer-events:none;}
.ss-results{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--card);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:var(--shadow-md);z-index:200;max-height:220px;overflow-y:auto;display:none;}
.ss-item{padding:9px 14px;cursor:pointer;font-size:.88rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;transition:background .12s;}
.ss-item:last-child{border-bottom:none;} .ss-item:hover{background:var(--primary-light);}
.ss-name{font-weight:700;} .ss-meta{font-size:.75rem;color:var(--text-muted);}
.reminder-banner{background:linear-gradient(135deg,var(--warning),#c87000);color:#fff;padding:12px 16px;border-radius:var(--r-sm);margin-bottom:14px;display:flex;align-items:center;gap:12px;animation:slideDown .5s ease;box-shadow:0 4px 16px rgba(160,92,0,.25);}
.reminder-banner .rb-close{background:rgba(255,255,255,.2);border:none;border-radius:50%;width:22px;height:22px;cursor:pointer;color:#fff;font-size:.7rem;display:flex;align-items:center;justify-content:center;margin-left:auto;flex-shrink:0;}
.reminder-banner .rb-close:hover{background:rgba(255,255,255,.35);}
@keyframes slideDown{from{transform:translateY(-16px);opacity:0;}to{transform:translateY(0);opacity:1;}}
.reminder-center{background:var(--card);border:1.5px solid var(--lavender-deep);border-radius:var(--r);padding:0;overflow:hidden;margin-bottom:16px;}
.reminder-center-header{background:linear-gradient(135deg,var(--primary-light),var(--lavender));padding:14px 18px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);}
.reminder-center-title{font-family:'Fraunces',serif;font-size:.95rem;font-weight:700;color:var(--primary);display:flex;align-items:center;gap:8px;}
.reminder-badge-count{background:var(--danger);color:#fff;border-radius:50%;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;font-size:.68rem;font-weight:700;flex-shrink:0;}
.reminder-item{display:flex;align-items:flex-start;gap:12px;padding:12px 18px;border-bottom:1px solid var(--border);transition:background .15s;}
.reminder-item:last-child{border-bottom:none;} .reminder-item:hover{background:var(--bg);}
.reminder-item.ri-today{border-left:4px solid var(--danger);} .reminder-item.ri-tomorrow{border-left:4px solid var(--warning);}
.reminder-item.ri-soon{border-left:4px solid var(--primary);} .reminder-item.ri-done{opacity:.5;}
.reminder-icon{font-size:1.4rem;flex-shrink:0;margin-top:2px;} .reminder-info{flex:1;}
.reminder-title{font-weight:700;font-size:.88rem;} .reminder-meta{font-size:.75rem;color:var(--text-muted);margin-top:2px;}
.reminder-time-badge{flex-shrink:0;text-align:right;}
.reminder-time-label{font-size:.72rem;font-weight:700;padding:3px 8px;border-radius:12px;display:inline-block;}
.rtl-danger{background:var(--danger-light);color:var(--danger);} .rtl-warning{background:var(--warning-light);color:var(--warning);}
.rtl-primary{background:var(--primary-light);color:var(--primary);} .rtl-success{background:var(--success-light);color:var(--success);}
.reminder-snooze{background:transparent;border:1px solid var(--border);border-radius:6px;padding:3px 8px;font-size:.68rem;cursor:pointer;color:var(--text-muted);margin-top:4px;font-family:'DM Sans',sans-serif;transition:all .15s;}
.reminder-snooze:hover{border-color:var(--primary);color:var(--primary);}
.profile-avatar{width:52px;height:52px;border-radius:50%;background:var(--primary-light);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.15rem;color:var(--primary);flex-shrink:0;}
.ins-badge{display:inline-block;padding:4px 12px;border-radius:20px;font-size:.78rem;font-weight:700;}
.ins-public{background:var(--success-light);color:var(--success);} .ins-private{background:var(--primary-light);color:var(--primary);}
.push-btn{display:flex;align-items:center;gap:8px;background:var(--warning-light);border:1.5px solid var(--warning);color:var(--warning);border-radius:var(--r-sm);padding:8px 14px;font-size:.82rem;font-weight:700;cursor:pointer;margin-top:8px;width:100%;justify-content:center;font-family:'DM Sans',sans-serif;transition:all .2s;}
.push-btn.enabled{background:var(--success-light);border-color:var(--success);color:var(--success);}
.push-btn.denied{background:var(--danger-light);border-color:var(--danger);color:var(--danger);opacity:.7;}
.push-settings-wrap{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-sm);padding:10px 12px;margin-top:8px;}
.push-settings-title{font-size:.72rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px;}
.push-toggle-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0;font-size:.8rem;}
.push-toggle-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary);cursor:pointer;}
.push-history-item{display:flex;align-items:flex-start;gap:8px;padding:6px 0;border-bottom:1px solid var(--border);font-size:.75rem;}
.push-history-item:last-child{border-bottom:none;}
.push-history-icon{font-size:1rem;flex-shrink:0;margin-top:1px;}
.gdpr-dl-btn{display:flex;align-items:center;gap:8px;background:var(--primary-light);border:1.5px solid var(--lavender-deep);color:var(--primary);border-radius:var(--r-sm);padding:8px 14px;font-size:.82rem;font-weight:700;cursor:pointer;margin-top:8px;width:100%;justify-content:center;font-family:'DM Sans',sans-serif;}
.gdpr-box-reg{display:flex;align-items:flex-start;gap:10px;background:var(--warning-light);border-left:3px solid var(--warning);border-radius:6px;padding:10px 12px;margin-bottom:12px;font-size:.83rem;color:#555;}
.gdpr-box-reg input[type=checkbox]{width:auto;margin:2px 0 0;flex-shrink:0;}
.gdpr-box-reg a{color:var(--primary);}
.doc-upload-zone{border:2px dashed var(--border);border-radius:var(--r-sm);padding:16px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;margin-bottom:10px;}
.doc-upload-zone:hover,.doc-upload-zone.dragover{border-color:var(--primary);background:var(--primary-light);}
.doc-upload-zone p{margin:6px 0 0;font-size:.8rem;color:var(--text-muted);}
.doc-list{display:flex;flex-direction:column;gap:6px;margin-top:8px;}
.doc-item{display:flex;justify-content:space-between;align-items:center;background:var(--bg);border-radius:7px;padding:7px 10px;font-size:.8rem;gap:8px;}
.doc-item .di-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;}
.doc-item .di-size{color:#aaa;font-size:.72rem;flex-shrink:0;}
.workdays-strip{display:flex;gap:4px;flex-wrap:wrap;margin:8px 0 4px;}
.workday-chip{display:inline-flex;align-items:center;padding:2px 8px;border-radius:20px;font-size:.68rem;font-weight:700;margin:1px;}
.workday-chip.active{background:var(--primary-light);color:var(--primary);}
.workday-chip.closed{background:var(--bg);color:#bbb;text-decoration:line-through;}
.date-avail-msg{border-radius:var(--r-sm);padding:8px 12px;font-size:.82rem;margin-bottom:8px;display:flex;align-items:center;gap:8px;}
.date-avail-ok{background:var(--success-light);color:var(--success);border-left:3px solid var(--success);}
.date-avail-err{background:var(--danger-light);color:var(--danger);border-left:3px solid var(--danger);}
.recall-overlay{position:fixed;inset:0;background:rgba(44,27,105,.5);backdrop-filter:blur(6px);z-index:12000;display:none;align-items:center;justify-content:center;padding:16px;}
.recall-overlay.open{display:flex;}
.recall-box{background:var(--card);border-radius:var(--r);box-shadow:0 20px 60px rgba(44,27,105,.3);width:100%;max-width:420px;overflow:hidden;}
.recall-header{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;padding:18px 22px;display:flex;align-items:center;gap:12px;}
.recall-header-icon{font-size:1.8rem;} .recall-header h3{margin:0;font-family:'Fraunces',serif;font-size:1.05rem;}
.recall-header p{margin:4px 0 0;font-size:.78rem;opacity:.82;}
.recall-body{padding:20px 22px;}
.recall-weeks-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0 16px;}
.recall-week-btn{padding:10px 4px;border-radius:var(--r-sm);border:2px solid var(--border);background:var(--card);color:var(--text);font-weight:700;font-size:.82rem;cursor:pointer;transition:all .18s;font-family:'DM Sans',sans-serif;text-align:center;}
.recall-week-btn:hover{border-color:var(--primary);background:var(--primary-light);color:var(--primary);}
.recall-week-btn.selected{border-color:var(--primary);background:var(--primary);color:#fff;}
.recall-week-btn .rw-num{font-size:1.2rem;font-weight:800;display:block;font-family:'Fraunces',serif;}
.recall-week-btn .rw-lbl{font-size:.66rem;opacity:.75;display:block;margin-top:1px;}
.recall-date-preview{background:var(--primary-light);border-radius:var(--r-sm);padding:10px 14px;font-size:.85rem;color:var(--primary);font-weight:600;margin-bottom:14px;display:flex;align-items:center;gap:8px;min-height:40px;}
.recall-footer{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:16px 22px;border-top:1px solid var(--border);}
.recall-btn-cancel{padding:11px;border-radius:var(--r-sm);border:2px solid var(--border);background:transparent;color:var(--text-muted);font-weight:700;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .15s;}
.recall-btn-cancel:hover{border-color:var(--danger);color:var(--danger);}
.recall-btn-confirm{padding:11px;border-radius:var(--r-sm);border:none;background:var(--primary);color:#fff;font-weight:700;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .18s;}
.recall-btn-confirm:hover{background:var(--primary-dark);transform:translateY(-1px);}
.recall-btn-confirm:disabled{opacity:.5;cursor:not-allowed;transform:none;}
.ticket-modal-overlay{position:fixed;inset:0;background:rgba(44,27,105,.5);backdrop-filter:blur(6px);z-index:11000;display:none;align-items:center;justify-content:center;padding:16px;}
.ticket-modal-overlay.open{display:flex;}
.ticket-modal-box{background:var(--card);border-radius:var(--r);box-shadow:0 20px 60px rgba(44,27,105,.3);width:100%;max-width:460px;max-height:92vh;overflow-y:auto;display:flex;flex-direction:column;}
.ticket-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0;}
.ticket-modal-header h3{margin:0;font-family:'Fraunces',serif;font-size:1.05rem;}
.ticket-modal-close{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:5px 12px;cursor:pointer;font-size:.82rem;color:var(--text);}
.ticket-modal-body{padding:20px;flex:1;}
.ticket-modal-actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;padding:16px 20px;border-top:1px solid var(--border);flex-shrink:0;}
.ticket-action-btn{display:flex;flex-direction:column;align-items:center;gap:5px;padding:12px 8px;border-radius:var(--r-sm);border:1.5px solid var(--border);background:var(--card);cursor:pointer;font-size:.72rem;font-weight:700;color:var(--text);font-family:'DM Sans',sans-serif;transition:all .18s;}
.ticket-action-btn:hover{border-color:var(--primary);background:var(--primary-light);color:var(--primary);}
.ticket-action-btn .tab-icon{font-size:1.4rem;}
.ticket-action-btn.btn-pdf{border-color:var(--danger);color:var(--danger);} .ticket-action-btn.btn-pdf:hover{background:var(--danger-light);}
.ticket-action-btn.btn-img{border-color:#2060a0;color:#2060a0;} .ticket-action-btn.btn-img:hover{background:#e8f0fa;}
.ticket-preview-inner{font-family:'DM Sans',sans-serif;max-width:380px;margin:0 auto;border:2px solid var(--border);border-radius:var(--r);padding:24px;background:#fff;color:#2d1b69;}
.ticket-preview-inner .t-header{text-align:center;border-bottom:1px dashed #ddd;padding-bottom:14px;margin-bottom:16px;}
.ticket-preview-inner .t-logo{font-size:1.3rem;font-weight:900;color:#3D2B56;font-family:'Fraunces',serif;}
.ticket-preview-inner .t-subtitle{font-size:.82rem;color:#888;margin-top:4px;}
.ticket-preview-inner .t-row{display:flex;justify-content:space-between;margin-bottom:8px;font-size:.85rem;}
.ticket-preview-inner .t-label{color:#888;} .ticket-preview-inner .t-val{font-weight:700;text-align:right;max-width:60%;}
.ticket-preview-inner .t-divider{border:none;border-top:1px dashed #ddd;margin:12px 0;}
.ticket-preview-inner .t-status{text-align:center;margin:10px 0;}
.ticket-preview-inner .t-status-badge{display:inline-block;padding:4px 14px;border-radius:20px;font-size:.75rem;font-weight:700;background:#edf7f0;color:#1a7a3f;}
.ticket-preview-inner .t-qr-new{text-align:center;margin:14px 0 8px;font-family:monospace;font-size:1rem;letter-spacing:2px;line-height:1.5;background:#f5f3fc;padding:10px;border-radius:8px;}
.ticket-preview-inner .t-footer{text-align:center;font-size:.64rem;color:#aaa;margin-top:12px;line-height:1.6;}

/* ── 6. ТОЛЬКО ADMIN.HTML ─────────────────────────────────────── */
.dashboard-shell{display:flex;height:100vh;overflow:hidden;}
.main-content{margin-left:var(--sidebar-w);flex:1;height:100vh;overflow-y:auto;overflow-x:hidden;scroll-behavior:smooth;display:flex;flex-direction:column;transition:background .25s ease;}
.dash-section{display:none;flex:1;padding:28px 32px;animation:fi .28s ease;}
.dash-section.active{display:block;}
.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;flex-wrap:wrap;gap:12px;}
.section-title{font-family:'Fraunces',serif;font-size:1.5rem;font-weight:900;color:var(--text);line-height:1.1;}
.section-subtitle{font-size:.85rem;color:var(--text-muted);margin-top:2px;}
.auth-shell{display:flex;min-height:100vh;flex-direction:column;}
.auth-header{background:rgba(255,255,255,.92);backdrop-filter:blur(12px);padding:14px 0;border-bottom:1px solid var(--border);box-shadow:var(--shadow);}
/* ── ЗАДАЧА 6: Sidebar визуал — тёмнее, иконки, активная вкладка ── */
.sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);display:flex;flex-direction:column;position:fixed;top:0;left:0;height:100vh;z-index:200;transition:transform .28s cubic-bezier(.4,0,.2,1),background .25s ease,border-color .25s ease;overflow-y:auto;overflow-x:hidden;}
.sidebar-logo{padding:20px 18px 14px;border-bottom:1px solid var(--sidebar-border);background:linear-gradient(135deg,rgba(26,18,37,.12),transparent);}
.sidebar-logo .logo-text{font-family:'Fraunces',serif;font-weight:900;font-size:1.2rem;color:var(--primary);letter-spacing:-.02em;line-height:1.1;cursor:pointer;transition:opacity .15s;}
.sidebar-logo .logo-text:hover{opacity:.8;}
.sidebar-logo .logo-text span{color:var(--accent);font-style:italic;}
.sidebar-logo .admin-badge{font-size:.58rem;display:inline-block;margin-top:4px;}
.sidebar-praxis-name{font-size:.72rem;color:var(--text-muted);margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:185px;display:flex;align-items:center;gap:5px;}
.sidebar-praxis-name::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--success);flex-shrink:0;}
.sidebar-nav{flex:1;padding:10px 8px;display:flex;flex-direction:column;gap:2px;}
.sidebar-section-label{font-size:.62rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;padding:12px 10px 5px;opacity:.55;}
.sidebar-nav-item{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:10px;cursor:pointer;font-size:.875rem;font-weight:500;color:var(--text-muted);transition:background .18s,color .18s,box-shadow .18s;border:1px solid transparent;background:transparent;font-family:'DM Sans',sans-serif;width:100%;text-align:left;position:relative;user-select:none;overflow:hidden;}
.sidebar-nav-item::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(26,18,37,.07),transparent);opacity:0;transition:opacity .18s;}
.sidebar-nav-item:hover{background:rgba(26,18,37,.1);color:var(--primary);}
.sidebar-nav-item:hover::after{opacity:1;}
.sidebar-nav-item:hover .sidebar-nav-icon{transform:scale(1.18);}
.sidebar-nav-item.active{background:linear-gradient(135deg,var(--primary-light),rgba(26,18,37,.08));color:var(--sidebar-active-color);font-weight:700;border-color:rgba(26,18,37,.2);box-shadow:0 2px 12px rgba(26,18,37,.12);}
.sidebar-nav-item.active::before{content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:65%;background:linear-gradient(180deg,var(--primary),var(--lavender-deep));border-radius:0 3px 3px 0;}
.sidebar-nav-item.active .sidebar-nav-icon{filter:drop-shadow(0 0 6px rgba(26,18,37,.5));transform:scale(1.12);}
.sidebar-nav-icon{font-size:1.05rem;flex-shrink:0;width:22px;text-align:center;transition:transform .2s,filter .2s;}
.sidebar-nav-badge{margin-left:auto;background:linear-gradient(135deg,var(--primary),var(--lavender-deep));color:#fff;font-size:.62rem;font-weight:800;padding:2px 7px;border-radius:10px;min-width:20px;text-align:center;box-shadow:0 2px 6px rgba(26,18,37,.35);animation:badgePop .3s ease;}
.sidebar-nav-badge.danger{background:linear-gradient(135deg,var(--danger),#fc5c65);}
@keyframes badgePop{0%{transform:scale(.5);opacity:0;}70%{transform:scale(1.15);}100%{transform:scale(1);opacity:1;}}
.sidebar-footer{padding:10px 8px 14px;border-top:1px solid var(--sidebar-border);}
.sidebar-footer-user{display:flex;align-items:center;gap:10px;padding:10px 12px 8px;margin-bottom:4px;}
.sidebar-footer-avatar{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--primary),var(--lavender-deep));display:flex;align-items:center;justify-content:center;font-size:1rem;flex-shrink:0;box-shadow:0 2px 8px rgba(26,18,37,.3);}
.sidebar-footer-user-info{overflow:hidden;}
.sidebar-footer-user-name{font-size:.8rem;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:130px;}
.sidebar-footer-user-role{font-size:.67rem;color:var(--text-muted);}
.sidebar-footer-divider{height:1px;background:var(--sidebar-border);margin:4px 12px 8px;}
.sidebar-footer-actions{display:flex;flex-direction:column;gap:2px;}
.sidebar-footer-btn{display:flex;align-items:center;gap:9px;padding:8px 12px;border-radius:9px;border:none;background:transparent;color:var(--text-muted);font-size:.82rem;cursor:pointer;font-family:'DM Sans',sans-serif;transition:background .15s,color .15s;width:100%;text-align:left;}
.sidebar-footer-btn:hover{background:rgba(26,18,37,.1);color:var(--primary);}
.sidebar-footer-btn.danger:hover{background:var(--danger-light);color:var(--danger);}
.sidebar-toggle{display:none;position:fixed;top:14px;left:14px;z-index:300;background:var(--primary);color:#fff;border:none;border-radius:10px;padding:8px 11px;cursor:pointer;font-size:1.1rem;box-shadow:var(--shadow-md);}
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(44,27,105,.35);backdrop-filter:blur(3px);z-index:190;}
.btn-emergency{background:linear-gradient(135deg,#c0392b,#e74c3c);color:#fff;border:none;border-radius:var(--r-sm);padding:12px 20px;cursor:pointer;font-weight:800;font-size:.9rem;width:100%;display:flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 4px 16px rgba(192,57,43,.35);transition:all .2s;font-family:'DM Sans',sans-serif;margin-top:8px;animation:emergencyPulse 2.5s infinite;}
.btn-emergency:hover{transform:scale(1.02);}
@keyframes emergencyPulse{0%,100%{box-shadow:0 4px 16px rgba(192,57,43,.35)}50%{box-shadow:0 4px 28px rgba(192,57,43,.6)}}
.today-banner{background:linear-gradient(135deg,var(--success),#155c30);color:#fff;border-radius:var(--r);padding:16px 22px;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;}
.tb-num{font-size:2.2rem;font-weight:800;line-height:1;font-family:'Fraunces',serif;}
.tb-label{font-size:.82rem;opacity:.85;} .tb-sublabel{font-size:.7rem;opacity:.65;margin-top:2px;}
.unavail-toggle{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.15);border-radius:10px;padding:8px 14px;cursor:pointer;border:none;color:#fff;font-size:.82rem;font-weight:700;font-family:'DM Sans',sans-serif;transition:background .15s;}
.unavail-toggle:hover{background:rgba(255,255,255,.25);}
.unavail-dot{width:10px;height:10px;border-radius:50%;background:#4cff8a;flex-shrink:0;}
.praxis-link-bar{background:var(--primary-light);border:1px solid var(--lavender-deep);border-radius:var(--r-sm);padding:10px 16px;margin-bottom:12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.praxis-link-pill{color:var(--primary);font-weight:600;font-size:.85rem;cursor:pointer;}
/* ── ЗАДАЧА 3: section-kanban 100% высоты, колонки со своим скроллом ── */
#section-kanban{display:none;flex-direction:column;height:100%;padding:28px 32px;box-sizing:border-box;}
#section-kanban.active{display:flex;}
#section-kanban .section-header{flex-shrink:0;}
.kanban-board-card{display:flex;flex-direction:column;flex:1;min-height:0;margin-bottom:0;overflow:hidden;}
.kanban-board-card .kanban-top-bar{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:12px;}
.kanban-wrap{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;flex:1;min-height:0;}
.kanban-col{background:var(--bg);border-radius:var(--r-sm);padding:10px;border:2px dashed transparent;transition:border-color .2s,background .2s;display:flex;flex-direction:column;min-height:0;overflow:hidden;}
.kanban-col-title{font-size:.72rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px;flex-shrink:0;}
.kanban-col-body{flex:1;overflow-y:auto;overflow-x:hidden;padding-right:2px;}
.kanban-col-body::-webkit-scrollbar{width:4px;}
.kanban-col-body::-webkit-scrollbar-track{background:transparent;}
.kanban-col-body::-webkit-scrollbar-thumb{background:var(--lavender-deep);border-radius:2px;}
.kanban-manual-section{flex-shrink:0;margin-top:12px;}
.kanban-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-sm);padding:10px 12px;margin-bottom:7px;cursor:grab;font-size:.82rem;transition:box-shadow .15s,transform .15s;user-select:none;}
.kanban-card:active{cursor:grabbing;}
.kanban-card.dragging{opacity:.45;transform:scale(.97);box-shadow:var(--shadow-md);}
.kanban-card .kc-name{font-weight:700;font-size:.88rem;}
.kanban-card .kc-meta{color:var(--text-muted);font-size:.74rem;margin-top:2px;}
.kanban-card.urgent-card{border-left:4px solid var(--danger)!important;background:var(--danger-light)!important;animation:urgentPulse 2s infinite;}
@keyframes urgentPulse{0%,100%{box-shadow:0 0 0 0 rgba(192,57,43,0);border-left-color:var(--danger);}50%{box-shadow:0 0 0 5px rgba(192,57,43,.2);border-left-color:#e74c3c;}}
@keyframes urgentDot{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.4;transform:scale(1.4);}}
.auslastung-card{border:2px solid var(--lavender-deep);}
.doc-load-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);}
.doc-load-row:last-child{border-bottom:none;}
.doc-load-avatar{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.82rem;color:#fff;flex-shrink:0;}
.doc-load-info{flex:1;min-width:0;}
.doc-load-name{font-weight:700;font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.doc-load-spec{font-size:.7rem;color:var(--text-muted);}
.doc-load-bar-wrap{flex:1;display:flex;flex-direction:column;gap:3px;}
.doc-load-bar-track{height:10px;background:var(--lavender);border-radius:5px;overflow:hidden;}
.doc-load-bar-fill{height:100%;border-radius:5px;transition:width .6s ease;}
.doc-load-bar-fill.low{background:linear-gradient(90deg,var(--success),#4caf50);}
.doc-load-bar-fill.mid{background:linear-gradient(90deg,var(--warning),#f39c12);}
.doc-load-bar-fill.high{background:linear-gradient(90deg,var(--danger),#e74c3c);}
.doc-load-pct{font-size:.78rem;font-weight:800;min-width:38px;text-align:right;flex-shrink:0;}
.doc-load-pct.low{color:var(--success);} .doc-load-pct.mid{color:var(--warning);} .doc-load-pct.high{color:var(--danger);}
.doc-load-sub{font-size:.66rem;color:var(--text-muted);margin-top:1px;}
.load-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px;}
.load-summary-item{background:var(--bg);border-radius:var(--r-sm);padding:10px 12px;text-align:center;}
.load-summary-num{font-size:1.4rem;font-weight:800;font-family:'Fraunces',serif;line-height:1;}
.load-summary-lbl{font-size:.68rem;color:var(--text-muted);margin-top:3px;}
.period-tabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap;}
.period-tab{padding:4px 12px;border-radius:20px;border:1.5px solid var(--border);background:transparent;color:var(--text-muted);font-size:.75rem;font-weight:700;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .15s;}
.period-tab.active{border-color:var(--primary);background:var(--primary);color:#fff;}
.heatmap-grid{display:grid;grid-template-columns:auto repeat(7,1fr);gap:3px;font-size:.64rem;margin-top:8px;}
.heatmap-cell{aspect-ratio:1;border-radius:3px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.6rem;cursor:default;}
.heatmap-label{display:flex;align-items:center;justify-content:flex-end;padding-right:5px;color:var(--text-muted);font-size:.65rem;white-space:nowrap;}
.heatmap-day-label{text-align:center;color:var(--text-muted);font-weight:700;padding-bottom:2px;}
.heatmap-0{background:var(--lavender);} .heatmap-1{background:#d4b8f0;color:#1A1225;}
.heatmap-2{background:#C0B0D8;color:#fff;} .heatmap-3{background:#3D2B56;color:#fff;} .heatmap-4{background:#1A1225;color:#fff;}
.chart-container{display:flex;align-items:flex-end;gap:8px;height:120px;padding:10px 10px 0;border-bottom:2px solid var(--border);margin-bottom:8px;}
.chart-bar{flex:1;min-width:28px;background:var(--primary);border-radius:4px 4px 0 0;min-height:5px;transition:height .5s ease;position:relative;cursor:default;}
.chart-bar:hover::after{content:attr(data-value);position:absolute;top:-22px;left:50%;transform:translateX(-50%);font-size:10px;color:var(--primary);font-weight:bold;background:var(--card);padding:2px 4px;border-radius:4px;}
.chart-labels{display:flex;gap:8px;padding:0 10px;}
.chart-label{flex:1;text-align:center;font-size:.68rem;color:var(--text-muted);margin-top:4px;}
.email-settings-card{border:2px solid var(--lavender-deep);}
.emailjs-status{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:20px;font-size:.75rem;font-weight:700;}
.emailjs-status.configured{background:var(--success-light);color:var(--success);}
.emailjs-status.not-configured{background:var(--warning-light);color:var(--warning);}
.emailjs-status.error{background:var(--danger-light);color:var(--danger);}
.email-preview-box{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-sm);padding:12px 14px;font-size:.78rem;margin-top:8px;max-height:160px;overflow-y:auto;line-height:1.6;}
.email-preview-box .ep-subject{font-weight:700;color:var(--primary);margin-bottom:6px;font-size:.82rem;}
.email-preview-box .ep-body{color:var(--text-muted);white-space:pre-wrap;}
.email-log-item{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid var(--border);font-size:.75rem;}
.email-log-item:last-child{border-bottom:none;}
.email-log-icon{flex-shrink:0;font-size:.9rem;}
.email-send-btn{display:inline-flex;align-items:center;gap:6px;background:var(--primary);color:#fff;border:none;border-radius:var(--r-sm);padding:7px 14px;font-size:.78rem;font-weight:700;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .18s;}
.email-send-btn:hover{background:var(--primary-dark);}
.email-send-btn:disabled{opacity:.5;cursor:not-allowed;}
.email-toggle{display:flex;align-items:center;gap:10px;padding:8px 0;}
.email-toggle input[type=checkbox]{width:18px;height:18px;accent-color:var(--primary);cursor:pointer;}
.email-toggle label{font-size:.82rem;font-weight:600;cursor:pointer;}
.doctor-item{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border:1px solid var(--border);border-radius:var(--r-sm);margin-bottom:8px;font-size:.88rem;background:var(--card);transition:box-shadow .15s;}
.doctor-item:hover{box-shadow:var(--shadow);}
.di-left{display:flex;align-items:center;gap:10px;}
.di-info{display:flex;flex-direction:column;gap:2px;}
.di-name{font-weight:700;font-size:.9rem;} .di-spec{font-size:.75rem;color:var(--text-muted);} .di-schedule{font-size:.7rem;color:var(--text-muted);margin-top:2px;}
.di-right{display:flex;align-items:center;gap:8px;}
.doctor-avatar{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.95rem;color:#fff;flex-shrink:0;}
.status-select{padding:4px 8px;border-radius:6px;font-size:.75rem;border:1.5px solid var(--border);background:var(--card);color:var(--text);cursor:pointer;font-family:'DM Sans',sans-serif;margin:0;}
.noshow-badge{display:inline-flex;align-items:center;gap:3px;background:#fff3cd;color:#7a4800;border:1px solid #ffe08a;border-radius:10px;padding:1px 7px;font-size:.68rem;font-weight:700;vertical-align:middle;margin-left:4px;}
.noshow-badge.high{background:var(--danger-light);color:var(--danger);border-color:#f5c6cb;animation:noshowPulse 2.5s infinite;}
@keyframes noshowPulse{0%,100%{box-shadow:0 0 0 0 rgba(192,57,43,0);}60%{box-shadow:0 0 0 4px rgba(192,57,43,.15);}}
.noshow-stat-bar{height:4px;border-radius:2px;margin-top:3px;background:var(--lavender);}
.noshow-stat-fill{height:100%;border-radius:2px;background:var(--warning);} .noshow-stat-fill.high{background:var(--danger);}
.noshow-patient-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0;border-bottom:1px solid rgba(192,57,43,.1);}
.noshow-patient-row:last-child{border-bottom:none;}
.private-note-wrap{background:linear-gradient(135deg,#fff8f0,#fff3e0);border:1.5px solid #ffcc80;border-radius:var(--r-sm);padding:8px 10px;margin-top:6px;position:relative;}
.private-note-wrap::before{content:"🔒";position:absolute;top:-8px;left:8px;font-size:.75rem;background:var(--card);padding:0 4px;line-height:1;}
.private-note-label{font-size:.64rem;font-weight:700;color:#e65100;text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px;display:flex;align-items:center;gap:4px;}
.private-note-input{width:100%;border:none;background:transparent;font-size:.75rem;color:#5d4037;font-family:'DM Sans',sans-serif;resize:none;outline:none;line-height:1.4;}
.private-note-input::placeholder{color:#bcaaa4;}
.private-note-save{display:flex;justify-content:flex-end;margin-top:4px;}
.private-note-btn{background:#ff8f00;color:#fff;border:none;border-radius:5px;padding:2px 8px;font-size:.65rem;font-weight:700;cursor:pointer;font-family:'DM Sans',sans-serif;}
.private-note-btn:hover{background:#e65100;}
.audit-item{font-size:.78rem;color:var(--text-muted);padding:5px 0;border-bottom:1px solid var(--border);display:flex;gap:8px;align-items:flex-start;}
.audit-time{color:#aaa;flex-shrink:0;min-width:90px;}
.audit-wrap{max-height:200px;overflow-y:auto;}
.day-row{display:grid;grid-template-columns:auto 1fr 1fr auto;gap:8px;align-items:center;padding:7px 0;border-bottom:1px solid var(--border);}
.day-row:last-child{border-bottom:none;}
.day-toggle{display:flex;align-items:center;gap:6px;cursor:pointer;font-weight:600;font-size:.82rem;min-width:36px;}
.day-toggle input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary);cursor:pointer;flex-shrink:0;}
.day-row input[type=time]{margin:0;padding:5px 8px;font-size:.8rem;width:100%;}
.day-row .day-preview{font-size:.7rem;color:var(--text-muted);white-space:nowrap;}
.break-item{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:6px;align-items:center;padding:6px 8px;background:var(--warning-light);border-radius:var(--r-sm);margin-bottom:6px;border:1px solid #ffe0a0;}
.break-item input{margin:0;padding:5px 8px;font-size:.8rem;width:100%;}
.add-break-btn{background:transparent;border:2px dashed var(--primary);color:var(--primary);border-radius:var(--r-sm);padding:7px;font-size:.82rem;font-weight:700;cursor:pointer;width:100%;font-family:'DM Sans',sans-serif;transition:all .15s;margin-top:4px;}
.add-break-btn:hover{background:var(--primary-light);}
.schedule-timeline{height:28px;border-radius:8px;overflow:hidden;display:flex;margin:10px 0 4px;background:var(--bg);border:1px solid var(--border);}
.timeline-segment{height:100%;display:flex;align-items:center;justify-content:center;font-size:.6rem;font-weight:700;overflow:hidden;transition:width .3s;}
.timeline-work{background:var(--primary);color:#fff;} .timeline-break{background:#ffe0a0;color:var(--warning);} .timeline-closed{background:var(--bg);color:var(--text-muted);}
.slot-count-badge{display:inline-flex;align-items:center;gap:5px;background:var(--success-light);color:var(--success);border-radius:20px;padding:3px 10px;font-size:.75rem;font-weight:700;margin-top:6px;}
.schedule-print{font-family:'DM Sans',sans-serif;padding:24px 32px;max-width:900px;margin:0 auto;}
.schedule-print h1{font-family:'Fraunces',serif;font-size:1.4rem;margin:0 0 4px;}
.schedule-print .sp-meta{font-size:.82rem;color:#666;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid #000;}
.schedule-print .sp-doc-section{margin-bottom:24px;}
.schedule-print .sp-doc-title{font-size:1rem;font-weight:700;background:#f0f0f0;padding:6px 10px;border-radius:4px;margin-bottom:8px;}
.schedule-print table{width:100%;border-collapse:collapse;font-size:.85rem;}
.schedule-print th{text-align:left;padding:7px 10px;background:#f9f9f9;border-bottom:2px solid #ddd;font-weight:700;}
.schedule-print td{padding:7px 10px;border-bottom:1px solid #eee;vertical-align:top;}
.schedule-print tr:nth-child(even) td{background:#fafafa;}
.schedule-print .sp-urgent td{background:#fff0f0!important;}
.schedule-print .sp-manual td{background:#f0f7ff!important;}
.schedule-print .sp-footer{margin-top:20px;font-size:.72rem;color:#999;border-top:1px solid #ddd;padding-top:10px;text-align:center;}
#section-master{display:none;flex-direction:column;padding:28px 32px;box-sizing:border-box;}
#section-master.active{display:flex;}

/* ── 7. АДАПТИВНОСТЬ ──────────────────────────────────────────── */
@media(max-width:900px){
    .sidebar{transform:translateX(-100%);}
    .sidebar.open{transform:translateX(0);box-shadow:4px 0 40px rgba(44,27,105,.2);}
    .sidebar-overlay.open{display:block;}
    .sidebar-toggle{display:block;}
    .main-content{margin-left:0;height:100vh;}
    .dash-section{padding:60px 16px 28px;}
}
@media(max-width:700px){
    .g2,.g4{grid-template-columns:1fr;}
    .overview-widgets{grid-template-columns:1fr 1fr;}
    .kanban-wrap{grid-template-columns:1fr;}
    #section-kanban{height:auto;overflow-y:visible;}
    #section-kanban.active{display:block;}
    .kanban-col{min-height:120px;max-height:340px;}
    .today-banner{flex-direction:column;align-items:flex-start;}
    .slot-grid{grid-template-columns:repeat(3,1fr);}
    .hero-cards{grid-template-columns:1fr;}
    .appt-row{flex-direction:column;gap:10px;}
    .appt-r{width:100%;}
}

/* ── ЗАДАЧА 5: Модал добавления/редактирования врача ── */
#doc-form-modal{transition:opacity .22s ease,transform .22s ease;}
#doc-form-modal input:focus,#doc-form-modal select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light);}
.doc-form-color-swatch{width:28px;height:28px;border-radius:50%;cursor:pointer;transition:transform .15s,box-shadow .15s;flex-shrink:0;}
.doc-form-color-swatch:hover{transform:scale(1.15);}
.section-header .btn{flex-shrink:0;}
/* ══════════════════════════════════════════════════════════════
   ЗАДАЧА 7 — Master Dashboard: Obsidian & Gold
   ══════════════════════════════════════════════════════════════ */

/* ── PIN Numpad ── */
.pin-dot{width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,215,0,.35);background:transparent;transition:background .15s,border-color .15s,box-shadow .15s;}
.pin-dot.filled{background:#ffd700;border-color:#ffd700;box-shadow:0 0 10px rgba(255,215,0,.6);}
.pin-numpad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:240px;margin:0 auto;}
.pin-key{background:rgba(255,215,0,.06);border:1px solid rgba(255,215,0,.15);border-radius:12px;color:#ffd700;font-size:1.3rem;font-weight:600;font-family:'DM Sans',sans-serif;padding:14px;cursor:pointer;transition:background .15s,transform .1s,box-shadow .15s;user-select:none;}
.pin-key:hover{background:rgba(255,215,0,.14);box-shadow:0 0 16px rgba(255,215,0,.15);}
.pin-key:active{transform:scale(.92);}
.pin-key:disabled{opacity:.3;cursor:not-allowed;}
.pin-key-clear{color:#ff6b6b;border-color:rgba(255,107,107,.25);background:rgba(255,107,107,.06);}
.pin-key-clear:hover{background:rgba(255,107,107,.14);}
.pin-key-del{color:rgba(255,215,0,.6);}
@keyframes pinShake{0%,100%{transform:translateX(0);}20%{transform:translateX(-8px);}40%{transform:translateX(8px);}60%{transform:translateX(-6px);}80%{transform:translateX(6px);}}

/* ── Section Master — Obsidian & Gold layout ── */
.master-section{background:transparent;}
.master-section.active{display:flex;flex-direction:column;}

/* Top bar */
.master-topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;background:linear-gradient(135deg,#1a1505,#120f00);border:1px solid rgba(255,215,0,.2);border-radius:16px;padding:20px 24px;margin-bottom:18px;box-shadow:0 4px 30px rgba(255,215,0,.06),inset 0 1px 0 rgba(255,215,0,.1);}
.master-topbar-left{display:flex;align-items:center;gap:16px;}
.master-crown{font-size:2.2rem;filter:drop-shadow(0 0 14px rgba(255,215,0,.6));animation:crownPulse 3s ease-in-out infinite;}
@keyframes crownPulse{0%,100%{filter:drop-shadow(0 0 10px rgba(255,215,0,.5));}50%{filter:drop-shadow(0 0 22px rgba(255,215,0,.85));}}
.master-title{font-family:'Fraunces',serif;font-size:1.4rem;font-weight:900;background:linear-gradient(90deg,#ffd700,#ffec8b,#b8860b);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1.1;}
.master-subtitle{font-size:.75rem;color:rgba(255,215,0,.5);margin-top:3px;letter-spacing:.04em;text-transform:uppercase;}
.master-topbar-right{display:flex;align-items:center;gap:12px;}
.master-session-badge{display:flex;align-items:center;gap:7px;background:rgba(255,215,0,.08);border:1px solid rgba(255,215,0,.2);border-radius:20px;padding:5px 14px;font-size:.75rem;color:rgba(255,215,0,.8);}
.master-session-dot{width:7px;height:7px;border-radius:50%;background:#ffd700;box-shadow:0 0 8px rgba(255,215,0,.8);animation:sessionBlink 2s ease-in-out infinite;}
@keyframes sessionBlink{0%,100%{opacity:1;}50%{opacity:.4;}}
.master-lock-btn{background:rgba(255,215,0,.07);border:1px solid rgba(255,215,0,.2);border-radius:10px;padding:6px 12px;cursor:pointer;font-size:.9rem;color:rgba(255,215,0,.6);transition:all .15s;}
.master-lock-btn:hover{background:rgba(255,107,107,.12);border-color:rgba(255,107,107,.3);color:#ff6b6b;}

/* Stats grid */
.master-stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px;}
.master-stat-card{background:linear-gradient(135deg,#161008,#0d0a04);border:1px solid rgba(255,215,0,.15);border-radius:14px;padding:18px 20px;text-align:center;position:relative;overflow:hidden;transition:transform .2s,box-shadow .2s;}
.master-stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,rgba(255,215,0,.4),transparent);}
.master-stat-card:hover{transform:translateY(-3px);box-shadow:0 8px 30px rgba(255,215,0,.08);}
.master-stat-icon{font-size:1.4rem;margin-bottom:8px;filter:drop-shadow(0 0 6px rgba(255,215,0,.3));}
.master-stat-value{font-family:'Fraunces',serif;font-size:2rem;font-weight:900;color:#ffd700;line-height:1;text-shadow:0 0 20px rgba(255,215,0,.3);}
.master-stat-label{font-size:.7rem;color:rgba(255,215,0,.45);text-transform:uppercase;letter-spacing:.06em;margin-top:5px;}

/* Master cards */
.master-card{background:linear-gradient(135deg,#13100a,#0e0b06);border:1px solid rgba(255,215,0,.15);border-radius:14px;margin-bottom:14px;overflow:hidden;}
.master-card-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid rgba(255,215,0,.1);font-family:'Fraunces',serif;font-size:.95rem;font-weight:700;color:#ffd700;}
.master-badge{background:rgba(255,215,0,.12);color:rgba(255,215,0,.8);font-size:.68rem;font-weight:700;padding:3px 10px;border-radius:20px;border:1px solid rgba(255,215,0,.2);}

/* Praxen list */
.master-praxen-list{padding:8px 0;}
.master-praxis-row{display:flex;align-items:center;gap:14px;padding:12px 20px;border-bottom:1px solid rgba(255,215,0,.06);transition:background .15s;}
.master-praxis-row:last-child{border-bottom:none;}
.master-praxis-row:hover{background:rgba(255,215,0,.04);}
.master-praxis-logo{font-size:1.4rem;width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:rgba(255,215,0,.08);border-radius:10px;flex-shrink:0;}
.master-praxis-info{flex:1;min-width:0;}
.master-praxis-name{font-size:.88rem;font-weight:700;color:rgba(255,215,0,.9);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.master-praxis-meta{font-size:.73rem;color:rgba(255,215,0,.4);margin-top:2px;}
.master-praxis-actions{flex-shrink:0;}
.master-praxis-status{font-size:.68rem;font-weight:700;padding:3px 10px;border-radius:20px;}
.master-praxis-status.ok{background:rgba(39,174,96,.15);color:#2ecc71;border:1px solid rgba(39,174,96,.25);}
.master-praxis-status.blocked{background:rgba(231,76,60,.15);color:#e74c3c;border:1px solid rgba(231,76,60,.25);}

/* Activity feed */
.master-activity-feed{padding:8px 0;max-height:260px;overflow-y:auto;}
.master-activity-feed::-webkit-scrollbar{width:4px;}
.master-activity-feed::-webkit-scrollbar-track{background:transparent;}
.master-activity-feed::-webkit-scrollbar-thumb{background:rgba(255,215,0,.2);border-radius:2px;}
.master-feed-row{display:flex;align-items:center;gap:12px;padding:10px 20px;border-bottom:1px solid rgba(255,215,0,.05);transition:background .15s;}
.master-feed-row:last-child{border-bottom:none;}
.master-feed-row:hover{background:rgba(255,215,0,.04);}
.master-feed-dot{width:6px;height:6px;border-radius:50%;background:#ffd700;opacity:.6;flex-shrink:0;box-shadow:0 0 6px rgba(255,215,0,.4);}
.master-feed-text{flex:1;font-size:.78rem;color:rgba(255,215,0,.7);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.master-feed-time{font-size:.68rem;color:rgba(255,215,0,.3);flex-shrink:0;font-family:monospace;}

/* Responsive */
@media(max-width:640px){
    .master-stats-grid{grid-template-columns:1fr 1fr;}
    .master-topbar{padding:16px;}
    .master-crown{font-size:1.8rem;}
}

/* ── ЗАДАЧА 8: Глобальная статистика — дополнительные компоненты ── */
.master-stat-card--accent{background:linear-gradient(135deg,#0e0b05,#0a0800);}
.master-stat-card--accent .master-stat-value{font-size:1.6rem;}
.master-stat-value--sm{font-size:1.6rem!important;}

/* Analytics grid: 3 колонки */
.master-analytics-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;margin-bottom:0;}

/* Ranking rows */
.master-ranking-list{padding:8px 0;}
.master-rank-empty{color:rgba(255,215,0,.35);font-size:.8rem;padding:16px 20px;}
.master-rank-row{display:flex;align-items:center;gap:10px;padding:10px 20px;border-bottom:1px solid rgba(255,215,0,.06);transition:background .15s;}
.master-rank-row:last-child{border-bottom:none;}
.master-rank-row:hover{background:rgba(255,215,0,.04);}
.master-rank-pos{font-size:.85rem;width:24px;text-align:center;flex-shrink:0;}
.master-rank-icon{font-size:1.1rem;width:22px;text-align:center;flex-shrink:0;}
.master-rank-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;}
.master-rank-info{flex:1;min-width:0;}
.master-rank-name{font-size:.78rem;font-weight:600;color:rgba(255,215,0,.85);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px;}
.master-rank-bar-wrap{height:4px;background:rgba(255,215,0,.1);border-radius:2px;overflow:hidden;}
.master-rank-bar{height:100%;background:linear-gradient(90deg,#b8860b,#ffd700);border-radius:2px;transition:width .6s ease;}
.master-rank-val{font-size:.82rem;font-weight:800;color:#ffd700;flex-shrink:0;min-width:28px;text-align:right;}

/* Trend chart */
.master-trend-chart{padding:16px 20px 12px;}
.master-trend-bars{display:flex;align-items:flex-end;gap:10px;height:110px;}
.master-trend-col{display:flex;flex-direction:column;align-items:center;flex:1;gap:4px;height:100%;}
.master-trend-val{font-size:.68rem;font-weight:700;color:rgba(255,215,0,.6);}
.master-trend-bar-wrap{flex:1;width:100%;display:flex;align-items:flex-end;background:rgba(255,215,0,.05);border-radius:6px 6px 0 0;overflow:hidden;}
.master-trend-bar{width:100%;background:rgba(255,215,0,.25);border-radius:6px 6px 0 0;transition:height .6s ease;min-height:4px;}
.master-trend-bar.current{background:linear-gradient(180deg,#ffd700,#b8860b);box-shadow:0 0 16px rgba(255,215,0,.3);}
.master-trend-lbl{font-size:.65rem;color:rgba(255,215,0,.4);white-space:nowrap;}

/* Praxis progress bar */
.master-praxis-progress{height:3px;background:rgba(255,215,0,.1);border-radius:2px;margin-top:5px;overflow:hidden;}
.master-praxis-prog-bar{height:100%;background:linear-gradient(90deg,#b8860b,#ffd700);border-radius:2px;transition:width .5s ease;}

/* Responsive */
@media(max-width:900px){.master-analytics-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:640px){.master-analytics-grid{grid-template-columns:1fr;}}

/* ── ЗАДАЧА 9: Approve / Block / Delete ── */
.master-action-btn{background:rgba(255,215,0,.06);border:1px solid rgba(255,215,0,.15);border-radius:8px;padding:5px 9px;cursor:pointer;font-size:.9rem;transition:background .15s,transform .1s;}
.master-action-btn:hover{background:rgba(255,215,0,.14);transform:scale(1.1);}
.master-confirm-btn{border:none;border-radius:10px;font-size:.85rem;font-weight:700;padding:10px 22px;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .18s;}
.master-confirm-btn.ok{background:linear-gradient(135deg,#27ae60,#2ecc71);color:#fff;}
.master-confirm-btn.danger{background:linear-gradient(135deg,#e67e22,#f39c12);color:#fff;}
.master-confirm-btn.destroy{background:linear-gradient(135deg,#c0392b,#e74c3c);color:#fff;}
.master-confirm-btn:hover{filter:brightness(1.12);transform:translateY(-1px);}

/* ── ЗАДАЧА 10: Impersonation Banner ── */
#impersonation-banner{position:fixed;top:0;left:var(--sidebar-w);right:0;z-index:500;transform:translateY(-100%);transition:transform .3s cubic-bezier(.4,0,.2,1);background:linear-gradient(90deg,#1a0f00,#2a1a00);border-bottom:2px solid rgba(255,215,0,.4);box-shadow:0 4px 30px rgba(255,215,0,.1);}
#impersonation-banner.visible{transform:translateY(0);}
.imp-banner-inner{display:flex;align-items:center;justify-content:space-between;padding:10px 24px;gap:12px;flex-wrap:wrap;}
.imp-banner-left{display:flex;align-items:center;gap:12px;}
.imp-crown{font-size:1.4rem;filter:drop-shadow(0 0 8px rgba(255,215,0,.6));animation:crownPulse 3s ease-in-out infinite;}
.imp-title{font-size:.85rem;font-weight:700;color:#ffd700;line-height:1.2;}
.imp-subtitle{font-size:.72rem;color:rgba(255,215,0,.55);margin-top:1px;}
.imp-banner-right{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.imp-praxis-pill{background:rgba(255,215,0,.12);border:1px solid rgba(255,215,0,.25);border-radius:20px;padding:4px 14px;font-size:.78rem;font-weight:700;color:rgba(255,215,0,.9);}
.imp-back-btn{background:rgba(255,215,0,.1);border:1px solid rgba(255,215,0,.3);border-radius:10px;padding:6px 16px;font-size:.8rem;font-weight:700;color:#ffd700;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .18s;white-space:nowrap;}
.imp-back-btn:hover{background:rgba(255,215,0,.2);box-shadow:0 0 16px rgba(255,215,0,.15);}
.main-content.has-imp-banner{padding-top:52px;}
.master-action-login{border-color:rgba(167,139,250,.3)!important;}
.master-action-login:hover{background:rgba(167,139,250,.15)!important;}
@media(max-width:640px){
    #impersonation-banner{left:0;}
    .imp-banner-inner{padding:8px 14px;}
    .imp-subtitle{display:none;}
}

/* ── ЗАДАЧА 11: Виджеты аналитики Master Dashboard ── */

/* Виджет 1: Города */
.master-cities-chart{padding:10px 0;}
.master-cities-list{display:flex;flex-direction:column;gap:0;}
.master-city-row{display:flex;align-items:center;gap:10px;padding:9px 20px;border-bottom:1px solid rgba(255,215,0,.06);transition:background .15s;}
.master-city-row:last-child{border-bottom:none;}
.master-city-row:hover{background:rgba(255,215,0,.04);}
.master-city-name{font-size:.78rem;font-weight:600;color:rgba(255,215,0,.8);width:90px;flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.master-city-bar-wrap{flex:1;height:6px;background:rgba(255,215,0,.08);border-radius:3px;overflow:hidden;}
.master-city-bar{height:100%;border-radius:3px;transition:width .6s ease;}
.master-city-val{font-size:.75rem;font-weight:800;color:rgba(255,215,0,.7);width:28px;text-align:right;flex-shrink:0;}

/* Виджет 2: Звёзды врачей */
.master-doc-stars{display:inline-flex;gap:1px;font-size:.78rem;}

/* Виджет 3: Пиковые часы */
.master-peak-chart{padding:14px 16px 10px;}
.master-peak-label{font-size:.75rem;color:rgba(255,215,0,.55);margin-bottom:10px;text-align:center;}
.master-peak-grid{display:flex;align-items:flex-end;gap:3px;height:110px;}
.master-peak-col{display:flex;flex-direction:column;align-items:center;flex:1;gap:3px;height:100%;}
.master-peak-cnt{font-size:.58rem;color:rgba(255,215,0,.5);font-weight:700;height:14px;line-height:14px;}
.master-peak-bar-wrap{flex:1;width:100%;display:flex;align-items:flex-end;}
.master-peak-bar{width:100%;border-radius:3px 3px 0 0;min-height:4px;transition:height .5s ease;}
.master-peak-bar.peak{border-radius:4px 4px 0 0;}
.master-peak-hour{font-size:.6rem;color:rgba(255,215,0,.35);white-space:nowrap;}

/* ── ЗАДАЧА 12: Live Feed ── */
.live-feed-pulse{display:inline-block;width:8px;height:8px;border-radius:50%;background:#ffd700;box-shadow:0 0 8px rgba(255,215,0,.8);animation:sessionBlink 1.5s ease-in-out infinite;flex-shrink:0;}
.feed-filter-select{background:#0f0d14;border:1px solid rgba(255,215,0,.2);border-radius:8px;color:rgba(255,215,0,.8);font-size:.72rem;padding:4px 8px;font-family:'DM Sans',sans-serif;cursor:pointer;outline:none;}
.feed-filter-select:focus{border-color:rgba(255,215,0,.5);}
.feed-filter-select option{background:#1a1400;}
.feed-refresh-btn{background:rgba(255,215,0,.08);border:1px solid rgba(255,215,0,.2);border-radius:8px;color:rgba(255,215,0,.7);font-size:1rem;width:28px;height:28px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s;}
.feed-refresh-btn:hover{background:rgba(255,215,0,.18);}
.live-badge{transition:background .3s;}
.live-feed{max-height:320px;overflow-y:auto;}
.live-feed::-webkit-scrollbar{width:4px;}
.live-feed::-webkit-scrollbar-thumb{background:rgba(255,215,0,.2);border-radius:2px;}
.live-feed-row{display:flex;align-items:flex-start;gap:10px;padding:10px 20px;border-bottom:1px solid rgba(255,215,0,.06);transition:background .2s;}
.live-feed-row:last-child{border-bottom:none;}
.live-feed-row:hover{background:rgba(255,215,0,.04);}
.live-feed-row.feed-new{animation:feedSlideIn .4s ease;}
.live-feed-row.feed-danger{border-left:2px solid rgba(231,76,60,.5);}
.live-feed-row.feed-success{border-left:2px solid rgba(46,204,113,.4);}
.live-feed-row.feed-gold{border-left:2px solid rgba(255,215,0,.5);}
.live-feed-row.feed-warn{border-left:2px solid rgba(243,156,18,.4);}
.feed-icon{font-size:1rem;width:22px;text-align:center;flex-shrink:0;margin-top:1px;}
.feed-content{flex:1;min-width:0;}
.feed-msg{font-size:.78rem;color:rgba(255,215,0,.8);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.feed-praxis{font-size:.67rem;color:rgba(255,215,0,.35);margin-top:2px;}
.feed-time-wrap{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0;}
.feed-time{font-size:.67rem;color:rgba(255,215,0,.3);font-family:monospace;}
.feed-new-dot{width:6px;height:6px;border-radius:50%;background:#ffd700;box-shadow:0 0 6px rgba(255,215,0,.8);}
.feed-empty{color:rgba(255,215,0,.35);font-size:.82rem;padding:16px 20px;}
@keyframes feedSlideIn{from{opacity:0;transform:translateX(-8px);}to{opacity:1;transform:translateX(0);}}

/* ── ЗАДАЧА 13: LANR / BSNR ── */
.lanr-help{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;background:var(--primary-light);color:var(--primary);font-size:.65rem;font-weight:700;cursor:help;margin-left:4px;vertical-align:middle;}
.lanr-status{font-size:.72rem;margin-top:4px;min-height:16px;transition:all .2s;}
.lanr-status.ok{color:var(--success);}
.lanr-status.error{color:var(--danger);}
.lanr-status.pending{color:var(--warning);}
.lanr-badge{display:inline-block;font-size:.65rem;font-weight:700;padding:1px 7px;border-radius:8px;background:var(--primary-light);color:var(--primary);margin-left:6px;font-family:monospace;letter-spacing:.04em;vertical-align:middle;}
.lanr-badge.warn{background:var(--warning-light);color:var(--warning);}
/* Master: BSNR в dark theme */
.master-section .lanr-badge{background:rgba(255,215,0,.1);color:rgba(255,215,0,.8);border:1px solid rgba(255,215,0,.2);}
.master-section .lanr-badge.warn{background:rgba(231,76,60,.1);color:#ff6b6b;border-color:rgba(231,76,60,.25);}

/* ── ЗАДАЧА 14: Pending Verification Overlay ── */
#pending-overlay{background:linear-gradient(135deg,#f8f5ff,#ede8f9);}
body.dark-mode #pending-overlay{background:linear-gradient(135deg,#12101a,#1a1528);}
.pending-card{background:var(--card);border-radius:var(--r);padding:40px 36px;max-width:560px;width:100%;box-shadow:0 20px 80px rgba(44,27,105,.15);text-align:center;}
.pending-icon{font-size:3rem;margin-bottom:12px;animation:pendingSpin 3s ease-in-out infinite;}
@keyframes pendingSpin{0%,100%{transform:rotate(0deg);}25%{transform:rotate(-15deg);}75%{transform:rotate(15deg);}}
.pending-title{font-family:'Fraunces',serif;font-size:1.6rem;font-weight:900;color:var(--text);margin:0 0 10px;}
.pending-desc{font-size:.88rem;color:var(--text-muted);line-height:1.7;margin-bottom:24px;}
.pending-info-grid{background:var(--bg);border-radius:var(--r-sm);padding:4px 0;margin-bottom:24px;text-align:left;}
.pending-info-row{display:flex;align-items:center;gap:14px;padding:12px 16px;border-bottom:1px solid var(--border);}
.pending-info-row:last-child{border-bottom:none;}
.pending-info-icon{font-size:1.2rem;width:28px;text-align:center;flex-shrink:0;}
.pending-info-label{font-size:.72rem;color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.05em;}
.pending-info-value{font-size:.88rem;font-weight:700;color:var(--text);font-family:monospace;margin-top:2px;}
.pending-timeline{display:flex;align-items:center;gap:0;margin-bottom:20px;}
.pending-step{display:flex;flex-direction:column;align-items:center;flex:1;gap:6px;}
.pending-step:not(:last-child)::after{content:'';display:block;width:100%;height:2px;background:var(--border);position:absolute;top:14px;left:50%;}
.pending-step-dot{width:28px;height:28px;border-radius:50%;background:var(--border);color:var(--text-muted);font-size:.78rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .3s;}
.pending-step.done .pending-step-dot{background:var(--success);color:#fff;}
.pending-step.active .pending-step-dot{background:var(--primary);color:#fff;box-shadow:0 0 0 4px var(--primary-light);animation:pendingPulse 2s ease-in-out infinite;}
@keyframes pendingPulse{0%,100%{box-shadow:0 0 0 4px var(--primary-light);}50%{box-shadow:0 0 0 8px rgba(26,18,37,.15);}}
.pending-step-label{font-size:.68rem;color:var(--text-muted);text-align:center;line-height:1.3;}
.pending-step.done .pending-step-label{color:var(--success);font-weight:600;}
.pending-step.active .pending-step-label{color:var(--primary);font-weight:700;}
.pending-note{font-size:.78rem;color:var(--text-muted);background:var(--primary-light);border-radius:var(--r-sm);padding:12px 16px;line-height:1.6;margin-bottom:16px;}
/* Master: pending row */
.master-praxis-status.pending{background:rgba(243,156,18,.12);color:#f39c12;border:1px solid rgba(243,156,18,.25);}
.master-praxis-row.row-pending{border-left:3px solid rgba(243,156,18,.4);}
.master-action-verify{border-radius:8px!important;font-weight:700;}

/* ── ЗАДАЧА 15: Approbation Upload ── */
.appro-drop-zone{border:2px dashed var(--border);border-radius:var(--r-sm);padding:24px 16px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;background:var(--bg);position:relative;overflow:hidden;}
.appro-drop-zone:hover,.appro-drop-zone.drag-over{border-color:var(--primary);background:var(--primary-light);}
.appro-drop-zone.drag-over{border-style:solid;}
.appro-drop-icon{font-size:2rem;margin-bottom:8px;}
.appro-drop-text{font-size:.88rem;font-weight:600;color:var(--text);margin-bottom:4px;}
.appro-drop-sub{font-size:.74rem;color:var(--text-muted);}
.appro-preview-img{width:100%;max-height:180px;object-fit:contain;border-radius:8px;border:1px solid var(--border);display:block;margin-bottom:8px;}
.appro-preview-pdf{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px;}
.appro-preview-icon{font-size:2.5rem;}
.appro-preview-name{font-size:.82rem;font-weight:700;color:var(--primary);}
.appro-preview-size{font-size:.72rem;color:var(--text-muted);}

/* ── ЗАДАЧА 16: Suspicious Detector ── */
.suspicious-card{border:2px solid var(--danger)!important;background:linear-gradient(135deg,rgba(231,76,60,.06),rgba(231,76,60,.02))!important;animation:suspiciousPulse 2.5s ease-in-out infinite;}
@keyframes suspiciousPulse{0%,100%{box-shadow:0 0 0 0 rgba(231,76,60,.3);}50%{box-shadow:0 0 0 5px rgba(231,76,60,.0);}}
.suspicious-badge{display:inline-block;background:var(--danger);color:#fff;font-size:.6rem;font-weight:800;padding:1px 6px;border-radius:6px;margin-left:5px;text-transform:uppercase;letter-spacing:.04em;vertical-align:middle;}
.suspicious-panel{background:linear-gradient(135deg,rgba(231,76,60,.06),rgba(231,76,60,.02));border:2px solid rgba(231,76,60,.3);border-radius:var(--r);margin-bottom:16px;overflow:hidden;}
.suspicious-panel-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:rgba(231,76,60,.08);border-bottom:1px solid rgba(231,76,60,.2);font-weight:700;font-size:.88rem;color:var(--danger);}
.suspicious-count{background:var(--danger);color:#fff;font-size:.68rem;padding:1px 7px;border-radius:10px;margin-left:6px;}
.suspicious-row{display:flex;align-items:flex-start;gap:12px;padding:11px 16px;border-bottom:1px solid rgba(231,76,60,.1);transition:background .15s;}
.suspicious-row:last-child{border-bottom:none;}
.suspicious-row:hover{background:rgba(231,76,60,.04);}
.suspicious-icon{font-size:1.3rem;flex-shrink:0;margin-top:1px;}
.suspicious-info{flex:1;min-width:0;}
.suspicious-name{font-size:.85rem;font-weight:700;color:var(--text);}
.suspicious-reason{font-size:.75rem;color:var(--danger);margin-top:2px;}
.suspicious-meta{font-size:.72rem;color:var(--text-muted);margin-top:3px;}
.suspicious-actions{display:flex;gap:5px;align-items:center;flex-shrink:0;}

/* ── ЗАДАЧА 17: Global Blacklist Master ── */
.danger-badge{background:rgba(231,76,60,.15)!important;color:#ff6b6b!important;border:1px solid rgba(231,76,60,.3)!important;}
.master-bl-add-form{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid rgba(255,215,0,.1);flex-wrap:wrap;}
.master-bl-fields{display:flex;gap:8px;flex:1;flex-wrap:wrap;min-width:0;}
.master-bl-input{background:rgba(255,215,0,.05);border:1px solid rgba(255,215,0,.2);border-radius:8px;padding:7px 12px;font-size:.78rem;color:rgba(255,215,0,.9);font-family:'DM Sans',sans-serif;outline:none;transition:border-color .15s;min-width:120px;flex:1;}
.master-bl-input::placeholder{color:rgba(255,215,0,.3);}
.master-bl-input:focus{border-color:rgba(255,215,0,.5);}
.master-bl-btn{background:rgba(231,76,60,.15);border:1px solid rgba(231,76,60,.35);border-radius:9px;color:#ff6b6b;font-size:.82rem;font-weight:700;padding:7px 16px;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .15s;white-space:nowrap;flex-shrink:0;}
.master-bl-btn:hover{background:rgba(231,76,60,.28);box-shadow:0 0 14px rgba(231,76,60,.2);}
.master-blacklist-list{padding:4px 0;max-height:320px;overflow-y:auto;}
.master-blacklist-list::-webkit-scrollbar{width:4px;}
.master-blacklist-list::-webkit-scrollbar-thumb{background:rgba(255,215,0,.2);border-radius:2px;}
.master-bl-row{display:flex;align-items:center;gap:12px;padding:11px 20px;border-bottom:1px solid rgba(255,215,0,.06);transition:background .15s;}
.master-bl-row:last-child{border-bottom:none;}
.master-bl-row:hover{background:rgba(255,215,0,.03);}
.master-bl-icon{font-size:1.1rem;flex-shrink:0;}
.master-bl-info{flex:1;min-width:0;}
.master-bl-email{font-size:.82rem;font-weight:700;color:rgba(255,215,0,.85);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.master-bl-meta{font-size:.7rem;color:rgba(255,215,0,.4);margin-top:2px;}
.master-bl-reason{font-size:.7rem;color:rgba(231,76,60,.6);margin-top:2px;font-style:italic;}

/* ── ЗАДАЧА 18: Patient Monitor ── */
.pm-filters{display:flex;gap:8px;padding:12px 16px;border-bottom:1px solid rgba(255,215,0,.1);flex-wrap:wrap;}
.pm-list{max-height:480px;overflow-y:auto;}
.pm-list::-webkit-scrollbar{width:4px;}
.pm-list::-webkit-scrollbar-thumb{background:rgba(255,215,0,.2);border-radius:2px;}
.pm-row{display:flex;align-items:center;gap:12px;padding:11px 16px;border-bottom:1px solid rgba(255,215,0,.06);transition:background .15s;}
.pm-row:last-child{border-bottom:none;}
.pm-row:hover{background:rgba(255,215,0,.04);}
.pm-row.pm-blocked{opacity:.6;}
.pm-avatar{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:.95rem;font-weight:800;color:#fff;flex-shrink:0;}
.pm-info{flex:1;min-width:0;}
.pm-name{font-size:.82rem;font-weight:700;color:rgba(255,215,0,.9);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pm-email{font-size:.7rem;color:rgba(255,215,0,.45);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pm-praxis{font-size:.65rem;color:rgba(255,215,0,.3);margin-top:2px;}
.pm-stats{display:flex;gap:12px;flex-shrink:0;}
.pm-stat{text-align:center;}
.pm-stat-val{font-size:.82rem;font-weight:800;color:rgba(255,215,0,.8);line-height:1;}
.pm-stat-lbl{font-size:.6rem;color:rgba(255,215,0,.35);text-transform:uppercase;letter-spacing:.04em;margin-top:2px;}
.pm-actions{flex-shrink:0;min-width:60px;}
@media(max-width:640px){.pm-stats{display:none;}.pm-filters{flex-direction:column;}}

/* ── ЗАДАЧА 19: Slot Limit & Queue ── */
.queue-card{border:2px solid var(--warning)!important;background:linear-gradient(135deg,rgba(243,156,18,.07),rgba(243,156,18,.02))!important;}
.queue-badge{display:inline-block;background:var(--warning);color:#fff;font-size:.6rem;font-weight:800;padding:1px 6px;border-radius:6px;margin-left:5px;vertical-align:middle;}

/* ── ЗАДАЧА 23: Email Outbox Panel ── */
.email-outbox-row{display:flex;align-items:flex-start;gap:10px;padding:9px 12px;border-bottom:1px solid var(--border);transition:background .15s;}
.email-outbox-row:last-child{border-bottom:none;}
.email-outbox-row:hover{background:var(--bg);}
.email-outbox-row.row-fail{border-left:3px solid var(--danger);}
.email-outbox-row.row-ok{border-left:3px solid var(--success);}
.outbox-status-icon{font-size:1rem;flex-shrink:0;margin-top:2px;}
.outbox-info{flex:1;min-width:0;}
.outbox-name{font-size:.82rem;font-weight:700;color:var(--text);}
.outbox-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:3px;}
.outbox-meta span{font-size:.68rem;color:var(--text-muted);}
.outbox-err{color:var(--danger)!important;font-style:italic;}
.outbox-type{background:var(--bg);padding:1px 6px;border-radius:4px;border:1px solid var(--border);}
.outbox-time{font-size:.68rem;color:var(--text-muted);flex-shrink:0;white-space:nowrap;}

/* ── ЗАДАЧА 25: PVS Export ── */
.pvs-preview{display:flex;flex-direction:column;gap:6px;}
.pvs-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid var(--border);}
.pvs-row:last-of-type{border-bottom:none;}
.pvs-label{font-size:.75rem;color:var(--text-muted);}
.pvs-val{font-size:.82rem;font-weight:700;color:var(--text);}
.pvs-csv-box{margin-top:10px;padding:10px 12px;background:var(--bg);border-radius:var(--r-sm);border:1px solid var(--border);}
.pvs-csv-box code{font-size:.72rem;font-family:monospace;color:var(--primary);word-break:break-all;user-select:all;}
.pvs-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--r-sm);font-size:.78rem;font-weight:600;cursor:pointer;border:none;transition:background .15s;}

/* ── ЗАДАЧА 26: Backup History ── */
.backup-hist-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--border);}
.backup-hist-row:last-child{border-bottom:none;}
.backup-hist-icon{font-size:1rem;flex-shrink:0;}
.backup-hist-date{font-size:.78rem;font-weight:600;color:var(--text);}
.backup-hist-stats{font-size:.7rem;color:var(--text-muted);margin-left:auto;}

/* ── ЗАДАЧА 28: Region badge ── */
.region-badge{display:inline-block;font-size:.62rem;font-weight:700;padding:1px 7px;border-radius:6px;background:rgba(26,18,37,.15);color:var(--primary);border:1px solid rgba(26,18,37,.2);text-transform:uppercase;letter-spacing:.04em;}

/* ── ЗАДАЧА 35: Phone validation status ── */
.phone-status { font-size:.72rem; min-height:16px; margin-top:2px; transition:color .2s; }
.phone-status.ok   { color: var(--success, #27ae60); font-weight:600; }
.phone-status.warn { color: var(--warning, #f39c12); font-weight:600; }
.phone-status.error{ color: var(--danger,  #e74c3c); font-weight:600; }

/* ── ЗАДАЧА 35: LANR warn state ── */
.lanr-status.warn { color: var(--warning, #f39c12); font-size:.72rem; }

/* ── ЗАДАЧА 40: 4-Tab Patient Layout ── */
.pt-header { background:var(--card); border-radius:var(--r); box-shadow:0 2px 12px rgba(44,27,105,.08); margin-bottom:16px; overflow:hidden; }
.pt-user-row { display:flex; align-items:center; gap:12px; padding:14px 16px 10px; }
.pt-user-name { font-weight:700; font-size:1rem; color:var(--text); }
.pt-user-role { font-size:.75rem; color:var(--text-muted); }
.pt-logout-btn { margin-left:auto; background:var(--bg); border:1px solid var(--border); border-radius:8px; padding:5px 12px; font-size:.78rem; cursor:pointer; color:var(--text-muted); }
.pt-tabs { display:flex; border-top:1px solid var(--border); }
.pt-tab { flex:1; display:flex; flex-direction:column; align-items:center; gap:3px; padding:10px 4px 8px; border:none; background:transparent; cursor:pointer; font-size:.72rem; color:var(--text-muted); position:relative; transition:color .15s,background .15s; border-bottom:2px solid transparent; }
.pt-tab.active { color:var(--primary); border-bottom-color:var(--primary); background:rgba(26,18,37,.06); }
.pt-tab-icon { font-size:1.1rem; }
.pt-tab-label { font-weight:500; }
.pt-tab-badge { position:absolute; top:6px; right:calc(50% - 18px); background:var(--danger); color:#fff; border-radius:10px; font-size:.58rem; font-weight:700; padding:1px 5px; min-width:16px; text-align:center; }
.pt-tab-content { display:none; }
.pt-tab-content.active { display:block; }

/* ── Карточки практик v2 (врачи внутри) ── */
.praxis-card-v2 { background:var(--card); border-radius:var(--r); border:1px solid var(--border); margin-bottom:10px; overflow:hidden; transition:box-shadow .15s; }
.praxis-card-v2:hover { box-shadow:0 4px 16px rgba(44,27,105,.12); }
.praxis-card-v2.selected { border-color:var(--primary); }
.praxis-card-v2.closed-today { opacity:.7; }
.pcv2-header { display:flex; align-items:flex-start; gap:12px; padding:14px 14px 10px; cursor:pointer; }
.pcv2-logo { font-size:1.6rem; flex-shrink:0; }
.pcv2-info { flex:1; min-width:0; }
.pcv2-name { font-weight:700; font-size:.92rem; color:var(--text); }
.pcv2-addr { font-size:.74rem; color:var(--text-muted); margin-top:2px; }
.pcv2-right { display:flex; flex-direction:column; align-items:flex-end; gap:4px; flex-shrink:0; }
.pcv2-specs { display:flex; flex-wrap:wrap; gap:4px; justify-content:flex-end; margin-top:4px; }
.px-spec-tag { background:var(--primary-light); color:var(--primary); border-radius:12px; padding:2px 8px; font-size:.68rem; font-weight:600; }
.px-badge  { font-size:.72rem; font-weight:700; padding:4px 10px; border-radius:12px; white-space:nowrap; border:1px solid transparent; }
.px-open   { background:#edf7f0; color:#1a7a3f; border-color:#a9dfbf; }
.px-closed { background:#fdecea; color:#c0392b; border-color:#f1948a; }
.px-labor  { background:#fef9e7; color:#9a7d0a; border-color:#f0c080; }
.px-delay  { background:#fef3e2; color:#e67e22; border-color:#f0c080; }

/* Nur-Labor Karte — leicht amber eingefärbt */
.praxis-card-v2.labor-today {
    border-left: 3px solid #d4a017;
    opacity: .9;
}

@keyframes redPulse {
    0%,100% { box-shadow:0 0 0 0 rgba(192,57,43,.4); }
    50%      { box-shadow:0 0 0 5px rgba(192,57,43,0); }
}

/* Закрытая карточка — затемнена */
.praxis-card-v2.closed-today {
    opacity:.75;
    border-left:3px solid #c0392b;
}

.pcv2-doctors { padding:0 14px 12px; border-top:1px solid var(--border); margin-top:4px; }
.pcv2-closed-msg { font-size:.78rem; color:var(--danger); padding:10px 0; }

/* Чипы врачей внутри карточки */
.px-doc-chip { display:flex; align-items:flex-start; gap:8px; padding:8px 10px; margin:4px 0; border-radius:var(--r-sm); border:1px solid var(--border); background:var(--bg); cursor:pointer; transition:background .15s,border-color .15s; }
.px-doc-chip:hover:not(.unavail) { background:var(--primary-light); border-color:var(--primary); }
.px-doc-chip.selected { background:var(--primary-light); border-color:var(--primary); }
.px-doc-chip.unavail { opacity:.5; cursor:default; }
.px-doc-dot { width:9px; height:9px; border-radius:50%; flex-shrink:0; margin-top:4px; }
.px-doc-info { flex:1; min-width:0; }
.px-doc-name { font-size:.82rem; font-weight:600; color:var(--text); }
.px-doc-spec { font-size:.72rem; color:var(--text-muted); font-weight:400; }
.px-doc-bio  { font-size:.72rem; color:var(--text-muted); margin-top:2px; }
.px-doc-dur  { font-size:.68rem; color:var(--text-muted); flex-shrink:0; white-space:nowrap; }
.px-doc-unavail { font-size:.65rem; color:var(--danger); font-weight:700; margin-left:4px; }

/* Шапка бронирования */
.booking-doc-header { min-height:0; }

/* ── Booking Mode Tabs (Arzt / Services) ───────────────────── */
.booking-mode-tab {
    flex: 1; padding: 9px 12px; border-radius: 9px; border: none;
    font-size: .85rem; font-weight: 700; cursor: pointer;
    font-family: 'DM Sans', sans-serif;
    background: transparent; color: var(--text-muted);
    transition: all .18s;
}
.booking-mode-tab.active {
    background: var(--primary); color: #fff;
    box-shadow: 0 2px 8px rgba(26,18,37,.25);
}
.booking-mode-tab:not(.active):hover { background: var(--primary-light); }

/* Карточки услуг */
.service-card {
    display: flex; align-items: center; gap: 12px;
    padding: 12px 14px; border-radius: var(--r-sm);
    border: 1.5px solid var(--border); background: var(--bg);
    cursor: pointer; transition: all .15s; margin-bottom: 8px;
}
.service-card:hover  { border-color: var(--primary); background: var(--primary-light); }
.service-card.selected { border-color: var(--primary); background: var(--primary-light); }
.service-card-icon { font-size: 1.8rem; flex-shrink: 0; }
.service-card-name { font-weight: 700; font-size: .9rem; }
.service-card-meta { font-size: .75rem; color: var(--text-muted); margin-top: 2px; }
.service-tag-mfa   { color: #27ae60; font-weight: 600; }
.service-tag-doc   { color: var(--primary); font-weight: 600; }

/* ════════════════════════════════════════════════════════════════
   RUHE & ORDNUNG — Hero Design System (Этап 1)
   Цвета: #08060F (Obsidian) · #967BB6 (Lavender) · Fraunces/DM Sans
════════════════════════════════════════════════════════════════ */

/* ── Обновлённый Header ──────────────────────────────────────── */
.ro-header {
    background: rgba(255,255,255,.95);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border-bottom: 1px solid var(--border);
    padding: 12px 0;
    position: sticky; top: 0; z-index: 90;
    box-shadow: 0 2px 20px rgba(26,18,37,.08);
}
.ro-logo {
    display: flex; align-items: center; gap: 10px;
    font-family: 'Fraunces', serif;
    font-weight: 900; font-size: 1.4rem;
    color: var(--primary); cursor: pointer;
    text-decoration: none; letter-spacing: -.02em;
}

/* ── Hero Section ────────────────────────────────────────────── */
.ro-hero {
    background: linear-gradient(135deg, #08060F 0%, #130d22 50%, #1a0f2e 100%);
    min-height: 90vh;
    display: flex; align-items: center;
    padding: 60px 24px;
    position: relative;
    overflow: hidden;
    margin: 0 calc(50% - 50vw); /* full-width вне .wrap */
    width: 100vw;
}
/* Фоновый паттерн — тонкая сетка */
.ro-hero::before {
    content: '';
    position: absolute; inset: 0;
    background-image:
        radial-gradient(circle at 20% 50%, rgba(150,123,182,.12) 0%, transparent 50%),
        radial-gradient(circle at 80% 20%, rgba(26,18,37,.08) 0%, transparent 40%);
    pointer-events: none;
}
.ro-hero::after {
    content: '';
    position: absolute; inset: 0;
    background-image: linear-gradient(rgba(150,123,182,.04) 1px, transparent 1px),
                      linear-gradient(90deg, rgba(150,123,182,.04) 1px, transparent 1px);
    background-size: 60px 60px;
    pointer-events: none;
}
.ro-hero-inner {
    width: min(1180px, 100%); margin: 0 auto;
    display: grid; grid-template-columns: 1fr 1fr;
    gap: 60px; align-items: center;
    position: relative; z-index: 1;
}

/* ── Hero Left ───────────────────────────────────────────────── */
.ro-hero-brand {
    display: flex; align-items: center; gap: 14px;
    margin-bottom: 32px;
}
.ro-brand-icon { width: 52px; height: 52px; flex-shrink: 0; }
.ro-brand-name {
    font-family: 'Fraunces', serif;
    font-weight: 900; font-size: 1.5rem;
    color: #fff; letter-spacing: -.02em;
}
.ro-brand-name em { color: #967BB6; font-style: italic; }

.ro-hero-title {
    font-family: 'Fraunces', serif;
    font-weight: 900;
    font-size: clamp(2rem, 4vw, 3.2rem);
    line-height: 1.15;
    color: #fff;
    margin: 0 0 20px;
    letter-spacing: -.02em;
}
.ro-hero-sub {
    font-size: 1rem;
    line-height: 1.7;
    color: rgba(255,255,255,.65);
    margin: 0 0 36px;
    max-width: 480px;
}

/* ── CTA Buttons ────────────────────────────────────────────── */
.ro-hero-btns { display: flex; gap: 14px; flex-wrap: wrap; margin-bottom: 40px; }

.ro-btn-primary {
    background: #967BB6;
    color: #fff;
    border: none;
    border-radius: 10px;
    padding: 14px 28px;
    font-size: .95rem;
    font-weight: 700;
    font-family: 'DM Sans', sans-serif;
    cursor: pointer;
    transition: all .2s;
    box-shadow: 0 4px 20px rgba(150,123,182,.35);
}
.ro-btn-primary:hover {
    background: #3D2B56;
    transform: translateY(-2px);
    box-shadow: 0 8px 28px rgba(150,123,182,.45);
}
.ro-btn-ghost {
    background: transparent;
    color: rgba(255,255,255,.8);
    border: 1.5px solid rgba(255,255,255,.25);
    border-radius: 10px;
    padding: 14px 28px;
    font-size: .95rem;
    font-weight: 600;
    font-family: 'DM Sans', sans-serif;
    cursor: pointer;
    transition: all .2s;
    backdrop-filter: blur(8px);
}
.ro-btn-ghost:hover {
    border-color: rgba(150,123,182,.6);
    color: #fff;
    background: rgba(150,123,182,.1);
}

/* ── Social Proof ───────────────────────────────────────────── */
.ro-hero-proof {
    display: flex; align-items: center; gap: 24px;
    padding: 20px 24px;
    background: rgba(255,255,255,.05);
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 14px;
    backdrop-filter: blur(8px);
}
.ro-proof-item { text-align: center; }
.ro-proof-num {
    display: block;
    font-family: 'Fraunces', serif;
    font-size: 1.4rem;
    font-weight: 900;
    color: #967BB6;
    line-height: 1;
}
.ro-proof-label {
    display: block;
    font-size: .72rem;
    color: rgba(255,255,255,.5);
    margin-top: 3px;
    white-space: nowrap;
}
.ro-proof-div {
    width: 1px; height: 36px;
    background: rgba(255,255,255,.12);
}

/* ── Hero Right — Glassmorphism Cards ───────────────────────── */
.ro-hero-right { display: flex; flex-direction: column; gap: 16px; }

.ro-glass-card {
    background: rgba(255,255,255,.07);
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 20px;
    padding: 28px 26px;
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    cursor: pointer;
    transition: all .25s;
    box-shadow: 0 8px 32px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.1);
}
.ro-glass-card:hover {
    background: rgba(255,255,255,.12);
    border-color: rgba(150,123,182,.5);
    transform: translateY(-3px);
    box-shadow: 0 16px 48px rgba(0,0,0,.3), 0 0 0 1px rgba(150,123,182,.2);
}
.ro-glass-icon { font-size: 2.2rem; margin-bottom: 10px; }
.ro-glass-title {
    font-family: 'Fraunces', serif;
    font-size: 1.15rem;
    font-weight: 700;
    color: #fff;
    margin: 0 0 6px;
}
.ro-glass-sub {
    font-size: .83rem;
    color: rgba(255,255,255,.55);
    line-height: 1.5;
    margin: 0 0 14px;
}
.ro-glass-btn {
    background: rgba(150,123,182,.2);
    border: 1px solid rgba(150,123,182,.4);
    border-radius: 8px;
    color: #c8aaff;
    font-size: .85rem;
    font-weight: 700;
    font-family: 'DM Sans', sans-serif;
    padding: 8px 18px;
    cursor: pointer;
    transition: all .15s;
}
.ro-glass-btn:hover { background: rgba(150,123,182,.35); color: #fff; }
.ro-glass-btn-praxis {
    background: rgba(39,174,96,.15);
    border-color: rgba(39,174,96,.35);
    color: #7dca96;
}
.ro-glass-btn-praxis:hover { background: rgba(39,174,96,.3); color: #fff; }
.ro-register-link {
    background: transparent; border: none;
    color: rgba(255,255,255,.4);
    font-size: .78rem; font-family: 'DM Sans', sans-serif;
    cursor: pointer; text-decoration: underline;
    transition: color .15s;
}
.ro-register-link:hover { color: rgba(255,255,255,.7); }

/* ── Features Section ───────────────────────────────────────── */
.ro-features-section {
    background: #f8f5ff;
    padding: 64px 24px;
    text-align: center;
    margin: 0 calc(50% - 50vw);
    width: 100vw;
}
body.dark-mode .ro-features-section { background: #0e0b1a; }

.ro-feat-eyebrow {
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .1em;
    color: #967BB6;
    text-transform: uppercase;
    margin-bottom: 12px;
}
.ro-feat-title {
    font-family: 'Fraunces', serif;
    font-size: clamp(1.6rem, 3vw, 2.4rem);
    font-weight: 900;
    color: var(--text);
    margin: 0 0 40px;
    letter-spacing: -.02em;
}
.ro-feat-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    max-width: 960px;
    margin: 0 auto;
}
.ro-feat-card {
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 16px;
    padding: 28px 24px;
    text-align: left;
    transition: box-shadow .2s, transform .2s;
    box-shadow: 0 2px 12px rgba(26,18,37,.06);
}
body.dark-mode .ro-feat-card { background: #1c1728; }
.ro-feat-card:hover { box-shadow: 0 8px 28px rgba(26,18,37,.14); transform: translateY(-3px); }
.ro-feat-icon { font-size: 2rem; margin-bottom: 12px; }
.ro-feat-card h3 {
    font-family: 'Fraunces', serif;
    font-size: 1.05rem;
    font-weight: 700;
    margin: 0 0 8px;
    color: var(--text);
}
.ro-feat-card p {
    font-size: .84rem;
    color: var(--text-muted);
    line-height: 1.6;
    margin: 0;
}

/* ── Lavender Edition Logo (Login Page) ─────────────────────── */
.le-logo-wrap {
    display: flex;
    justify-content: center;
    align-items: center;
    margin: -6px auto 18px;
    animation: leLogoFade 0.9s ease-out both;
}
    display: flex;
    justify-content: center;
    align-items: center;
    margin: -6px auto 18px;
    animation: leLogoFade 0.9s ease-out both;
}
.le-logo {
    width: 130px;
    height: 130px;
    display: block;
    /* Лёгкое свечение золотом — на фиолетовых акцентах сайта смотрится премиально */
    filter: drop-shadow(0 4px 14px rgba(212, 175, 55, 0.18));
    transition: filter 0.3s ease, transform 0.3s ease;
}
.le-logo:hover {
    filter: drop-shadow(0 6px 18px rgba(212, 175, 55, 0.32));
    transform: scale(1.02);
}
@keyframes leLogoFade {
    from { opacity: 0; transform: translateY(-6px) scale(0.92); }
    to   { opacity: 1; transform: translateY(0)    scale(1); }
}
body.dark-mode .le-logo {
    filter: drop-shadow(0 4px 16px rgba(212, 175, 55, 0.35));
}
@media (max-width: 480px) {
    .le-logo { width: 110px; height: 110px; }
}

/* ── Trust Block — Sicherheit & Vertrauen ───────────────────── */
.ro-trust-section {
    background: linear-gradient(180deg, #faf7ff 0%, #f3edff 100%);
    padding: 72px 24px;
    text-align: center;
    margin: 0 calc(50% - 50vw);
    width: 100vw;
    border-top: 1px solid rgba(26,18,37,.08);
}
body.dark-mode .ro-trust-section {
    background: linear-gradient(180deg, #0e0b1a 0%, #14091f 100%);
    border-top-color: rgba(212,175,55,.15);
}
.ro-trust-eyebrow {
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .12em;
    color: #967BB6;
    text-transform: uppercase;
    margin-bottom: 12px;
}
body.dark-mode .ro-trust-eyebrow { color: #D4AF37; }
.ro-trust-title {
    font-family: 'Fraunces', serif;
    font-size: clamp(1.6rem, 3vw, 2.4rem);
    font-weight: 900;
    color: var(--text);
    margin: 0 0 14px;
    letter-spacing: -.02em;
}
.ro-trust-sub {
    font-size: .94rem;
    color: var(--text-muted);
    max-width: 620px;
    margin: 0 auto 40px;
    line-height: 1.6;
}
.ro-trust-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 22px;
    max-width: 1000px;
    margin: 0 auto;
}
.ro-trust-card {
    background: #fff;
    border: 1px solid rgba(26,18,37,.12);
    border-radius: 18px;
    padding: 32px 26px;
    text-align: left;
    transition: box-shadow .25s, transform .25s, border-color .25s;
    box-shadow: 0 4px 18px rgba(26,18,37,.06);
    position: relative;
    overflow: hidden;
}
.ro-trust-card::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, rgba(212,175,55,.06) 0%, transparent 50%);
    pointer-events: none;
    opacity: 0;
    transition: opacity .25s;
}
.ro-trust-card:hover {
    border-color: rgba(212,175,55,.35);
    box-shadow: 0 10px 32px rgba(26,18,37,.16);
    transform: translateY(-4px);
}
.ro-trust-card:hover::before { opacity: 1; }
body.dark-mode .ro-trust-card {
    background: #1c1728;
    border-color: rgba(212,175,55,.18);
}
body.dark-mode .ro-trust-card:hover {
    border-color: rgba(212,175,55,.5);
}
.ro-trust-icon {
    font-size: 2.4rem;
    margin-bottom: 14px;
    display: inline-block;
    filter: drop-shadow(0 2px 8px rgba(26,18,37,.18));
}
.ro-trust-card-title {
    font-family: 'Fraunces', serif;
    font-size: 1.12rem;
    font-weight: 700;
    margin: 0 0 10px;
    color: var(--text);
}
.ro-trust-card-text {
    font-size: .86rem;
    color: var(--text-muted);
    line-height: 1.65;
    margin: 0;
}
.ro-trust-card-text strong {
    color: var(--text);
    font-weight: 600;
}

/* ── Responsive ─────────────────────────────────────────────── */
@media (max-width: 768px) {
    .ro-hero { min-height: auto; padding: 44px 20px; }
    .ro-hero-inner { grid-template-columns: 1fr; gap: 36px; }
    .ro-hero-title { font-size: 1.9rem; }
    .ro-hero-proof { gap: 14px; padding: 14px 16px; }
    .ro-feat-grid { grid-template-columns: 1fr; }
    .ro-trust-grid { grid-template-columns: 1fr; gap: 16px; }
    .ro-trust-section { padding: 48px 20px; }
    .ro-hero-btns { flex-direction: column; }
    .ro-btn-primary, .ro-btn-ghost { width: 100%; text-align: center; }
}
@media (max-width: 480px) {
    .ro-hero-title { font-size: 1.6rem; }
    .ro-hero-proof { flex-wrap: wrap; justify-content: center; }
    .ro-proof-div { display: none; }
}

/* ════════════════════════════════════════════════════════════════
   RUHE & ORDNUNG — Этап 2: UI Kit
   Glassmorphism карточки · Glow-статусы · Слоты · Табы
════════════════════════════════════════════════════════════════ */

/* ── Glassmorphism Карточки практик ─────────────────────────── */
.praxis-card-v2 {
    background: rgba(255,255,255,.82);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-radius: 18px;
    border: 1px solid rgba(26,18,37,.15);
    margin-bottom: 12px;
    overflow: hidden;
    transition: box-shadow .22s, transform .22s, border-color .22s;
    box-shadow: 0 4px 24px rgba(26,18,37,.07), inset 0 1px 0 rgba(255,255,255,.9);
}
.praxis-card-v2:hover {
    box-shadow: 0 12px 40px rgba(26,18,37,.16), inset 0 1px 0 rgba(255,255,255,.9);
    transform: translateY(-2px);
    border-color: rgba(26,18,37,.3);
}
.praxis-card-v2.selected {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(26,18,37,.12), 0 8px 32px rgba(26,18,37,.15);
}
.praxis-card-v2.closed-today {
    opacity: .72;
    border-left: 3px solid #c0392b;
    filter: grayscale(8%);
}
.praxis-card-v2.labor-today {
    border-left: 3px solid #d4a017;
}

/* Dark mode glassmorphism */
body.dark-mode .praxis-card-v2 {
    background: rgba(28,23,40,.88);
    border-color: rgba(150,123,182,.28);
    box-shadow: 0 4px 24px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.04);
}
body.dark-mode .praxis-card-v2:hover {
    border-color: rgba(150,123,182,.5);
    box-shadow: 0 12px 40px rgba(0,0,0,.45);
}
/* Пункт 4: контраст текста в тёмном режиме */
body.dark-mode .praxis-card-v2 .px-name,
body.dark-mode .praxis-card-v2 h3,
body.dark-mode .praxis-card-v2 h4,
body.dark-mode .praxis-card-v2 strong { color: #f0ebff; }
body.dark-mode .praxis-card-v2 .px-spec,
body.dark-mode .praxis-card-v2 .px-city,
body.dark-mode .praxis-card-v2 .px-addr,
body.dark-mode .praxis-card-v2 .px-phone { color: #c8bfdf; }
body.dark-mode .praxis-card-v2 .px-spec-tag { background: rgba(26,18,37,.3); color: #d4bbff; }

/* ── Glow-статусы практики (Betriebsmodus) ──────────────────── */

/* 🟢 Normal */
.px-open {
    background: rgba(39,174,96,.12);
    color: #1a7a3f;
    border: 1px solid rgba(39,174,96,.3);
    box-shadow: 0 0 8px rgba(39,174,96,.2), 0 0 20px rgba(39,174,96,.08);
    animation: glowGreen 3s ease-in-out infinite;
}
@keyframes glowGreen {
    0%,100% { box-shadow: 0 0 6px rgba(39,174,96,.2), 0 0 16px rgba(39,174,96,.06); }
    50%      { box-shadow: 0 0 10px rgba(39,174,96,.35), 0 0 24px rgba(39,174,96,.12); }
}

/* 🟡 Nur Labor */
.px-labor {
    background: rgba(212,160,23,.12);
    color: #8a6900;
    border: 1px solid rgba(212,160,23,.35);
    box-shadow: 0 0 8px rgba(212,160,23,.2), 0 0 20px rgba(212,160,23,.08);
    animation: glowAmber 2.5s ease-in-out infinite;
}
@keyframes glowAmber {
    0%,100% { box-shadow: 0 0 6px rgba(212,160,23,.2), 0 0 16px rgba(212,160,23,.06); }
    50%      { box-shadow: 0 0 10px rgba(212,160,23,.4), 0 0 24px rgba(212,160,23,.14); }
}

/* 🔴 Geschlossen */
.px-closed {
    background: rgba(192,57,43,.1);
    color: #a02010;
    border: 1px solid rgba(192,57,43,.3);
    box-shadow: 0 0 6px rgba(192,57,43,.15);
}

/* Dark mode glow */
body.dark-mode .px-open  { background: rgba(39,174,96,.15);  color: #5edc8a; }
body.dark-mode .px-labor { background: rgba(212,160,23,.15); color: #f0c050; }
body.dark-mode .px-closed{ background: rgba(192,57,43,.15);  color: #ff8a80; }

/* ── Betriebsmodus Switcher (Admin) — обновлённый стиль ─────── */
.betrieb-switcher {
    display: inline-flex;
    background: rgba(240,237,255,.6);
    backdrop-filter: blur(8px);
    border: 1.5px solid rgba(26,18,37,.2);
    border-radius: 16px;
    padding: 4px;
    gap: 4px;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.8), 0 2px 10px rgba(26,18,37,.08);
}
body.dark-mode .betrieb-switcher {
    background: rgba(28,23,40,.7);
    border-color: rgba(150,123,182,.25);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.03);
}
.betrieb-btn {
    display: inline-flex; align-items: center; gap: 7px;
    padding: 9px 15px;
    border-radius: 12px; border: none;
    font-size: .82rem; font-weight: 600;
    cursor: pointer;
    font-family: 'DM Sans', sans-serif;
    background: transparent;
    color: var(--text-muted);
    transition: all .18s;
    white-space: nowrap;
}
.betrieb-btn:hover { background: rgba(26,18,37,.08); }
.betrieb-btn.betrieb-open.active {
    background: rgba(39,174,96,.12);
    color: #1a7a3f;
    box-shadow: 0 2px 10px rgba(39,174,96,.15), inset 0 1px 0 rgba(255,255,255,.7);
}
.betrieb-btn.betrieb-labor.active {
    background: rgba(212,160,23,.14);
    color: #8a6900;
    box-shadow: 0 2px 10px rgba(212,160,23,.18), inset 0 1px 0 rgba(255,255,255,.7);
}
.betrieb-btn.betrieb-closed.active {
    background: rgba(192,57,43,.1);
    color: #a02010;
    box-shadow: 0 2px 10px rgba(192,57,43,.12), inset 0 1px 0 rgba(255,255,255,.5);
}
.betrieb-dot {
    width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
}
.betrieb-open.active   .betrieb-dot { background: #27ae60; animation: dotPulseGreen 2.5s ease-in-out infinite; }
.betrieb-labor.active  .betrieb-dot { background: #d4a017; animation: dotPulseAmber 2s ease-in-out infinite; }
.betrieb-closed.active .betrieb-dot { background: #c0392b; animation: dotPulseRed 2s ease-in-out infinite; }
.betrieb-btn:not(.active) .betrieb-dot { background: rgba(0,0,0,.2); }
body.dark-mode .betrieb-btn:not(.active) .betrieb-dot { background: rgba(255,255,255,.2); }

/* ── Слоты времени — чистые плитки ──────────────────────────── */
.slot-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    margin: 10px 0 18px;
}
.slot {
    padding: 10px 0;
    text-align: center;
    border-radius: 10px;
    border: 1.5px solid var(--border);
    font-size: .83rem;
    font-weight: 700;
    cursor: pointer;
    background: var(--card);
    color: var(--text);
    transition: all .18s;
    position: relative;
    box-shadow: 0 1px 4px rgba(26,18,37,.05);
}
.slot:hover:not(.taken):not(.break-slot) {
    border-color: var(--primary);
    background: var(--primary-light);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(26,18,37,.18);
}
.slot.sel {
    border-color: var(--primary);
    background: var(--primary);
    color: #fff;
    box-shadow: 0 4px 16px rgba(26,18,37,.35);
    transform: translateY(-1px);
}
/* Занятые слоты — плавное затухание opacity 0.4 */
.slot.taken {
    opacity: .4;
    cursor: not-allowed;
    pointer-events: none;
    background: var(--bg);
    border-color: transparent;
    box-shadow: none;
    text-decoration: none;
    color: var(--text-muted);
}
.slot.break-slot {
    background: var(--warning-light);
    color: var(--warning);
    border-color: rgba(160,92,0,.2);
    cursor: not-allowed;
    font-size: .72rem;
    opacity: .7;
}
body.dark-mode .slot {
    background: #231e3a;
    border-color: var(--border);
    box-shadow: none;
}
body.dark-mode .slot.sel { background: #1A1225; color: #fff; border-color: #3D2B56; }
body.dark-mode .slot.taken { background: #161220; color: #333; opacity: .4; }

/* ── Booking Mode Tabs — анимированный слайдер ──────────────── */
.booking-mode-tabs-wrap {
    background: rgba(240,237,255,.5);
    backdrop-filter: blur(8px);
    border: 1.5px solid rgba(26,18,37,.15);
    border-radius: 14px;
    padding: 4px;
    display: inline-flex;
    gap: 4px;
    margin-bottom: 14px;
    width: 100%;
    box-sizing: border-box;
    position: relative;
}
.booking-mode-tab {
    flex: 1;
    padding: 10px 14px;
    border-radius: 10px;
    border: none;
    font-size: .85rem;
    font-weight: 700;
    cursor: pointer;
    font-family: 'DM Sans', sans-serif;
    background: transparent;
    color: var(--text-muted);
    transition: all .2s cubic-bezier(.4,0,.2,1);
    position: relative;
    z-index: 1;
}
.booking-mode-tab.active {
    background: var(--primary);
    color: #fff;
    box-shadow: 0 3px 12px rgba(26,18,37,.3);
    transform: translateY(0);
}
.booking-mode-tab:not(.active):hover {
    background: rgba(26,18,37,.08);
    color: var(--primary);
}
/* Заблокированный таб */
.booking-mode-tab:disabled {
    opacity: .4;
    cursor: not-allowed;
    color: var(--text-muted);
}

/* ── Карточки услуг — Glassmorphism ───────────────────────────── */
.service-card {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 16px;
    border-radius: 16px;
    border: 1.5px solid rgba(26,18,37,.14);
    background: rgba(255,255,255,.6);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    cursor: pointer;
    transition: all .2s cubic-bezier(.4,0,.2,1);
    margin-bottom: 8px;
    box-shadow: 0 2px 12px rgba(26,18,37,.06), inset 0 1px 0 rgba(255,255,255,.7);
}
.service-card:hover {
    border-color: var(--primary);
    background: rgba(26,18,37,.06);
    transform: translateX(3px);
    box-shadow: 0 6px 20px rgba(26,18,37,.14), inset 0 1px 0 rgba(255,255,255,.8);
}
.service-card.selected {
    border-color: var(--primary);
    background: rgba(26,18,37,.08);
    box-shadow: 0 0 0 3px rgba(26,18,37,.12), 0 4px 16px rgba(26,18,37,.1);
}
body.dark-mode .service-card {
    background: rgba(35,28,58,.6);
    border-color: rgba(150,123,182,.18);
    box-shadow: 0 2px 12px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.05);
}
body.dark-mode .service-card:hover {
    background: rgba(26,18,37,.15);
    border-color: rgba(150,123,182,.45);
    box-shadow: 0 6px 20px rgba(0,0,0,.35);
}
body.dark-mode .service-card.selected {
    background: rgba(26,18,37,.2);
    border-color: var(--primary);
}

/* ── Doctor chips — glassmorphism ───────────────────────────── */
.px-doc-chip {
    display: flex; align-items: flex-start; gap: 10px;
    padding: 10px 12px; margin: 5px 0;
    border-radius: 12px;
    border: 1.5px solid rgba(26,18,37,.12);
    background: rgba(255,255,255,.6);
    backdrop-filter: blur(6px);
    cursor: pointer;
    transition: all .18s;
    box-shadow: 0 1px 6px rgba(26,18,37,.04);
}
.px-doc-chip:hover:not(.unavail) {
    background: rgba(26,18,37,.08);
    border-color: var(--primary);
    transform: translateX(2px);
    box-shadow: 0 4px 14px rgba(26,18,37,.12);
}
.px-doc-chip.selected {
    background: var(--primary-light);
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(26,18,37,.1);
}
.px-doc-chip.unavail {
    opacity: .5;
    cursor: not-allowed;
    filter: grayscale(30%);
}
body.dark-mode .px-doc-chip {
    background: rgba(35,30,58,.6);
    border-color: rgba(150,123,182,.15);
}
body.dark-mode .px-doc-chip:hover:not(.unavail) {
    background: rgba(26,18,37,.15);
}

/* ── Обновлённые карточки прaxисов (.card) — лёгкий glass ───── */
.card {
    background: rgba(255,255,255,.9);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border-radius: var(--r);
    border: 1px solid rgba(26,18,37,.12);
    padding: 22px 24px;
    margin-bottom: 16px;
    box-shadow: 0 2px 16px rgba(26,18,37,.07), inset 0 1px 0 rgba(255,255,255,.95);
}
body.dark-mode .card {
    background: rgba(28,23,40,.8);
    border-color: rgba(150,123,182,.15);
    box-shadow: 0 2px 16px rgba(0,0,0,.3), inset 0 1px 0 rgba(255,255,255,.03);
}

/* ── Input focus — лавандовое свечение ──────────────────────── */
input:focus, select:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(150,123,182,.15), 0 1px 8px rgba(26,18,37,.1);
}

/* ── Search field с иконкой лупы ────────────────────────────── */
.smart-search-wrap {
    position: relative;
    display: flex; align-items: center;
}
.smart-search-wrap .ss-icon {
    position: absolute; left: 12px;
    font-size: 1rem; pointer-events: none;
    z-index: 1;
}
.smart-search-wrap input {
    padding-left: 38px !important;
    transition: border-color .18s, box-shadow .18s;
}
.smart-search-wrap input:focus {
    border-color: #967BB6;
    box-shadow: 0 0 0 3px rgba(150,123,182,.15), 0 2px 10px rgba(150,123,182,.1);
}

/* ════════════════════════════════════════════════════════════════
   RUHE & ORDNUNG — Этап 3: UX-вкладки, модалы, форма бронирования
════════════════════════════════════════════════════════════════ */

/* ── Пациентские вкладки — анимированный слайдер ────────────── */
.pt-header {
    background: rgba(255,255,255,.92);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border-radius: var(--r);
    border: 1px solid rgba(26,18,37,.1);
    box-shadow: 0 4px 24px rgba(26,18,37,.08), inset 0 1px 0 rgba(255,255,255,.9);
    margin-bottom: 16px;
    overflow: hidden;
}
body.dark-mode .pt-header {
    background: rgba(28,23,40,.88);
    border-color: rgba(150,123,182,.15);
    box-shadow: 0 4px 24px rgba(0,0,0,.3);
}

.pt-tabs {
    display: flex;
    border-top: 1px solid rgba(26,18,37,.1);
    position: relative; /* для слайдера */
}

/* Анимированный слайдер под активным табом */
.pt-tab {
    flex: 1;
    display: flex; flex-direction: column; align-items: center; gap: 3px;
    padding: 11px 4px 9px;
    border: none; background: transparent;
    cursor: pointer; font-size: .72rem;
    color: var(--text-muted);
    position: relative;
    transition: color .2s;
    font-family: 'DM Sans', sans-serif;
}
/* Убираем старую border-bottom логику */
.pt-tab::after {
    content: '';
    position: absolute; bottom: 0; left: 50%; transform: translateX(-50%);
    width: 0; height: 2.5px;
    background: var(--primary);
    border-radius: 2px 2px 0 0;
    transition: width .28s cubic-bezier(.4,0,.2,1);
}
.pt-tab.active { color: var(--primary); }
.pt-tab.active::after { width: 60%; }
.pt-tab.active { background: rgba(26,18,37,.05); }
.pt-tab:hover:not(.active) { color: var(--primary); background: rgba(26,18,37,.03); }

/* Контент вкладок — анимированное появление */
.pt-tab-content {
    display: none;
    opacity: 0;
    transform: translateY(6px);
    transition: opacity .22s ease, transform .22s ease;
}
.pt-tab-content.active {
    display: block;
    animation: tabSlideIn .22s ease forwards;
}
@keyframes tabSlideIn {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ── Модальные окна — scale + opacity анимация ───────────────── */

/* Универсальный оверлей */
.ro-modal-overlay {
    position: fixed; inset: 0; z-index: 9500;
    background: rgba(8,6,15,.7);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    display: flex; align-items: center; justify-content: center;
    padding: 20px;
    animation: roOverlayIn .2s ease forwards;
}
@keyframes roOverlayIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}

/* Контейнер модала */
.ro-modal-box {
    background: #fff;
    border-radius: 24px;
    padding: 36px 32px;
    max-width: 440px; width: 100%;
    text-align: center;
    box-shadow: 0 32px 80px rgba(45,27,105,.28), 0 0 0 1px rgba(26,18,37,.08);
    animation: roModalIn .28s cubic-bezier(.34,1.56,.64,1) forwards;
    position: relative;
}
body.dark-mode .ro-modal-box {
    background: #1e1535;
    box-shadow: 0 32px 80px rgba(0,0,0,.6), 0 0 0 1px rgba(150,123,182,.15);
}
@keyframes roModalIn {
    from { opacity: 0; transform: scale(.9) translateY(12px); }
    to   { opacity: 1; transform: scale(1) translateY(0); }
}
@keyframes roModalOut {
    from { opacity: 1; transform: scale(1) translateY(0); }
    to   { opacity: 0; transform: scale(.93) translateY(8px); }
}
.ro-modal-box.closing {
    animation: roModalOut .18s ease forwards;
}

/* ── Booking Confirm Modal — редизайн ────────────────────────── */
#booking-confirm-overlay {
    position: fixed; inset: 0; z-index: 9500;
    background: rgba(8,6,15,.72);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    display: flex; align-items: center; justify-content: center;
    padding: 20px;
    animation: roOverlayIn .2s ease forwards;
}
#booking-confirm-box {
    background: #fff;
    border-radius: 28px;
    padding: 40px 34px 32px;
    max-width: 420px; width: 100%;
    text-align: center;
    box-shadow: 0 32px 80px rgba(45,27,105,.3), inset 0 1px 0 rgba(255,255,255,1);
    animation: roModalIn .3s cubic-bezier(.34,1.56,.64,1) forwards;
}
body.dark-mode #booking-confirm-box {
    background: #1c1728;
    box-shadow: 0 32px 80px rgba(0,0,0,.6), 0 0 0 1px rgba(150,123,182,.15);
}

/* Иконка подтверждения */
.bc-checkmark {
    width: 64px; height: 64px;
    background: linear-gradient(135deg, #967BB6, #3D2B56);
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.8rem;
    margin: 0 auto 20px;
    box-shadow: 0 8px 24px rgba(26,18,37,.35);
    animation: checkmarkPop .4s cubic-bezier(.34,1.56,.64,1) .1s both;
}
@keyframes checkmarkPop {
    from { transform: scale(0); opacity: 0; }
    to   { transform: scale(1); opacity: 1; }
}
.bc-title {
    font-family: 'Fraunces', serif;
    font-size: 1.45rem; font-weight: 900;
    color: #1a0f2e; margin-bottom: 6px;
    letter-spacing: -.02em;
}
body.dark-mode .bc-title { color: #e8e0f5; }
.bc-sub {
    font-size: .85rem; color: #888;
    margin-bottom: 22px; line-height: 1.65;
}

/* Карточка деталей */
.bc-card {
    background: linear-gradient(135deg, #f8f5ff, #f2eeff);
    border-radius: 16px;
    padding: 18px 20px;
    margin: 0 0 20px;
    text-align: left;
    border: 1px solid rgba(26,18,37,.12);
    animation: cardSlideUp .3s ease .15s both;
}
body.dark-mode .bc-card {
    background: linear-gradient(135deg, #251b3e, #2a1e4a);
    border-color: rgba(150,123,182,.2);
}
@keyframes cardSlideUp {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}
.bc-row {
    display: flex; justify-content: space-between;
    padding: 7px 0;
    border-bottom: 1px solid rgba(26,18,37,.1);
    font-size: .85rem;
}
.bc-row:last-child { border-bottom: none; }
.bc-label { color: #999; }
.bc-val { font-weight: 700; color: #2d1b69; }
body.dark-mode .bc-val { color: #c4b0f0; }

.bc-btn {
    background: linear-gradient(135deg, #967BB6, #3D2B56);
    color: #fff; border: none;
    border-radius: 14px;
    padding: 14px 32px;
    font-size: .95rem; font-weight: 700;
    cursor: pointer; width: 100%;
    font-family: 'DM Sans', sans-serif;
    transition: all .2s;
    box-shadow: 0 4px 16px rgba(26,18,37,.3);
    animation: cardSlideUp .3s ease .25s both;
}
.bc-btn:hover {
    transform: translateY(-1px);
    box-shadow: 0 8px 24px rgba(26,18,37,.45);
    background: linear-gradient(135deg, #a888c8, #8a6acc);
}

/* ── Booking Form — glassmorphism, анимация появления ─────────── */
#booking-form-wrap {
    animation: bookFormIn .28s cubic-bezier(.4,0,.2,1) forwards;
}
@keyframes bookFormIn {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Заголовок формы бронирования */
.booking-doc-header {
    display: flex; align-items: center; gap: 14px;
    background: linear-gradient(135deg, rgba(150,123,182,.1), rgba(26,18,37,.06));
    border-radius: 14px;
    padding: 14px 16px;
    margin-bottom: 16px;
    border: 1px solid rgba(26,18,37,.15);
}
body.dark-mode .booking-doc-header {
    background: linear-gradient(135deg, rgba(150,123,182,.12), rgba(26,18,37,.08));
}
.booking-doc-avatar {
    width: 44px; height: 44px;
    border-radius: 12px;
    background: linear-gradient(135deg, #967BB6, #3D2B56);
    display: flex; align-items: center; justify-content: center;
    font-size: 1.2rem; flex-shrink: 0;
    box-shadow: 0 4px 12px rgba(26,18,37,.3);
}
.booking-doc-name {
    font-weight: 700; font-size: .92rem;
    font-family: 'Fraunces', serif;
}
.booking-doc-spec {
    font-size: .75rem; color: var(--text-muted);
}

/* ── Service Booking Form — анимация ──────────────────────────── */
#service-booking-wrap {
    animation: bookFormIn .28s cubic-bezier(.4,0,.2,1) forwards;
}

/* ── Дата-пикер — стиль ───────────────────────────────────────── */
input[type="date"] {
    position: relative;
    cursor: pointer;
}
input[type="date"]::-webkit-calendar-picker-indicator {
    opacity: .6;
    cursor: pointer;
    filter: invert(40%) sepia(50%) saturate(400%) hue-rotate(230deg);
}
input[type="date"]:focus::-webkit-calendar-picker-indicator { opacity: 1; }

/* ── Логотип бренда ──────────────────────────────────────────── */
.ro-brand-logo {
    height: 160px;
    width: auto;
    object-fit: contain;
    /* Логотип светло-серый → делаем его белым/лавандовым на тёмном Hero */
    filter: brightness(0) invert(1) sepia(1) saturate(2)
            hue-rotate(240deg) brightness(1.3);
    animation: logoFadeIn .6s ease .1s both;
    display: block;
}
@keyframes logoFadeIn {
    from { opacity: 0; transform: scale(.92) translateY(-8px); }
    to   { opacity: 1; transform: scale(1)   translateY(0); }
}

/* Header logo — оригинальные цвета (светлый фон) */
.ro-header .ro-logo img {
    filter: none; /* без инверсии в header */
    height: 38px;
    transition: transform .2s;
}
.ro-header .ro-logo:hover img { transform: scale(1.04); }

/* Dark mode header logo */
body.dark-mode .ro-header .ro-logo img {
    filter: brightness(0) invert(1) sepia(1) saturate(1.5)
            hue-rotate(240deg) brightness(1.2);
}

/* ════════════════════════════════════════════════════════════════
   RUHE & ORDNUNG — Этап 4: Admin Dark Theme (Obsidian #08060F)
   Только для .admin-page — не влияет на index.html
════════════════════════════════════════════════════════════════ */

/* ══════════════════════════════════════════════════════════════
   ADMIN THEME SYSTEM — Adaptive Light/Dark
   Все стили используют ТОЛЬКО переменные :root / body.dark-mode.
   Жёстких цветов нет — переключение темы работает мгновенно.
   ══════════════════════════════════════════════════════════════ */

/* ── Admin Base ───────────────────────────────────────────────── */
body.admin-page {
    background: var(--bg);
    color: var(--text);
}

/* ── Header ──────────────────────────────────────────────────── */
body.admin-page header {
    background: var(--card);
    border-bottom: 1px solid var(--border);
    box-shadow: var(--shadow);
    backdrop-filter: blur(12px);
}
body.admin-page .logo { color: var(--primary); font-family: 'Fraunces', serif; font-weight: 900; }
body.admin-page .logo span { color: var(--accent); }

/* ── Sidebar ─────────────────────────────────────────────────── */
body.admin-page .sidebar {
    background: var(--sidebar-bg);
    border-right: 1px solid var(--sidebar-border);
    box-shadow: 4px 0 20px rgba(0,0,0,.08);
}
body.admin-page .sidebar-logo {
    background: var(--primary-light);
    border-bottom: 1px solid var(--border);
    padding: 22px 18px 16px;
}
body.admin-page .sidebar-logo .logo-text { color: var(--primary); }
body.admin-page .sidebar-logo .logo-text span { color: var(--accent); }
body.admin-page .sidebar-praxis-name { color: var(--text-muted); }

/* Навигация */
body.admin-page .sidebar-nav-item { color: var(--text-muted); border-radius: 10px; }
body.admin-page .sidebar-nav-item:hover { background: var(--primary-light); color: var(--primary); }
body.admin-page .sidebar-nav-item.active {
    background: var(--sidebar-active-bg);
    color: var(--sidebar-active-color);
    border-color: var(--lavender-deep);
    box-shadow: 0 2px 12px rgba(26,18,37,.08);
}
body.admin-page .sidebar-nav-item.active::before { background: linear-gradient(180deg, var(--primary), var(--primary-dark)); }
body.admin-page .sidebar-section-label { color: var(--text-muted); opacity: .55; }

/* Footer сайдбара */
body.admin-page .sidebar-footer-btn { color: var(--text-muted); }
body.admin-page .sidebar-footer-btn:hover { background: var(--primary-light); color: var(--primary); }
body.admin-page .sidebar-footer-btn.danger:hover { background: var(--danger-light); color: var(--danger); }

/* ── Основной контент ────────────────────────────────────────── */
body.admin-page .dash-main { background: var(--bg); }
body.admin-page .main-content { background: var(--bg); }

/* Карточки */
body.admin-page .card {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: var(--r);
    box-shadow: var(--shadow);
    color: var(--text);
    transition: box-shadow .18s, transform .15s, border-color .2s, background .25s;
}
body.admin-page .card:hover { box-shadow: var(--shadow-md); }

/* Заголовки секций */
body.admin-page .section-title { color: var(--text); font-weight: 800; }
body.admin-page .section-subtitle { color: var(--text-muted); }
body.admin-page .section-header { border-bottom: 1px solid var(--border); }

/* ── Kanban Board ────────────────────────────────────────────── */
body.admin-page .kanban-col {
    background: var(--lavender);
    border: 1.5px solid var(--border);
    border-radius: var(--r-sm);
    padding: 10px;
    transition: border-color .2s, background .2s;
}
body.admin-page .kanban-col.drag-over {
    border-color: var(--primary);
    background: var(--primary-light);
}
body.admin-page .kanban-col-title {
    color: var(--text-muted);
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    margin-bottom: 8px;
}
body.admin-page .kanban-card {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: var(--r-sm);
    padding: 10px 12px;
    box-shadow: 0 1px 4px rgba(0,0,0,.04);
    color: var(--text);
    transition: box-shadow .15s, transform .15s, background .25s;
}
body.admin-page .kanban-card:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-1px);
    border-color: var(--primary);
}
body.admin-page .kanban-card .kc-meta { color: var(--text-muted); }

/* ── Inputs, Selects, Textarea ───────────────────────────────── */
body.admin-page input,
body.admin-page select,
body.admin-page textarea {
    background: var(--card);
    border: 1px solid var(--border);
    color: var(--text);
    border-radius: var(--r-sm);
    transition: border-color .18s, box-shadow .18s;
}
body.admin-page input:focus,
body.admin-page select:focus,
body.admin-page textarea:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px var(--primary-light);
    background: var(--card);
}
body.admin-page input::placeholder,
body.admin-page textarea::placeholder { color: var(--text-muted); opacity: .6; }

/* Поиск */
body.admin-page #kanban-patient-search,
body.admin-page #pm-search {
    background: var(--card);
    border: 1px solid var(--border);
    color: var(--text);
    border-radius: 20px;
}
body.admin-page #kanban-patient-search:focus,
body.admin-page #pm-search:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px var(--primary-light);
}

/* ── Кнопки ──────────────────────────────────────────────────── */
body.admin-page .btn-main {
    background: linear-gradient(135deg, var(--primary), var(--primary-dark));
    color: #fff;
    box-shadow: 0 4px 16px rgba(26,18,37,.25);
}
body.admin-page .btn-main:hover { box-shadow: 0 6px 22px rgba(26,18,37,.4); transform: translateY(-1px); }
body.admin-page .btn-outline {
    border-color: var(--lavender-deep);
    color: var(--primary);
    background: transparent;
}
body.admin-page .btn-outline:hover { background: var(--primary-light); border-color: var(--primary); }

/* ── Betriebsmodus Switcher ──────────────────────────────────── */
body.admin-page .betrieb-switcher {
    background: var(--lavender);
    border-color: var(--border);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.5);
}
body.admin-page .betrieb-btn { color: var(--text-muted); }
body.admin-page .betrieb-btn:hover { background: var(--primary-light); color: var(--primary); }
body.admin-page .betrieb-btn.betrieb-open.active   { background: rgba(22,163,74,.12);  color: #15803d; }
body.admin-page .betrieb-btn.betrieb-labor.active  { background: rgba(217,119,6,.12);  color: #b45309; }
body.admin-page .betrieb-btn.betrieb-closed.active { background: rgba(220,38,38,.12);  color: #b91c1c; }

/* ── Dashboard Stats ─────────────────────────────────────────── */
body.admin-page .stat-box {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 14px;
    box-shadow: var(--shadow);
    transition: border-color .18s, box-shadow .18s;
}
body.admin-page .stat-box:hover { border-color: var(--primary); box-shadow: var(--shadow-md); }
body.admin-page .stat-val { color: var(--primary); }
body.admin-page .stat-lbl { color: var(--text-muted); }

/* ── Badges ──────────────────────────────────────────────────── */
body.admin-page .badge.b-confirmed { background: var(--success-light); color: var(--success); border: 1px solid rgba(22,163,74,.2); }
body.admin-page .badge.b-cancelled { background: var(--danger-light);  color: var(--danger);  border: 1px solid rgba(220,38,38,.2); }
body.admin-page .badge.b-pending   { background: var(--primary-light); color: var(--primary); border: 1px solid var(--lavender-deep); }

/* ── Scrollbar ───────────────────────────────────────────────── */
body.admin-page ::-webkit-scrollbar { width: 6px; height: 6px; }
body.admin-page ::-webkit-scrollbar-track { background: var(--lavender); }
body.admin-page ::-webkit-scrollbar-thumb { background: var(--lavender-deep); border-radius: 3px; }
body.admin-page ::-webkit-scrollbar-thumb:hover { background: var(--primary); }

/* ── Toast ───────────────────────────────────────────────────── */
body.admin-page .toast { background: var(--card); border-color: var(--border); color: var(--text); box-shadow: var(--shadow-md); }

/* ── Таблица пациентов ───────────────────────────────────────── */
body.admin-page .pm-item {
    background: transparent;
    border-bottom: 1px solid var(--border);
    padding: 14px 4px;
}
body.admin-page .pm-item:hover { background: var(--primary-light); }
body.admin-page .pm-name { color: var(--text); font-weight: 600; }
body.admin-page .pm-meta { color: var(--text-muted); }

/* ── Sidebar Logo Image ──────────────────────────────────────── */
body.admin-page .sidebar-logo-img {
    height: 36px; width: auto;
    filter: var(--logo-filter, none);
    display: block; margin-bottom: 8px;
}

/* ═══════════════════════════════════════════════════════════════
   DARK MODE OVERRIDES — только то что не покрыто переменными
   ═══════════════════════════════════════════════════════════════ */
body.dark-mode.admin-page header {
    background: rgba(8,6,15,.95);
    border-color: rgba(150,123,182,.12);
    box-shadow: 0 1px 30px rgba(0,0,0,.5);
}
body.dark-mode.admin-page .sidebar { box-shadow: 4px 0 30px rgba(0,0,0,.4); }
body.dark-mode.admin-page .betrieb-switcher { box-shadow: inset 0 1px 0 rgba(255,255,255,.03); }
body.dark-mode.admin-page .card { box-shadow: 0 2px 16px rgba(0,0,0,.3); }
body.dark-mode.admin-page .kanban-card { box-shadow: 0 1px 8px rgba(0,0,0,.2); }
body.dark-mode.admin-page .kanban-card:hover { box-shadow: 0 4px 20px rgba(0,0,0,.4); }
body.dark-mode.admin-page input,
body.dark-mode.admin-page select,
body.dark-mode.admin-page textarea { background: rgba(20,16,36,.8); }
body.dark-mode.admin-page input:focus,
body.dark-mode.admin-page select:focus,
body.dark-mode.admin-page textarea:focus { background: rgba(25,20,44,.9); }
body.dark-mode.admin-page #kanban-patient-search,
body.dark-mode.admin-page #pm-search { background: rgba(20,16,36,.7); }
body.dark-mode.admin-page #kanban-patient-search:focus,
body.dark-mode.admin-page #pm-search:focus { background: rgba(25,20,44,.9); }
body.dark-mode.admin-page .toast { background: rgba(15,13,26,.95); }
body.dark-mode.admin-page .betrieb-btn.betrieb-open.active   { background: rgba(46,204,113,.15); color: #5edc8a; }
body.dark-mode.admin-page .betrieb-btn.betrieb-labor.active  { background: rgba(240,165,0,.15);  color: #f0c050; }
body.dark-mode.admin-page .betrieb-btn.betrieb-closed.active { background: rgba(231,76,60,.15);  color: #ff8a80; }
/* Лого-фильтр — инверт в тёмной теме */
body.dark-mode.admin-page { --logo-filter: brightness(0) invert(1) sepia(1) saturate(1.5) hue-rotate(240deg) brightness(1.15); }


/* ── Текстовый бренд в Hero (без изображения) ─────────────────── */
.ro-brand-text {
    display: flex; flex-direction: column;
    margin-bottom: 32px;
}
.ro-brand-main {
    font-family: 'Fraunces', serif;
    font-weight: 900; font-size: 2.2rem;
    color: #fff; letter-spacing: -.03em;
    line-height: 1;
}
.ro-brand-accent {
    font-family: 'Fraunces', serif;
    font-weight: 900; font-size: 2.2rem;
    color: #967BB6; letter-spacing: -.03em;
    line-height: 1;
}
.ro-brand-tagline {
    font-size: .78rem;
    color: rgba(255,255,255,.4);
    letter-spacing: .08em;
    text-transform: uppercase;
    margin-top: 4px;
}

/* ── Header текстовый логотип ──────────────────────────────────── */
.ro-logo {
    font-family: 'Fraunces', serif;
    font-weight: 900; font-size: 1.3rem;
    color: var(--text); cursor: pointer;
    text-decoration: none; letter-spacing: -.02em;
    display: flex; align-items: center;
}
.ro-header { transition: box-shadow .2s; }


@media(max-width:700px){
    .g2,.g4{grid-template-columns:1fr;}
    .overview-widgets{grid-template-columns:1fr 1fr;}
    .kanban-wrap{grid-template-columns:1fr;}
    #section-kanban{height:auto;overflow-y:visible;}
    #section-kanban.active{display:block;}
    .kanban-col{min-height:120px;max-height:340px;}
    .today-banner{flex-direction:column;align-items:flex-start;}
    .slot-grid{grid-template-columns:repeat(3,1fr);}
    .hero-cards{grid-template-columns:1fr;}
    .appt-row{flex-direction:column;gap:10px;}
    .appt-r{width:100%;}
}

/* ── ЗАДАЧА 5: Модал добавления/редактирования врача ── */
#doc-form-modal{transition:opacity .22s ease,transform .22s ease;}
#doc-form-modal input:focus,#doc-form-modal select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light);}
.doc-form-color-swatch{width:28px;height:28px;border-radius:50%;cursor:pointer;transition:transform .15s,box-shadow .15s;flex-shrink:0;}
.doc-form-color-swatch:hover{transform:scale(1.15);}
.section-header .btn{flex-shrink:0;}
/* ══════════════════════════════════════════════════════════════
   ЗАДАЧА 7 — Master Dashboard: Obsidian & Gold
   ══════════════════════════════════════════════════════════════ */

/* ── PIN Numpad ── */
.pin-dot{width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,215,0,.35);background:transparent;transition:background .15s,border-color .15s,box-shadow .15s;}
.pin-dot.filled{background:#ffd700;border-color:#ffd700;box-shadow:0 0 10px rgba(255,215,0,.6);}
.pin-numpad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:240px;margin:0 auto;}
.pin-key{background:rgba(255,215,0,.06);border:1px solid rgba(255,215,0,.15);border-radius:12px;color:#ffd700;font-size:1.3rem;font-weight:600;font-family:'DM Sans',sans-serif;padding:14px;cursor:pointer;transition:background .15s,transform .1s,box-shadow .15s;user-select:none;}
.pin-key:hover{background:rgba(255,215,0,.14);box-shadow:0 0 16px rgba(255,215,0,.15);}
.pin-key:active{transform:scale(.92);}
.pin-key:disabled{opacity:.3;cursor:not-allowed;}
.pin-key-clear{color:#ff6b6b;border-color:rgba(255,107,107,.25);background:rgba(255,107,107,.06);}
.pin-key-clear:hover{background:rgba(255,107,107,.14);}
.pin-key-del{color:rgba(255,215,0,.6);}
@keyframes pinShake{0%,100%{transform:translateX(0);}20%{transform:translateX(-8px);}40%{transform:translateX(8px);}60%{transform:translateX(-6px);}80%{transform:translateX(6px);}}

/* ── Section Master — Obsidian & Gold layout ── */
.master-section{background:transparent;}
.master-section.active{display:flex;flex-direction:column;}

/* Top bar */
.master-topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;background:linear-gradient(135deg,#1a1505,#120f00);border:1px solid rgba(255,215,0,.2);border-radius:16px;padding:20px 24px;margin-bottom:18px;box-shadow:0 4px 30px rgba(255,215,0,.06),inset 0 1px 0 rgba(255,215,0,.1);}
.master-topbar-left{display:flex;align-items:center;gap:16px;}
.master-crown{font-size:2.2rem;filter:drop-shadow(0 0 14px rgba(255,215,0,.6));animation:crownPulse 3s ease-in-out infinite;}
@keyframes crownPulse{0%,100%{filter:drop-shadow(0 0 10px rgba(255,215,0,.5));}50%{filter:drop-shadow(0 0 22px rgba(255,215,0,.85));}}
.master-title{font-family:'Fraunces',serif;font-size:1.4rem;font-weight:900;background:linear-gradient(90deg,#ffd700,#ffec8b,#b8860b);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1.1;}
.master-subtitle{font-size:.75rem;color:rgba(255,215,0,.5);margin-top:3px;letter-spacing:.04em;text-transform:uppercase;}
.master-topbar-right{display:flex;align-items:center;gap:12px;}
.master-session-badge{display:flex;align-items:center;gap:7px;background:rgba(255,215,0,.08);border:1px solid rgba(255,215,0,.2);border-radius:20px;padding:5px 14px;font-size:.75rem;color:rgba(255,215,0,.8);}
.master-session-dot{width:7px;height:7px;border-radius:50%;background:#ffd700;box-shadow:0 0 8px rgba(255,215,0,.8);animation:sessionBlink 2s ease-in-out infinite;}
@keyframes sessionBlink{0%,100%{opacity:1;}50%{opacity:.4;}}
.master-lock-btn{background:rgba(255,215,0,.07);border:1px solid rgba(255,215,0,.2);border-radius:10px;padding:6px 12px;cursor:pointer;font-size:.9rem;color:rgba(255,215,0,.6);transition:all .15s;}
.master-lock-btn:hover{background:rgba(255,107,107,.12);border-color:rgba(255,107,107,.3);color:#ff6b6b;}

/* Stats grid */
.master-stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px;}
.master-stat-card{background:linear-gradient(135deg,#161008,#0d0a04);border:1px solid rgba(255,215,0,.15);border-radius:14px;padding:18px 20px;text-align:center;position:relative;overflow:hidden;transition:transform .2s,box-shadow .2s;}
.master-stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,rgba(255,215,0,.4),transparent);}
.master-stat-card:hover{transform:translateY(-3px);box-shadow:0 8px 30px rgba(255,215,0,.08);}
.master-stat-icon{font-size:1.4rem;margin-bottom:8px;filter:drop-shadow(0 0 6px rgba(255,215,0,.3));}
.master-stat-value{font-family:'Fraunces',serif;font-size:2rem;font-weight:900;color:#ffd700;line-height:1;text-shadow:0 0 20px rgba(255,215,0,.3);}
.master-stat-label{font-size:.7rem;color:rgba(255,215,0,.45);text-transform:uppercase;letter-spacing:.06em;margin-top:5px;}

/* Master cards */
.master-card{background:linear-gradient(135deg,#13100a,#0e0b06);border:1px solid rgba(255,215,0,.15);border-radius:14px;margin-bottom:14px;overflow:hidden;}
.master-card-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid rgba(255,215,0,.1);font-family:'Fraunces',serif;font-size:.95rem;font-weight:700;color:#ffd700;}
.master-badge{background:rgba(255,215,0,.12);color:rgba(255,215,0,.8);font-size:.68rem;font-weight:700;padding:3px 10px;border-radius:20px;border:1px solid rgba(255,215,0,.2);}

/* Praxen list */
.master-praxen-list{padding:8px 0;}
.master-praxis-row{display:flex;align-items:center;gap:14px;padding:12px 20px;border-bottom:1px solid rgba(255,215,0,.06);transition:background .15s;}
.master-praxis-row:last-child{border-bottom:none;}
.master-praxis-row:hover{background:rgba(255,215,0,.04);}
.master-praxis-logo{font-size:1.4rem;width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:rgba(255,215,0,.08);border-radius:10px;flex-shrink:0;}
.master-praxis-info{flex:1;min-width:0;}
.master-praxis-name{font-size:.88rem;font-weight:700;color:rgba(255,215,0,.9);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.master-praxis-meta{font-size:.73rem;color:rgba(255,215,0,.4);margin-top:2px;}
.master-praxis-actions{flex-shrink:0;}
.master-praxis-status{font-size:.68rem;font-weight:700;padding:3px 10px;border-radius:20px;}
.master-praxis-status.ok{background:rgba(39,174,96,.15);color:#2ecc71;border:1px solid rgba(39,174,96,.25);}
.master-praxis-status.blocked{background:rgba(231,76,60,.15);color:#e74c3c;border:1px solid rgba(231,76,60,.25);}

/* Activity feed */
.master-activity-feed{padding:8px 0;max-height:260px;overflow-y:auto;}
.master-activity-feed::-webkit-scrollbar{width:4px;}
.master-activity-feed::-webkit-scrollbar-track{background:transparent;}
.master-activity-feed::-webkit-scrollbar-thumb{background:rgba(255,215,0,.2);border-radius:2px;}
.master-feed-row{display:flex;align-items:center;gap:12px;padding:10px 20px;border-bottom:1px solid rgba(255,215,0,.05);transition:background .15s;}
.master-feed-row:last-child{border-bottom:none;}
.master-feed-row:hover{background:rgba(255,215,0,.04);}
.master-feed-dot{width:6px;height:6px;border-radius:50%;background:#ffd700;opacity:.6;flex-shrink:0;box-shadow:0 0 6px rgba(255,215,0,.4);}
.master-feed-text{flex:1;font-size:.78rem;color:rgba(255,215,0,.7);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.master-feed-time{font-size:.68rem;color:rgba(255,215,0,.3);flex-shrink:0;font-family:monospace;}

/* Responsive */
@media(max-width:640px){
    .master-stats-grid{grid-template-columns:1fr 1fr;}
    .master-topbar{padding:16px;}
    .master-crown{font-size:1.8rem;}
}

/* ── ЗАДАЧА 8: Глобальная статистика — дополнительные компоненты ── */
.master-stat-card--accent{background:linear-gradient(135deg,#0e0b05,#0a0800);}
.master-stat-card--accent .master-stat-value{font-size:1.6rem;}
.master-stat-value--sm{font-size:1.6rem!important;}

/* Analytics grid: 3 колонки */
.master-analytics-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;margin-bottom:0;}

/* Ranking rows */
.master-ranking-list{padding:8px 0;}
.master-rank-empty{color:rgba(255,215,0,.35);font-size:.8rem;padding:16px 20px;}
.master-rank-row{display:flex;align-items:center;gap:10px;padding:10px 20px;border-bottom:1px solid rgba(255,215,0,.06);transition:background .15s;}
.master-rank-row:last-child{border-bottom:none;}
.master-rank-row:hover{background:rgba(255,215,0,.04);}
.master-rank-pos{font-size:.85rem;width:24px;text-align:center;flex-shrink:0;}
.master-rank-icon{font-size:1.1rem;width:22px;text-align:center;flex-shrink:0;}
.master-rank-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;}
.master-rank-info{flex:1;min-width:0;}
.master-rank-name{font-size:.78rem;font-weight:600;color:rgba(255,215,0,.85);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px;}
.master-rank-bar-wrap{height:4px;background:rgba(255,215,0,.1);border-radius:2px;overflow:hidden;}
.master-rank-bar{height:100%;background:linear-gradient(90deg,#b8860b,#ffd700);border-radius:2px;transition:width .6s ease;}
.master-rank-val{font-size:.82rem;font-weight:800;color:#ffd700;flex-shrink:0;min-width:28px;text-align:right;}

/* Trend chart */
.master-trend-chart{padding:16px 20px 12px;}
.master-trend-bars{display:flex;align-items:flex-end;gap:10px;height:110px;}
.master-trend-col{display:flex;flex-direction:column;align-items:center;flex:1;gap:4px;height:100%;}
.master-trend-val{font-size:.68rem;font-weight:700;color:rgba(255,215,0,.6);}
.master-trend-bar-wrap{flex:1;width:100%;display:flex;align-items:flex-end;background:rgba(255,215,0,.05);border-radius:6px 6px 0 0;overflow:hidden;}
.master-trend-bar{width:100%;background:rgba(255,215,0,.25);border-radius:6px 6px 0 0;transition:height .6s ease;min-height:4px;}
.master-trend-bar.current{background:linear-gradient(180deg,#ffd700,#b8860b);box-shadow:0 0 16px rgba(255,215,0,.3);}
.master-trend-lbl{font-size:.65rem;color:rgba(255,215,0,.4);white-space:nowrap;}

/* Praxis progress bar */
.master-praxis-progress{height:3px;background:rgba(255,215,0,.1);border-radius:2px;margin-top:5px;overflow:hidden;}
.master-praxis-prog-bar{height:100%;background:linear-gradient(90deg,#b8860b,#ffd700);border-radius:2px;transition:width .5s ease;}

/* Responsive */
@media(max-width:900px){.master-analytics-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:640px){.master-analytics-grid{grid-template-columns:1fr;}}

/* ── ЗАДАЧА 9: Approve / Block / Delete ── */
.master-action-btn{background:rgba(255,215,0,.06);border:1px solid rgba(255,215,0,.15);border-radius:8px;padding:5px 9px;cursor:pointer;font-size:.9rem;transition:background .15s,transform .1s;}
.master-action-btn:hover{background:rgba(255,215,0,.14);transform:scale(1.1);}
.master-confirm-btn{border:none;border-radius:10px;font-size:.85rem;font-weight:700;padding:10px 22px;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .18s;}
.master-confirm-btn.ok{background:linear-gradient(135deg,#27ae60,#2ecc71);color:#fff;}
.master-confirm-btn.danger{background:linear-gradient(135deg,#e67e22,#f39c12);color:#fff;}
.master-confirm-btn.destroy{background:linear-gradient(135deg,#c0392b,#e74c3c);color:#fff;}
.master-confirm-btn:hover{filter:brightness(1.12);transform:translateY(-1px);}

/* ── ЗАДАЧА 10: Impersonation Banner ── */
#impersonation-banner{position:fixed;top:0;left:var(--sidebar-w);right:0;z-index:500;transform:translateY(-100%);transition:transform .3s cubic-bezier(.4,0,.2,1);background:linear-gradient(90deg,#1a0f00,#2a1a00);border-bottom:2px solid rgba(255,215,0,.4);box-shadow:0 4px 30px rgba(255,215,0,.1);}
#impersonation-banner.visible{transform:translateY(0);}
.imp-banner-inner{display:flex;align-items:center;justify-content:space-between;padding:10px 24px;gap:12px;flex-wrap:wrap;}
.imp-banner-left{display:flex;align-items:center;gap:12px;}
.imp-crown{font-size:1.4rem;filter:drop-shadow(0 0 8px rgba(255,215,0,.6));animation:crownPulse 3s ease-in-out infinite;}
.imp-title{font-size:.85rem;font-weight:700;color:#ffd700;line-height:1.2;}
.imp-subtitle{font-size:.72rem;color:rgba(255,215,0,.55);margin-top:1px;}
.imp-banner-right{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.imp-praxis-pill{background:rgba(255,215,0,.12);border:1px solid rgba(255,215,0,.25);border-radius:20px;padding:4px 14px;font-size:.78rem;font-weight:700;color:rgba(255,215,0,.9);}
.imp-back-btn{background:rgba(255,215,0,.1);border:1px solid rgba(255,215,0,.3);border-radius:10px;padding:6px 16px;font-size:.8rem;font-weight:700;color:#ffd700;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .18s;white-space:nowrap;}
.imp-back-btn:hover{background:rgba(255,215,0,.2);box-shadow:0 0 16px rgba(255,215,0,.15);}
.main-content.has-imp-banner{padding-top:52px;}
.master-action-login{border-color:rgba(167,139,250,.3)!important;}
.master-action-login:hover{background:rgba(167,139,250,.15)!important;}
@media(max-width:640px){
    #impersonation-banner{left:0;}
    .imp-banner-inner{padding:8px 14px;}
    .imp-subtitle{display:none;}
}

/* ── ЗАДАЧА 11: Виджеты аналитики Master Dashboard ── */

/* Виджет 1: Города */
.master-cities-chart{padding:10px 0;}
.master-cities-list{display:flex;flex-direction:column;gap:0;}
.master-city-row{display:flex;align-items:center;gap:10px;padding:9px 20px;border-bottom:1px solid rgba(255,215,0,.06);transition:background .15s;}
.master-city-row:last-child{border-bottom:none;}
.master-city-row:hover{background:rgba(255,215,0,.04);}
.master-city-name{font-size:.78rem;font-weight:600;color:rgba(255,215,0,.8);width:90px;flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.master-city-bar-wrap{flex:1;height:6px;background:rgba(255,215,0,.08);border-radius:3px;overflow:hidden;}
.master-city-bar{height:100%;border-radius:3px;transition:width .6s ease;}
.master-city-val{font-size:.75rem;font-weight:800;color:rgba(255,215,0,.7);width:28px;text-align:right;flex-shrink:0;}

/* Виджет 2: Звёзды врачей */
.master-doc-stars{display:inline-flex;gap:1px;font-size:.78rem;}

/* Виджет 3: Пиковые часы */
.master-peak-chart{padding:14px 16px 10px;}
.master-peak-label{font-size:.75rem;color:rgba(255,215,0,.55);margin-bottom:10px;text-align:center;}
.master-peak-grid{display:flex;align-items:flex-end;gap:3px;height:110px;}
.master-peak-col{display:flex;flex-direction:column;align-items:center;flex:1;gap:3px;height:100%;}
.master-peak-cnt{font-size:.58rem;color:rgba(255,215,0,.5);font-weight:700;height:14px;line-height:14px;}
.master-peak-bar-wrap{flex:1;width:100%;display:flex;align-items:flex-end;}
.master-peak-bar{width:100%;border-radius:3px 3px 0 0;min-height:4px;transition:height .5s ease;}
.master-peak-bar.peak{border-radius:4px 4px 0 0;}
.master-peak-hour{font-size:.6rem;color:rgba(255,215,0,.35);white-space:nowrap;}

/* ── ЗАДАЧА 12: Live Feed ── */
.live-feed-pulse{display:inline-block;width:8px;height:8px;border-radius:50%;background:#ffd700;box-shadow:0 0 8px rgba(255,215,0,.8);animation:sessionBlink 1.5s ease-in-out infinite;flex-shrink:0;}
.feed-filter-select{background:#0f0d14;border:1px solid rgba(255,215,0,.2);border-radius:8px;color:rgba(255,215,0,.8);font-size:.72rem;padding:4px 8px;font-family:'DM Sans',sans-serif;cursor:pointer;outline:none;}
.feed-filter-select:focus{border-color:rgba(255,215,0,.5);}
.feed-filter-select option{background:#1a1400;}
.feed-refresh-btn{background:rgba(255,215,0,.08);border:1px solid rgba(255,215,0,.2);border-radius:8px;color:rgba(255,215,0,.7);font-size:1rem;width:28px;height:28px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s;}
.feed-refresh-btn:hover{background:rgba(255,215,0,.18);}
.live-badge{transition:background .3s;}
.live-feed{max-height:320px;overflow-y:auto;}
.live-feed::-webkit-scrollbar{width:4px;}
.live-feed::-webkit-scrollbar-thumb{background:rgba(255,215,0,.2);border-radius:2px;}
.live-feed-row{display:flex;align-items:flex-start;gap:10px;padding:10px 20px;border-bottom:1px solid rgba(255,215,0,.06);transition:background .2s;}
.live-feed-row:last-child{border-bottom:none;}
.live-feed-row:hover{background:rgba(255,215,0,.04);}
.live-feed-row.feed-new{animation:feedSlideIn .4s ease;}
.live-feed-row.feed-danger{border-left:2px solid rgba(231,76,60,.5);}
.live-feed-row.feed-success{border-left:2px solid rgba(46,204,113,.4);}
.live-feed-row.feed-gold{border-left:2px solid rgba(255,215,0,.5);}
.live-feed-row.feed-warn{border-left:2px solid rgba(243,156,18,.4);}
.feed-icon{font-size:1rem;width:22px;text-align:center;flex-shrink:0;margin-top:1px;}
.feed-content{flex:1;min-width:0;}
.feed-msg{font-size:.78rem;color:rgba(255,215,0,.8);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.feed-praxis{font-size:.67rem;color:rgba(255,215,0,.35);margin-top:2px;}
.feed-time-wrap{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0;}
.feed-time{font-size:.67rem;color:rgba(255,215,0,.3);font-family:monospace;}
.feed-new-dot{width:6px;height:6px;border-radius:50%;background:#ffd700;box-shadow:0 0 6px rgba(255,215,0,.8);}
.feed-empty{color:rgba(255,215,0,.35);font-size:.82rem;padding:16px 20px;}
@keyframes feedSlideIn{from{opacity:0;transform:translateX(-8px);}to{opacity:1;transform:translateX(0);}}

/* ── ЗАДАЧА 13: LANR / BSNR ── */
.lanr-help{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;background:var(--primary-light);color:var(--primary);font-size:.65rem;font-weight:700;cursor:help;margin-left:4px;vertical-align:middle;}
.lanr-status{font-size:.72rem;margin-top:4px;min-height:16px;transition:all .2s;}
.lanr-status.ok{color:var(--success);}
.lanr-status.error{color:var(--danger);}
.lanr-status.pending{color:var(--warning);}
.lanr-badge{display:inline-block;font-size:.65rem;font-weight:700;padding:1px 7px;border-radius:8px;background:var(--primary-light);color:var(--primary);margin-left:6px;font-family:monospace;letter-spacing:.04em;vertical-align:middle;}
.lanr-badge.warn{background:var(--warning-light);color:var(--warning);}
/* Master: BSNR в dark theme */
.master-section .lanr-badge{background:rgba(255,215,0,.1);color:rgba(255,215,0,.8);border:1px solid rgba(255,215,0,.2);}
.master-section .lanr-badge.warn{background:rgba(231,76,60,.1);color:#ff6b6b;border-color:rgba(231,76,60,.25);}

/* ── ЗАДАЧА 14: Pending Verification Overlay ── */
#pending-overlay{background:linear-gradient(135deg,#f8f5ff,#ede8f9);}
body.dark-mode #pending-overlay{background:linear-gradient(135deg,#12101a,#1a1528);}
.pending-card{background:var(--card);border-radius:var(--r);padding:40px 36px;max-width:560px;width:100%;box-shadow:0 20px 80px rgba(44,27,105,.15);text-align:center;}
.pending-icon{font-size:3rem;margin-bottom:12px;animation:pendingSpin 3s ease-in-out infinite;}
@keyframes pendingSpin{0%,100%{transform:rotate(0deg);}25%{transform:rotate(-15deg);}75%{transform:rotate(15deg);}}
.pending-title{font-family:'Fraunces',serif;font-size:1.6rem;font-weight:900;color:var(--text);margin:0 0 10px;}
.pending-desc{font-size:.88rem;color:var(--text-muted);line-height:1.7;margin-bottom:24px;}
.pending-info-grid{background:var(--bg);border-radius:var(--r-sm);padding:4px 0;margin-bottom:24px;text-align:left;}
.pending-info-row{display:flex;align-items:center;gap:14px;padding:12px 16px;border-bottom:1px solid var(--border);}
.pending-info-row:last-child{border-bottom:none;}
.pending-info-icon{font-size:1.2rem;width:28px;text-align:center;flex-shrink:0;}
.pending-info-label{font-size:.72rem;color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.05em;}
.pending-info-value{font-size:.88rem;font-weight:700;color:var(--text);font-family:monospace;margin-top:2px;}
.pending-timeline{display:flex;align-items:center;gap:0;margin-bottom:20px;}
.pending-step{display:flex;flex-direction:column;align-items:center;flex:1;gap:6px;}
.pending-step:not(:last-child)::after{content:'';display:block;width:100%;height:2px;background:var(--border);position:absolute;top:14px;left:50%;}
.pending-step-dot{width:28px;height:28px;border-radius:50%;background:var(--border);color:var(--text-muted);font-size:.78rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .3s;}
.pending-step.done .pending-step-dot{background:var(--success);color:#fff;}
.pending-step.active .pending-step-dot{background:var(--primary);color:#fff;box-shadow:0 0 0 4px var(--primary-light);animation:pendingPulse 2s ease-in-out infinite;}
@keyframes pendingPulse{0%,100%{box-shadow:0 0 0 4px var(--primary-light);}50%{box-shadow:0 0 0 8px rgba(26,18,37,.15);}}
.pending-step-label{font-size:.68rem;color:var(--text-muted);text-align:center;line-height:1.3;}
.pending-step.done .pending-step-label{color:var(--success);font-weight:600;}
.pending-step.active .pending-step-label{color:var(--primary);font-weight:700;}
.pending-note{font-size:.78rem;color:var(--text-muted);background:var(--primary-light);border-radius:var(--r-sm);padding:12px 16px;line-height:1.6;margin-bottom:16px;}
/* Master: pending row */
.master-praxis-status.pending{background:rgba(243,156,18,.12);color:#f39c12;border:1px solid rgba(243,156,18,.25);}
.master-praxis-row.row-pending{border-left:3px solid rgba(243,156,18,.4);}
.master-action-verify{border-radius:8px!important;font-weight:700;}

/* ── ЗАДАЧА 15: Approbation Upload ── */
.appro-drop-zone{border:2px dashed var(--border);border-radius:var(--r-sm);padding:24px 16px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;background:var(--bg);position:relative;overflow:hidden;}
.appro-drop-zone:hover,.appro-drop-zone.drag-over{border-color:var(--primary);background:var(--primary-light);}
.appro-drop-zone.drag-over{border-style:solid;}
.appro-drop-icon{font-size:2rem;margin-bottom:8px;}
.appro-drop-text{font-size:.88rem;font-weight:600;color:var(--text);margin-bottom:4px;}
.appro-drop-sub{font-size:.74rem;color:var(--text-muted);}
.appro-preview-img{width:100%;max-height:180px;object-fit:contain;border-radius:8px;border:1px solid var(--border);display:block;margin-bottom:8px;}
.appro-preview-pdf{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px;}
.appro-preview-icon{font-size:2.5rem;}
.appro-preview-name{font-size:.82rem;font-weight:700;color:var(--primary);}
.appro-preview-size{font-size:.72rem;color:var(--text-muted);}

/* ── ЗАДАЧА 16: Suspicious Detector ── */
.suspicious-card{border:2px solid var(--danger)!important;background:linear-gradient(135deg,rgba(231,76,60,.06),rgba(231,76,60,.02))!important;animation:suspiciousPulse 2.5s ease-in-out infinite;}
@keyframes suspiciousPulse{0%,100%{box-shadow:0 0 0 0 rgba(231,76,60,.3);}50%{box-shadow:0 0 0 5px rgba(231,76,60,.0);}}
.suspicious-badge{display:inline-block;background:var(--danger);color:#fff;font-size:.6rem;font-weight:800;padding:1px 6px;border-radius:6px;margin-left:5px;text-transform:uppercase;letter-spacing:.04em;vertical-align:middle;}
.suspicious-panel{background:linear-gradient(135deg,rgba(231,76,60,.06),rgba(231,76,60,.02));border:2px solid rgba(231,76,60,.3);border-radius:var(--r);margin-bottom:16px;overflow:hidden;}
.suspicious-panel-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:rgba(231,76,60,.08);border-bottom:1px solid rgba(231,76,60,.2);font-weight:700;font-size:.88rem;color:var(--danger);}
.suspicious-count{background:var(--danger);color:#fff;font-size:.68rem;padding:1px 7px;border-radius:10px;margin-left:6px;}
.suspicious-row{display:flex;align-items:flex-start;gap:12px;padding:11px 16px;border-bottom:1px solid rgba(231,76,60,.1);transition:background .15s;}
.suspicious-row:last-child{border-bottom:none;}
.suspicious-row:hover{background:rgba(231,76,60,.04);}
.suspicious-icon{font-size:1.3rem;flex-shrink:0;margin-top:1px;}
.suspicious-info{flex:1;min-width:0;}
.suspicious-name{font-size:.85rem;font-weight:700;color:var(--text);}
.suspicious-reason{font-size:.75rem;color:var(--danger);margin-top:2px;}
.suspicious-meta{font-size:.72rem;color:var(--text-muted);margin-top:3px;}
.suspicious-actions{display:flex;gap:5px;align-items:center;flex-shrink:0;}

/* ── ЗАДАЧА 17: Global Blacklist Master ── */
.danger-badge{background:rgba(231,76,60,.15)!important;color:#ff6b6b!important;border:1px solid rgba(231,76,60,.3)!important;}
.master-bl-add-form{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid rgba(255,215,0,.1);flex-wrap:wrap;}
.master-bl-fields{display:flex;gap:8px;flex:1;flex-wrap:wrap;min-width:0;}
.master-bl-input{background:rgba(255,215,0,.05);border:1px solid rgba(255,215,0,.2);border-radius:8px;padding:7px 12px;font-size:.78rem;color:rgba(255,215,0,.9);font-family:'DM Sans',sans-serif;outline:none;transition:border-color .15s;min-width:120px;flex:1;}
.master-bl-input::placeholder{color:rgba(255,215,0,.3);}
.master-bl-input:focus{border-color:rgba(255,215,0,.5);}
.master-bl-btn{background:rgba(231,76,60,.15);border:1px solid rgba(231,76,60,.35);border-radius:9px;color:#ff6b6b;font-size:.82rem;font-weight:700;padding:7px 16px;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .15s;white-space:nowrap;flex-shrink:0;}
.master-bl-btn:hover{background:rgba(231,76,60,.28);box-shadow:0 0 14px rgba(231,76,60,.2);}
.master-blacklist-list{padding:4px 0;max-height:320px;overflow-y:auto;}
.master-blacklist-list::-webkit-scrollbar{width:4px;}
.master-blacklist-list::-webkit-scrollbar-thumb{background:rgba(255,215,0,.2);border-radius:2px;}
.master-bl-row{display:flex;align-items:center;gap:12px;padding:11px 20px;border-bottom:1px solid rgba(255,215,0,.06);transition:background .15s;}
.master-bl-row:last-child{border-bottom:none;}
.master-bl-row:hover{background:rgba(255,215,0,.03);}
.master-bl-icon{font-size:1.1rem;flex-shrink:0;}
.master-bl-info{flex:1;min-width:0;}
.master-bl-email{font-size:.82rem;font-weight:700;color:rgba(255,215,0,.85);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.master-bl-meta{font-size:.7rem;color:rgba(255,215,0,.4);margin-top:2px;}
.master-bl-reason{font-size:.7rem;color:rgba(231,76,60,.6);margin-top:2px;font-style:italic;}

/* ── ЗАДАЧА 18: Patient Monitor ── */
.pm-filters{display:flex;gap:8px;padding:12px 16px;border-bottom:1px solid rgba(255,215,0,.1);flex-wrap:wrap;}
.pm-list{max-height:480px;overflow-y:auto;}
.pm-list::-webkit-scrollbar{width:4px;}
.pm-list::-webkit-scrollbar-thumb{background:rgba(255,215,0,.2);border-radius:2px;}
.pm-row{display:flex;align-items:center;gap:12px;padding:11px 16px;border-bottom:1px solid rgba(255,215,0,.06);transition:background .15s;}
.pm-row:last-child{border-bottom:none;}
.pm-row:hover{background:rgba(255,215,0,.04);}
.pm-row.pm-blocked{opacity:.6;}
.pm-avatar{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:.95rem;font-weight:800;color:#fff;flex-shrink:0;}
.pm-info{flex:1;min-width:0;}
.pm-name{font-size:.82rem;font-weight:700;color:rgba(255,215,0,.9);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pm-email{font-size:.7rem;color:rgba(255,215,0,.45);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pm-praxis{font-size:.65rem;color:rgba(255,215,0,.3);margin-top:2px;}
.pm-stats{display:flex;gap:12px;flex-shrink:0;}
.pm-stat{text-align:center;}
.pm-stat-val{font-size:.82rem;font-weight:800;color:rgba(255,215,0,.8);line-height:1;}
.pm-stat-lbl{font-size:.6rem;color:rgba(255,215,0,.35);text-transform:uppercase;letter-spacing:.04em;margin-top:2px;}
.pm-actions{flex-shrink:0;min-width:60px;}
@media(max-width:640px){.pm-stats{display:none;}.pm-filters{flex-direction:column;}}

/* ── ЗАДАЧА 19: Slot Limit & Queue ── */
.queue-card{border:2px solid var(--warning)!important;background:linear-gradient(135deg,rgba(243,156,18,.07),rgba(243,156,18,.02))!important;}
.queue-badge{display:inline-block;background:var(--warning);color:#fff;font-size:.6rem;font-weight:800;padding:1px 6px;border-radius:6px;margin-left:5px;vertical-align:middle;}

/* ── ЗАДАЧА 23: Email Outbox Panel ── */
.email-outbox-row{display:flex;align-items:flex-start;gap:10px;padding:9px 12px;border-bottom:1px solid var(--border);transition:background .15s;}
.email-outbox-row:last-child{border-bottom:none;}
.email-outbox-row:hover{background:var(--bg);}
.email-outbox-row.row-fail{border-left:3px solid var(--danger);}
.email-outbox-row.row-ok{border-left:3px solid var(--success);}
.outbox-status-icon{font-size:1rem;flex-shrink:0;margin-top:2px;}
.outbox-info{flex:1;min-width:0;}
.outbox-name{font-size:.82rem;font-weight:700;color:var(--text);}
.outbox-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:3px;}
.outbox-meta span{font-size:.68rem;color:var(--text-muted);}
.outbox-err{color:var(--danger)!important;font-style:italic;}
.outbox-type{background:var(--bg);padding:1px 6px;border-radius:4px;border:1px solid var(--border);}
.outbox-time{font-size:.68rem;color:var(--text-muted);flex-shrink:0;white-space:nowrap;}

/* ── ЗАДАЧА 25: PVS Export ── */
.pvs-preview{display:flex;flex-direction:column;gap:6px;}
.pvs-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid var(--border);}
.pvs-row:last-of-type{border-bottom:none;}
.pvs-label{font-size:.75rem;color:var(--text-muted);}
.pvs-val{font-size:.82rem;font-weight:700;color:var(--text);}
.pvs-csv-box{margin-top:10px;padding:10px 12px;background:var(--bg);border-radius:var(--r-sm);border:1px solid var(--border);}
.pvs-csv-box code{font-size:.72rem;font-family:monospace;color:var(--primary);word-break:break-all;user-select:all;}
.pvs-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--r-sm);font-size:.78rem;font-weight:600;cursor:pointer;border:none;transition:background .15s;}

/* ── ЗАДАЧА 26: Backup History ── */
.backup-hist-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--border);}
.backup-hist-row:last-child{border-bottom:none;}
.backup-hist-icon{font-size:1rem;flex-shrink:0;}
.backup-hist-date{font-size:.78rem;font-weight:600;color:var(--text);}
.backup-hist-stats{font-size:.7rem;color:var(--text-muted);margin-left:auto;}

/* ── ЗАДАЧА 28: Region badge ── */
.region-badge{display:inline-block;font-size:.62rem;font-weight:700;padding:1px 7px;border-radius:6px;background:rgba(26,18,37,.15);color:var(--primary);border:1px solid rgba(26,18,37,.2);text-transform:uppercase;letter-spacing:.04em;}

/* ── ЗАДАЧА 35: Phone validation status ── */
.phone-status { font-size:.72rem; min-height:16px; margin-top:2px; transition:color .2s; }
.phone-status.ok   { color: var(--success, #27ae60); font-weight:600; }
.phone-status.warn { color: var(--warning, #f39c12); font-weight:600; }
.phone-status.error{ color: var(--danger,  #e74c3c); font-weight:600; }

/* ── ЗАДАЧА 35: LANR warn state ── */
.lanr-status.warn { color: var(--warning, #f39c12); font-size:.72rem; }

/* ── ЗАДАЧА 40: 4-Tab Patient Layout ── */
.pt-header { background:var(--card); border-radius:var(--r); box-shadow:0 2px 12px rgba(44,27,105,.08); margin-bottom:16px; overflow:hidden; }
.pt-user-row { display:flex; align-items:center; gap:12px; padding:14px 16px 10px; }
.pt-user-name { font-weight:700; font-size:1rem; color:var(--text); }
.pt-user-role { font-size:.75rem; color:var(--text-muted); }
.pt-logout-btn { margin-left:auto; background:var(--bg); border:1px solid var(--border); border-radius:8px; padding:5px 12px; font-size:.78rem; cursor:pointer; color:var(--text-muted); }
.pt-tabs { display:flex; border-top:1px solid var(--border); }
.pt-tab { flex:1; display:flex; flex-direction:column; align-items:center; gap:3px; padding:10px 4px 8px; border:none; background:transparent; cursor:pointer; font-size:.72rem; color:var(--text-muted); position:relative; transition:color .15s,background .15s; border-bottom:2px solid transparent; }
.pt-tab.active { color:var(--primary); border-bottom-color:var(--primary); background:rgba(26,18,37,.06); }
.pt-tab-icon { font-size:1.1rem; }
.pt-tab-label { font-weight:500; }
.pt-tab-badge { position:absolute; top:6px; right:calc(50% - 18px); background:var(--danger); color:#fff; border-radius:10px; font-size:.58rem; font-weight:700; padding:1px 5px; min-width:16px; text-align:center; }
.pt-tab-content { display:none; }
.pt-tab-content.active { display:block; }

/* ── Карточки практик v2 (врачи внутри) ── */
.praxis-card-v2 { background:var(--card); border-radius:var(--r); border:1px solid var(--border); margin-bottom:10px; overflow:hidden; transition:box-shadow .15s; }
.praxis-card-v2:hover { box-shadow:0 4px 16px rgba(44,27,105,.12); }
.praxis-card-v2.selected { border-color:var(--primary); }
.praxis-card-v2.closed-today { opacity:.7; }
.pcv2-header { display:flex; align-items:flex-start; gap:12px; padding:14px 14px 10px; cursor:pointer; }
.pcv2-logo { font-size:1.6rem; flex-shrink:0; }
.pcv2-info { flex:1; min-width:0; }
.pcv2-name { font-weight:700; font-size:.92rem; color:var(--text); }
.pcv2-addr { font-size:.74rem; color:var(--text-muted); margin-top:2px; }
.pcv2-right { display:flex; flex-direction:column; align-items:flex-end; gap:4px; flex-shrink:0; }
.pcv2-specs { display:flex; flex-wrap:wrap; gap:4px; justify-content:flex-end; margin-top:4px; }
.px-spec-tag { background:var(--primary-light); color:var(--primary); border-radius:12px; padding:2px 8px; font-size:.68rem; font-weight:600; }
.px-badge  { font-size:.72rem; font-weight:700; padding:4px 10px; border-radius:12px; white-space:nowrap; border:1px solid transparent; }
.px-open   { background:#edf7f0; color:#1a7a3f; border-color:#a9dfbf; }
.px-closed { background:#fdecea; color:#c0392b; border-color:#f1948a; }
.px-labor  { background:#fef9e7; color:#9a7d0a; border-color:#f0c080; }
.px-delay  { background:#fef3e2; color:#e67e22; border-color:#f0c080; }

/* Nur-Labor Karte — leicht amber eingefärbt */

@keyframes redPulse {
    0%,100% { box-shadow:0 0 0 0 rgba(192,57,43,.4); }
    50%      { box-shadow:0 0 0 5px rgba(192,57,43,0); }
}

/* Закрытая карточка — затемнена */

.pcv2-doctors { padding:0 14px 12px; border-top:1px solid var(--border); margin-top:4px; }
.pcv2-closed-msg { font-size:.78rem; color:var(--danger); padding:10px 0; }

/* Чипы врачей внутри карточки */
.px-doc-chip { display:flex; align-items:flex-start; gap:8px; padding:8px 10px; margin:4px 0; border-radius:var(--r-sm); border:1px solid var(--border); background:var(--bg); cursor:pointer; transition:background .15s,border-color .15s; }
.px-doc-chip:hover:not(.unavail) { background:var(--primary-light); border-color:var(--primary); }
.px-doc-chip.selected { background:var(--primary-light); border-color:var(--primary); }
.px-doc-chip.unavail { opacity:.5; cursor:default; }
.px-doc-dot { width:9px; height:9px; border-radius:50%; flex-shrink:0; margin-top:4px; }
.px-doc-info { flex:1; min-width:0; }
.px-doc-name { font-size:.82rem; font-weight:600; color:var(--text); }
.px-doc-spec { font-size:.72rem; color:var(--text-muted); font-weight:400; }
.px-doc-bio  { font-size:.72rem; color:var(--text-muted); margin-top:2px; }
.px-doc-dur  { font-size:.68rem; color:var(--text-muted); flex-shrink:0; white-space:nowrap; }
.px-doc-unavail { font-size:.65rem; color:var(--danger); font-weight:700; margin-left:4px; }

/* Шапка бронирования */
.booking-doc-header { min-height:0; }

/* ── Booking Mode Tabs (Arzt / Services) ───────────────────── */
.booking-mode-tab:not(.active):hover { background: var(--primary-light); }

/* Карточки услуг */
.service-card:hover  { border-color: var(--primary); background: var(--primary-light); }
.service-card.selected { border-color: var(--primary); background: var(--primary-light); }
.service-card-icon { font-size: 1.8rem; flex-shrink: 0; }
.service-card-name { font-weight: 700; font-size: .9rem; }
.service-card-meta { font-size: .75rem; color: var(--text-muted); margin-top: 2px; }
.service-tag-mfa   { color: #27ae60; font-weight: 600; }
.service-tag-doc   { color: var(--primary); font-weight: 600; }

/* ════════════════════════════════════════════════════════════════
   RUHE & ORDNUNG — Hero Design System (Этап 1)
   Цвета: #08060F (Obsidian) · #967BB6 (Lavender) · Fraunces/DM Sans
════════════════════════════════════════════════════════════════ */

/* ── Обновлённый Header ──────────────────────────────────────── */

/* ── Hero Section ────────────────────────────────────────────── */
/* Фоновый паттерн — тонкая сетка */

/* ── Hero Left ───────────────────────────────────────────────── */
.ro-brand-icon { width: 52px; height: 52px; flex-shrink: 0; }
.ro-brand-name em { color: #967BB6; font-style: italic; }


/* ── CTA Buttons ────────────────────────────────────────────── */
.ro-hero-btns { display: flex; gap: 14px; flex-wrap: wrap; margin-bottom: 40px; }


/* ── Social Proof ───────────────────────────────────────────── */
.ro-proof-item { text-align: center; }

/* ── Hero Right — Glassmorphism Cards ───────────────────────── */
.ro-hero-right { display: flex; flex-direction: column; gap: 16px; }

.ro-glass-icon { font-size: 2.2rem; margin-bottom: 10px; }
.ro-glass-btn:hover { background: rgba(150,123,182,.35); color: #fff; }
.ro-glass-btn-praxis:hover { background: rgba(39,174,96,.3); color: #fff; }
.ro-register-link:hover { color: rgba(255,255,255,.7); }

/* ── Features Section ───────────────────────────────────────── */
body.dark-mode .ro-features-section { background: #0e0b1a; }

body.dark-mode .ro-feat-card { background: #1c1728; }
.ro-feat-card:hover { box-shadow: 0 8px 28px rgba(26,18,37,.14); transform: translateY(-3px); }
.ro-feat-icon { font-size: 2rem; margin-bottom: 12px; }

/* ── Responsive ─────────────────────────────────────────────── */
@media (max-width: 768px) {
    .ro-hero { min-height: auto; padding: 44px 20px; }
    .ro-hero-inner { grid-template-columns: 1fr; gap: 36px; }
    .ro-hero-title { font-size: 1.9rem; }
    .ro-hero-proof { gap: 14px; padding: 14px 16px; }
    .ro-feat-grid { grid-template-columns: 1fr; }
    .ro-trust-grid { grid-template-columns: 1fr; gap: 16px; }
    .ro-trust-section { padding: 48px 20px; }
    .ro-hero-btns { flex-direction: column; }
    .ro-btn-primary, .ro-btn-ghost { width: 100%; text-align: center; }
}
@media (max-width: 480px) {
    .ro-hero-title { font-size: 1.6rem; }
    .ro-hero-proof { flex-wrap: wrap; justify-content: center; }
    .ro-proof-div { display: none; }
}

/* ════════════════════════════════════════════════════════════════
   RUHE & ORDNUNG — Этап 2: UI Kit
   Glassmorphism карточки · Glow-статусы · Слоты · Табы
════════════════════════════════════════════════════════════════ */

/* ── Glassmorphism Карточки практик ─────────────────────────── */
.praxis-card-v2.closed-today {
    opacity: .72;
    border-left: 3px solid #c0392b;
    filter: grayscale(8%);
}
.praxis-card-v2.labor-today {
    border-left: 3px solid #d4a017;
}

/* Dark mode glassmorphism */
/* Пункт 4: контраст текста в тёмном режиме */
body.dark-mode .praxis-card-v2 .px-name,
body.dark-mode .praxis-card-v2 h3,
body.dark-mode .praxis-card-v2 h4,
body.dark-mode .praxis-card-v2 strong { color: #f0ebff; }
body.dark-mode .praxis-card-v2 .px-spec,
body.dark-mode .praxis-card-v2 .px-city,
body.dark-mode .praxis-card-v2 .px-addr,
body.dark-mode .praxis-card-v2 .px-phone { color: #c8bfdf; }
body.dark-mode .praxis-card-v2 .px-spec-tag { background: rgba(26,18,37,.3); color: #d4bbff; }

/* ── Glow-статусы практики (Betriebsmodus) ──────────────────── */

/* 🟢 Normal */
@keyframes glowGreen {
    0%,100% { box-shadow: 0 0 6px rgba(39,174,96,.2), 0 0 16px rgba(39,174,96,.06); }
    50%      { box-shadow: 0 0 10px rgba(39,174,96,.35), 0 0 24px rgba(39,174,96,.12); }
}

/* 🟡 Nur Labor */
@keyframes glowAmber {
    0%,100% { box-shadow: 0 0 6px rgba(212,160,23,.2), 0 0 16px rgba(212,160,23,.06); }
    50%      { box-shadow: 0 0 10px rgba(212,160,23,.4), 0 0 24px rgba(212,160,23,.14); }
}

/* 🔴 Geschlossen */

/* Dark mode glow */
body.dark-mode .px-open  { background: rgba(39,174,96,.15);  color: #5edc8a; }
body.dark-mode .px-labor { background: rgba(212,160,23,.15); color: #f0c050; }
body.dark-mode .px-closed{ background: rgba(192,57,43,.15);  color: #ff8a80; }

/* ── Betriebsmodus Switcher (Admin) — обновлённый стиль ─────── */
.betrieb-btn:hover { background: rgba(26,18,37,.08); }
.betrieb-open.active   .betrieb-dot { background: #27ae60; animation: dotPulseGreen 2.5s ease-in-out infinite; }
.betrieb-labor.active  .betrieb-dot { background: #d4a017; animation: dotPulseAmber 2s ease-in-out infinite; }
.betrieb-closed.active .betrieb-dot { background: #c0392b; animation: dotPulseRed 2s ease-in-out infinite; }
.betrieb-btn:not(.active) .betrieb-dot { background: rgba(0,0,0,.2); }
body.dark-mode .betrieb-btn:not(.active) .betrieb-dot { background: rgba(255,255,255,.2); }

/* ── Слоты времени — чистые плитки ──────────────────────────── */
/* Занятые слоты — плавное затухание opacity 0.4 */
body.dark-mode .slot.sel { background: #1A1225; color: #fff; border-color: #3D2B56; }
body.dark-mode .slot.taken { background: #161220; color: #333; opacity: .4; }

/* ── Booking Mode Tabs — анимированный слайдер ──────────────── */
.booking-mode-tab {
    flex: 1;
    padding: 10px 14px;
    border-radius: 10px;
    border: none;
    font-size: .85rem;
    font-weight: 700;
    cursor: pointer;
    font-family: 'DM Sans', sans-serif;
    background: transparent;
    color: var(--text-muted);
    transition: all .2s cubic-bezier(.4,0,.2,1);
    position: relative;
    z-index: 1;
}
.booking-mode-tab.active {
    background: var(--primary);
    color: #fff;
    box-shadow: 0 3px 12px rgba(26,18,37,.3);
    transform: translateY(0);
}
/* Заблокированный таб */

/* ── Карточки услуг — Glassmorphism ───────────────────────────── */
.service-card {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 16px;
    border-radius: 16px;
    border: 1.5px solid rgba(26,18,37,.14);
    background: rgba(255,255,255,.6);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    cursor: pointer;
    transition: all .2s cubic-bezier(.4,0,.2,1);
    margin-bottom: 8px;
    box-shadow: 0 2px 12px rgba(26,18,37,.06), inset 0 1px 0 rgba(255,255,255,.7);
}

/* ── Doctor chips — glassmorphism ───────────────────────────── */

/* ── Обновлённые карточки прaxисов (.card) — лёгкий glass ───── */

/* ── Input focus — лавандовое свечение ──────────────────────── */

/* ── Search field с иконкой лупы ────────────────────────────── */

/* ════════════════════════════════════════════════════════════════
   RUHE & ORDNUNG — Этап 3: UX-вкладки, модалы, форма бронирования
════════════════════════════════════════════════════════════════ */

/* ── Пациентские вкладки — анимированный слайдер ────────────── */


/* Анимированный слайдер под активным табом */
/* Убираем старую border-bottom логику */
.pt-tab.active { color: var(--primary); }
.pt-tab.active::after { width: 60%; }
.pt-tab.active { background: rgba(26,18,37,.05); }
.pt-tab:hover:not(.active) { color: var(--primary); background: rgba(26,18,37,.03); }

/* Контент вкладок — анимированное появление */
@keyframes tabSlideIn {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ── Модальные окна — scale + opacity анимация ───────────────── */

/* Универсальный оверлей */
@keyframes roOverlayIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}

/* Контейнер модала */
@keyframes roModalIn {
    from { opacity: 0; transform: scale(.9) translateY(12px); }
    to   { opacity: 1; transform: scale(1) translateY(0); }
}
@keyframes roModalOut {
    from { opacity: 1; transform: scale(1) translateY(0); }
    to   { opacity: 0; transform: scale(.93) translateY(8px); }
}

/* ── Booking Confirm Modal — редизайн ────────────────────────── */

/* Иконка подтверждения */
@keyframes checkmarkPop {
    from { transform: scale(0); opacity: 0; }
    to   { transform: scale(1); opacity: 1; }
}
body.dark-mode .bc-title { color: #e8e0f5; }

/* Карточка деталей */
@keyframes cardSlideUp {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}
.bc-row:last-child { border-bottom: none; }
.bc-label { color: #999; }
.bc-val { font-weight: 700; color: #2d1b69; }
body.dark-mode .bc-val { color: #c4b0f0; }


/* ── Booking Form — glassmorphism, анимация появления ─────────── */
@keyframes bookFormIn {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Заголовок формы бронирования */

/* ── Service Booking Form — анимация ──────────────────────────── */

/* ── Дата-пикер — стиль ───────────────────────────────────────── */
input[type="date"]:focus::-webkit-calendar-picker-indicator { opacity: 1; }

/* ── Логотип бренда ──────────────────────────────────────────── */
@keyframes logoFadeIn {
    from { opacity: 0; transform: scale(.92) translateY(-8px); }
    to   { opacity: 1; transform: scale(1)   translateY(0); }
}

/* Header logo — оригинальные цвета (светлый фон) */
.ro-header .ro-logo:hover img { transform: scale(1.04); }

/* Dark mode header logo */


/* ── Текстовый бренд в Hero (без изображения) ─────────────────── */

/* ── Header текстовый логотип ──────────────────────────────────── */
.ro-logo {
    font-family: 'Fraunces', serif;
    font-weight: 900; font-size: 1.3rem;
    color: var(--text); cursor: pointer;
    text-decoration: none; letter-spacing: -.02em;
    display: flex; align-items: center;
}
.ro-header { transition: box-shadow .2s; }

/* ════════════════════════════════════════════════════════════════
   THEME TOGGLE — красивый переключатель светлая/тёмная тема
════════════════════════════════════════════════════════════════ */
.theme-toggle {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--card);
    border: 1.5px solid var(--border);
    border-radius: 100px;
    padding: 5px 12px 5px 8px;
    cursor: pointer;
    transition: all .2s;
    font-size: .8rem;
    font-weight: 600;
    color: var(--text-muted);
    font-family: 'DM Sans', sans-serif;
    box-shadow: var(--shadow);
    white-space: nowrap;
    user-select: none;
}
.theme-toggle:hover {
    border-color: var(--primary);
    color: var(--primary);
    box-shadow: 0 2px 12px rgba(26,18,37,.15);
}
/* Иконка-полукруг */
.theme-toggle-icon {
    width: 26px; height: 26px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 14px;
    background: var(--primary-light);
    transition: all .2s;
    flex-shrink: 0;
}
body.dark-mode .theme-toggle {
    background: rgba(150,123,182,.1);
    border-color: rgba(150,123,182,.25);
    color: rgba(200,170,255,.7);
}
body.dark-mode .theme-toggle:hover {
    border-color: #967BB6;
    color: #c8aaff;
    background: rgba(150,123,182,.18);
}
body.dark-mode .theme-toggle-icon {
    background: rgba(150,123,182,.2);
}

/* Лейбл — меняется в зависимости от темы */
.theme-toggle-label::after { content: 'Hell'; }
body.dark-mode .theme-toggle-label::after { content: 'Dunkel'; }

/* ── Баннеры режима бронирования (Задача 4) ─────────────────── */
.service-labor-banner {
    background: linear-gradient(135deg, rgba(39,174,96,.08), rgba(241,196,15,.1));
    border: 1.5px solid rgba(212,160,23,.35);
    border-radius: 14px;
    padding: 14px 16px;
    margin-bottom: 14px;
    display: flex;
    align-items: flex-start;
    gap: 12px;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    animation: fadeInDown .3s ease;
}
.service-closed-banner {
    background: rgba(192,57,43,.07);
    border: 1.5px solid rgba(192,57,43,.22);
    border-radius: 14px;
    padding: 14px 16px;
    margin-bottom: 14px;
    text-align: center;
    color: #c0392b;
    font-size: .88rem;
    font-weight: 600;
    backdrop-filter: blur(8px);
}
body.dark-mode .service-labor-banner {
    background: rgba(212,160,23,.1);
    border-color: rgba(212,160,23,.3);
}
body.dark-mode .service-closed-banner {
    background: rgba(192,57,43,.12);
    border-color: rgba(192,57,43,.3);
    color: #ff8a80;
}
@keyframes fadeInDown {
    from { opacity: 0; transform: translateY(-8px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ── Unified Appointments: Service-термины в канбане ──────────── */
.kanban-card.service-card-kanban {
    border-left: 3px solid #27ae60;
    background: linear-gradient(135deg, rgba(39,174,96,.04) 0%, transparent 100%);
}
.kanban-card.service-card-kanban .kc-name {
    color: var(--text);
}
body.dark-mode .kanban-card.service-card-kanban {
    border-left-color: #2ecc71;
    background: linear-gradient(135deg, rgba(46,204,113,.07) 0%, transparent 100%);
}

/* Бейдж для типа service в getTypeBadge */
.type-badge.type-service {
    background: rgba(39,174,96,.12);
    color: #1a7a3f;
    border-radius: 6px;
    padding: 2px 8px;
    font-size: .72rem;
    font-weight: 700;
    display: inline-block;
    margin-top: 4px;
}
body.dark-mode .type-badge.type-service {
    background: rgba(46,204,113,.15);
    color: #2ecc71;
}

/* ══════════════════════════════════════════════════════════════
   БАГ 3 FIX: Контрастность Dark Mode — tabs и service-кнопки
   ══════════════════════════════════════════════════════════════ */

/* Обёртка вкладок в тёмной теме */
body.dark-mode .booking-mode-tabs-wrap {
    background: rgba(22,17,40,.7) !important;
    border-color: rgba(150,123,182,.28) !important;
    box-shadow: 0 4px 20px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.05) !important;
}

/* Неактивная вкладка — читаемый светлый текст */
body.dark-mode .booking-mode-tab {
    color: rgba(220,210,255,.75) !important;
    background: transparent !important;
}

/* Активная вкладка — белый текст, яркий фон */
body.dark-mode .booking-mode-tab.active {
    background: linear-gradient(135deg, #3D2B56 0%, #5d4080 100%) !important;
    color: #ffffff !important;
    box-shadow: 0 4px 16px rgba(26,18,37,.45), 0 1px 4px rgba(0,0,0,.3) !important;
}

/* Hover неактивной вкладки */
body.dark-mode .booking-mode-tab:not(.active):hover {
    background: rgba(150,123,182,.18) !important;
    color: #d4bbff !important;
}

/* Заблокированная вкладка */
body.dark-mode .booking-mode-tab:disabled {
    color: rgba(150,123,182,.35) !important;
    background: transparent !important;
    opacity: .45;
}

/* ── Service-карточки (кнопки выбора услуги) в тёмной теме ─── */
body.dark-mode .service-card {
    background: rgba(30,24,50,.75) !important;
    border-color: rgba(150,123,182,.22) !important;
    color: #e8e0ff;
}
body.dark-mode .service-card .service-name,
body.dark-mode .service-card strong,
body.dark-mode .service-card b,
body.dark-mode .service-card span:not(.badge) {
    color: #f0ebff !important;
}
body.dark-mode .service-card .service-desc,
body.dark-mode .service-card small,
body.dark-mode .service-card p {
    color: #c0b4e0 !important;
}
body.dark-mode .service-card:hover {
    background: rgba(26,18,37,.2) !important;
    border-color: rgba(150,123,182,.5) !important;
}
body.dark-mode .service-card.selected {
    background: rgba(26,18,37,.25) !important;
    border-color: #5d4080 !important;
    color: #ffffff;
}

/* ── Тайм-слоты услуг в тёмной теме ──────────────────────────── */
body.dark-mode .svc-slot-btn,
body.dark-mode .slot-btn,
body.dark-mode [class*="slot"] button {
    background: rgba(35,28,58,.8) !important;
    border-color: rgba(150,123,182,.3) !important;
    color: #d4c8f0 !important;
}
body.dark-mode .svc-slot-btn:hover,
body.dark-mode .slot-btn:hover {
    background: rgba(26,18,37,.25) !important;
    border-color: #5d4080 !important;
    color: #ffffff !important;
}
body.dark-mode .svc-slot-btn.selected,
body.dark-mode .slot-btn.active,
body.dark-mode .slot.selected {
    background: linear-gradient(135deg, #3D2B56, #5d4080) !important;
    border-color: #5d4080 !important;
    color: #ffffff !important;
}

/* ── Service-термины в личном кабинете пациента ────────────── */
.appt-row.appt-service {
    border-left: 4px solid #27ae60;
    background: linear-gradient(135deg, rgba(39,174,96,.04) 0%, transparent 100%);
}
body.dark-mode .appt-row.appt-service {
    border-left-color: #2ecc71;
    background: linear-gradient(135deg, rgba(46,204,113,.07) 0%, transparent 100%);
}

/* ══════════════════════════════════════════════════════════════
   LAVENDER EDITION — Премиальные акценты
   ══════════════════════════════════════════════════════════════ */

/* Золотые разделители — section dividers */
.section-divider,
hr.gold {
    border: none;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--gold-divider), transparent);
    margin: 20px 0;
}

/* Золотая обводка для важных карточек */
.card-premium,
.ow-card.featured {
    border: 1.5px solid var(--accent) !important;
    box-shadow: var(--shadow-gold);
    position: relative;
}
.card-premium::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: linear-gradient(90deg, var(--accent-dark), var(--accent), var(--accent-dark));
    border-radius: var(--r) var(--r) 0 0;
}

/* Кнопки бренда — фиолетово-золотой градиент */
.btn-brand {
    background: linear-gradient(135deg, var(--primary), var(--primary-dark));
    color: #fff;
    border: 1.5px solid var(--accent);
    box-shadow: 0 4px 16px rgba(26,18,37,.25), inset 0 1px 0 rgba(212,175,55,.2);
    padding: 12px 28px;
    border-radius: 12px;
    font-weight: 700;
    cursor: pointer;
    transition: all .2s;
}
.btn-brand:hover {
    box-shadow: 0 6px 24px rgba(26,18,37,.4), inset 0 1px 0 rgba(212,175,55,.3);
    transform: translateY(-1px);
}

/* Premium-карточки в светлой теме — теплая тень */
body:not(.dark-mode) .card {
    background: var(--card);
    border: 1px solid var(--border);
    box-shadow: 0 1px 3px rgba(26,18,37,.04), 0 4px 16px rgba(26,18,37,.04);
}
body:not(.dark-mode) .card:hover {
    box-shadow: 0 4px 12px rgba(26,18,37,.08), 0 12px 32px rgba(26,18,37,.06);
}

/* Логотип-текст — премиальный градиент */
.logo-premium {
    background: linear-gradient(135deg, var(--primary), var(--accent));
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    font-family: 'Fraunces', serif;
    font-weight: 900;
}

/* Sidebar nav-item active — золотая полоска слева */
body.admin-page .sidebar-nav-item.active::before {
    background: linear-gradient(180deg, var(--accent), var(--accent-dark)) !important;
    width: 3px !important;
}

/* Premium scrollbar для светлой темы */
body:not(.dark-mode) ::-webkit-scrollbar-thumb {
    background: linear-gradient(180deg, var(--primary), var(--accent));
    border-radius: 3px;
}

/* Hero-секция Lavender Edition — на главной */
.lavender-hero {
    background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
    color: #fff;
    border-radius: var(--r);
    padding: 32px;
    position: relative;
    overflow: hidden;
}
.lavender-hero::before {
    content: '';
    position: absolute;
    top: -50%; right: -10%;
    width: 300px; height: 300px;
    background: radial-gradient(circle, rgba(212,175,55,.18), transparent 70%);
    pointer-events: none;
}
.lavender-hero h1,
.lavender-hero h2 {
    color: #fff;
    font-family: 'Fraunces', serif;
}
.lavender-hero .accent {
    color: var(--accent);
}

/* Финальный полировочный штрих: лёгкая золотая обводка focus */
body:not(.dark-mode) input:focus,
body:not(.dark-mode) select:focus,
body:not(.dark-mode) textarea:focus {
    border-color: var(--accent) !important;
    box-shadow: 0 0 0 3px rgba(212,175,55,.15) !important;
}

/* ═══════════════════════════════════════════════════════════════════
   TASK 7: Patient Autocomplete (Obsidian & Gold)
   ═══════════════════════════════════════════════════════════════════ */
.patient-autocomplete-dropdown {
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    z-index: 50;
    margin-top: 4px;
    background: #ffffff;
    border: 1px solid rgba(26,18,37,0.18);
    border-radius: 10px;
    box-shadow: 0 12px 38px rgba(26, 18, 37, 0.18);
    max-height: 320px;
    overflow-y: auto;
    animation: paFadeIn 0.16s ease-out;
}
body.dark-mode .patient-autocomplete-dropdown {
    background: #1a1225;
    border-color: rgba(212, 175, 55, 0.22);
    box-shadow: 0 12px 38px rgba(0, 0, 0, 0.5);
}
@keyframes paFadeIn {
    from { opacity: 0; transform: translateY(-3px); }
    to   { opacity: 1; transform: translateY(0); }
}

.patient-autocomplete-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 14px;
    cursor: pointer;
    transition: background 0.12s ease;
    border-bottom: 1px solid rgba(26,18,37,0.08);
}
.patient-autocomplete-item:last-child { border-bottom: none; }
.patient-autocomplete-item:hover {
    background: linear-gradient(90deg, rgba(212, 175, 55, 0.08) 0%, rgba(26,18,37,0.05) 100%);
}
body.dark-mode .patient-autocomplete-item:hover {
    background: linear-gradient(90deg, rgba(212, 175, 55, 0.14) 0%, rgba(26,18,37,0.10) 100%);
}

.patient-autocomplete-avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-weight: 700;
    font-size: 0.95rem;
    flex-shrink: 0;
    box-shadow: 0 2px 8px rgba(26, 18, 37, 0.12);
}
.patient-autocomplete-body {
    flex: 1;
    min-width: 0;
}
.patient-autocomplete-name {
    font-size: 0.92rem;
    font-weight: 600;
    color: var(--text);
    margin-bottom: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.patient-autocomplete-sub {
    font-size: 0.76rem;
    color: var(--text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.patient-autocomplete-empty {
    padding: 14px 16px;
    font-size: 0.86rem;
    color: var(--text-muted);
    text-align: center;
    background: linear-gradient(180deg, rgba(245, 158, 11, 0.05), transparent);
    border-radius: 10px;
}

/* Scrollbar im Dropdown — schmal & elegant */
.patient-autocomplete-dropdown::-webkit-scrollbar {
    width: 6px;
}
.patient-autocomplete-dropdown::-webkit-scrollbar-thumb {
    background: rgba(212, 175, 55, 0.4);
    border-radius: 3px;
}
.patient-autocomplete-dropdown::-webkit-scrollbar-track {
    background: transparent;
}

/* ═══════════════════════════════════════════════════════════════════
   TASK 8: Patienten-Tabelle
   ═══════════════════════════════════════════════════════════════════ */
.patients-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.86rem;
}
.patients-table thead th {
    background: var(--bg);
    text-align: left;
    padding: 12px 14px;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text-muted);
    font-weight: 700;
    border-bottom: 1px solid var(--border);
}
.patients-table tbody td {
    padding: 12px 14px;
    border-bottom: 1px solid var(--border);
    vertical-align: middle;
}
.patients-table tbody tr:hover {
    background: rgba(26,18,37,0.04);
}
body.dark-mode .patients-table tbody tr:hover {
    background: rgba(212, 175, 55, 0.06);
}
.patients-table tbody tr:last-child td { border-bottom: none; }

.patient-row-avatar {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    color: #fff;
    font-weight: 700;
    font-size: 0.9rem;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 2px 6px rgba(26, 18, 37, 0.12);
}

.btn-icon {
    background: transparent;
    border: 1px solid transparent;
    padding: 6px 10px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 1rem;
    transition: all 0.15s;
}
.btn-icon:hover {
    background: rgba(212, 175, 55, 0.1);
    border-color: rgba(212, 175, 55, 0.3);
}

/* Stats-Karten Layout (g4 fallback) */
.g4 {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}
@media (max-width: 768px) {
    .g4 { grid-template-columns: repeat(2, 1fr); }
    .patients-table { font-size: 0.78rem; }
    .patients-table thead th,
    .patients-table tbody td { padding: 8px 10px; }
}

/* ═══════════════════════════════════════════════════════════════════
   TASK 10: Trial-Ende-Bildschirm
   ═══════════════════════════════════════════════════════════════════ */
.trial-ended-overlay {
    position: fixed;
    inset: 0;
    z-index: 99999;
    background: linear-gradient(135deg, #1a1225 0%, #2a1b40 50%, #1f1230 100%);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    animation: trialFadeIn 0.4s ease-out;
}
@keyframes trialFadeIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}

/* Dekoratives Punktmuster für Tiefe (wie OG-Image) */
.trial-ended-overlay::before {
    content: '';
    position: fixed;
    inset: 0;
    background-image: radial-gradient(circle at 2px 2px, rgba(212,175,55,0.06) 1px, transparent 0);
    background-size: 40px 40px;
    pointer-events: none;
}

.trial-ended-inner {
    position: relative;
    max-width: 1100px;
    margin: 0 auto;
    padding: 48px 24px 32px;
    z-index: 1;
}

/* Header */
.trial-ended-header {
    text-align: center;
    margin-bottom: 36px;
    animation: trialSlideUp 0.5s ease-out 0.1s both;
}
@keyframes trialSlideUp {
    from { opacity: 0; transform: translateY(20px); }
    to   { opacity: 1; transform: translateY(0); }
}
.trial-ended-eyebrow {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    color: #D4AF37;
    text-transform: uppercase;
    margin-bottom: 14px;
}
.trial-ended-title {
    font-family: 'Fraunces', 'Cormorant Garamond', Georgia, serif;
    font-size: clamp(1.8rem, 4.5vw, 3.2rem);
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 16px;
    letter-spacing: -0.02em;
    line-height: 1.15;
}
.trial-ended-sub {
    color: rgba(255, 255, 255, 0.78);
    font-size: clamp(0.95rem, 1.6vw, 1.1rem);
    max-width: 640px;
    margin: 0 auto 18px;
    line-height: 1.6;
}
.trial-ended-sub strong {
    color: #D4AF37;
    font-weight: 600;
}
.trial-ended-meta {
    font-size: 0.78rem;
    color: rgba(255, 255, 255, 0.5);
    letter-spacing: 0.04em;
    display: inline-flex;
    gap: 10px;
    align-items: center;
    flex-wrap: wrap;
    justify-content: center;
}
.trial-ended-meta strong {
    color: rgba(255, 255, 255, 0.75);
    font-weight: 600;
}

/* Plan Grid */
.trial-plan-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 18px;
    margin-bottom: 36px;
    animation: trialSlideUp 0.6s ease-out 0.2s both;
}

.trial-plan-card {
    position: relative;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(212, 175, 55, 0.18);
    border-radius: 16px;
    padding: 28px 24px;
    display: flex;
    flex-direction: column;
    backdrop-filter: blur(12px);
    transition: transform 0.25s, border-color 0.25s, box-shadow 0.25s;
}
.trial-plan-card:hover {
    transform: translateY(-4px);
    border-color: rgba(212, 175, 55, 0.45);
    box-shadow: 0 20px 50px rgba(212, 175, 55, 0.15);
}

.trial-plan-card-recommended {
    background: linear-gradient(160deg, rgba(212, 175, 55, 0.12) 0%, rgba(26,18,37,0.10) 100%);
    border-color: rgba(212, 175, 55, 0.55);
    box-shadow: 0 12px 40px rgba(212, 175, 55, 0.18);
    transform: translateY(-4px);
}
.trial-plan-card-recommended:hover {
    transform: translateY(-8px);
    box-shadow: 0 24px 60px rgba(212, 175, 55, 0.28);
}

.trial-plan-ribbon {
    position: absolute;
    top: -12px;
    left: 50%;
    transform: translateX(-50%);
    background: linear-gradient(135deg, #E8C766, #D4AF37);
    color: #1a1225;
    padding: 5px 14px;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    box-shadow: 0 4px 12px rgba(212, 175, 55, 0.4);
}

.trial-plan-name {
    font-family: 'Fraunces', serif;
    font-size: 1.6rem;
    font-weight: 900;
    color: #ffffff;
    margin-bottom: 8px;
}
.trial-plan-card-recommended .trial-plan-name {
    color: #D4AF37;
}

.trial-plan-price {
    margin-bottom: 8px;
}
.trial-plan-amount {
    font-family: 'Fraunces', serif;
    font-size: 2.2rem;
    font-weight: 900;
    color: #ffffff;
    letter-spacing: -0.02em;
}
.trial-plan-period {
    color: rgba(255, 255, 255, 0.55);
    font-size: 0.88rem;
    margin-left: 4px;
}

.trial-plan-desc {
    color: rgba(255, 255, 255, 0.6);
    font-size: 0.82rem;
    line-height: 1.5;
    margin-bottom: 18px;
    min-height: 38px;
}

.trial-plan-features {
    list-style: none;
    padding: 0;
    margin: 0 0 22px;
    flex: 1;
}
.trial-plan-features li {
    color: rgba(255, 255, 255, 0.82);
    font-size: 0.84rem;
    padding: 6px 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    display: flex;
    align-items: center;
    gap: 8px;
}
.trial-plan-features li:last-child { border-bottom: none; }
.tp-check {
    color: #D4AF37;
    font-weight: 700;
    flex-shrink: 0;
    font-size: 0.9rem;
}

.trial-plan-btn {
    width: 100%;
    padding: 13px 18px;
    border-radius: 10px;
    border: 1px solid rgba(212, 175, 55, 0.45);
    background: transparent;
    color: #D4AF37;
    font-family: 'DM Sans', sans-serif;
    font-size: 0.92rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
    letter-spacing: 0.02em;
}
.trial-plan-btn:hover {
    background: rgba(212, 175, 55, 0.12);
    border-color: #D4AF37;
}
.trial-plan-btn-primary {
    background: linear-gradient(135deg, #E8C766, #D4AF37);
    color: #1a1225;
    border-color: transparent;
    font-weight: 700;
}
.trial-plan-btn-primary:hover {
    background: linear-gradient(135deg, #F0D078, #E8C766);
    box-shadow: 0 8px 20px rgba(212, 175, 55, 0.35);
    transform: translateY(-1px);
}

/* Footer */
.trial-ended-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 20px;
    padding: 24px 28px;
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 14px;
    margin-bottom: 22px;
    animation: trialSlideUp 0.7s ease-out 0.3s both;
}
.trial-contact-label {
    color: rgba(255, 255, 255, 0.55);
    font-size: 0.82rem;
    margin-bottom: 4px;
}
.trial-contact-email {
    color: #D4AF37;
    font-size: 1.05rem;
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: border-color 0.2s;
}
.trial-contact-email:hover {
    border-bottom-color: #D4AF37;
}
.trial-logout-btn {
    background: transparent;
    border: 1px solid rgba(255, 255, 255, 0.2);
    color: rgba(255, 255, 255, 0.7);
    padding: 9px 18px;
    border-radius: 8px;
    font-size: 0.85rem;
    cursor: pointer;
    transition: all 0.2s;
}
.trial-logout-btn:hover {
    background: rgba(255, 255, 255, 0.06);
    border-color: rgba(255, 255, 255, 0.4);
    color: #fff;
}

/* Trust marker line */
.trial-ended-trust {
    text-align: center;
    color: rgba(212, 175, 55, 0.7);
    font-size: 0.78rem;
    letter-spacing: 0.03em;
    padding: 14px 16px;
    animation: trialSlideUp 0.8s ease-out 0.4s both;
}

/* Mobile responsive */
@media (max-width: 860px) {
    .trial-plan-grid { grid-template-columns: 1fr; gap: 14px; }
    .trial-plan-card-recommended { transform: none; }
    .trial-plan-card-recommended:hover { transform: translateY(-4px); }
    .trial-ended-inner { padding: 32px 18px 20px; }
    .trial-ended-footer { flex-direction: column; text-align: center; padding: 20px; }
}

/* ═══════════════════════════════════════════════════════════════════
   TASK 21: Passwort-Reset-Dialog
   ═══════════════════════════════════════════════════════════════════ */
@keyframes pwResetFadeIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes pwResetSlideIn {
    from { opacity: 0; transform: translateY(-12px) scale(0.97); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* Code-Eingabefeld optisch hervorheben */
#pwr-code {
    font-feature-settings: 'tnum' on;
    transition: border-color 0.18s, box-shadow 0.18s;
}
#pwr-code:focus {
    border-color: var(--accent) !important;
    box-shadow: 0 0 0 4px rgba(212,175,55,0.18) !important;
}

/* Step-Indikator via Pseudo-Element für die ersten 3 Schritte */
#pwreset-overlay .card h3::after {
    content: '';
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--accent);
    margin-left: 8px;
    box-shadow: 0 0 0 4px rgba(212,175,55,0.15);
    animation: pwPulse 1.8s ease-in-out infinite;
}
@keyframes pwPulse {
    0%, 100% { opacity: 0.6; }
    50%      { opacity: 1; }
}
