/* =====================================================================
   UAEMS theme - Apple-like, layered over Bootstrap 5.3 + AdminLTE 4.
   Light and dark via [data-bs-theme]. One accent colour. 8px spacing grid.
   Edit the tokens in :root / [data-bs-theme=dark] to re-skin the app.
   ===================================================================== */
:root {
    --font: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", Inter, system-ui, "Segoe UI", Roboto, sans-serif;
    --accent: #0071e3;
    --accent-rgb: 0, 113, 227;
    --accent-press: #0062c4;
    --bg: #f5f5f7;
    --bg-glow: rgba(0, 113, 227, .07);
    --surface: rgba(255, 255, 255, .65);
    --surface-solid: #ffffff;
    --glass-border: rgba(255, 255, 255, .4);
    --fill: rgba(60, 60, 67, .06);          /* input / quiet fill */
    --hairline: rgba(60, 60, 67, .10);
    --text: #1d1d1f;
    --text-2: #6e6e73;
    --shadow-sm: 0 2px 12px rgba(0, 0, 0, .05);
    --shadow: 0 12px 48px rgba(0, 0, 0, .08);
    --shadow-lg: 0 24px 80px rgba(0, 0, 0, .14);
    --r-card: 20px;
    --r-btn: 12px;
    --ease: cubic-bezier(.22, .61, .36, 1);
    --t: 220ms;
    --s1: 8px; --s2: 16px; --s3: 24px; --s4: 32px; --s5: 40px;

    --bs-font-sans-serif: var(--font);
    --bs-body-font-family: var(--font);
    --bs-primary: var(--accent);
    --bs-primary-rgb: var(--accent-rgb);
    --bs-link-color: var(--accent);
    --bs-link-color-rgb: var(--accent-rgb);
    --bs-link-hover-color: var(--accent-press);
    --bs-body-color: var(--text);
    --bs-body-bg: var(--bg);
    --bs-tertiary-bg: var(--bg);
    --bs-border-color: var(--hairline);
    --bs-border-radius: 12px;
    --bs-border-radius-lg: var(--r-card);
}
[data-bs-theme="dark"] {
    --accent: #2997ff;
    --accent-rgb: 41, 151, 255;
    --accent-press: #5ab0ff;
    --bg: #000000;
    --bg-glow: rgba(41, 151, 255, .10);
    --surface: rgba(28, 28, 30, .65);
    --surface-solid: #1c1c1e;
    --glass-border: rgba(255, 255, 255, .08);
    --fill: rgba(235, 235, 245, .08);
    --hairline: rgba(235, 235, 245, .10);
    --text: #f5f5f7;
    --text-2: #a1a1a6;
    --shadow-sm: 0 2px 12px rgba(0, 0, 0, .4);
    --shadow: 0 12px 48px rgba(0, 0, 0, .5);
    --shadow-lg: 0 24px 80px rgba(0, 0, 0, .65);
    --bs-body-bg: #000;
    --bs-secondary-bg: #1c1c1e;
    --bs-tertiary-bg: #000;
}

/* ---------- base ------------------------------------------------------ */
html { -webkit-text-size-adjust: 100%; }
body {
    font-family: var(--font);
    color: var(--text);
    background:
        radial-gradient(1100px 520px at 12% -8%, var(--bg-glow), transparent 60%),
        radial-gradient(900px 480px at 100% 0%, var(--bg-glow), transparent 55%),
        var(--bg) !important;
    background-attachment: fixed !important;
    -webkit-font-smoothing: antialiased;
    letter-spacing: -.011em;
    transition: background-color var(--t) var(--ease), color var(--t) var(--ease);
}
h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6 { letter-spacing: -.022em; font-weight: 650; color: var(--text); }
h1.h4, .h4 { font-size: 1.75rem; line-height: 1.2; }   /* page titles: size does the hierarchy */
.text-muted, .text-body-secondary { color: var(--text-2) !important; }
a { text-decoration: none; transition: color var(--t) var(--ease), opacity var(--t) var(--ease); }
a:hover { text-decoration: underline; text-underline-offset: 3px; }
code { color: var(--accent); background: var(--fill); padding: 2px 6px; border-radius: 6px; font-size: .85em; }
:focus-visible { outline: 3px solid rgba(var(--accent-rgb), .45); outline-offset: 2px; border-radius: 8px; }
.skip-link { position: absolute; left: -999px; top: 8px; background: var(--accent); color: #fff; padding: 8px 16px; border-radius: var(--r-btn); z-index: 2000; }
.skip-link:focus { left: 8px; }
.page { max-width: 1280px; margin-inline: auto; padding-inline: var(--s3); width: 100%; }
@media (max-width: 575.98px) { .page { padding-inline: var(--s2); } }

/* ---------- app shell: side menu (desktop) / hamburger drawer (phone, tablet) ---------- */
.app-shell { display: flex; min-height: 100vh; }
.app-col { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.sidenav { background: var(--surface-solid); }
.sidenav-head { display: flex; align-items: center; justify-content: space-between; padding: 16px 16px 8px 24px; min-height: 64px; }
.sidenav-body { flex: 1 1 auto; overflow-y: auto; padding: 8px 12px 16px; }
.sidenav-foot { padding: 12px; border-top: 1px solid var(--hairline); }
.who { display: flex; align-items: center; gap: 12px; padding: 8px 12px 12px; min-width: 0; }
.who-text { display: flex; flex-direction: column; min-width: 0; }
.who-text strong { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.who-text small { color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nav-group { margin-bottom: 8px; }
.nav-group-title { padding: 16px 12px 6px; font-size: .6875rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--text-2); }
.nav-link-item { display: flex; align-items: center; gap: 12px; min-height: 44px; padding: 0 12px; border-radius: 12px; color: var(--text); font-weight: 500; font-size: .9375rem; transition: background var(--t) var(--ease), color var(--t) var(--ease); }
.nav-link-item i { font-size: 1.125rem; width: 24px; text-align: center; color: var(--text-2); transition: color var(--t) var(--ease); }
.nav-link-item:hover { background: var(--fill); text-decoration: none; color: var(--text); }
.nav-link-item.active { background: rgba(var(--accent-rgb), .12); color: var(--accent); font-weight: 600; }
.nav-link-item.active i { color: var(--accent); }
.nav-link-item.text-danger i { color: inherit; }
.brand { display: flex; align-items: center; gap: 8px; color: var(--text); font-weight: 700; font-size: 1.125rem; letter-spacing: -.02em; }
.brand:hover { text-decoration: none; }
.brand-mark { width: 32px; height: 32px; border-radius: 10px; background: var(--accent); color: #fff; display: grid; place-items: center; font-size: 1rem; }

/* desktop: fixed-width glass sidebar */
@media (min-width: 992px) {
    .sidenav { position: sticky; top: 0; height: 100vh; width: 264px; flex: none; display: flex; flex-direction: column; background: var(--surface); -webkit-backdrop-filter: blur(20px) saturate(180%); backdrop-filter: blur(20px) saturate(180%); border-right: 1px solid var(--hairline); visibility: visible !important; transform: none !important; }
}
/* phone / tablet: slide-in drawer opened by the hamburger */
@media (max-width: 991.98px) {
    .sidenav.offcanvas-lg { --bs-offcanvas-width: min(320px, 86vw); width: var(--bs-offcanvas-width); background: var(--surface-solid); border-right: 1px solid var(--hairline); box-shadow: var(--shadow-lg); display: flex; flex-direction: column; }
    .offcanvas-backdrop.show { opacity: .35; }
}

/* ---------- top bar (frosted, sticky) ---------- */
.topbar { position: sticky; top: 0; z-index: 1030; background: var(--surface); -webkit-backdrop-filter: blur(20px) saturate(180%); backdrop-filter: blur(20px) saturate(180%); border-bottom: 1px solid var(--hairline); }
.topbar-inner { display: flex; align-items: center; gap: 8px; max-width: 1280px; margin: 0 auto; padding: 8px 24px; min-height: 64px; }
.topbar-title { flex: 1 1 auto; min-width: 0; font-size: 1.0625rem; font-weight: 650; letter-spacing: -.02em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.topbar-actions { display: flex; align-items: center; gap: 4px; flex: none; }
.icon-btn { position: relative; width: 44px; height: 44px; border: 0; border-radius: 999px; background: transparent; color: var(--text); display: grid; place-items: center; font-size: 1.25rem; cursor: pointer; transition: background var(--t) var(--ease), transform var(--t) var(--ease); }
.icon-btn:hover { background: var(--fill); text-decoration: none; color: var(--text); }
.icon-btn:active { transform: scale(.94); }
.bell-badge { position: absolute; top: 4px; right: 2px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; background: #ff3b30; color: #fff; font-size: 11px; font-weight: 700; display: grid; place-items: center; }
.avatar { width: 36px; height: 36px; border-radius: 50%; background: var(--accent); color: #fff; display: grid; place-items: center; flex: none; font-weight: 600; font-size: .9375rem; }
.glass-menu, .dropdown-menu { background: var(--surface); -webkit-backdrop-filter: blur(20px) saturate(180%); backdrop-filter: blur(20px) saturate(180%); border: 1px solid var(--glass-border); border-radius: 16px; box-shadow: var(--shadow); padding: 8px; max-width: calc(100vw - 16px); }
.dropdown-item { border-radius: 10px; min-height: 44px; display: flex; align-items: center; transition: background var(--t) var(--ease); }
.dropdown-item:hover { background: var(--fill); }
@media (max-width: 575.98px) {
    .topbar-inner { padding: 4px 8px; min-height: 56px; }
    .topbar-title { font-size: 1rem; }
}

/* ---------- cards / glass --------------------------------------------- */
.card {
    background: var(--surface);
    -webkit-backdrop-filter: blur(20px) saturate(180%);
    backdrop-filter: blur(20px) saturate(180%);
    border: 1px solid var(--glass-border);
    border-radius: var(--r-card);
    box-shadow: var(--shadow);
    color: var(--text);
    transition: box-shadow var(--t) var(--ease), transform var(--t) var(--ease);
}
.card-outline, .card-primary.card-outline { border-top-width: 1px; }
.card-body { padding: var(--s3); }
.card-header { background: transparent; border-bottom: 0; padding: var(--s3) var(--s3) var(--s1); font-size: 1.0625rem; font-weight: 650; letter-spacing: -.02em; }
.card-title { float: none; display: block; margin: 0 0 var(--s2); font-size: 1.0625rem; font-weight: 650; letter-spacing: -.02em; line-height: 1.3; }
.card-header .card-title { margin: 0; }
.card-title .bi { margin-right: 6px; color: var(--text-2); }
.card-footer { background: transparent; border-top: 0; padding: var(--s2) var(--s3) var(--s3); }
.card > .table-responsive:last-child, .card > .list-group:last-child { border-radius: 0 0 var(--r-card) var(--r-card); overflow: hidden; }
.row.g-3 > [class*="col"] > .card:hover { box-shadow: var(--shadow-lg); }
.bg-body-secondary { background: var(--fill) !important; }

/* ---------- tables: hierarchy through type, not borders --------------- */
.table { --bs-table-bg: transparent; --bs-table-color: var(--text); --bs-table-hover-bg: var(--fill); --bs-table-border-color: var(--hairline); margin-bottom: 0; }
.table > :not(caption) > * > * { padding: 14px var(--s2); border-bottom-color: var(--hairline); background-color: transparent; }
.table thead th { font-size: .75rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--text-2); border-bottom: 1px solid var(--hairline); white-space: nowrap; }
.table tbody tr { transition: background var(--t) var(--ease); }
.table tbody tr:last-child > * { border-bottom: 0; }
.table-sm > :not(caption) > * > * { padding: 10px var(--s2); }
.list-group { --bs-list-group-bg: transparent; --bs-list-group-border-color: var(--hairline); --bs-list-group-color: var(--text); }
.list-group-item { padding: 14px var(--s3); background: transparent; }

/* ---------- buttons (12px radius, 44px targets) ----------------------- */
.btn { --bs-btn-border-radius: var(--r-btn); border-radius: var(--r-btn); min-height: 44px; min-width: 44px; padding: 8px 20px; font-weight: 600; font-size: .9375rem; letter-spacing: -.01em; display: inline-flex; align-items: center; justify-content: center; gap: 6px; transition: background var(--t) var(--ease), color var(--t) var(--ease), transform var(--t) var(--ease), box-shadow var(--t) var(--ease), border-color var(--t) var(--ease); }
.btn-sm { --bs-btn-padding-y: 8px; --bs-btn-padding-x: 16px; --bs-btn-font-size: .875rem; min-height: 44px; padding: 8px 16px; font-size: .875rem; }
.btn:active { transform: scale(.98); }
.btn:hover { text-decoration: none; }
.btn-primary { --bs-btn-bg: var(--accent); --bs-btn-border-color: var(--accent); --bs-btn-hover-bg: var(--accent-press); --bs-btn-hover-border-color: var(--accent-press); --bs-btn-active-bg: var(--accent-press); --bs-btn-active-border-color: var(--accent-press); --bs-btn-color: #fff; --bs-btn-hover-color: #fff; --bs-btn-disabled-bg: var(--accent); box-shadow: 0 4px 16px rgba(var(--accent-rgb), .30); }
.btn-primary:hover { box-shadow: 0 8px 24px rgba(var(--accent-rgb), .38); }
.btn-outline-primary, .btn-outline-secondary, .btn-outline-danger, .btn-outline-success, .btn-light {
    --bs-btn-border-color: transparent; background: var(--fill); border-color: transparent;
}
.btn-outline-primary { --bs-btn-color: var(--accent); --bs-btn-hover-bg: rgba(var(--accent-rgb), .16); --bs-btn-hover-color: var(--accent); --bs-btn-hover-border-color: transparent; --bs-btn-active-bg: rgba(var(--accent-rgb), .22); --bs-btn-active-color: var(--accent); --bs-btn-active-border-color: transparent; background: rgba(var(--accent-rgb), .10); }
.btn-outline-secondary { --bs-btn-color: var(--text); --bs-btn-hover-bg: rgba(120, 120, 128, .20); --bs-btn-hover-color: var(--text); --bs-btn-hover-border-color: transparent; --bs-btn-active-bg: rgba(120, 120, 128, .28); --bs-btn-active-color: var(--text); --bs-btn-active-border-color: transparent; }
.btn-outline-danger { --bs-btn-color: #ff3b30; --bs-btn-hover-bg: rgba(255, 59, 48, .14); --bs-btn-hover-color: #ff3b30; --bs-btn-hover-border-color: transparent; --bs-btn-active-bg: rgba(255, 59, 48, .2); --bs-btn-active-color: #ff3b30; --bs-btn-active-border-color: transparent; background: rgba(255, 59, 48, .08); }
.btn-outline-success { --bs-btn-color: #248a3d; --bs-btn-hover-bg: rgba(52, 199, 89, .18); --bs-btn-hover-color: #248a3d; --bs-btn-hover-border-color: transparent; background: rgba(52, 199, 89, .10); }
[data-bs-theme="dark"] .btn-outline-success { --bs-btn-color: #30d158; --bs-btn-hover-color: #30d158; }
.btn-success { --bs-btn-bg: #34c759; --bs-btn-border-color: #34c759; --bs-btn-hover-bg: #2db14f; --bs-btn-hover-border-color: #2db14f; --bs-btn-color: #fff; --bs-btn-hover-color: #fff; }
.btn-danger { --bs-btn-bg: #ff3b30; --bs-btn-border-color: #ff3b30; --bs-btn-hover-bg: #e5342a; --bs-btn-hover-border-color: #e5342a; --bs-btn-color: #fff; --bs-btn-hover-color: #fff; }
.btn-warning { --bs-btn-bg: #ff9f0a; --bs-btn-border-color: #ff9f0a; --bs-btn-color: #1d1d1f; }
.btn-close { border-radius: 8px; }

/* ---------- forms ------------------------------------------------------ */
.form-label { font-size: .8125rem; font-weight: 600; color: var(--text-2); margin-bottom: 6px; }
.form-control, .form-select { min-height: 44px; border-radius: var(--r-btn); background-color: var(--fill); border: 1px solid transparent; color: var(--text); padding: 10px 16px; transition: background var(--t) var(--ease), border-color var(--t) var(--ease), box-shadow var(--t) var(--ease); }
.form-control-sm, .form-select-sm { min-height: 44px; font-size: .9375rem; padding: 8px 14px; border-radius: var(--r-btn); }
.form-control::placeholder { color: var(--text-2); opacity: .8; }
.form-control:focus, .form-select:focus { background-color: var(--surface-solid); border-color: var(--accent); box-shadow: 0 0 0 4px rgba(var(--accent-rgb), .20); color: var(--text); }
.form-control.is-invalid, .form-select.is-invalid { border-color: #ff3b30; background-image: none; }
.form-control.is-invalid:focus { box-shadow: 0 0 0 4px rgba(255, 59, 48, .2); }
.invalid-feedback { color: #ff3b30; font-size: .8125rem; }
.form-check-input { width: 1.4em; height: 1.4em; margin-top: .1em; border-color: var(--text-2); background-color: transparent; }
.form-check-input:checked { background-color: var(--accent); border-color: var(--accent); }
.form-switch .form-check-input { width: 2.6em; height: 1.5em; border-radius: 999px; }
.form-text { color: var(--text-2); }
.input-group > .form-control { border-radius: var(--r-btn) 0 0 var(--r-btn); }
.input-group > .btn, .input-group > .input-group-text { border-radius: 0 var(--r-btn) var(--r-btn) 0; }
.input-group-text { background: var(--fill); border: 1px solid transparent; color: var(--text-2); min-width: 44px; justify-content: center; }
.input-group > .btn.toggle-password { background: var(--fill); }
input[type="file"].form-control { padding: 8px 12px; }

/* ---------- badges / alerts ------------------------------------------- */
.badge { border-radius: 999px; padding: .4em .85em; font-weight: 600; font-size: .75rem; letter-spacing: 0; }
.badge.text-bg-success { background: rgba(52, 199, 89, .16) !important; color: #248a3d !important; }
.badge.text-bg-danger { background: rgba(255, 59, 48, .14) !important; color: #d70015 !important; }
.badge.text-bg-warning { background: rgba(255, 159, 10, .18) !important; color: #b25000 !important; }
.badge.text-bg-info { background: rgba(var(--accent-rgb), .14) !important; color: var(--accent) !important; }
.badge.text-bg-primary { background: rgba(var(--accent-rgb), .14) !important; color: var(--accent) !important; }
.badge.text-bg-secondary, .badge.text-bg-light, .badge.text-bg-dark { background: var(--fill) !important; color: var(--text-2) !important; }
[data-bs-theme="dark"] .badge.text-bg-success { color: #30d158 !important; }
[data-bs-theme="dark"] .badge.text-bg-danger { color: #ff6961 !important; }
[data-bs-theme="dark"] .badge.text-bg-warning { color: #ffb340 !important; }
.bell-badge.badge { all: unset; }
.alert { border: 0; border-radius: 16px; padding: 14px var(--s2); font-weight: 500; backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); animation: rise var(--t) var(--ease); }
.alert-success { background: rgba(52, 199, 89, .15); color: #1d7a34; }
.alert-danger { background: rgba(255, 59, 48, .13); color: #c4281c; }
.alert-warning { background: rgba(255, 159, 10, .16); color: #9a5b00; }
.alert-info { background: rgba(var(--accent-rgb), .12); color: var(--accent); }
[data-bs-theme="dark"] .alert-success { color: #30d158; }
[data-bs-theme="dark"] .alert-danger { color: #ff6961; }
[data-bs-theme="dark"] .alert-warning { color: #ffb340; }
.text-success { color: #248a3d !important; } .text-danger { color: #d70015 !important; }
[data-bs-theme="dark"] .text-success { color: #30d158 !important; } [data-bs-theme="dark"] .text-danger { color: #ff6961 !important; }
.progress { height: 8px; border-radius: 999px; background: var(--fill); }
.progress-bar { background: var(--accent); }
.pagination .page-link, .nav-tabs .nav-link { border-radius: 10px; }

/* ---------- auth pages ------------------------------------------------- */
.login-page { min-height: 100vh; display: grid; place-items: center; padding: var(--s3) var(--s2); background: transparent; }
.login-box { width: 100%; max-width: 420px; margin: 0; }
.login-logo { text-align: center; margin-bottom: var(--s3); font-size: 2rem; }
.login-logo a { color: var(--text); font-weight: 750; letter-spacing: -.03em; }
.login-logo a:hover { text-decoration: none; }
.login-box .card { box-shadow: var(--shadow-lg); animation: rise 300ms var(--ease); }
.login-card-body, .login-box .card-body { padding: var(--s4); background: transparent; }
.login-box-msg { font-size: 1.125rem; font-weight: 600; color: var(--text); padding: 0 0 var(--s2); text-align: left; }

/* ---------- misc ------------------------------------------------------- */
.fs-3.text-primary, .bi.text-primary { color: var(--accent) !important; }
.card .fs-4 { letter-spacing: -.03em; font-weight: 700; }
.app-content { animation: rise 300ms var(--ease); }
@keyframes rise { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
hr { border-color: var(--hairline); opacity: 1; }
.modal-content { background: var(--surface); backdrop-filter: blur(24px) saturate(180%); -webkit-backdrop-filter: blur(24px) saturate(180%); border: 1px solid var(--glass-border); border-radius: 24px; box-shadow: var(--shadow-lg); }
::selection { background: rgba(var(--accent-rgb), .25); }

/* Fallback when blur is unsupported: solid surfaces stay readable */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    .card, .topbar, .dropdown-menu, .modal-content { background: var(--surface-solid); }
}
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}
@media print {
    body { background: #fff !important; color: #000; }
    .topbar, .skip-link, .btn, .no-print { display: none !important; }
    .card { box-shadow: none; background: #fff; backdrop-filter: none; border: 1px solid #ddd; }
}

/* ---------- AdminLTE shell overrides (we use a top bar, not its sidebar grid) ---------- */
.app-wrapper { display: block !important; min-height: 100vh; background: transparent !important; }
.app-main, .app-content, .app-header { grid-area: auto !important; background: transparent !important; }
.app-main { min-height: calc(100vh - 64px); flex: 1 1 auto; }
.login-page { display: grid !important; min-height: 100vh; width: 100%; background: transparent !important; }
.login-logo { font-size: 2rem; font-weight: 750; }
.login-logo > div { font-size: .9375rem; font-weight: 400; color: var(--text-2) !important; }
.login-box .card, .login-box .card-body { background: var(--surface); }
.login-box .card-body { background: transparent; }
body.bg-body-tertiary { background-color: var(--bg) !important; }
.card.card-outline, .card.card-primary.card-outline { border-top-color: var(--glass-border); }
.btn-outline-warning { --bs-btn-color: #b25000; --bs-btn-hover-bg: rgba(255, 159, 10, .2); --bs-btn-hover-color: #b25000; --bs-btn-hover-border-color: transparent; --bs-btn-active-bg: rgba(255, 159, 10, .26); --bs-btn-active-color: #b25000; --bs-btn-active-border-color: transparent; background: rgba(255, 159, 10, .12); border-color: transparent; }
[data-bs-theme="dark"] .btn-outline-warning { --bs-btn-color: #ffb340; --bs-btn-hover-color: #ffb340; --bs-btn-active-color: #ffb340; }
.btn-outline-info { --bs-btn-color: var(--accent); --bs-btn-hover-bg: rgba(var(--accent-rgb), .16); --bs-btn-hover-color: var(--accent); --bs-btn-hover-border-color: transparent; background: rgba(var(--accent-rgb), .10); border-color: transparent; }
@media (max-width: 575.98px) {
    .card-body { padding: var(--s2); }
    .card .fs-4 { font-size: 1.125rem !important; overflow-wrap: anywhere; line-height: 1.25; }
    .card .fs-3 { font-size: 1.5rem !important; }
    h1.h4, .h4 { font-size: 1.5rem; }
}

/* =====================================================================
   RESPONSIVE
   Breakpoints (Bootstrap): 576 phone-landscape, 768 tablet, 992 desktop
   (side menu appears), 1200 wide. Below 1100 every data table becomes a
   list of cards; "View more" expands the rest of the fields downward.
   ===================================================================== */
html, body { max-width: 100%; overflow-x: hidden; }
img, svg, video, canvas { max-width: 100%; height: auto; }
.card, .card-body, .table-responsive, .form-control, .form-select { max-width: 100%; }
td, th, .card-body, .alert, h1, h2, h3, .h4 { overflow-wrap: break-word; }
/* Short things never split: buttons, badges, codes, amounts. */
.btn, .badge { white-space: nowrap; }
.table code, .table .badge { white-space: nowrap; }
.table td.text-end, .table th.text-end { white-space: nowrap; }
pre, code { white-space: pre-wrap; word-break: break-word; }

/* page header rows (title + buttons) wrap instead of overflowing */
.d-flex.justify-content-between.align-items-center.mb-3,
.d-flex.justify-content-between.align-items-start.mb-3 { flex-wrap: wrap; gap: 12px; }

.tc-toggle-cell { display: none; }

@media (max-width: 767.98px) {
    .page { padding-inline: 16px; padding-block: 16px !important; }
    h1.h4, .h4 { font-size: 1.5rem; }

    /* header action buttons fill the width, one per row when tight */
    .d-flex.justify-content-between.align-items-center.mb-3 > .btn,
    .d-flex.justify-content-between.align-items-center.mb-3 > a.btn { flex: 1 1 auto; }

    /* filter / form rows: full-width controls, buttons side by side */
    form.row > [class*="col-"] > .btn, form.row > [class*="col-"] > a.btn { width: 100%; }

}
@media (max-width: 1099.98px) {
    /* ---- table -> cards (phones and tablets) ---- */
    .card.tc-card { background: transparent; box-shadow: none; border: 0; -webkit-backdrop-filter: none; backdrop-filter: none; overflow: visible; }
    .tc-card .table-responsive { overflow: visible; }
    table.tc, table.tc tbody, table.tc tfoot { display: block; width: 100%; }
    table.tc thead { display: none; }
    table.tc tr { display: flex; flex-direction: column; gap: 8px; margin: 0 0 12px; padding: 16px; background: var(--surface); -webkit-backdrop-filter: blur(20px) saturate(180%); backdrop-filter: blur(20px) saturate(180%); border: 1px solid var(--glass-border); border-radius: var(--r-card); box-shadow: var(--shadow-sm); }
    table.tc td { box-shadow: none !important; display: block; padding: 0 !important; border: 0 !important; background: transparent !important; text-align: left !important; min-width: 0; }
    table.tc td.tc-empty-cell { text-align: center !important; padding: 24px 8px !important; }
    table.tc td[data-label]:not([data-label=""]):not(.tc-title):not(.tc-actions)::before { content: attr(data-label); display: block; font-size: .6875rem; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--text-2); margin-bottom: 2px; }
    table.tc td.tc-title { order: 0; font-size: 1.0625rem; font-weight: 650; letter-spacing: -.02em; }
    table.tc td.tc-main { order: 1; }
    table.tc td.tc-more { order: 2; display: none; }
    table.tc tr.is-open td.tc-more { display: block; animation: rise var(--t) var(--ease); }
    table.tc td.tc-toggle-cell { order: 3; display: block; }
    table.tc td.tc-actions { order: 4; display: flex; flex-wrap: wrap; justify-content: flex-start; gap: 8px; padding-top: 12px !important; border-top: 1px solid var(--hairline) !important; margin-top: 4px; }
    table.tc td.tc-actions form { display: inline-block; }
    .tc-toggle { width: 100%; min-height: 44px; border: 0; border-radius: var(--r-btn); background: var(--fill); color: var(--accent); font-weight: 600; font-size: .9375rem; display: inline-flex; align-items: center; justify-content: center; gap: 6px; cursor: pointer; transition: background var(--t) var(--ease); }
    .tc-toggle:hover { background: rgba(var(--accent-rgb), .12); }
    .tc-toggle i { transition: transform var(--t) var(--ease); }
    table.tc tr.is-open .tc-toggle i { transform: rotate(180deg); }
    table.tc tr.tc-total { background: var(--fill); }
    /* a row with nothing to expand needs no toggle */
    table.tc tr.tc-nomore td.tc-toggle-cell { display: none; }
}
@media (min-width: 1100px) {
    .tc-toggle-cell { display: none !important; }
}
@media print {
    .tc-toggle-cell { display: none !important; }
}
.d-flex.gap-1, .d-flex.gap-2, .d-flex.gap-3 { flex-wrap: wrap; }

/* Dashboard stat tiles: icon above text on phones, side by side from 576px */
.stat-body { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.stat-text { min-width: 0; }
.stat-text .fs-4 { overflow-wrap: break-word; }
@media (min-width: 576px) { .stat-text .fs-4 { white-space: nowrap; font-size: 1.25rem !important; } }
@media (min-width: 768px) and (max-width: 1099.98px) { form.row > .col-md-1 { min-width: 88px; } }
@media (min-width: 576px) { .stat-body { flex-direction: row; align-items: center; gap: 16px; } }

.stat-link { display: block; height: 100%; color: inherit; text-decoration: none; border-radius: var(--r-card); }
.stat-link .card { transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease); }
.stat-link:hover .card { transform: translateY(-2px); box-shadow: var(--shadow); }
.stat-link:focus-visible { outline: 3px solid rgba(var(--accent-rgb), .5); outline-offset: 2px; }
.stat-go { margin-left: auto; color: var(--text-2); font-size: .875rem; }
.stat-body { position: relative; }
@media (max-width: 575.98px) { .stat-go { position: absolute; top: 14px; right: 14px; } }
.stat-link, .stat-link:hover, .stat-link * { text-decoration: none !important; }

/* Ticket code printed under the QR, like the digits under a barcode */
.ticket-code { font-family: ui-monospace, "SF Mono", Consolas, "Courier New", monospace; font-size: 1.25rem; font-weight: 700; letter-spacing: .14em; margin: 4px 0 8px; user-select: all; overflow-wrap: anywhere; }
@media (max-width: 359.98px) { .ticket-code { font-size: 1.05rem; letter-spacing: .08em; } }

/* =====================================================================
   Sign-up, one-time code, public site
   ===================================================================== */
.register-box { max-width: 520px; }
.role-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.role-main { grid-template-columns: 1fr; }
.role-main .role-card { min-height: 0; }
.role-more summary { cursor: pointer; font-size: .875rem; font-weight: 600; color: var(--accent); padding: 6px 2px; list-style: none; }
.role-more summary::-webkit-details-marker { display: none; }
.role-more summary::after { content: "\25BE"; margin-left: 6px; font-size: .75rem; }
.role-more[open] summary::after { content: "\25B4"; }
.role-choice { margin: 0; cursor: pointer; display: block; }
.role-choice input { position: absolute; opacity: 0; pointer-events: none; }
.role-card { display: flex; flex-direction: column; gap: 2px; height: 100%; min-height: 96px; padding: 12px; border-radius: 14px; background: var(--fill); border: 2px solid transparent; transition: border-color var(--t) var(--ease), background var(--t) var(--ease); }
.role-card i { font-size: 1.25rem; color: var(--accent); }
.role-card strong { font-size: .9375rem; letter-spacing: -.01em; }
.role-card small { font-size: .75rem; line-height: 1.3; color: var(--text-2); }
.role-choice:hover .role-card { background: rgba(var(--accent-rgb), .08); }
.role-choice input:checked + .role-card { border-color: var(--accent); background: rgba(var(--accent-rgb), .10); }
.role-choice input:focus-visible + .role-card { outline: 3px solid rgba(var(--accent-rgb), .5); outline-offset: 2px; }
@media (max-width: 359.98px) { .role-grid { grid-template-columns: 1fr; } }
fieldset legend { float: none; width: auto; padding: 0; }
.otp-input { text-align: center; font-size: 1.75rem; font-weight: 600; letter-spacing: .5em; font-variant-numeric: tabular-nums; min-height: 64px; padding-left: .5em; }
.otp-input::placeholder { letter-spacing: .5em; opacity: .35; }

/* ---- public site ---- */
body.public-site { background: var(--bg); color: var(--text); font-family: var(--font); min-height: 100vh; display: flex; flex-direction: column; }
.pub-main { flex: 1 0 auto; }
.pub-wrap { width: 100%; max-width: 1120px; margin-inline: auto; padding-inline: 20px; }
.pub-header { position: sticky; top: 0; z-index: 100; background: var(--surface); -webkit-backdrop-filter: blur(20px) saturate(180%); backdrop-filter: blur(20px) saturate(180%); border-bottom: 1px solid var(--hairline); }
.pub-header-in { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 64px; }
.pub-brand { display: inline-flex; align-items: center; gap: 10px; font-weight: 700; letter-spacing: -.02em; color: var(--text); text-decoration: none; font-size: 1.0625rem; }
.pub-nav { display: flex; align-items: center; gap: 8px; }
.pub-link { color: var(--text); text-decoration: none; font-weight: 500; padding: 10px 8px; border-radius: 8px; }
.pub-link:hover { color: var(--accent); }
.pub-hero { padding: clamp(56px, 12vw, 128px) 0 clamp(40px, 8vw, 80px); text-align: center; background: radial-gradient(ellipse 70% 60% at 50% 0%, var(--bg-glow), transparent 70%); }
.pub-eyebrow { font-size: .8125rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--accent); margin-bottom: 12px; }
.pub-h1 { font-size: clamp(2.25rem, 7vw, 4rem); font-weight: 700; letter-spacing: -.04em; line-height: 1.05; max-width: 14ch; margin: 0 auto 16px; text-wrap: balance; }
.pub-lead { font-size: clamp(1.0625rem, 2.5vw, 1.3125rem); color: var(--text-2); max-width: 46ch; margin: 0 auto 28px; line-height: 1.45; }
.pub-cta { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }
.pub-cta .btn-lg { min-height: 52px; padding-inline: 28px; font-size: 1.0625rem; }
.pub-section { padding: clamp(40px, 7vw, 72px) 0; }
.pub-section.pub-tight { padding-top: 24px; }
.pub-alt { background: var(--surface-solid); border-block: 1px solid var(--hairline); }
.pub-section-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 20px; }
.pub-h2 { font-size: clamp(1.5rem, 4vw, 2.125rem); font-weight: 700; letter-spacing: -.03em; margin: 0; text-wrap: balance; }
.pub-more { text-decoration: none; font-weight: 600; white-space: nowrap; }
.pub-back { display: inline-flex; align-items: center; gap: 6px; text-decoration: none; color: var(--text-2); margin-bottom: 16px; min-height: 44px; }
.pub-back:hover { color: var(--accent); }
.pub-filter { display: flex; flex-wrap: wrap; gap: 8px; align-items: stretch; }
.pub-filter > * { min-width: 0; }
.pub-filter .flex-grow-1 { flex: 1 1 220px; }
.pub-empty { text-align: center; color: var(--text-2); padding: 56px 16px; }
.pub-empty i { font-size: 2.5rem; display: block; margin-bottom: 8px; }

.ev-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: 20px; }
.ev-card { display: flex; flex-direction: column; background: var(--surface-solid); border-radius: var(--r-card); overflow: hidden; box-shadow: var(--shadow-sm); text-decoration: none; color: var(--text); transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease); }
.ev-card:hover { transform: translateY(-3px); box-shadow: var(--shadow); color: var(--text); }
.ev-card:focus-visible { outline: 3px solid rgba(var(--accent-rgb), .5); outline-offset: 2px; }
.ev-media { aspect-ratio: 16 / 9; background: linear-gradient(135deg, rgba(var(--accent-rgb), .16), rgba(var(--accent-rgb), .04)); display: grid; place-items: center; overflow: hidden; }
.ev-media img { width: 100%; height: 100%; object-fit: cover; }
.ev-date-block { display: grid; place-items: center; width: 72px; height: 72px; border-radius: 18px; background: var(--surface-solid); box-shadow: var(--shadow-sm); text-transform: uppercase; font-size: .75rem; font-weight: 700; letter-spacing: .06em; color: var(--accent); line-height: 1; padding-top: 12px; }
.ev-date-block b { font-size: 1.75rem; letter-spacing: -.03em; color: var(--text); margin-bottom: -10px; }
.ev-body { padding: 16px 20px 20px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.ev-meta { font-size: .8125rem; color: var(--text-2); }
.ev-title { font-size: 1.1875rem; font-weight: 650; letter-spacing: -.02em; margin: 0; line-height: 1.25; overflow-wrap: anywhere; }
.ev-venue { font-size: .875rem; color: var(--text-2); }
.ev-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: auto; padding-top: 12px; }
.ev-price { font-weight: 650; }
.ev-go { color: var(--accent); font-weight: 600; font-size: .9375rem; }

.pub-steps { list-style: none; padding: 0; margin: 24px 0 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 24px; }
.pub-steps h3 { font-size: 1.0625rem; font-weight: 650; margin: 12px 0 4px; letter-spacing: -.01em; }
.pub-steps p { margin: 0; color: var(--text-2); }
.pub-step-n { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: rgba(var(--accent-rgb), .12); color: var(--accent); font-weight: 700; }
.pub-two { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: 20px; margin-top: 20px; }
.pub-panel { background: var(--surface-solid); border-radius: var(--r-card); padding: 24px; box-shadow: var(--shadow-sm); display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.pub-panel h3 { font-size: 1.1875rem; font-weight: 650; margin: 0; letter-spacing: -.02em; }
.pub-panel p { color: var(--text-2); margin: 0 0 8px; }

.ev-detail { display: grid; grid-template-columns: minmax(0, 1fr); gap: 24px; }
@media (min-width: 992px) { .ev-detail { grid-template-columns: minmax(0, 1fr) 380px; gap: 40px; align-items: start; } .ev-ticket { position: sticky; top: 88px; } }
.ev-hero-img { width: 100%; max-height: 420px; object-fit: cover; border-radius: var(--r-card); margin-bottom: 20px; }
.ev-facts { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; }
.ev-facts li { display: flex; gap: 12px; align-items: flex-start; }
.ev-facts i { font-size: 1.25rem; color: var(--accent); margin-top: 2px; }
.ev-desc { max-width: 68ch; line-height: 1.6; overflow-wrap: anywhere; }
.ev-speakers { padding-left: 1.1rem; }
.ev-ticket { background: var(--surface-solid); border-radius: var(--r-card); padding: 20px; box-shadow: var(--shadow); }
.tix-list { border: 0; padding: 0; margin: 0; display: grid; gap: 8px; }
.tix-option { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 14px; background: var(--fill); border: 2px solid transparent; cursor: pointer; min-height: 56px; transition: border-color var(--t) var(--ease), background var(--t) var(--ease); }
.tix-option input { accent-color: var(--accent); width: 18px; height: 18px; flex: none; }
.tix-option:has(input:checked) { border-color: var(--accent); background: rgba(var(--accent-rgb), .08); }
.tix-option.is-off { opacity: .55; cursor: not-allowed; }
.tix-body { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.tix-name { font-weight: 600; overflow-wrap: anywhere; }
.tix-sub { font-size: .8125rem; color: var(--text-2); }
.tix-price { font-weight: 700; white-space: nowrap; }

.pub-footer { border-top: 1px solid var(--hairline); padding: 32px 0; margin-top: 24px; background: var(--surface-solid); }
.pub-footer-in { display: flex; flex-wrap: wrap; gap: 20px 40px; align-items: flex-start; justify-content: space-between; }
.pub-footer-links { display: flex; flex-wrap: wrap; gap: 8px 20px; }
.pub-footer-links a { color: var(--text); text-decoration: none; }
.pub-footer-links a:hover { color: var(--accent); }
@media (max-width: 575.98px) { .pub-wrap { padding-inline: 16px; } .pub-header-in { min-height: 56px; } }
@media (prefers-reduced-motion: reduce) { .ev-card, .tix-option, .role-card { transition: none; } .ev-card:hover { transform: none; } }

/* ---- polish: small-screen header, role cards ---- */
fieldset.role-fieldset, .register-box fieldset { border: 0; padding: 0; margin: 0 0 1rem; min-width: 0; }
.role-card strong { overflow-wrap: normal; word-break: normal; hyphens: none; white-space: nowrap; }
.role-card { padding: 12px 10px; }
.pub-brand, .pub-nav .btn, .pub-link { white-space: nowrap; }
.pub-brand { min-width: 0; }
@media (max-width: 575.98px) {
  .pub-nav { gap: 4px; }
  .pub-nav .pub-link-events { display: none; }
  .pub-nav .btn { padding: 8px 12px; font-size: .875rem; min-height: 40px; }
  .pub-link { padding: 10px 6px; font-size: .9375rem; }
  .pub-brand-text { white-space: nowrap; font-size: 1rem; }
}
.pub-brand .brand-mark { flex: none; }

/* ---- calendar ---- */
.cal-bar { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.cal-title { margin: 0; }
.cal-controls { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.cal-nav { display: flex; gap: 6px; align-items: center; }
.cal-seg { display: inline-flex; background: var(--fill); border-radius: 10px; padding: 3px; }
.cal-seg a { padding: 7px 16px; border-radius: 8px; text-decoration: none; color: var(--text-2); font-weight: 600; font-size: .9375rem; min-height: 36px; display: inline-flex; align-items: center; }
.cal-seg a.is-on { background: var(--surface-solid); color: var(--text); box-shadow: var(--shadow-sm); }

.cal-month { background: var(--surface-solid); border-radius: var(--r-card); box-shadow: var(--shadow-sm); overflow: hidden; }
.cal-head, .cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.cal-head div { padding: 10px 8px; font-size: .75rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--text-2); text-align: center; border-bottom: 1px solid var(--hairline); }
.cal-scroll { position: relative; max-height: min(72vh, 720px); overflow-y: auto; overscroll-behavior: contain; scroll-snap-type: y proximity; scrollbar-width: thin; }
.cal-scroll:focus-visible { outline: 3px solid rgba(var(--accent-rgb), .5); outline-offset: -3px; }
.cal-mblock { scroll-snap-align: start; }
.cal-mblock:last-child { min-height: min(72vh, 720px); }
.cal-mh { position: sticky; top: 0; z-index: 2; margin: 0; padding: 12px 16px; font-size: 1rem; font-weight: 650; letter-spacing: -.01em; background: var(--surface-solid); border-bottom: 1px solid var(--hairline); }
.cal-nav a[aria-disabled="true"] { opacity: .4; pointer-events: none; }
.cal-cell { position: relative; min-height: 112px; padding: 6px; border-right: 1px solid var(--hairline); border-bottom: 1px solid var(--hairline); display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.cal-cell:nth-child(7n) { border-right: 0; }
.cal-cell.is-blank { background: var(--fill); opacity: .5; }
.cal-day { font-size: .8125rem; font-weight: 600; color: var(--text-2); width: 26px; height: 26px; display: grid; place-items: center; border-radius: 50%; }
.cal-cell.is-today .cal-day { background: var(--accent); color: #fff; }
.cal-chip { display: block; padding: 2px 6px; border-radius: 6px; font-size: .75rem; line-height: 1.35; font-weight: 600; text-decoration: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; background: rgba(var(--accent-rgb), .12); color: var(--accent); }
.cal-chip:hover { background: rgba(var(--accent-rgb), .22); color: var(--accent); }
.cal-chip.is-mine { background: var(--accent); color: #fff; }
.cal-chip.st-draft { background: transparent; border: 1px dashed var(--text-2); color: var(--text-2); }
.cal-chip.st-cancelled { background: var(--fill); color: var(--text-2); text-decoration: line-through; }
.cal-chip.st-completed, .cal-chip.st-archived { background: var(--fill); color: var(--text-2); }
.cal-chip:focus-visible, .cal-item:focus-visible, .cal-mini h2 a:focus-visible, .cal-mini-d:focus-visible { outline: 3px solid rgba(var(--accent-rgb), .5); outline-offset: 1px; }
.cal-more { font-size: .75rem; color: var(--text-2); padding-left: 6px; }
.cal-dot { display: none; }

.cal-agenda-h { font-size: 1.125rem; font-weight: 650; margin: 28px 0 12px; letter-spacing: -.02em; }
.cal-agenda { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; }
.cal-item { display: flex; align-items: center; gap: 14px; padding: 12px 14px; background: var(--surface-solid); border-radius: 14px; box-shadow: var(--shadow-sm); text-decoration: none; color: var(--text); min-height: 64px; }
.cal-item:hover { box-shadow: var(--shadow); color: var(--text); }
.cal-item.st-draft, .cal-item.st-cancelled, .cal-item.st-completed, .cal-item.st-archived { opacity: .7; }
.cal-item-date { flex: none; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 12px; background: rgba(var(--accent-rgb), .10); color: var(--accent); font-size: .6875rem; font-weight: 700; text-transform: uppercase; line-height: 1; padding-top: 6px; }
.cal-item-date b { font-size: 1.125rem; color: var(--text); margin-bottom: -6px; }
.cal-item-body { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.cal-item-title { font-weight: 600; overflow-wrap: anywhere; }
.cal-item-meta { font-size: .8125rem; color: var(--text-2); overflow-wrap: anywhere; }

.cal-year { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 230px), 1fr)); gap: 16px; }
.cal-mini { background: var(--surface-solid); border-radius: var(--r-card); box-shadow: var(--shadow-sm); padding: 14px 14px 12px; }
.cal-mini h2 { font-size: 1rem; font-weight: 650; margin: 0 0 8px; letter-spacing: -.01em; }
.cal-mini h2 a { color: var(--text); text-decoration: none; }
.cal-mini h2 a:hover { color: var(--accent); }
.cal-mini-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; text-align: center; }
.cal-mini-dn { font-size: .6875rem; color: var(--text-2); font-weight: 600; padding-bottom: 2px; }
.cal-mini-d { font-size: .75rem; line-height: 26px; height: 26px; border-radius: 50%; color: var(--text); text-decoration: none; font-variant-numeric: tabular-nums; }
.cal-mini-d.has-ev { background: rgba(var(--accent-rgb), .18); color: var(--accent); font-weight: 700; }
.cal-mini-d.has-ev:hover { background: var(--accent); color: #fff; }
.cal-mini-d.is-today { box-shadow: inset 0 0 0 2px var(--accent); }
.cal-mini-count { margin: 8px 0 0; font-size: .8125rem; color: var(--text-2); }

@media (max-width: 767.98px) {
  .cal-cell { min-height: 52px; align-items: center; padding: 4px 2px; }
  .cal-chip, .cal-more { display: none; }
  .cal-dot { display: grid; place-items: center; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 10px; background: var(--accent); color: #fff; font-size: .6875rem; font-weight: 700; }
  .cal-scroll { max-height: min(70vh, 560px); }
  .cal-mblock:last-child { min-height: min(70vh, 560px); }
  .cal-mh { padding: 10px 12px; }
  .cal-head div { padding: 8px 0; font-size: .6875rem; letter-spacing: 0; }
}
@media (min-width: 768px) { .cal-agenda-h { margin-top: 32px; } }
@media (max-width: 399.98px) { .pub-header-in { gap: 6px; } .pub-brand { gap: 8px; } .pub-brand-text { font-size: .9375rem; } .pub-nav .icon-btn { width: 36px; height: 36px; } }
