/* Shared dashboard layout. Brand colours are supplied by dashboard_theme.php. */
body.dashboard-page { background:var(--page-bg); color:var(--brand-text); padding:24px 14px 48px; }
.dashboard-page .page-wrap { max-width:1180px; margin:0 auto; }
.dashboard-page .page-header { background:var(--card-bg); border:1px solid var(--card-border); border-radius:14px; padding:18px 22px; box-shadow:0 6px 24px rgba(0,0,0,.08); margin-bottom:22px; display:flex; align-items:center; justify-content:space-between; gap:18px; }
.dashboard-page .header-identity { display:flex; align-items:center; gap:22px; min-width:0; }
.dashboard-page .header-logo { width:115px; max-height:82px; object-fit:contain; }
.dashboard-page h1 { font-size:clamp(1.45rem,3vw,2rem); font-weight:800; margin:0 0 5px; line-height:1.2; }
.dashboard-page .header-actions { display:flex; align-items:center; gap:10px; }
.dashboard-page .role-badge { background:var(--brand-secondary); color:#fff; border-radius:8px; padding:9px 14px; font-weight:700; }
.dashboard-page .text-muted { color:var(--brand-muted) !important; }
.dashboard-page .card { background:var(--card-bg); border:1px solid var(--card-border); border-radius:14px; box-shadow:0 6px 24px rgba(0,0,0,.08); overflow:hidden; }
.dashboard-page .card-header-brand { background:var(--brand-primary); color:#fff; padding:16px 22px; border-bottom:3px solid var(--brand-secondary); }
.dashboard-page .card-header-brand h2 { font-size:1.05rem; font-weight:750; margin:0; }
.dashboard-page .tools-body { padding:24px; }
.dashboard-page .btn-brand, .dashboard-page .btn-secondary-brand { color:#fff; font-weight:700; border-radius:9px; padding:11px 16px; }
.dashboard-page .btn-brand { background:var(--brand-primary); border-color:var(--brand-primary); }
.dashboard-page .btn-brand:hover, .dashboard-page .btn-brand:active { background:var(--brand-primary-hover); border-color:var(--brand-primary-hover); color:#fff; }
.dashboard-page .btn-secondary-brand { background:var(--brand-secondary); border-color:var(--brand-secondary); }
.dashboard-page .btn-secondary-brand:hover, .dashboard-page .btn-secondary-brand:active { background:var(--brand-secondary-hover); border-color:var(--brand-secondary-hover); color:#fff; }
.dashboard-page .btn-outline-brand { border:1px solid var(--brand-secondary); color:var(--brand-secondary); border-radius:9px; padding:9px 16px; font-weight:600; }
.dashboard-page .btn-outline-brand:hover { background:var(--brand-secondary); color:#fff; }
.dashboard-page .btn:focus-visible { outline:3px solid var(--brand-primary); outline-offset:3px; box-shadow:none; }
.dashboard-page .btn:disabled { opacity:.45; }
.dashboard-page .module-tile { min-height:88px; padding:18px 12px; display:flex; align-items:center; justify-content:center; text-align:center; border-radius:12px; box-shadow:inset 0 -3px 0 rgba(0,0,0,.2); transition:transform .15s ease,background .15s ease; }
.dashboard-page .module-tile:hover { transform:translateY(-2px); }
.dashboard-page .upcoming-section { margin-top:24px; }
.dashboard-page .shift-card { box-shadow:none; }
.dashboard-page .shift-card .card-body { padding:22px; }
.dashboard-page .shift-card h6 { font-size:1.1rem; font-weight:750; }
.dashboard-page .shift-card.border-success { border-left:4px solid #198754 !important; }
.dashboard-page .shift-card.border-danger { border-left:4px solid #dc3545 !important; }
.dashboard-page .empty-state { padding:20px 12px; margin:0; color:var(--brand-muted); }
@media(max-width:600px) {
    body.dashboard-page { padding:12px 10px 32px; }
    .dashboard-page .page-header { flex-direction:column; align-items:stretch; padding:16px; gap:16px; }
    .dashboard-page .header-identity { gap:14px; }
    .dashboard-page .header-logo { width:86px; max-height:68px; }
    .dashboard-page .header-actions { justify-content:space-between; }
    .dashboard-page .tools-body, .dashboard-page .shift-card .card-body { padding:16px; }
    .dashboard-page .module-tile { min-height:76px; }
}
@media(prefers-reduced-motion:reduce) { .dashboard-page .module-tile { transition:none; } .dashboard-page .module-tile:hover { transform:none; } }

/* Four coordinated tile styles, shared by dashboards and the module editor. */
.dashboard-page .btn-module-brand, .dashboard-page .btn-module-charcoal,
.dashboard-page .btn-module-teal, .dashboard-page .btn-module-neutral {
    --bs-btn-color:#fff; --bs-btn-hover-color:#fff; --bs-btn-active-color:#fff;
    color:var(--bs-btn-color); font-weight:700; border-radius:10px;
    background:var(--bs-btn-bg); border-color:var(--bs-btn-border-color);
}
.dashboard-page .btn-module-brand { --bs-btn-bg:var(--brand-primary); --bs-btn-border-color:var(--brand-primary); --bs-btn-hover-bg:var(--brand-primary-hover); --bs-btn-hover-border-color:var(--brand-primary-hover); --bs-btn-active-bg:var(--brand-primary-hover); --bs-btn-active-border-color:var(--brand-primary-hover); }
.dashboard-page .btn-module-charcoal { --bs-btn-bg:var(--brand-secondary); --bs-btn-border-color:var(--brand-secondary); --bs-btn-hover-bg:var(--brand-secondary-hover); --bs-btn-hover-border-color:var(--brand-secondary-hover); --bs-btn-active-bg:var(--brand-secondary-hover); --bs-btn-active-border-color:var(--brand-secondary-hover); }
.dashboard-page .btn-module-teal { --bs-btn-bg:var(--brand-teal); --bs-btn-border-color:var(--brand-teal); --bs-btn-hover-bg:var(--brand-teal-hover); --bs-btn-hover-border-color:var(--brand-teal-hover); --bs-btn-active-bg:var(--brand-teal-hover); --bs-btn-active-border-color:var(--brand-teal-hover); }
.dashboard-page .btn-module-neutral { --bs-btn-color:var(--brand-text); --bs-btn-hover-color:var(--brand-text); --bs-btn-active-color:var(--brand-text); --bs-btn-bg:var(--brand-neutral); --bs-btn-border-color:var(--card-border); --bs-btn-hover-bg:var(--brand-neutral-hover); --bs-btn-hover-border-color:var(--card-border); --bs-btn-active-bg:var(--brand-neutral-hover); --bs-btn-active-border-color:var(--card-border); }
.dashboard-page .btn-module-brand:hover,.dashboard-page .btn-module-charcoal:hover,.dashboard-page .btn-module-teal:hover,.dashboard-page .btn-module-neutral:hover,
.dashboard-page .btn-module-brand:active,.dashboard-page .btn-module-charcoal:active,.dashboard-page .btn-module-teal:active,.dashboard-page .btn-module-neutral:active { background:var(--bs-btn-hover-bg); border-color:var(--bs-btn-hover-border-color); color:var(--bs-btn-hover-color); }
.modules-page .module-style-preview { pointer-events:none; display:inline-block; padding:7px 12px; font-size:.85rem; white-space:nowrap; }
.modules-page .draggable-row { cursor:grab; }
.modules-page .draggable-row:active { cursor:grabbing; }
.modules-page .drag-handle { font-size:1.2rem; font-weight:800; color:var(--brand-secondary); }
.modules-page .table thead th { background:var(--brand-secondary); color:#fff; border-color:var(--brand-secondary); }
.modules-page .admin-badge { background:var(--brand-neutral); color:var(--brand-text); }
.modules-page .form-control:focus,.modules-page .form-select:focus { border-color:var(--brand-primary); box-shadow:none; outline:2px solid var(--brand-primary); outline-offset:1px; }
@media(max-width:600px) { .modules-page .table-actions { flex-direction:column; } }

/* Smaller tiles and vacancy controls on the admin and worker dashboards. */
.vacancy-dashboard.dashboard-page .module-tile {
    min-height:72px;
    padding:12px 10px;
}
@media (max-width:767px) {
    .vacancy-dashboard.dashboard-page .page-header { padding:12px; gap:10px; margin-bottom:14px; }
    .vacancy-dashboard.dashboard-page .header-identity { gap:12px; }
    .vacancy-dashboard.dashboard-page .header-logo { width:72px; max-height:54px; }
    .vacancy-dashboard.dashboard-page h1 { font-size:1.3rem; margin-bottom:3px; }
    .vacancy-dashboard.dashboard-page .header-identity .text-muted { font-size:.85rem; }
    .vacancy-dashboard.dashboard-page .header-actions { gap:8px; }
    .vacancy-dashboard.dashboard-page .role-badge { padding:7px 10px; font-size:.85rem; }
    .vacancy-dashboard.dashboard-page .card-header-brand { padding:10px 12px; }
    .vacancy-dashboard.dashboard-page .card-header-brand h2 { font-size:.95rem; }
    .vacancy-dashboard.dashboard-page .tools-body { padding:12px; }
    .vacancy-dashboard.dashboard-page .tools-body > .row { --bs-gutter-x:8px; --bs-gutter-y:8px; }
    .vacancy-dashboard.dashboard-page .btn {
        min-height:44px;
        padding:8px 10px;
        font-size:.9rem;
        line-height:1.25;
        white-space:normal;
        overflow-wrap:anywhere;
    }
    .vacancy-dashboard.dashboard-page .module-tile {
        min-height:52px;
        padding:9px 8px;
        font-size:.9rem;
        border-radius:8px;
    }
    .vacancy-dashboard.dashboard-page .upcoming-section { margin-top:16px; }
    .vacancy-dashboard.dashboard-page .upcoming-section > .card-body { padding:12px; }
    .vacancy-dashboard.dashboard-page .shift-card { margin-bottom:12px !important; }
    .vacancy-dashboard.dashboard-page .shift-card .card-body { padding:12px; font-size:.9rem; }
    .vacancy-dashboard.dashboard-page .shift-card h6 { font-size:1rem; }
    .vacancy-dashboard.dashboard-page .shift-card .btn.mb-2 { margin-bottom:6px !important; }
}

/* Slightly tighter desktop dashboards. */
@media (min-width:768px) {
    .vacancy-dashboard.dashboard-page .module-tile { min-height:68px; padding:10px 10px; font-size:.95rem; }
    .vacancy-dashboard.dashboard-page .tools-body { padding:18px; }
    .vacancy-dashboard.dashboard-page .tools-body > .row { --bs-gutter-x:12px; --bs-gutter-y:12px; }
    .vacancy-dashboard.dashboard-page .btn:not(.module-tile) { padding:8px 13px; font-size:.92rem; line-height:1.35; }
    .vacancy-dashboard.dashboard-page .card-header-brand { padding:12px 18px; }
    .vacancy-dashboard.dashboard-page .shift-card .card-body { padding:18px; }
    .vacancy-dashboard.dashboard-page .shift-card h6 { font-size:1rem; }
    .vacancy-dashboard.dashboard-page .upcoming-section { margin-top:20px; }
}
