:root{
  --bg:#f7f8fc;
  --surface:#ffffff;
  --surface-2:#fbfbfe;
  --text:#17152a;
  --muted:#85839a;
  --border:#ecebf4;
  --purple:#6f4ef6;
  --purple-2:#8f78ff;
  --purple-soft:#f0edff;
  --blue:#3191ff;
  --blue-soft:#eef7ff;
  --green:#25b86a;
  --green-soft:#eafaf1;
  --orange:#ff9f2f;
  --orange-soft:#fff6e8;
  --red:#ef4b55;
  --red-soft:#fff0f1;
  --cyan:#31b7c9;
  --shadow:0 10px 35px rgba(37,28,82,.06);
  --radius:15px;
  --sidebar:232px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--text);background:var(--bg);font-size:14px}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit}
.icon{display:inline-block;vertical-align:-3px;flex:0 0 auto}

/* Layout */
.app-shell{min-height:100vh}
.app-sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);background:#fff;border-right:1px solid var(--border);z-index:50;display:flex;flex-direction:column;padding:12px 15px 15px;transition:transform .25s ease}
.app-brand{display:block;height:92px;min-height:92px;padding:0;margin:0 0 14px;border:0;border-radius:22px;background:#fff url("/uploads/sidebar-brand-floral.png") center center/cover no-repeat;box-shadow:none;overflow:hidden}
.app-brand:before,.app-brand:after{content:none!important;display:none!important}
.app-brand img{display:block;width:100%;height:100%;opacity:0;pointer-events:none}
.app-brand-text{font-weight:800;font-size:17px;line-height:1.1}.app-brand-text small{display:block;color:var(--muted);font-size:10px;font-weight:600;margin-top:3px;letter-spacing:.05em}
.app-nav{display:flex;flex-direction:column;gap:3px;overflow-y:auto;padding:4px 0 10px}
.app-nav-link{display:flex;align-items:center;gap:10px;border-radius:11px;padding:7px 9px;color:#6f6d83;font-size:13px;font-weight:600;transition:.18s;position:relative;min-height:44px}
.app-nav-link:hover{background:#f8f7ff;color:var(--purple)}
.app-nav-link.active{background:linear-gradient(90deg,#f2eeff 0%,#f7f5ff 100%);color:var(--purple)}
.app-nav-link.active:before{content:"";position:absolute;left:-15px;top:7px;bottom:7px;width:3px;border-radius:0 4px 4px 0;background:var(--purple)}
.app-nav-icon{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:0 0 34px;border:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.72);transition:transform .18s ease,box-shadow .18s ease}
.app-nav-link:hover .app-nav-icon{transform:translateY(-1px);box-shadow:0 5px 12px rgba(39,31,83,.08),inset 0 1px 0 rgba(255,255,255,.8)}
.app-nav-icon .icon{vertical-align:0;stroke-width:1.9}
.nav-icon-purple{color:#7254f4;background:#f0ecff;border-color:#e6defe}
.nav-icon-violet{color:#8256f6;background:#f3edff;border-color:#e9defe}
.nav-icon-blue{color:#2686ec;background:#eaf4ff;border-color:#ddecff}
.nav-icon-cyan{color:#19a8b5;background:#e9f9fa;border-color:#d9f3f4}
.nav-icon-teal{color:#18aeb0;background:#e9f8f7;border-color:#d9f1f0}
.nav-icon-green{color:#21aa5a;background:#eaf8ef;border-color:#d9f0e2}
.nav-icon-orange{color:#f39a19;background:#fff4e5;border-color:#ffe6c4}
.nav-icon-red{color:#e6505b;background:#fff0f1;border-color:#ffdfe2}
.app-nav-link.active .app-nav-icon{box-shadow:0 4px 12px rgba(111,78,246,.11),inset 0 1px 0 rgba(255,255,255,.9)}
.nav-count{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:20px;background:var(--purple);color:#fff;font-size:10px;display:grid;place-items:center}
.sidebar-spacer{flex:1}
.sidebar-user{border-top:1px solid var(--border);padding-top:13px}
.user-card{display:flex;align-items:center;gap:9px;padding:8px;border-radius:10px}.user-card:hover{background:#faf9ff}
.avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,#ffe0b5,#f6ad54);display:grid;place-items:center;color:#753d00;font-weight:800;font-size:11px;flex:0 0 auto;overflow:hidden}
.user-info{min-width:0;flex:1}.user-name{font-weight:700;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-role{font-size:10px;color:var(--muted);margin-top:2px}
.sidebar-logout{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:8px;padding:9px;border:1px solid var(--border);border-radius:9px;color:#77758b;font-size:12px;font-weight:600}.sidebar-logout:hover{border-color:#ffb5ba;color:var(--red);background:var(--red-soft)}
.app-main{margin-left:var(--sidebar);min-height:100vh}.app-content{max-width:1660px;margin:0 auto;padding:25px 30px 42px}
.mobile-topbar{display:none;position:sticky;top:0;z-index:40;background:rgba(255,255,255,.94);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);height:58px;align-items:center;justify-content:space-between;padding:0 16px}.mobile-topbar img{height:31px;max-width:140px}.icon-button{width:38px;height:38px;border:1px solid var(--border);background:#fff;border-radius:10px;display:grid;place-items:center;color:#59566e;cursor:pointer}
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(25,20,55,.42);z-index:45}

/* Header and controls */
.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:16px}
.page-title h1{font-size:23px;margin:0 0 4px;letter-spacing:-.025em}.page-title p{margin:0;color:var(--muted);font-size:12px}
.page-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;align-items:center}
.control,.btn{height:36px;border-radius:8px;border:1px solid var(--border);background:#fff;color:#47445a;padding:0 11px;display:inline-flex;align-items:center;gap:7px;font-weight:600;font-size:11.5px;line-height:1;cursor:pointer;white-space:nowrap;transition:.15s}.control input,.control select{border:0;outline:0;background:transparent;color:inherit;min-width:0}.control select{padding-right:16px}.control-date input{width:104px}
.btn:hover,.control:hover{border-color:#d8d5e8;box-shadow:0 4px 14px rgba(44,35,91,.06)}
.btn-primary{background:var(--purple)!important;color:#fff!important;border-color:var(--purple)!important}.btn-primary:hover{background:#6242e5!important}.btn-soft{background:var(--purple-soft);color:var(--purple);border-color:transparent}.btn-danger{background:var(--red);color:#fff;border-color:var(--red)}.btn-success{background:var(--green);color:#fff;border-color:var(--green)}.btn-sm{height:31px;padding:0 9px;font-size:10.5px}.btn-icon{width:34px;padding:0;justify-content:center}.readonly-note{display:inline-flex;align-items:center;gap:6px;border-radius:20px;background:#fff7e7;color:#a66500;padding:7px 10px;font-size:11px;font-weight:700}
.flash{padding:11px 14px;border-radius:10px;margin:0 0 14px;font-weight:600}.flash-success{background:var(--green-soft);color:#137846;border:1px solid #ccefdc}.flash-danger{background:var(--red-soft);color:#b62e38;border:1px solid #ffd5d8}.flash-warning{background:var(--orange-soft);color:#a45d00;border:1px solid #ffe1b8}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:16px;overflow-x:auto}.tab{padding:10px 13px;color:#858297;font-size:11px;font-weight:700;white-space:nowrap;border-bottom:2px solid transparent}.tab:hover{color:var(--purple)}.tab.active{color:var(--purple);border-bottom-color:var(--purple)}

/* Cards */
.kpi-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:11px;margin-bottom:13px}
.kpi-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:14px 14px 9px;min-height:115px;box-shadow:0 6px 22px rgba(36,26,82,.025);overflow:hidden;position:relative}.kpi-card.kpi-purple{background:linear-gradient(135deg,#fff 35%,#faf8ff);border-color:#e9e3ff}.kpi-card.kpi-blue{background:linear-gradient(135deg,#fff 35%,#f5faff);border-color:#dfeeff}.kpi-card.kpi-orange{background:linear-gradient(135deg,#fff 35%,#fffaf2);border-color:#ffead0}.kpi-card.kpi-green{background:linear-gradient(135deg,#fff 35%,#f5fff9);border-color:#d9f3e4}.kpi-card.kpi-red{background:linear-gradient(135deg,#fff 35%,#fff7f7);border-color:#ffe0e2}
.kpi-top{display:flex;align-items:flex-start;gap:9px}.kpi-icon{width:33px;height:33px;border-radius:10px;display:grid;place-items:center;flex:0 0 auto}.kpi-purple .kpi-icon{background:var(--purple-soft);color:var(--purple)}.kpi-blue .kpi-icon{background:var(--blue-soft);color:var(--blue)}.kpi-orange .kpi-icon{background:var(--orange-soft);color:var(--orange)}.kpi-green .kpi-icon{background:var(--green-soft);color:var(--green)}.kpi-red .kpi-icon{background:var(--red-soft);color:var(--red)}
.kpi-label{font-size:10.5px;font-weight:700;color:#777489;margin-bottom:3px}.kpi-value{font-size:22px;font-weight:800;line-height:1;letter-spacing:-.03em}.kpi-sub{font-size:9.5px;color:var(--muted);margin-top:4px}.kpi-trend{font-size:9px;font-weight:700;margin-top:3px}.trend-up{color:var(--green)}.trend-down{color:var(--red)}.trend-neutral{color:var(--orange)}
.sparkline{display:block;width:100%;height:28px;margin-top:6px}.tone-purple{color:var(--purple)}.tone-blue{color:var(--blue)}.tone-orange{color:var(--orange)}.tone-green{color:var(--green)}.tone-red{color:var(--red)}
.panel-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px;margin-bottom:12px}.span-3{grid-column:span 3}.span-4{grid-column:span 4}.span-5{grid-column:span 5}.span-6{grid-column:span 6}.span-7{grid-column:span 7}.span-8{grid-column:span 8}.span-9{grid-column:span 9}.span-12{grid-column:span 12}
.panel{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;min-width:0}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.panel-title{font-size:12px;font-weight:800}.panel-subtitle{font-size:9.5px;color:var(--muted);margin-top:2px}.panel-link{color:var(--purple);font-size:9.5px;font-weight:700}.panel-link:hover{text-decoration:underline}.empty-state{text-align:center;padding:28px 10px;color:var(--muted)}

/* charts */
.line-chart{width:100%;height:auto;min-height:150px;overflow:visible}.chart-grid{stroke:#eeedf5;stroke-width:1}.chart-line{fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.chart-dot{stroke:#fff;stroke-width:1.4}.series-1{stroke:var(--purple);fill:var(--purple)}.series-2{stroke:var(--green);fill:var(--green)}.series-3{stroke:var(--orange);fill:var(--orange)}.series-4{stroke:var(--red);fill:var(--red)}
.chart-legend{display:flex;flex-wrap:wrap;gap:12px;font-size:9px;color:var(--muted);margin:0 0 4px}.legend-dot{width:7px;height:7px;border-radius:50%;display:inline-block;margin-right:5px}.legend-purple{background:var(--purple)}.legend-green{background:var(--green)}.legend-orange{background:var(--orange)}.legend-red{background:var(--red)}
.donut-wrap{display:flex;align-items:center;gap:15px}.donut-chart{width:125px;max-width:42%;height:auto;transform:rotate(-90deg)}.donut-bg{fill:none;stroke:#f0eff6;stroke-width:14}.donut-segment{fill:none;stroke-width:14;stroke-linecap:butt}.donut-1{stroke:var(--purple)}.donut-2{stroke:var(--green)}.donut-3{stroke:var(--orange)}.donut-4{stroke:var(--red)}.donut-5{stroke:var(--blue)}.donut-6{stroke:var(--cyan)}.donut-center,.donut-caption{transform:rotate(90deg);transform-origin:60px 60px;fill:var(--text);font-weight:800;font-size:17px}.donut-caption{font-size:8px;fill:var(--muted);font-weight:600}
.legend-list{display:flex;flex-direction:column;gap:7px;flex:1}.legend-item{display:flex;align-items:center;gap:7px;font-size:9.5px}.legend-item span:nth-child(2){flex:1;color:#5f5c70}.legend-item strong{font-size:9.5px}.legend-color{width:8px;height:8px;border-radius:50%}
.bar-list{display:flex;flex-direction:column;gap:10px}.bar-meta{display:flex;justify-content:space-between;gap:10px;font-size:9.5px;margin-bottom:4px}.bar-meta span{color:#615e73;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-meta strong{font-size:9.5px}.bar-track{height:5px;border-radius:5px;background:#f0eff6;overflow:hidden}.bar-fill{display:block;height:100%;border-radius:5px}.bar-1{background:var(--purple)}.bar-2{background:var(--blue)}.bar-3{background:var(--green)}.bar-4{background:var(--orange)}.bar-5{background:var(--red)}

/* Funnel */
.funnel{display:flex;align-items:center;justify-content:space-between;gap:5px;padding:9px 1px 6px;overflow-x:auto}.funnel-step{min-width:95px;flex:1;text-align:center;position:relative}.funnel-step:not(:last-child):after{content:"→";position:absolute;right:-8px;top:25px;color:#bab7ca;font-size:18px}.funnel-icon{width:46px;height:46px;border-radius:50%;margin:0 auto 7px;display:grid;place-items:center;background:#f6f4ff;color:var(--purple);border:5px solid #fbfaff}.funnel-step:nth-child(2) .funnel-icon{color:var(--blue);background:var(--blue-soft)}.funnel-step:nth-child(3) .funnel-icon{color:var(--cyan);background:#ecfbfd}.funnel-step:nth-child(4) .funnel-icon{color:var(--orange);background:var(--orange-soft)}.funnel-step:nth-child(5) .funnel-icon{color:var(--green);background:var(--green-soft)}.funnel-step:nth-child(6) .funnel-icon{color:#219653;background:#eafaf1}.funnel-label{font-size:9.5px;color:#625f73;font-weight:700;min-height:24px}.funnel-value{font-size:17px;font-weight:800;margin-top:2px}.funnel-percent{font-size:8.5px;color:var(--muted);margin-top:2px}.funnel-branch{display:grid;grid-template-columns:1fr 1fr;gap:4px;min-width:160px}.funnel-branch .funnel-step{min-width:72px}.funnel-branch .funnel-step:after{display:none}

/* Lists */
.attention-list,.mini-list{display:flex;flex-direction:column;gap:2px}.attention-item,.mini-person{display:flex;align-items:center;gap:9px;padding:7px 5px;border-bottom:1px solid #f3f2f7}.attention-item:last-child,.mini-person:last-child{border-bottom:0}.attention-icon{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto}.attention-critical{background:var(--red-soft);color:var(--red)}.attention-warning{background:var(--orange-soft);color:var(--orange)}.attention-info{background:var(--blue-soft);color:var(--blue)}.attention-text{font-size:9.5px;line-height:1.25;flex:1}.attention-text strong{display:block;color:#4b485c}.attention-count{font-weight:800;font-size:10px}.mini-avatar{width:29px;height:29px;border-radius:50%;background:linear-gradient(135deg,#ede8ff,#d3c8ff);display:grid;place-items:center;color:#6042cd;font-size:8px;font-weight:800;flex:0 0 auto}.mini-person-info{flex:1;min-width:0}.mini-person-name{font-size:9.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini-person-sub{font-size:8px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini-person-time{font-size:8px;color:#77748a}.danger-text{color:var(--red)}

/* Tables */
.table-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;margin-bottom:12px}.table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 14px;border-bottom:1px solid var(--border)}.table-toolbar-left,.table-toolbar-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.search-box{height:34px;min-width:245px;display:flex;align-items:center;gap:7px;border:1px solid var(--border);border-radius:8px;padding:0 10px;background:#fff;color:#aaa7b8}.search-box input{border:0;outline:0;width:100%;font-size:11px;color:var(--text)}.data-table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;min-width:850px}.data-table th{background:#fbfbfd;color:#918ea2;font-size:8.5px;text-transform:none;letter-spacing:.01em;text-align:left;font-weight:700;padding:9px 10px;border-bottom:1px solid var(--border);white-space:nowrap}.data-table td{font-size:9.5px;padding:9px 10px;border-bottom:1px solid #f3f2f7;vertical-align:middle;color:#555266}.data-table tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:#fcfbff}.person-cell{display:flex;align-items:center;gap:8px;min-width:170px}.person-cell .mini-avatar{width:31px;height:31px}.person-name{font-size:9.5px;font-weight:700;color:#343143}.person-contact{font-size:8px;color:var(--muted);margin-top:2px}.table-actions{display:flex;gap:4px}.action-btn{width:27px;height:27px;border:1px solid var(--border);background:#fff;border-radius:7px;display:grid;place-items:center;color:#77748b;cursor:pointer}.action-btn:hover{border-color:#d8d3fa;color:var(--purple);background:#faf9ff}.action-btn-danger{border-color:#ffd1d5;background:var(--red-soft);color:var(--red)}.action-btn-danger:hover{border-color:var(--red);background:var(--red);color:#fff}.badge{display:inline-flex;align-items:center;border-radius:20px;padding:4px 7px;font-size:8px;font-weight:700;white-space:nowrap}.badge-purple{background:var(--purple-soft);color:var(--purple)}.badge-blue{background:var(--blue-soft);color:#237ed4}.badge-green{background:var(--green-soft);color:#16864d}.badge-orange{background:var(--orange-soft);color:#ad650d}.badge-red{background:var(--red-soft);color:#d33943}.badge-gray{background:#f1f1f5;color:#77758a}.pagination{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;border-top:1px solid var(--border);font-size:9px;color:var(--muted)}.page-links{display:flex;gap:4px}.page-link{width:27px;height:27px;border:1px solid var(--border);border-radius:7px;display:grid;place-items:center;color:#656277}.page-link.active{background:var(--purple);border-color:var(--purple);color:#fff}.page-link:hover{border-color:#cfc9fb;color:var(--purple)}

/* Forms / dialogs */
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-group{display:flex;flex-direction:column;gap:5px}.form-group.full{grid-column:1/-1}.form-label{font-size:10px;font-weight:700;color:#5c596c}.form-control,.form-select,.form-textarea{width:100%;border:1px solid #dfddea;border-radius:9px;background:#fff;padding:9px 10px;outline:none;color:var(--text);font-size:11px}.form-control,.form-select{height:38px}.form-textarea{min-height:85px;resize:vertical}.form-control:focus,.form-select:focus,.form-textarea:focus{border-color:#a899ff;box-shadow:0 0 0 3px rgba(111,78,246,.11)}
dialog.modal{position:fixed;inset:0;margin:auto;display:none!important;height:auto!important;border:0;border-radius:17px;padding:0;width:min(660px,calc(100vw - 28px));max-width:calc(100vw - 28px);max-height:90vh;background:#fff;color:var(--text);box-shadow:0 30px 90px rgba(29,22,63,.25);overflow:hidden;z-index:1100}dialog.modal[open]{display:block!important}dialog.modal::backdrop{background:rgba(30,24,60,.48);backdrop-filter:blur(2px)}body.dialog-open{overflow:hidden!important}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--border)}.modal-head h2{font-size:16px;margin:0}.modal-body{padding:18px;overflow:auto;max-height:70vh}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:13px 18px;border-top:1px solid var(--border);background:#fbfbfd}.close-modal{border:0;background:transparent;color:#8b889a;cursor:pointer;width:32px;height:32px;border-radius:8px}.close-modal:hover{background:#f3f2f7;color:var(--red)}
.dropdown{position:relative}.dropdown-menu{display:none;position:absolute;right:0;top:calc(100% + 5px);min-width:180px;background:#fff;border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;padding:6px;z-index:30}.dropdown.open .dropdown-menu{display:block}.dropdown-item{display:flex;width:100%;align-items:center;gap:8px;border:0;background:transparent;padding:8px 9px;border-radius:7px;font-size:10px;color:#575468;text-align:left;cursor:pointer}.dropdown-item:hover{background:#f7f5ff;color:var(--purple)}.dropdown-item.danger:hover{background:var(--red-soft);color:var(--red)}

/* Detail and special blocks */
.profile-head{display:flex;align-items:center;gap:15px}.profile-avatar{width:64px;height:64px;border-radius:17px;background:linear-gradient(135deg,#e9e3ff,#bdafff);display:grid;place-items:center;color:#573bc4;font-size:19px;font-weight:900}.profile-main h2{margin:0 0 5px;font-size:20px}.profile-meta{display:flex;flex-wrap:wrap;gap:8px;color:var(--muted);font-size:10px}.info-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.info-tile{background:#fafafe;border:1px solid var(--border);border-radius:10px;padding:10px}.info-tile small{display:block;color:var(--muted);font-size:8.5px;margin-bottom:4px}.info-tile strong{font-size:10.5px}.timeline{position:relative;padding-left:20px}.timeline:before{content:"";position:absolute;left:6px;top:6px;bottom:6px;width:1px;background:#e5e2f3}.timeline-item{position:relative;padding:0 0 15px 11px}.timeline-item:before{content:"";position:absolute;left:-18px;top:4px;width:9px;height:9px;border-radius:50%;background:var(--purple);border:2px solid #fff;box-shadow:0 0 0 2px #ded8ff}.timeline-title{font-size:10.5px;font-weight:700}.timeline-meta{font-size:8.5px;color:var(--muted);margin-top:2px}.timeline-text{font-size:9.5px;color:#676477;margin-top:4px}
.heat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.heat-cell{border-radius:9px;padding:10px;background:#f4f1ff;min-height:58px}.heat-cell.level-2{background:#e6deff}.heat-cell.level-3{background:#cdbfff}.heat-cell.level-4{background:#987df8;color:#fff}.heat-name{font-size:9px;font-weight:700}.heat-value{font-size:16px;font-weight:800;margin-top:6px}
.notice-strip{display:flex;align-items:center;gap:8px;border:1px solid #d9efe2;background:#f1fcf6;color:#278650;border-radius:10px;padding:9px 12px;font-size:9.5px;font-weight:600}

/* Auth pages and legacy compatibility */
.auth-main{min-height:calc(100vh - 60px);display:grid;place-items:center;padding:28px;background:radial-gradient(circle at 20% 0,#eee9ff 0,transparent 32%),radial-gradient(circle at 100% 100%,#fff1dc 0,transparent 33%),#f8f8fc}.auth-main>.container,.auth-main>.row{width:min(520px,100%)}
.auth-brand{position:absolute;top:24px;left:28px}.auth-brand img{height:42px}.auth-footer{text-align:center;color:var(--muted);font-size:11px;padding:14px;background:#f8f8fc}
.legacy-container{max-width:1480px;margin:0 auto}

@media(max-width:1200px){.kpi-grid{grid-template-columns:repeat(3,1fr)}.kpi-card:nth-child(4),.kpi-card:nth-child(5){grid-column:span 1}.span-3{grid-column:span 4}.span-4{grid-column:span 6}.span-5,.span-7{grid-column:span 6}.span-8,.span-9{grid-column:span 12}.info-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.app-sidebar{transform:translateX(-100%)}.app-sidebar.open{transform:translateX(0)}.sidebar-overlay.open{display:block}.app-main{margin-left:0}.mobile-topbar{display:flex}.app-content{padding:18px 16px 35px}.page-header{flex-direction:column}.page-actions{justify-content:flex-start;width:100%}.kpi-grid{grid-template-columns:repeat(2,1fr)}.panel-grid{grid-template-columns:1fr}.span-3,.span-4,.span-5,.span-6,.span-7,.span-8,.span-9,.span-12{grid-column:1}.funnel{justify-content:flex-start}.funnel-step{min-width:105px}.table-toolbar{align-items:flex-start;flex-direction:column}.search-box{min-width:100%;width:100%}.table-toolbar-left,.table-toolbar-right{width:100%}.heat-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.app-content{padding:14px 10px 28px}.page-title h1{font-size:20px}.page-actions{display:grid;grid-template-columns:1fr 1fr}.page-actions .control,.page-actions .btn{width:100%;justify-content:center}.page-actions .btn-primary{grid-column:1/-1}.kpi-grid{grid-template-columns:1fr}.panel{padding:12px}.form-grid{grid-template-columns:1fr}.form-group.full{grid-column:1}.info-grid{grid-template-columns:1fr}.donut-wrap{flex-direction:column}.donut-chart{max-width:60%}.profile-head{align-items:flex-start}.heat-grid{grid-template-columns:1fr}.pagination{align-items:flex-start;flex-direction:column}.auth-main{padding:20px 12px}}

/* Пошук у довгих списках посад і магазинів */
.search-select-source{display:none!important}.search-select-autocomplete{position:relative;width:100%}.select-search-input{height:38px;padding-left:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%23918ea2' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:10px center;background-size:15px}.select-search-input::placeholder{color:#aaa7b8}.select-search-results{position:absolute;z-index:40;top:calc(100% + 4px);left:0;right:0;max-height:220px;overflow-y:auto;padding:5px;border:1px solid #dfddea;border-radius:10px;background:#fff;box-shadow:0 14px 30px rgba(15,23,42,.16)}.select-search-results[hidden]{display:none}.select-search-option{display:block;width:100%;border:0;border-radius:7px;background:transparent;padding:9px 10px;text-align:left;color:var(--text);font:inherit;cursor:pointer}.select-search-option:hover,.select-search-option.active{background:#f1efff;color:#5138c9}.select-search-empty{padding:9px 10px;color:var(--muted);font-size:11px}.candidate-status-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.candidate-status-option{display:flex;align-items:center;gap:8px;min-height:38px;padding:8px 10px;border:1px solid #dfddea;border-radius:9px;background:#fff;color:#5c596c;font-size:11px;font-weight:700;cursor:pointer}.candidate-status-option:hover{border-color:#a899ff;background:#fbfaff}.candidate-status-option input[type=checkbox]{width:16px;height:16px;flex:0 0 auto;accent-color:var(--primary)}@media(max-width:560px){.candidate-status-options{grid-template-columns:1fr}}

/* Стажування: шість KPI-карток в один ряд на широкому екрані. */
.interns-kpi-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:9px}
.interns-kpi-grid .kpi-card{padding:14px 13px;min-width:0}
.interns-kpi-grid .kpi-label{font-size:12px;line-height:1.2}
.interns-kpi-grid .kpi-value{font-size:24px}
.interns-kpi-grid .kpi-sub{font-size:11px}
.interns-kpi-grid .kpi-icon{width:34px;height:34px;flex:0 0 34px}
@media(max-width:1400px){.interns-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.interns-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.interns-kpi-grid{grid-template-columns:1fr}}


/* Daily results */
.daily-results-actions{gap:7px}
.daily-results-period{display:flex;align-items:center;gap:5px;height:36px;border:1px solid var(--border);border-radius:8px;background:#fff;padding:0 9px;color:#5b586b}
.daily-results-period .icon{color:#8a879a}
.daily-results-period input{width:104px;border:0;outline:0;background:transparent;color:#47445a;font-size:11px;font-weight:600}
.daily-results-period-separator{color:#aaa7b8;font-size:10px}
.daily-results-filter-select{min-width:138px;max-width:225px}
.daily-results-kpis .kpi-card{min-height:126px}
.daily-results-kpis .kpi-top{align-items:flex-start}
.daily-results-kpis .kpi-label{font-size:11px;color:#625f71}
.daily-results-kpis .kpi-value{font-size:25px;margin-top:1px}
.daily-results-kpis .kpi-sub{font-size:9px;min-height:13px}
.daily-results-kpis .sparkline{height:31px;margin-top:5px}
.daily-results-table .data-table{min-width:900px}
.daily-results-table .data-table th{background:#f6f4ff;color:#57536d;font-size:9px;padding:10px 11px}
.daily-results-table .data-table td{font-size:10px;padding:10px 11px}
.daily-results-table .metric-cell{text-align:center;font-weight:700;color:#444052}
.daily-results-table .conversion-cell{text-align:center}
.daily-results-table .daily-location{display:flex;align-items:flex-start;gap:8px;min-width:300px;color:#4d4a5d}
.daily-results-table .daily-location .icon{color:var(--purple);margin-top:1px}
.daily-results-table .daily-location-name{font-weight:700;font-size:10px}
.daily-results-table .daily-location-address{color:var(--muted);font-size:8.5px;margin-top:2px}
.daily-results-total-row td{background:#f2efff!important;color:#5d43d9!important;font-weight:800!important;border-top:1px solid #e3ddff}
.daily-results-total-row td:first-child{color:#4c398f!important}
.daily-results-empty{padding:34px 16px;text-align:center;color:var(--muted);font-size:11px}
.daily-results-info{display:flex;align-items:flex-start;gap:8px;margin:0 0 12px;padding:9px 11px;border:1px solid #e5e1ff;border-radius:10px;background:#faf9ff;color:#716d81;font-size:9.5px}
.daily-results-info .icon{color:var(--purple);margin-top:1px}
.daily-results-pagination-left{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.daily-results-per-page{height:29px;border:1px solid var(--border);border-radius:7px;background:#fff;padding:0 7px;color:#666277;font-size:9px;outline:0}
@media(max-width:900px){.daily-results-actions{width:100%}.daily-results-period{width:100%;justify-content:flex-start}.daily-results-filter-select{min-width:0;max-width:none;flex:1}.daily-results-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.daily-results-actions{display:grid;grid-template-columns:1fr}.daily-results-period,.daily-results-actions .control,.daily-results-actions .btn{width:100%}.daily-results-period input{width:calc(50% - 24px)}.daily-results-kpis{grid-template-columns:1fr}.daily-results-pagination-left{align-items:flex-start;flex-direction:column}}

/* BULOCHKA location icons hotfix 2026-08-18 v8
   Магазини використовують акварельну PNG-іконку з stores.php.
   Склад зберігає окрему контурну іконку будівлі. */
.store-location-visual {
  display: none !important;
}

.store-name-head {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  min-width: 0 !important;
}

/* На сторінці магазинів не малюємо стару CSS/SVG-іконку. */
body:not(:has(input[placeholder="Пошук складу або адреси"])) .store-name-head::before {
  content: none !important;
  display: none !important;
}

body:not(:has(input[placeholder="Пошук складу або адреси"])) .store-bakery-badge {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 36px !important;
  height: 36px !important;
  flex: 0 0 36px !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}

body:not(:has(input[placeholder="Пошук складу або адреси"])) .store-bakery-badge img {
  display: block !important;
  width: 36px !important;
  height: 36px !important;
  object-fit: contain !important;
}

/* Склад: окрема тонка контурна іконка будівлі. */
body:has(input[placeholder="Пошук складу або адреси"]) .store-name-head::before {
  content: "";
  display: block;
  width: 30px;
  height: 30px;
  flex: 0 0 30px;
  background-repeat: no-repeat;
  background-position: center;
  background-size: 30px 30px;
  opacity: .92;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cg fill='none' stroke='%239c9792' stroke-width='1.45' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6.5 17.3 20 8.8l13.5 8.5v15.3h-27z'/%3E%3Cpath d='M11.2 32.6V21.8h17.6v10.8M11.2 25.6h17.6M20 21.8v10.8'/%3E%3Cpath d='M8.4 17.2h23.2'/%3E%3Cpath d='M4.5 30.4c2.2-2.1 3.4-4.5 3.6-7.1M31.8 9.8c2.2 1.4 3.7 3.5 4.3 6' stroke='%23c8bca9' stroke-dasharray='2 2.6' opacity='.8'/%3E%3C/g%3E%3Cpath d='M5.8 34.3c8.8 1 18.3 1 28.4 0' fill='none' stroke='%23ddd5c8' stroke-width='1.2' stroke-linecap='round' opacity='.8'/%3E%3C/svg%3E");
}

/* Адреса вирівнюється під назвою з урахуванням фактичної ширини іконки. */
body:not(:has(input[placeholder="Пошук складу або адреси"])) .store-name-cell > .person-contact {
  margin-left: 46px !important;
}
body:has(input[placeholder="Пошук складу або адреси"]) .store-name-cell > .person-contact {
  margin-left: 40px !important;
}

@media (max-width: 720px) {
  body:not(:has(input[placeholder="Пошук складу або адреси"])) .store-bakery-badge,
  body:not(:has(input[placeholder="Пошук складу або адреси"])) .store-bakery-badge img {
    width: 32px !important;
    height: 32px !important;
  }
  body:not(:has(input[placeholder="Пошук складу або адреси"])) .store-bakery-badge {
    flex-basis: 32px !important;
  }
  body:not(:has(input[placeholder="Пошук складу або адреси"])) .store-name-cell > .person-contact {
    margin-left: 42px !important;
  }
  body:has(input[placeholder="Пошук складу або адреси"]) .store-name-head::before {
    width: 27px;
    height: 27px;
    flex-basis: 27px;
    background-size: 27px 27px;
  }
  body:has(input[placeholder="Пошук складу або адреси"]) .store-name-cell > .person-contact {
    margin-left: 37px !important;
  }
}

/* Scanning analytics */
.scan-page-header{margin-bottom:12px}.scan-filter-panel{margin-bottom:12px}.scan-presets{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:11px}.scan-filter-grid{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));gap:9px;align-items:end}.scan-field{display:flex;flex-direction:column;gap:5px;margin:0}.scan-field>span{font-size:9px;font-weight:800;color:#777489}.scan-field .form-control,.scan-field .form-select{height:35px;border:1px solid var(--border);border-radius:8px;font-size:10.5px;color:#4f4b61;box-shadow:none}.scan-field .form-control:focus,.scan-field .form-select:focus{border-color:#cfc7ff;box-shadow:0 0 0 3px rgba(108,76,242,.07)}.scan-filter-submit{display:flex;gap:6px;align-items:center}.scan-kpi-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.scan-kpi-grid .kpi-card{min-height:112px}.scan-kpi-grid .kpi-label{font-size:10px}.scan-kpi-time{font-size:20px}.scan-alert{border:1px solid var(--border);border-radius:10px;padding:10px 12px;margin-bottom:12px;font-size:10.5px;line-height:1.55;background:#fff}.scan-alert-success{border-color:#cfeedd;background:#f5fff9;color:#227149}.scan-alert-warning{border-color:#ffe0b9;background:#fff9ef;color:#8c5a13}.scan-alert-danger{border-color:#ffd4d8;background:#fff7f7;color:#a6323c}.scan-hint{display:flex;align-items:center;gap:7px;border:1px dashed #dcd8ee;border-radius:10px;background:#fff;padding:10px 12px;margin-bottom:12px;color:#777489;font-size:10.5px}.scan-timeline-panel{margin-bottom:12px}.scan-timeline-scroll{overflow-x:auto;padding-bottom:4px}.scan-timeline{display:grid;grid-template-columns:minmax(190px,240px) minmax(720px,1fr);min-width:940px;row-gap:7px;align-items:center}.scan-timeline-axis-label{height:26px}.scan-timeline-axis{height:26px;position:relative;border-bottom:1px solid #eceaf3}.scan-timeline-axis span{position:absolute;bottom:5px;transform:translateX(-50%);font-size:8.5px;color:#8f8ca0;font-weight:700}.scan-timeline-label{display:flex;flex-direction:column;gap:2px;padding-right:10px;min-width:0}.scan-timeline-label strong{font-size:9.5px;color:#403d4e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scan-timeline-label span{font-size:8px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scan-timeline-track{height:37px;position:relative;border-radius:7px;background:repeating-linear-gradient(to right,#faf9fd 0,#faf9fd calc(12.5% - 1px),#eeeaf7 calc(12.5% - 1px),#eeeaf7 12.5%);overflow:hidden}.scan-timeline-bar{position:absolute;top:6px;height:25px;border-radius:6px;display:flex;align-items:center;padding:0 7px;overflow:hidden;box-shadow:0 2px 7px rgba(50,42,85,.08)}.scan-timeline-bar span{font-size:8px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scan-time-confirmed{background:#ede8ff;color:#583bd2;border:1px solid #d7cdff}.scan-time-calculated{background:#fff1d9;color:#936010;border:1px solid #ffdfaa}.scan-time-incomplete{background:#fff0f1;color:#bf3d49;border:1px dashed #f2b9be}.scan-legend{display:flex;gap:15px;flex-wrap:wrap;margin-top:10px;font-size:8.5px;color:var(--muted)}.scan-legend span{display:flex;align-items:center;gap:5px}.scan-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.scan-dot.confirmed{background:#8d72f5}.scan-dot.calculated{background:#e8ad45}.scan-dot.incomplete{background:#e76873}.scan-detail-table{min-width:650px}.scan-summary-table{min-width:420px}.scan-manager-table{min-width:520px}.scan-muted{font-size:8px;color:var(--muted);margin-top:2px}.scan-incomplete-row td{background:#fffafa}.scan-total-row td{font-weight:800;background:#fbfaff}.scan-dynamics-wrap{overflow-x:auto}.scan-dynamics{height:220px;display:flex;align-items:flex-end;gap:6px;padding:20px 6px 0;border-bottom:1px solid #eceaf3;min-width:520px}.scan-dynamics-col{height:100%;min-width:28px;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px}.scan-dynamics-stores{font-size:8px;font-weight:800;color:#6e57cc;min-height:12px}.scan-dynamics-bar{height:160px;width:min(28px,70%);display:flex;align-items:flex-end;background:#faf9fd;border-radius:6px 6px 0 0;overflow:hidden}.scan-dynamics-bar i{display:block;width:100%;background:linear-gradient(180deg,#8063ef,#aa97f7);border-radius:6px 6px 0 0;min-height:3px}.scan-dynamics-col>span{font-size:7.5px;color:#858194;white-space:nowrap}.scan-note{font-size:8.5px;color:var(--muted);margin:10px 0 0}.scan-import-panel{margin-bottom:12px}.scan-upload-form{display:flex;gap:10px;align-items:flex-end}.scan-upload-box{flex:1;min-height:82px;border:1px dashed #cfc8ec;background:#fbfaff;border-radius:10px;padding:12px;display:grid;grid-template-columns:28px 1fr;column-gap:9px;align-items:center;cursor:pointer}.scan-upload-box>span{grid-row:1/3;color:var(--purple)}.scan-upload-box strong{font-size:10.5px}.scan-upload-box small{font-size:8.5px;color:var(--muted);line-height:1.4}.scan-upload-box input{grid-column:2;margin-top:6px;font-size:9px;max-width:100%}.scan-raw-cell{max-width:360px;white-space:normal;word-break:break-word}.scan-admin-grid{margin-top:12px}.scan-details-summary{cursor:pointer;font-size:10px;font-weight:800;color:var(--purple);padding:7px 0}.scan-alias-list{max-height:540px;overflow:auto;border-top:1px solid #f0eef5;margin-top:5px}.scan-alias-row{display:grid;grid-template-columns:minmax(120px,.8fr) minmax(220px,1.8fr) auto;gap:7px;align-items:center;padding:8px 0;border-bottom:1px solid #f3f2f7}.scan-alias-name{display:flex;flex-direction:column;min-width:0}.scan-alias-name strong{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scan-alias-name span{font-size:8px;color:var(--muted)}.scan-alias-row .form-select{height:31px;font-size:9px;border-color:var(--border)}.scan-employee-list{max-height:500px;overflow:auto}.scan-employee-link{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px;border-bottom:1px solid #f2f1f6;color:inherit}.scan-employee-link:hover,.scan-employee-link.active{background:#faf9ff;color:inherit}.scan-employee-link>span{display:flex;flex-direction:column;min-width:0}.scan-employee-link strong{font-size:9.5px}.scan-employee-link small{font-size:8px;color:var(--muted);margin-top:2px}.scan-employee-link .icon{color:#9a94b0}.scan-employee-editor{margin-bottom:12px}.scan-manager-select{max-width:430px;margin-bottom:14px}.scan-assignment-title{font-size:10px;font-weight:800;margin-bottom:8px}.scan-store-checks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.scan-store-group{border:1px solid var(--border);border-radius:9px;padding:9px;min-width:0}.scan-store-group h3{font-size:9.5px;font-weight:800;color:#5e596d;margin:0 0 7px}.scan-store-group label{display:flex;align-items:flex-start;gap:6px;font-size:8.5px;padding:3px 0;color:#666276}.scan-store-group input{margin-top:1px}.scan-editor-actions{display:flex;justify-content:flex-end;margin-top:12px}
@media(max-width:1350px){.scan-filter-grid{grid-template-columns:repeat(4,minmax(140px,1fr))}.scan-kpi-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){.scan-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.scan-filter-submit{grid-column:1/-1}.scan-kpi-grid{grid-template-columns:repeat(2,1fr)}.scan-upload-form{flex-direction:column;align-items:stretch}.scan-store-checks{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.scan-filter-grid{grid-template-columns:1fr}.scan-filter-submit{display:grid;grid-template-columns:1fr 1fr}.scan-filter-submit .btn{width:100%;justify-content:center}.scan-kpi-grid{grid-template-columns:1fr}.scan-timeline{grid-template-columns:150px minmax(650px,1fr);min-width:810px}.scan-alias-row{grid-template-columns:1fr}.scan-alias-row .btn{width:100%;justify-content:center}.scan-store-checks{grid-template-columns:1fr}.scan-upload-box{grid-template-columns:24px 1fr}.scan-dynamics{min-width:460px}}

/* Scanning admin tabs + destructive cleanup */
.scan-admin-tabs{display:flex;gap:7px;flex-wrap:wrap;margin:-2px 0 12px}.scan-admin-tabs a{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px;border:1px solid var(--border);border-radius:8px;background:#fff;color:#625d73;font-size:9px;font-weight:800}.scan-admin-tabs a:hover{background:#faf9ff;color:var(--purple);border-color:#d8d1f7}.scan-admin-tabs .scan-admin-tab-danger{color:#b33b46;border-color:#f1c7cb;background:#fff9f9}.scan-admin-tabs .scan-admin-tab-danger:hover{color:#9c2631;border-color:#e9aeb4;background:#fff3f4}.scan-btn-danger-soft{display:inline-flex;align-items:center;gap:6px;color:#b33b46!important;border:1px solid #f1c7cb!important;background:#fff9f9!important}.scan-btn-danger-soft:hover{background:#fff1f2!important;border-color:#e9aeb4!important}.scan-cleanup-panel{margin-top:12px;border-color:#eadfe1;background:#fff}.scan-cleanup-title{display:flex;align-items:center;gap:6px;color:#9f3540}.scan-cleanup-counts{display:flex;gap:7px;flex-wrap:wrap;margin:-2px 0 14px}.scan-cleanup-counts span{display:inline-flex;align-items:center;gap:4px;border:1px solid #eeeaf3;background:#fff;border-radius:999px;padding:5px 8px;font-size:8.5px;color:#777489}.scan-cleanup-counts strong{color:#4f4b61;font-size:9px}.scan-cleanup-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;align-items:stretch}.scan-cleanup-card{border:1px solid var(--border);border-radius:11px;padding:14px;background:#fff;min-width:0}.scan-cleanup-card-partial{border-color:#ddd7f4;background:#fdfcff}.scan-cleanup-card-full{border-color:#f0c6ca;background:#fffdfd}.scan-cleanup-card-head{display:flex;align-items:flex-start;gap:9px;margin-bottom:11px}.scan-cleanup-card-icon{width:31px;height:31px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 31px;background:#f0ecff;color:#6e57cc}.scan-cleanup-card-full .scan-cleanup-card-icon{background:#fff0f1;color:#b13a45}.scan-cleanup-card-head h3{font-size:11px;line-height:1.3;margin:0 0 3px;color:#454153}.scan-cleanup-card-head p{font-size:8.7px;line-height:1.45;color:var(--muted);margin:0}.scan-cleanup-info{border:1px solid #e4def8;background:#f8f6ff;color:#645c83;border-radius:9px;padding:9px 10px;font-size:8.8px;line-height:1.5;margin-bottom:11px}.scan-cleanup-warning{border:1px solid #f1c7cb;background:#fff5f6;color:#7e363d;border-radius:9px;padding:9px 10px;font-size:8.8px;line-height:1.5;margin-bottom:11px}.scan-cleanup-warning strong{color:#9f2934}.scan-cleanup-form{display:flex;flex-direction:column;gap:10px}.scan-cleanup-form .scan-field>span{font-size:9px}.scan-cleanup-form .form-control,.scan-cleanup-form .form-select{height:37px;font-size:10px}.scan-cleanup-check{display:flex;align-items:flex-start;gap:7px;font-size:8.8px;color:#625d73;line-height:1.45;padding:2px 0}.scan-cleanup-check input{margin-top:2px;flex:0 0 auto}.scan-cleanup-actions{display:flex;justify-content:flex-end;margin-top:auto}.scan-btn-danger{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;border:1px solid #bd3a46;border-radius:8px;background:#bd3a46;color:#fff;font-size:9.3px;font-weight:800;padding:0 12px;cursor:pointer}.scan-btn-danger:hover{background:#a92f3a;border-color:#a92f3a;color:#fff}.scan-btn-danger:disabled{opacity:.45;cursor:not-allowed}.scan-btn-danger-partial{background:#765bd8;border-color:#765bd8}.scan-btn-danger-partial:hover{background:#654ac5;border-color:#654ac5}.scan-cleanup-empty{border:1px dashed #ddd8ea;border-radius:8px;padding:9px;color:var(--muted);font-size:8.8px;background:#fff}
@media(max-width:900px){.scan-cleanup-grid{grid-template-columns:1fr}.scan-cleanup-actions{justify-content:stretch}.scan-btn-danger{width:100%}}


/* ========================================================================== */
/* BULOCHKA mobile UX layer 2026-08-28                                        */
/* Desktop stays unchanged. <=720px switches dense HR screens to touch UI.    */
/* ========================================================================== */
.mobile-filter-toggle,.schedule-mobile-filter-toggle,.schedule-mobile-day-tabs{display:none}

@media(max-width:720px){
  html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:76px}
  body{overflow-x:hidden}
  .app-content{padding:14px 10px 30px!important}
  .mobile-topbar{height:60px;padding:0 12px;box-shadow:0 2px 12px rgba(37,28,82,.04)}
  .mobile-topbar .icon-button{width:44px;height:44px;border-radius:12px;position:relative}
  .mobile-topbar .nav-count{position:absolute;right:-4px;top:-4px}
  .app-sidebar{width:min(86vw,340px);padding-bottom:max(15px,env(safe-area-inset-bottom))}

  .page-header{gap:12px;margin-bottom:14px}
  .page-title h1{font-size:21px;line-height:1.2}
  .page-title p{font-size:12.5px;line-height:1.45}
  .page-actions{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;justify-content:stretch!important}
  .page-actions>.control,.page-actions>.btn,.page-actions>a.btn{width:100%!important;min-width:0!important;max-width:none!important;min-height:44px;height:auto!important;justify-content:center}
  .page-actions>.control select,.page-actions>.control input{min-width:0!important;max-width:none!important;width:100%!important}
  .page-actions>.control-date{grid-column:1/-1}

  .control,.btn{min-height:42px;height:auto;padding:9px 12px;font-size:12px;line-height:1.2}
  .btn-sm{min-height:40px;height:auto;padding:8px 11px;font-size:11.5px}
  .btn-icon{width:42px!important;padding:0!important}
  .action-btn{width:44px!important;height:44px!important;min-width:44px!important;border-radius:10px!important}
  .close-modal{width:44px;height:44px}
  .form-control,.form-select{height:44px;font-size:14px}
  .form-textarea{font-size:14px}
  .form-label{font-size:12px}

  .tabs{gap:4px;margin-inline:-10px;padding-inline:10px;scroll-snap-type:x proximity;scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tab{min-height:44px;display:flex;align-items:center;font-size:12px;scroll-snap-align:start}

  /* KPI blocks remain compact on phones: two per row, one only on very narrow screens. */
  .kpi-grid,.candidate-kpi-grid,.interns-kpi-grid,.daily-results-kpis,.scan-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}
  .kpi-card{min-height:104px;padding:12px 11px 9px}
  .kpi-label{font-size:10px}
  .kpi-value{font-size:21px}
  .kpi-sub{font-size:9px}

  /* Toolbars: no horizontal dragging for forms. */
  .table-toolbar{padding:11px!important;gap:9px!important;overflow:visible!important}
  .table-toolbar-left,.table-toolbar-right{width:100%!important;min-width:0!important;margin-left:0!important}
  form.table-toolbar .table-toolbar-left{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px!important}
  form.table-toolbar .table-toolbar-left>.search-box{grid-column:1/-1}
  form.table-toolbar .table-toolbar-left>.form-select,
  form.table-toolbar .table-toolbar-left>.control,
  form.table-toolbar .table-toolbar-left>.btn,
  form.table-toolbar .table-toolbar-left>a.btn{width:100%!important;min-width:0!important;max-width:none!important}
  .search-box{height:44px!important;min-width:0!important;width:100%!important;padding:0 12px}
  .search-box input{font-size:14px}
  .table-toolbar-right{display:flex!important;gap:8px!important;flex-wrap:wrap!important}
  .table-toolbar-right>.btn,.table-toolbar-right>a.btn{flex:1 1 150px;justify-content:center}

  /* Universal mobile card-table renderer. data-label is filled by app.js. */
  .data-table-wrap:has(>.mobile-card-table),
  .schedule-summary-table-wrap:has(>.mobile-card-table){overflow:visible!important;display:block!important;width:100%!important}
  .data-table.mobile-card-table,
  .store-staff-table.mobile-card-table,
  .schedule-summary-table.mobile-card-table{display:block!important;width:100%!important;min-width:0!important;max-width:none!important;table-layout:auto!important;border-collapse:separate!important;border-spacing:0!important;margin:0!important}
  .mobile-card-table>thead{display:none!important}
  .mobile-card-table>tbody{display:grid!important;grid-template-columns:1fr;gap:10px;width:100%;padding:10px!important}
  .mobile-card-table>tbody>tr{display:block!important;width:100%!important;min-width:0!important;border:1px solid var(--border)!important;border-radius:13px!important;background:#fff!important;box-shadow:0 4px 15px rgba(37,28,82,.045);overflow:hidden}
  .mobile-card-table>tbody>tr:hover{background:#fff!important}
  .mobile-card-table>tbody>tr>td{display:grid!important;grid-template-columns:minmax(100px,34%) minmax(0,1fr);align-items:start;gap:10px;width:100%!important;min-width:0!important;max-width:none!important;padding:10px 12px!important;border:0!important;border-bottom:1px solid #f0eef5!important;background:transparent!important;font-size:13px!important;line-height:1.4!important;text-align:left!important;white-space:normal!important;overflow-wrap:anywhere}
  .mobile-card-table>tbody>tr>td:last-child{border-bottom:0!important}
  .mobile-card-table>tbody>tr>td::before{content:attr(data-label);display:block;color:var(--muted);font-size:10.5px;font-weight:800;line-height:1.35;padding-top:1px}
  .mobile-card-table>tbody>tr>td.mobile-card-empty-cell{display:block!important;padding:0!important;border:0!important}
  .mobile-card-table>tbody>tr>td.mobile-card-empty-cell::before{display:none!important;content:none!important}
  .mobile-card-table .person-cell{min-width:0!important;width:100%!important;align-items:flex-start!important}
  .mobile-card-table .person-name{font-size:13.5px!important;line-height:1.35}
  .mobile-card-table .person-contact{font-size:11px!important;line-height:1.4!important;white-space:normal!important}
  .mobile-card-table .badge{font-size:11px!important;padding:6px 9px!important;white-space:normal!important;text-align:center}
  .mobile-card-table .table-actions{width:100%;justify-content:flex-end!important;gap:8px!important;flex-wrap:wrap!important}
  .mobile-card-table td[data-label="Дії"],
  .mobile-card-table td[data-label="Картка"],
  .mobile-card-table td[data-label="Деталі"]{align-items:center}
  .mobile-card-table td[data-label="Дії"]>*:not(.table-actions){justify-self:end}
  .mobile-card-table .bar-track{min-width:100px}

  /* Stores: summary row is a card; expanded staff becomes a full-width block. */
  .stores-summary-table{min-width:0!important}
  .stores-summary-table.mobile-card-table>tbody>tr.store-row{cursor:pointer}
  .stores-summary-table.mobile-card-table>tbody>tr.store-row.is-open{border-color:#d9cffc!important;box-shadow:0 0 0 2px rgba(111,78,246,.06)}
  .stores-summary-table.mobile-card-table>tbody>tr.store-staff-detail{border:0!important;box-shadow:none!important;background:transparent!important;overflow:visible!important;margin-top:-4px}
  .stores-summary-table.mobile-card-table>tbody>tr.store-staff-detail>td{display:block!important;padding:0!important}
  .stores-summary-table.mobile-card-table>tbody>tr.store-staff-detail>td::before{display:none!important;content:none!important}
  .store-staff-box{padding:12px!important;border:1px solid var(--border)!important;border-radius:13px!important;background:#faf9ff!important;overflow:visible!important}
  .store-staff-heading{align-items:flex-start!important;flex-direction:column!important}
  .store-staff-heading h3{font-size:14px!important}
  .store-staff-table{min-width:0!important}
  .store-name-cell>.person-contact{margin-left:0!important}
  .store-name-head{align-items:flex-start!important}

  /* Candidates: search always visible, additional filters open on demand. */
  .candidate-filter-toolbar{display:grid!important;grid-template-columns:1fr!important;overflow:visible!important;padding:11px!important}
  .candidate-filter-toolbar .mobile-filter-toggle{display:flex!important;width:100%;align-items:center;justify-content:space-between;min-height:44px;border:1px solid var(--border);border-radius:10px;background:#faf9ff;color:#5d4bb2;padding:0 12px;font-weight:800;font-size:12px;cursor:pointer;grid-row:1}
  .candidate-filter-toolbar .table-toolbar-left{display:grid!important;grid-template-columns:1fr!important;width:100%!important;min-width:0!important}
  .candidate-filter-toolbar .table-toolbar-left>.search-box{display:flex!important;grid-column:auto!important;min-width:0!important;width:100%!important;flex-basis:auto!important}
  .candidate-filter-toolbar:not(.mobile-filters-open) .table-toolbar-left>:not(.search-box):not(input[type="hidden"]){display:none!important}
  .candidate-filter-toolbar .table-toolbar-left>.form-select,
  .candidate-filter-toolbar .table-toolbar-left>.btn,
  .candidate-filter-toolbar .table-toolbar-left>a.btn{width:100%!important;min-width:0!important;max-width:none!important;flex-basis:auto!important}
  .candidate-filter-toolbar .table-toolbar-right{width:100%!important}
  .candidate-filter-summary{font-size:11px;padding:10px 11px}
  .candidate-filter-summary strong{font-size:12px}
  .candidate-table{min-width:0!important;table-layout:auto!important}
  .candidate-table .candidate-store,.candidate-table .candidate-phone{font-size:13px!important}
  .candidate-table .candidate-event{font-size:11px!important}

  /* Vacancy page: existing desktop 3-column table becomes vertical cards. */
  .vacancy-table{min-width:0!important;table-layout:auto!important}
  .vacancy-table.mobile-card-table>tbody>tr>td{padding:12px!important}
  .vacancy-table.mobile-card-table>tbody>tr>td:nth-child(1),
  .vacancy-table.mobile-card-table>tbody>tr>td:nth-child(2),
  .vacancy-table.mobile-card-table>tbody>tr>td:nth-child(3){width:100%!important}
  .vacancy-store-cell{max-width:none!important;width:100%}
  .vacancy-stat-card{width:100%}

  /* Office/production accordions keep their structure; only employees become cards. */
  .office-department>summary,.production-department>summary{min-height:52px}
  .office-department-body{padding:7px!important}

  /* Full-screen touch-friendly dialogs. */
  dialog.modal,
  dialog.schedule-modal,
  dialog.schedule-summary-modal{inset:0!important;top:0!important;left:0!important;width:100vw!important;max-width:100vw!important;height:100dvh!important;max-height:100dvh!important;margin:0!important;border-radius:0!important;overflow:hidden!important;padding:0!important}
  dialog.modal[open],dialog.schedule-modal[open],dialog.schedule-summary-modal[open]{display:flex!important;flex-direction:column!important}
  .modal-head,.schedule-modal-head{flex:0 0 auto;padding:12px 14px!important;min-height:58px;background:#fff}
  .modal-head h2,.schedule-modal-head h2{font-size:17px!important;line-height:1.25}
  .modal-body,.schedule-modal-body{flex:1 1 auto!important;max-height:none!important;overflow:auto!important;overscroll-behavior:contain;padding:15px 14px 24px!important}
  .modal-foot,.schedule-modal-foot{position:sticky;bottom:0;z-index:3;flex:0 0 auto;display:grid!important;grid-template-columns:1fr 1fr!important;gap:8px!important;padding:10px 12px max(10px,env(safe-area-inset-bottom))!important;background:#fff!important;box-shadow:0 -7px 18px rgba(37,28,82,.07)}
  .modal-foot .btn,.schedule-modal-foot .btn{width:100%;justify-content:center;min-height:46px}
  .form-grid,.schedule-form-grid{grid-template-columns:1fr!important;gap:11px!important}
  .form-group.full,.schedule-form-grid .full{grid-column:1!important}

  /* Schedule: filters collapse, week becomes one touch/swipe day. */
  .schedule-global-filter{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;width:100%!important;gap:8px!important;overflow:visible!important;margin-left:0!important}
  .schedule-global-filter .schedule-mobile-filter-toggle{display:flex!important;grid-column:1/-1;align-items:center;justify-content:space-between;min-height:44px;border:1px solid var(--border);border-radius:10px;background:#faf9ff;color:#5d4bb2;padding:0 12px;font-size:12px;font-weight:800;cursor:pointer}
  .schedule-global-filter:not(.mobile-filters-open)>.control,
  .schedule-global-filter:not(.mobile-filters-open)>button[type="submit"]{display:none!important}
  .schedule-global-filter>.schedule-summary-trigger,
  .schedule-global-filter>a.btn-primary{display:flex!important;width:100%!important;min-width:0!important;justify-content:center!important}
  .schedule-global-filter>.control,.schedule-global-filter>button[type="submit"]{grid-column:1/-1;width:100%!important;max-width:none!important;min-width:0!important}
  .schedule-global-filter>.control select,.schedule-global-filter>.control input{width:100%!important;max-width:none!important;min-width:0!important}
  .schedule-global-filter .control[data-store-control]{width:100%!important;max-width:none!important}
  .schedule-global-filter .control[data-store-control] select{width:100%!important;max-width:none!important}
  .schedule-global-filter .control-date{width:100%!important}
  .schedule-board{border-radius:15px!important;margin-bottom:16px!important;overflow:visible!important}
  .schedule-board-top{padding:13px!important;gap:11px!important}
  .schedule-board-store{width:100%;min-width:0!important;align-items:flex-start!important}
  .schedule-board-store-icon{width:38px;height:38px;flex-basis:38px}
  .schedule-board-store-copy h2{font-size:15px!important;line-height:1.35}
  .schedule-board-store-copy p{font-size:11px!important;line-height:1.4}
  .schedule-staff-badge{margin-left:3px}
  .schedule-board-controls{display:grid!important;grid-template-columns:1fr!important;width:100%!important}
  .schedule-datebox{width:100%;min-height:44px;justify-content:center}
  .schedule-add-global{width:100%!important;min-height:44px!important;justify-content:center!important}
  .schedule-week-grid-wrap{overflow:visible!important}
  .schedule-week-grid{display:block!important;min-width:0!important;width:100%!important}
  .schedule-day-column{display:none!important;min-height:0!important;width:100%!important;padding:13px 11px 12px!important;border-right:0!important;border-top:1px solid var(--border)!important}
  .schedule-day-column.is-mobile-active{display:flex!important}
  .schedule-mobile-day-tabs{display:grid!important;grid-template-columns:repeat(7,minmax(43px,1fr));gap:4px;padding:9px 8px 8px;border-top:1px solid var(--border);background:#fbfaff;overflow-x:auto;scrollbar-width:none}
  .schedule-mobile-day-tabs::-webkit-scrollbar{display:none}
  .schedule-mobile-day-tab{min-width:43px;min-height:50px;border:1px solid transparent;border-radius:10px;background:transparent;color:#777187;padding:5px 3px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-weight:800;cursor:pointer}
  .schedule-mobile-day-tab strong{font-size:11px;line-height:1}
  .schedule-mobile-day-tab span{font-size:9px;line-height:1;color:#9a94a6}
  .schedule-mobile-day-tab.is-active{background:#fff;border-color:#d9cffb;color:#643fd1;box-shadow:0 3px 10px rgba(88,58,163,.08)}
  .schedule-mobile-day-tab.is-active span{color:#765fc2}
  .schedule-day-name{font-size:15px!important}
  .schedule-day-date{font-size:12px!important}
  .schedule-add-person{min-height:44px!important;font-size:12px!important}
  .schedule-shifts{gap:10px!important}
  .schedule-shift,.schedule-status{padding:11px 10px!important;border-radius:11px!important}
  .schedule-shift-main,.schedule-status-main{padding-right:88px!important}
  .schedule-avatar{width:34px!important;height:34px!important;font-size:10px!important}
  .schedule-shift-name{font-size:13px!important;white-space:normal!important}
  .schedule-shift-position{font-size:10.5px!important;white-space:normal!important}
  .schedule-shift-time{margin-left:41px!important;font-size:12px!important}
  .schedule-shift-actions{right:5px!important;top:5px!important;gap:2px!important}
  .schedule-icon-btn{width:40px!important;height:40px!important;border:1px solid var(--border)!important;background:#fff!important}
  .schedule-unused{padding:11px!important}
  .schedule-unused-title{font-size:11px!important}
  .schedule-unused-person{font-size:11px!important}
  .schedule-summary-toolbar{align-items:stretch!important;flex-direction:column!important}
  .schedule-summary-period,.schedule-summary-presets,.schedule-summary-actions{width:100%!important}
  .schedule-summary-presets{display:grid!important;grid-template-columns:repeat(3,1fr)!important}
  .schedule-summary-actions{display:grid!important;grid-template-columns:1fr 1fr!important;gap:8px!important}
  .schedule-summary-actions .btn{width:100%!important;justify-content:center}
  .schedule-record-types{grid-template-columns:1fr 1fr!important}

  /* Scanning / dense secondary screens: remove forced horizontal forms where possible. */
  .scan-filter-grid{grid-template-columns:1fr!important}
  .scan-filter-submit{grid-column:auto!important}
  .scan-upload-form{width:100%}
  .scan-cleanup-grid{grid-template-columns:1fr!important}
  .scan-store-checks{grid-template-columns:1fr!important}
}

@media(max-width:420px){
  .page-actions{grid-template-columns:1fr!important}
  .page-actions>.control-date{grid-column:auto}
  form.table-toolbar .table-toolbar-left{grid-template-columns:1fr!important}
  .kpi-grid,.candidate-kpi-grid,.interns-kpi-grid,.daily-results-kpis,.scan-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .kpi-card{padding:10px 9px 8px}
  .kpi-icon{width:30px;height:30px;flex-basis:30px}
  .kpi-value{font-size:19px}
  .schedule-mobile-day-tabs{grid-template-columns:repeat(7,minmax(41px,1fr));padding-inline:5px;gap:2px}
  .schedule-mobile-day-tab{min-width:41px}
}

@media(max-width:350px){
  .kpi-grid,.candidate-kpi-grid,.interns-kpi-grid,.daily-results-kpis,.scan-kpi-grid{grid-template-columns:1fr!important}
  .schedule-mobile-day-tabs{grid-template-columns:repeat(7,42px);overflow-x:auto;justify-content:flex-start}
  .mobile-card-table>tbody>tr>td{grid-template-columns:90px minmax(0,1fr)}
}

@media(max-width:720px){
  .mobile-card-table>tbody>tr[hidden]{display:none!important}

  /* Generic long table filters: keep search visible and expand the rest only when requested. */
  .mobile-collapsible-toolbar{display:grid!important;grid-template-columns:1fr!important;overflow:visible!important}
  .mobile-collapsible-toolbar>.mobile-filter-toggle{display:flex!important;width:100%;align-items:center;justify-content:space-between;min-height:44px;border:1px solid var(--border);border-radius:10px;background:#faf9ff;color:#5d4bb2;padding:0 12px;font-weight:800;font-size:12px;cursor:pointer}
  .mobile-collapsible-toolbar>.table-toolbar-left{display:grid!important;grid-template-columns:1fr!important}
  .mobile-collapsible-toolbar:not(.mobile-filters-open)>.table-toolbar-left>:not(.search-box):not(input[type="hidden"]){display:none!important}
  .mobile-collapsible-toolbar>.table-toolbar-left>.search-box{display:flex!important;grid-column:auto!important}
}

@media(max-width:720px){
  /* Bootstrap/admin and employee-history tables use the same card renderer. */
  table.mobile-card-table{display:block!important;width:100%!important;min-width:0!important;max-width:none!important;table-layout:auto!important;border-collapse:separate!important;border-spacing:0!important;margin:0!important}
  table.mobile-card-table>thead{display:none!important}
  table.mobile-card-table>tbody{display:grid!important;grid-template-columns:1fr;gap:10px;width:100%;padding:10px!important}
  table.mobile-card-table>tbody>tr{display:block!important;width:100%!important;min-width:0!important;border:1px solid var(--border)!important;border-radius:13px!important;background:#fff!important;box-shadow:0 4px 15px rgba(37,28,82,.045);overflow:hidden}
  table.mobile-card-table>tbody>tr[hidden]{display:none!important}
  table.mobile-card-table>tbody>tr>td{display:grid!important;grid-template-columns:minmax(100px,34%) minmax(0,1fr);align-items:start;gap:10px;width:100%!important;min-width:0!important;max-width:none!important;padding:10px 12px!important;border:0!important;border-bottom:1px solid #f0eef5!important;background:transparent!important;font-size:13px!important;line-height:1.4!important;text-align:left!important;white-space:normal!important;overflow-wrap:anywhere}
  table.mobile-card-table>tbody>tr>td:last-child{border-bottom:0!important}
  table.mobile-card-table>tbody>tr>td::before{content:attr(data-label);display:block;color:var(--muted);font-size:10.5px;font-weight:800;line-height:1.35;padding-top:1px}
  table.mobile-card-table>tbody>tr>td.mobile-card-empty-cell{display:block!important;padding:0!important;border:0!important}
  table.mobile-card-table>tbody>tr>td.mobile-card-empty-cell::before{display:none!important;content:none!important}
  .table-responsive:has(>table.mobile-card-table),.table-wrap:has(>table.mobile-card-table){overflow:visible!important}
}

@media(max-width:720px){
  .schedule-shell>.schedule-mobile-day-tabs{position:sticky;top:60px;z-index:24;margin:0 0 10px;border:1px solid var(--border);border-radius:12px;box-shadow:0 5px 18px rgba(37,28,82,.07)}
  .schedule-board .schedule-mobile-day-tabs{display:none!important}
}
