/* =================================================================
 *  StorybookOS — unified stylesheet
 *  -----------------------------------------------------------------
 *  One CSS file for the entire site. Edit colours and spacing in the
 *  :root variables at the top. Cascade order is:
 *
 *    1. Reset + base typography
 *    2. CSS variables (the design tokens)
 *    3. StorybookOS chrome (nav, cards, tables, forms, buttons,
 *       alerts, login/admin pages)
 *    4. Switchboard tool styles (guest list, import wizard, status)
 *    5. ZoomBot tool styles (form, log, status, world clocks)
 *
 *  Most class names live in exactly one of those sections. If a name
 *  is reused, the later section wins.
 * =================================================================
 */

* {
    box-sizing:border-box
}
body {
    margin:0;
    font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
    background:#f7f5ef;
    color:#171717
}
.sb-topnav {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1rem;
    background:#fff;
    color:#000;
    border-bottom:2px solid #000;
    padding:.75rem 1rem;
    position:sticky;
    top:0;
    z-index:1000
}
.sb-brand {
    font-weight:800;
    color:#000;
    text-decoration:none
}
.sb-links {
    display:flex;
    gap:.5rem;
    flex-wrap:wrap
}
.sb-links a {
    color:#000;
    text-decoration:none;
    border:1px solid #000;
    border-radius:999px;
    padding:.35rem .7rem;
    background:#fff
}
.sb-links a:hover {
    background:#000;
    color:#fff
}
.sb-page {
    max-width:1100px;
    margin:2rem auto;
    padding:0 1rem
}
.sb-card {
    background:#fff;
    border:1px solid #222;
    border-radius:12px;
    padding:1rem;
    margin:1rem 0;
    box-shadow:0 2px 0 #000
}
.sb-table {
    width:100%;
    border-collapse:collapse;
    background:#fff
}
.sb-table th, .sb-table td {
    border-bottom:1px solid #ddd;
    text-align:left;
    padding:.6rem
}
.sb-button, button, input[type=submit] {
    border:1px solid #000;
    background:#000;
    color:#fff;
    border-radius:6px;
    padding:.55rem .8rem;
    cursor:pointer;
    text-decoration:none
}
input, select, textarea {
    border:1px solid #777;
    border-radius:6px;
    padding:.5rem;
    max-width:100%
}
.sb-form-row {
    margin:.75rem 0
}
.sb-alert {
    padding:.75rem;
    border:1px solid #000;
    background:#fffbe8;
    border-radius:8px
}
.sb-error {
    background:#ffecec
}
.sb-muted {
    color:#666
}
.page {
    padding-top:1rem
}
header .brand {
    display:inline-flex;
    margin-top:.5rem
}
.zb-nav {
    margin-top:.5rem
}
@media(max-width:700px) {
    .sb-topnav {
        align-items:flex-start;
        flex-direction:column
    }
    .sb-links a {
        font-size:1rem;
        padding:.6rem .8rem
    }
    .sb-table {
        font-size:.95rem
    }
}

/* =================================================================
 *  StorybookOS — extended chrome
 *  Login page, admin tables, OK/FAIL cells, helpers.
 * =================================================================
 */
.sb-body-login          { background: #f7f5ef; }
.sb-page-login          { max-width: 460px; }
.sb-card-login          { padding: 1.5rem; }

.sb-list                { list-style: none; padding-left: 0; margin: 0; }
.sb-list li             { padding: .4rem 0; border-bottom: 1px solid #eee; }
.sb-list li:last-child  { border-bottom: 0; }
.sb-list a              { text-decoration: none; }

.sb-form                { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.sb-form input,
.sb-form select,
.sb-form button         { padding: .45rem .6rem; }
.sb-form-row            { margin: .5rem 0; }
.sb-form-row input,
.sb-form-row select     { width: 100%; padding: .55rem .7rem; font-size: 1rem; }

.sb-form-inline         { display: inline-flex; gap: .25rem; align-items: center; margin: .15rem; }

.sb-button              { display: inline-block; padding: .5rem .9rem; border: 1px solid #000; background: #fff; color: #000; border-radius: 999px; cursor: pointer; font: inherit; text-decoration: none; }
.sb-button:hover        { background: #000; color: #fff; }
.sb-button-small        { padding: .25rem .55rem; font-size: .85em; }

.sb-alert               { padding: .7rem .9rem; border-radius: 6px; background: #eef3ff; margin: 1rem 0; }
.sb-error               { background: #fbeded; color: #9a1f1f; }
.sb-success             { background: #edf5ee; color: #2b6e3a; }

.sb-muted               { color: #777; }
.sb-table               { width: 100%; border-collapse: collapse; margin-top: 1rem; }
.sb-table th,
.sb-table td            { padding: .55rem .7rem; border-bottom: 1px solid #eee; text-align: left; vertical-align: top; }
.sb-table th            { background: #fafafa; font-weight: 700; }

.sb-ok                  { color: #2b6e3a; font-weight: 700; }
.sb-fail                { color: #a83232; font-weight: 700; }

.sb-cell-perms          { min-width: 280px; }
.sb-log-output          { white-space: pre-wrap; word-break: break-all; max-height: 320px; overflow: auto; font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: .85em; }


/* =================================================================
 *  Switchboard tool styles
 *  (Originally switchboard/lookandfeel.css. Kept under the original
 *  selectors so all switchboard/*.php and lib/*.php continue to render.)
 * =================================================================
 */
/* ===================================================================
ZoomBot — lookandfeel.css
Single stylesheet for all pages. Edit colours, fonts, and spacing
here; changes apply across index.php, log.php, and status.php.
Bump the ?v= query string in each page's <link> tag after editing
if browsers serve a stale cached version.
Sections:
1. CSS variables (colours, radii, fonts)
2. Base / reset
3. Layout (page widths per route)
4. Typography (h1, eyebrow, subtitle)
5. Brand pill
6. Nav + footer
7. Form components (inputs, radios, steps)
8. Buttons (submit, CTA, cancel, copy)
9. Alert / success card
10. Meta + copy rows + invite text
11. World clocks
12. Log page (entries, filters)
13. Status page (summary, checks)
14. Animations + reduced motion
=================================================================== */
:root  {
    --bg:           #f7f4ef;
    --surface:      #ffffff;
    --surface-2:    #faf8f4;
    --ink:          #1c1d1a;
    --ink-soft:     #4a4b48;
    --muted:        #8a8b86;
    --line:         #e6e1d6;
    --line-strong:  #d4cdbd;
    --accent:       #2b6e3a;
    --accent-hover: #235c30;
    --accent-soft:  #e8f0e9;
    --danger:       #b3281e;
    --danger-hover: #921e16;
    --danger-soft:  #fbecea;
    --ok-bg:        #edf5ee;
    --err-bg:       #fbeded;
    --ok:           #2b6e3a;
    --err:          #a83232;
    --warn:         #a86c00;
    --warn-bg:      #faf3e2;
    --radius:       10px;
    --radius-sm:    6px;
    --serif: 'Fraunces',  'Iowan Old Style',  Georgia,  serif;
    --sans:  'Manrope',  -apple-system,  BlinkMacSystemFont,  'Segoe UI',  sans-serif;
    --mono:  ui-monospace,  'SF Mono',  Menlo,  monospace;
}

html,  body  {
    height: 100%;
}
body  {
    margin: 0;
    font-family: var(--sans);
    font-size: 16px;
    line-height: 1.5;
    color: var(--ink);
    background: var(--bg);
    background-image:
    radial-gradient(at 15% 0%,  rgba(43,  110,  58,  0.04) 0%,  transparent 50%),
    radial-gradient(at 95% 100%,  rgba(168,  130,  60,  0.05) 0%,  transparent 45%);
    background-attachment: fixed;
    -webkit-font-smoothing: antialiased;
}
.page  {
    max-width: 1000px;
    margin: 0 auto;
    padding: 2.5rem 1rem 3.5rem;
}
@media (max-width: 540px)  {
    .page  {
        padding: 1.5rem 0.85rem 2.5rem;
    }
}
/* --- Header --- */
header  {
    margin-bottom: 2.25rem;
}
.brand  {
    display: inline-flex;
    align-items: center;
    gap: 0.7rem;
    font-size: 1.70rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    /* text-transform: uppercase; */
    color: #295BF6;
    margin: 0 0 1.1rem;
    padding: 0.55rem 1.1rem;
    background: #eaf0ff;
    border-radius: 999px;
    text-decoration: none;
    transition: background 0.15s,  transform 0.05s;
}
.brand:hover   {
    background: #d8e3ff;
}
.brand:active  {
    transform: translateY(1px);
}
.brand:visited  {
    color: #295BF6;
}
.brand-dot  {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: #ff1f1f;
    box-shadow: 0 0 0 0 rgba(255,  31,  31,  0.6);
    animation: pulse 2s infinite;
}
@keyframes pulse  {
    0%    {
        box-shadow: 0 0 0 0 rgba(255,  31,  31,  0.6);
    }
    70%   {
        box-shadow: 0 0 0 6px rgba(255,  31,  31,  0);
    }
    100%  {
        box-shadow: 0 0 0 0 rgba(255,  31,  31,  0);
    }
}
h1  {
    font-family: var(--serif);
    font-weight: 500;
    font-variation-settings: 'opsz' 96;
    font-size: clamp(1.85rem,  4.5vw,  2.5rem);
    line-height: 1.1;
    letter-spacing: -0.02em;
    margin: 0 0 0.6rem;
}
h1 em  {
    font-style: italic;
    color: var(--ink-soft);
    font-weight: 400;
}
.subtitle  {
    color: var(--ink-soft);
    font-size: 0.95rem;
    margin: 0;
}
.subtitle strong  {
    color: var(--ink);
    font-weight: 600;
}
.tz-pill  {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    margin-top: 0.85rem;
    padding: 0.35rem 0.7rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 999px;
    font-size: 0.82rem;
    color: var(--ink-soft);
}
.tz-pill svg  {
    color: var(--accent);
}
.tz-pill code  {
    font-family: var(--mono);
    font-size: 0.78rem;
    color: var(--ink);
}
/* --- Card --- */
.card  {
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: 2rem;
    box-shadow: 0 1px 0 rgba(28,  29,  26,  0.02),  0 4px 24px -8px rgba(28,  29,  26,  0.06);
    margin-bottom: 1.25rem;
}
@media (max-width: 540px)  {
    .card  {
        padding: 1.5rem 1.25rem;
    }
}
/* --- Form --- */
.step  {
    position: relative;
    margin-bottom: 1.25rem;
    padding: 1.25rem 1.25rem 1.4rem;
    background: var(--surface-2);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
}
.step:last-of-type  {
    margin-bottom: 1.75rem;
}
@media (max-width: 540px)  {
    .step  {
        padding: 1rem 1rem 1.15rem;
    }
}
.step-head  {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    margin-bottom: 0.85rem;
}
.step-num  {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--accent);
    color: #fff;
    font-size: 0.72rem;
    font-weight: 700;
    flex-shrink: 0;
}
.step-title  {
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--ink);
    margin: 0;
}
.field  {
    margin-bottom: 0;
}
label.lbl  {
    display: block;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--ink-soft);
    margin-bottom: 0.65rem;
}
input[type="text"],
input[type="time"],
input[type="number"],
input[type="date"],
select  {
    width: 100%;
    padding: 0.85rem 0.95rem;
    font-family: var(--sans);
    font-size: 1rem;
    font-weight: 500;
    color: var(--ink);
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    transition: border-color 0.15s,  background 0.15s,  box-shadow 0.15s;
    appearance: none;
    -webkit-appearance: none;
}
input:hover,  select:hover  {
    border-color: var(--line-strong);
}
input:focus,  select:focus  {
    outline: 0;
    background: var(--surface);
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-soft);
}
input::placeholder  {
    color: var(--muted);
    font-weight: 400;
}
/* --- Generic radio groups (studio + date) --- */
.radios  {
    display: grid;
    gap: 0.5rem;
}
.radios.studios  {
    grid-template-columns: repeat(auto-fill,  minmax(190px,  1fr));
}
.radios.dates    {
    grid-template-columns: repeat(auto-fill,  minmax(160px,  1fr));
}
.radio-item  {
    position: relative;
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.85rem 1rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all 0.15s;
    font-weight: 500;
    user-select: none;
}
.radio-item:hover  {
    border-color: var(--line-strong);
}
.radio-item input  {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
.radio-dot  {
    width: 16px;
    height: 16px;
    border-radius: 50%;
    border: 1.5px solid var(--line-strong);
    background: var(--surface);
    flex-shrink: 0;
    transition: all 0.15s;
    position: relative;
}
.radio-item.checked  {
    background: var(--accent-soft);
    border-color: var(--accent);
    color: var(--accent);
}
.radio-item.checked .radio-dot  {
    border-color: var(--accent);
    background: var(--accent);
}
.radio-item.checked .radio-dot::after  {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%,  -50%);
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--surface);
}
.radio-content  {
    display: flex;
    flex-direction: column;
    line-height: 1.25;
}
.radio-content small  {
    display: block;
    font-size: 0.72rem;
    font-weight: 500;
    color: var(--muted);
    letter-spacing: 0;
    margin-top: 2px;
    font-family: var(--mono);
    text-transform: none;
}
.radio-item.checked .radio-content small  {
    color: var(--accent);
}
/* --- Custom date toggle --- */
.date-or  {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin: 0.85rem 0;
    color: var(--muted);
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
.date-or::before,  .date-or::after  {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--line);
}
.custom-date-row  {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}
.custom-date-row input[type="date"]  {
    flex: 1;
}
.custom-date-clear  {
    padding: 0.5rem 0.85rem;
    font-family: var(--sans);
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--ink-soft);
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all 0.15s;
}
.custom-date-clear:hover  {
    background: var(--bg);
    border-color: var(--line-strong);
}
.row  {
    display: grid;
    grid-template-columns: 1fr 140px;
    gap: 1rem;
}
@media (max-width: 480px)  {
    .row  {
        grid-template-columns: 1fr;
    }
}
.help  {
    font-size: 0.82rem;
    color: var(--muted);
    margin-top: 0.4rem;
}
.char-counter  {
    display: block;
    text-align: right;
    font-size: 0.78rem;
    color: var(--muted);
    margin-top: 0.35rem;
}
.char-counter.warn  {
    color: var(--danger);
}
/* --- Submit --- */
.submit  {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    width: 100%;
    padding: 1.15rem 1.25rem;
    font-family: var(--sans);
    font-size: 1.05rem;
    font-weight: 700;
    color: #fff;
    background: var(--accent);
    border: 0;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: background 0.15s,  transform 0.05s,  box-shadow 0.15s;
    box-shadow: 0 1px 0 rgba(0, 0, 0, 0.05),  0 2px 8px -2px rgba(43,  110,  58,  0.4);
}
.submit:hover:not(:disabled)  {
    background: var(--accent-hover);
    box-shadow: 0 1px 0 rgba(0, 0, 0, 0.05),  0 4px 16px -4px rgba(43,  110,  58,  0.5);
}
.submit:active:not(:disabled)  {
    transform: translateY(1px);
}
.submit:disabled  {
    opacity: 0.5;
    cursor: not-allowed;
}
.submit svg  {
    transition: transform 0.2s;
}
.submit:hover:not(:disabled) svg  {
    transform: translateX(2px);
}
/* --- Alerts / success card --- */
.alert  {
    border-radius: var(--radius);
    padding: 1.75rem 1.75rem 1.6rem;
    margin-bottom: 1.25rem;
    border: 1px solid;
    animation: slideIn 0.3s ease-out;
}
@media (max-width: 540px)  {
    .alert  {
        padding: 1.4rem 1.25rem 1.3rem;
    }
}
@keyframes slideIn  {
    from  {
        opacity: 0;
        transform: translateY(-6px);
    }
    to    {
        opacity: 1;
        transform: translateY(0);
    }
}
.alert.ok         {
    border-color: rgba(43,  110,  58,  0.25);
    background: var(--ok-bg);
}
.alert.cancelled  {
    border-color: var(--line-strong);
    background: var(--surface-2);
}
.alert.err        {
    border-color: rgba(179,  40,  30,  0.25);
    background: var(--err-bg);
}
.alert h2.headline  {
    font-family: var(--serif);
    font-weight: 600;
    font-size: clamp(1.5rem,  4vw,  1.85rem);
    line-height: 1.1;
    letter-spacing: -0.015em;
    margin: 0 0 0.4rem;
    color: var(--accent);
}
.alert.cancelled h2.headline  {
    color: var(--ink);
}
.alert.err       h2.headline  {
    color: var(--danger);
}
.alert .sub  {
    color: var(--ink-soft);
    margin: 0 0 1.25rem;
    font-size: 0.95rem;
}
.alert .sub strong  {
    color: var(--ink);
    font-weight: 600;
}
.imminent-warn  {
    margin: 0 0 1rem;
    padding: 0.7rem 0.9rem;
    background: rgba(255,  200,  0,  0.12);
    border: 1px solid rgba(180,  130,  0,  0.3);
    border-radius: var(--radius-sm);
    font-size: 0.88rem;
    color: #6b4f00;
}
.meta  {
    display: grid;
    grid-template-columns: max-content 1fr;
    gap: 0.55rem 1.25rem;
    font-size: 0.92rem;
    margin: 0 0 1rem;
    padding: 0.95rem 1.1rem;
    background: rgba(255,  255,  255,  0.6);
    border-radius: var(--radius-sm);
}
.meta dt  {
    color: var(--ink-soft);
    font-weight: 500;
}
.meta dd  {
    margin: 0;
    word-break: break-word;
    font-weight: 600;
}
.meta code  {
    font-family: var(--mono);
    font-size: 0.88rem;
    background: rgba(0, 0, 0, 0.04);
    padding: 1px 6px;
    border-radius: 3px;
}
.copy-row  {
    display: flex;
    gap: 0.5rem;
    align-items: stretch;
    margin-top: 0.6rem;
}
.copy-row input  {
    flex: 1;
    font-family: var(--mono);
    font-size: 0.82rem;
    padding: 0.65rem 0.8rem;
    background: rgba(255,  255,  255,  0.7);
    border-color: var(--line);
}
.copy-row button  {
    width: auto;
    padding: 0 1rem;
    font-family: var(--sans);
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--ink);
    background: var(--surface);
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all 0.15s;
    white-space: nowrap;
    min-width: 110px;
}
.copy-row button:hover  {
    background: var(--ink);
    color: var(--surface);
    border-color: var(--ink);
}
.copy-row button.copied  {
    background: var(--accent);
    color: #fff;
    border-color: var(--accent);
}
.copy-label  {
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--ink-soft);
    margin: 0.95rem 0 0.35rem;
}
/* --- World clock grid --- */
.clocks-title  {
    font-family: var(--serif);
    font-weight: 500;
    font-size: 1rem;
    letter-spacing: -0.01em;
    color: var(--ink-soft);
    margin: 1.25rem 0 0.6rem;
}
.clocks  {
    display: grid;
    grid-template-columns: repeat(auto-fill,  minmax(170px,  1fr));
    gap: 0.5rem;
    margin: 0;
    padding: 0;
    list-style: none;
}
.clock  {
    background: rgba(255,  255,  255,  0.55);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    padding: 0.65rem 0.85rem;
}
.clock.same  {
    background: var(--accent-soft);
    border-color: rgba(43,  110,  58,  0.3);
}
.clock-city  {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--ink-soft);
    margin-bottom: 0.15rem;
}
.clock-offset  {
    font-family: var(--mono);
    font-size: 0.7rem;
    color: var(--muted);
    text-transform: none;
    letter-spacing: 0;
}
.clock.same .clock-offset  {
    color: var(--accent);
    font-weight: 700;
}
.clock-time  {
    font-family: var(--serif);
    font-weight: 500;
    font-size: 1rem;
    color: var(--ink);
    line-height: 1.2;
}
/* --- Cancel button --- */
.danger-zone  {
    margin-top: 1.5rem;
    padding-top: 1.25rem;
    border-top: 1px dashed var(--line-strong);
}
.cancel-btn  {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0.95rem 1.25rem;
    font-family: var(--sans);
    font-size: 0.95rem;
    font-weight: 700;
    color: #fff;
    background: var(--danger);
    border: 0;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: background 0.15s,  transform 0.05s;
    box-shadow: 0 2px 8px -2px rgba(179,  40,  30,  0.4);
}
.cancel-btn:hover  {
    background: var(--danger-hover);
}
.cancel-btn:active  {
    transform: translateY(1px);
}
.cancel-btn:disabled  {
    opacity: 0.5;
    cursor: not-allowed;
}
.cancel-confirm  {
    margin-bottom: 0.75rem;
    padding: 0.75rem 1rem;
    background: var(--danger-soft);
    border: 1px solid rgba(179,  40,  30,  0.25);
    border-radius: var(--radius-sm);
    color: var(--danger);
    font-size: 0.88rem;
    text-align: center;
    font-weight: 600;
}
.cancel-actions  {
    display: flex;
    gap: 0.5rem;
}
.cancel-actions button  {
    flex: 1;
}
.cancel-keep  {
    padding: 0.95rem 1.25rem;
    font-weight: 600;
    color: var(--ink);
    background: var(--surface);
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-sm);
    cursor: pointer;
}
.cancel-keep:hover  {
    background: var(--surface-2);
}
.empty-note  {
    color: var(--muted);
    font-size: 0.92rem;
    padding: 0.85rem 1rem;
    background: var(--surface-2);
    border-radius: var(--radius-sm);
    border: 1px dashed var(--line-strong);
}
.empty-note code  {
    font-family: var(--mono);
    font-size: 0.85rem;
    background: rgba(0, 0, 0, 0.04);
    padding: 1px 6px;
    border-radius: 3px;
}
footer  {
    text-align: center;
    color: var(--muted);
    font-size: 0.78rem;
    margin-top: 1rem;
}
.page > *  {
    animation: fadeUp 0.4s ease-out backwards;
}
.page > header  {
    animation-delay: 0.05s;
}
.page > .alert  {
    animation-delay: 0.1s;
}
.page > .card   {
    animation-delay: 0.15s;
}
.page > footer  {
    animation-delay: 0.25s;
}
@keyframes fadeUp  {
    from  {
        opacity: 0;
        transform: translateY(8px);
    }
    to    {
        opacity: 1;
        transform: translateY(0);
    }
}
@media (prefers-reduced-motion: reduce)  {
    *,  *::before,  *::after  {
        animation-duration: 0.01ms !important;
        transition-duration: 0.01ms !important;
    }
    .brand-dot  {
        animation: none;
    }
}
/* --- Make-another-meeting CTA --- */
.cta-again  {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: 100%;
    padding: 1.05rem 1.25rem;
    margin-bottom: 1.25rem;
    font-family: var(--sans);
    font-size: 1rem;
    font-weight: 700;
    color: var(--accent);
    background: var(--surface);
    border: 1.5px solid var(--accent);
    border-radius: var(--radius-sm);
    text-decoration: none;
    transition: all 0.15s;
}
.cta-again:hover  {
    background: var(--accent-soft);
}
.cta-again::after  {
    content: '→';
    font-size: 1.1rem;
    transition: transform 0.2s;
}
.cta-again:hover::after  {
    transform: translateX(3px);
}
/* --- Invite text block --- */
.invite-text  {
    width: 100%;
    margin-top: 0.6rem;
    padding: 0.85rem 1rem;
    font-family: var(--mono);
    font-size: 0.82rem;
    line-height: 1.55;
    color: var(--ink);
    background: rgba(255,  255,  255,  0.7);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    resize: vertical;
    white-space: pre;
    overflow-x: auto;
}
.invite-text:focus  {
    outline: 0;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-soft);
    background: #fff;
}
.invite-copy-btn  {
    width: 100%;
    margin-top: 0.5rem;
    padding: 0.7rem 1rem;
    font-family: var(--sans);
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--ink);
    background: var(--surface);
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all 0.15s;
}
.invite-copy-btn:hover  {
    background: var(--ink);
    color: var(--surface);
    border-color: var(--ink);
}
.invite-copy-btn.copied  {
    background: var(--accent);
    color: #fff;
    border-color: var(--accent);
}
/* ===================================================================
Log page — overrides + entry-specific styles
=================================================================== */
body.page-log .subtitle  {
    margin-bottom: 2rem;
}
.log-controls  {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1.5rem;
    flex-wrap: wrap;
}
.cleared-banner  {
    padding: 0.85rem 1.1rem;
    margin-bottom: 1.25rem;
    background: var(--ok-bg);
    border: 1px solid rgba(43,  110,  58,  0.25);
    border-radius: var(--radius-sm);
    color: var(--ok);
    font-size: 0.9rem;
    font-weight: 600;
}
.filters  {
    display: flex;
    gap: 0.4rem;
    padding: 0.3rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 999px;
    width: fit-content;
}
.filters a  {
    padding: 0.5rem 1.1rem;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--ink-soft);
    text-decoration: none;
    border-radius: 999px;
    transition: background 0.15s,  color 0.15s;
}
.filters a:hover  {
    background: var(--surface-2);
    color: var(--ink);
}
.filters a.active  {
    background: var(--accent);
    color: #fff;
}
.filters a .count  {
    margin-left: 0.45rem;
    padding: 0.05rem 0.4rem;
    background: rgba(0,  0,  0,  0.08);
    border-radius: 999px;
    font-size: 0.72rem;
}
.filters a.active .count  {
    background: rgba(255,  255,  255,  0.25);
}
/* Clear-log button — subtle by default, confirmation step is red */
.clear-zone  {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}
.clear-btn  {
    padding: 0.55rem 1rem;
    font-family: var(--sans);
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--ink-soft);
    background: var(--surface);
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all 0.15s;
}
.clear-btn:hover  {
    background: var(--danger-soft);
    border-color: var(--danger);
    color: var(--danger);
}
.clear-confirm  {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 0.6rem 0.4rem 0.95rem;
    background: var(--danger-soft);
    border: 1px solid rgba(179,  40,  30,  0.25);
    border-radius: var(--radius-sm);
}
.clear-confirm > span  {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--danger);
}
.clear-keep  {
    padding: 0.4rem 0.75rem;
    font-family: var(--sans);
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--ink);
    background: var(--surface);
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-sm);
    cursor: pointer;
}
.clear-keep:hover  {
    background: var(--surface-2);
}
.clear-confirm-btn  {
    padding: 0.4rem 0.85rem;
    font-family: var(--sans);
    font-size: 0.78rem;
    font-weight: 700;
    color: #fff;
    background: var(--danger);
    border: 0;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: background 0.15s;
}
.clear-confirm-btn:hover  {
    background: var(--danger-hover);
}
.empty  {
    background: var(--surface);
    border: 1px dashed var(--line-strong);
    border-radius: var(--radius);
    padding: 3rem 1.5rem;
    text-align: center;
    color: var(--muted);
}
.empty h3  {
    font-family: var(--serif);
    font-weight: 500;
    color: var(--ink-soft);
    margin: 0 0 0.5rem;
    font-size: 1.25rem;
}
.entries  {
    list-style: none;
    padding: 0;
    margin: 0;
}
.entry  {
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: 1.25rem 1.4rem;
    margin-bottom: 0.85rem;
    transition: border-color 0.15s;
}
.entry:hover  {
    border-color: var(--line-strong);
}
.entry.cancelled  {
    background: var(--surface-2);
    opacity: 0.7;
}
.entry.cancelled .topic  {
    text-decoration: line-through;
}
.entry-head  {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 0.6rem;
}
.topic  {
    font-family: var(--serif);
    font-weight: 600;
    font-size: 1.1rem;
    line-height: 1.25;
    margin: 0;
    color: var(--ink);
}
.pill  {
    display: inline-flex;
    flex-shrink: 0;
    padding: 0.2rem 0.6rem;
    background: var(--accent-soft);
    color: var(--accent);
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    border-radius: 999px;
}
.pill.cancelled  {
    background: var(--danger-soft);
    color: var(--danger);
}
.meta-row  {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem 1.25rem;
    font-size: 0.85rem;
    color: var(--ink-soft);
    margin-bottom: 0.85rem;
}
.meta-row span strong  {
    color: var(--ink);
    font-weight: 600;
}
.meta-row code  {
    font-family: var(--mono);
    font-size: 0.78rem;
    background: rgba(0,  0,  0,  0.04);
    padding: 1px 5px;
    border-radius: 3px;
}
.join-row  {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}
.join-link  {
    flex: 1;
    padding: 0.55rem 0.75rem;
    font-family: var(--mono);
    font-size: 0.78rem;
    color: var(--ink);
    background: var(--surface-2);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.copy-mini  {
    padding: 0.55rem 0.95rem;
    font-family: var(--sans);
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--ink);
    background: var(--surface);
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-sm);
    cursor: pointer;
    white-space: nowrap;
    transition: all 0.15s;
}
.copy-mini:hover   {
    background: var(--ink);
    color: var(--surface);
    border-color: var(--ink);
}
.copy-mini.copied  {
    background: var(--accent);
    color: #fff;
    border-color: var(--accent);
}
/* Brought in from _partials */
/* ===================================================================
Status page — overrides + check-specific styles
=================================================================== */
body.page-status .subtitle  {
    margin-bottom: 2rem;
}
.summary  {
    padding: 1.4rem 1.5rem;
    border-radius: var(--radius);
    border: 1px solid;
    margin-bottom: 1.5rem;
}
.summary.ok   {
    background: var(--ok-bg);
    border-color: rgba(43,  110,  58,  0.25);
}
.summary.err  {
    background: var(--err-bg);
    border-color: rgba(168,  50,  50,  0.25);
}
.summary h2  {
    font-family: var(--serif);
    font-weight: 500;
    font-size: 1.4rem;
    margin: 0 0 0.4rem;
}
.summary.ok  h2  {
    color: var(--ok);
}
.summary.err h2  {
    color: var(--err);
}
.summary p  {
    margin: 0;
    color: var(--ink-soft);
    font-size: 0.92rem;
}
h2.section  {
    font-family: var(--serif);
    font-weight: 500;
    font-size: 1.15rem;
    margin: 1.75rem 0 0.75rem;
    color: var(--ink-soft);
}
.checks  {
    list-style: none;
    padding: 0;
    margin: 0;
}
.check  {
    display: flex;
    align-items: flex-start;
    gap: 0.85rem;
    padding: 0.95rem 1.1rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    margin-bottom: 0.5rem;
}
.indicator  {
    flex-shrink: 0;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-weight: 700;
    font-size: 0.78rem;
    margin-top: 1px;
}
.indicator.ok    {
    background: var(--ok);
}
.indicator.err   {
    background: var(--err);
}
.indicator.skip  {
    background: var(--muted);
}
.check-body  {
    flex: 1;
    min-width: 0;
}
.check-name  {
    font-weight: 600;
    color: var(--ink);
    margin: 0 0 0.15rem;
}
.check-detail  {
    color: var(--ink-soft);
    font-size: 0.86rem;
    margin: 0;
    word-break: break-word;
}
.check-detail code  {
    font-family: var(--mono);
    font-size: 0.8rem;
    background: rgba(0,  0,  0,  0.04);
    padding: 1px 5px;
    border-radius: 3px;
}
.check-email  {
    font-family: var(--mono);
    font-size: 0.78rem;
    color: var(--muted);
    margin: 0.15rem 0 0;
}
.refresh  {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    margin-top: 1.5rem;
    padding: 0.7rem 1.1rem;
    font-family: var(--sans);
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--ink);
    background: var(--surface);
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-sm);
    text-decoration: none;
    transition: all 0.15s;
}
.refresh:hover  {
    background: var(--ink);
    color: var(--surface);
    border-color: var(--ink);
}
/* ===================================================================
Nav bar + footer (shown on every page)
=================================================================== */
.zb-nav  {
    display: flex;
    gap: 0.4rem;
    margin: 0 0 1.75rem;
    padding: 0.3rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 999px;
    width: fit-content;
}
.zb-nav a  {
    padding: 0.45rem 0.95rem;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--ink-soft);
    text-decoration: none;
    border-radius: 999px;
    transition: background 0.15s,  color 0.15s;
}
.zb-nav a:hover  {
    background: var(--surface-2);
    color: var(--ink);
}
.zb-nav a.active  {
    background: var(--ink);
    color: var(--surface);
}
.zb-nav a.active:hover  {
    background: var(--ink);
}
.zb-footer  {
    text-align: center;
    color: var(--muted);
    font-size: 0.78rem;
    margin-top: 1.5rem;
}
.zb-footer strong  {
    color: var(--ink-soft);
    font-weight: 600;
}
@media (max-width: 540px)  {
    .zb-nav  {
        width: 100%;
        justify-content: space-between;
    }
    .zb-nav a  {
        flex: 1;
        text-align: center;
        padding: 0.5rem 0.5rem;
    }
}
/* let's adjust the look of the title */
h1 em  {
    font-style: italic;
    font-weight: 500;
    background: linear-gradient(to right,  #d83933 0%,  #683381 50%,  #3f529e 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    padding-right: 0.25em;
    display: inline-block;
}
/* ===================================================================
Switchboard — additions on top of the ZoomBot look-and-feel.
All colours/fonts inherit from the variables in :root above.
=================================================================== */
/* --- Deployment switcher pill (header right side) --- */
.deployment-pill  {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.85rem;
    margin-left: 0.5rem;
    padding: 0.35rem 0.4rem 0.35rem 0.85rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 999px;
    font-size: 0.82rem;
    color: var(--ink-soft);
}
.deployment-pill .label  {
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    font-size: 0.72rem;
    color: var(--muted);
}
.deployment-pill select  {
    appearance: none;
    -webkit-appearance: none;
    border: 1px solid var(--line-strong);
    background: var(--surface-2);
    border-radius: 999px;
    padding: 0.25rem 1.85rem 0.25rem 0.7rem;
    font-family: var(--sans);
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--ink);
    cursor: pointer;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%231c1d1a' stroke-width='1.5' fill='none' stroke-linecap='round'/></svg>");
    background-repeat: no-repeat;
    background-position: right 0.55rem center;
}
.deployment-pill select:focus  {
    outline: 0;
    border-color: var(--accent);
}
/* --- Top toolbar (search + filters above the guest grid) --- */
.toolbar  {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    align-items: center;
    margin-bottom: 1.25rem;
}
.toolbar .search  {
    flex: 1 1 260px;
    min-width: 220px;
}
.toolbar .search input  {
    padding: 0.7rem 0.95rem;
    border-radius: 999px;
    background: var(--surface);
}
.toolbar select  {
    flex: 0 0 auto;
    width: auto;
    padding: 0.55rem 2rem 0.55rem 0.95rem;
    border-radius: 999px;
    background-color: var(--surface);
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%234a4b48' stroke-width='1.5' fill='none' stroke-linecap='round'/></svg>");
    background-repeat: no-repeat;
    background-position: right 0.85rem center;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--ink);
}
.toolbar .toggle-group  {
    display: inline-flex;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 999px;
    padding: 0.25rem;
    gap: 0.2rem;
}
.toolbar .toggle-group label  {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.4rem 0.85rem;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--ink-soft);
    cursor: pointer;
    user-select: none;
}
.toolbar .toggle-group input  {
    display: none;
}
.toolbar .toggle-group input:checked + span  {
    background: var(--ink);
    color: var(--surface);
}
.toolbar .toggle-group span  {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.35rem 0.85rem;
    border-radius: 999px;
    transition: background 0.15s,  color 0.15s;
}
.toolbar .toggle-group input:checked + span.vip       {
    background: #a8782b;
    color: #fff;
}
.toolbar .toggle-group input:checked + span.dnp       {
    background: var(--danger);
    color: #fff;
}
.toolbar .toggle-group input:checked + span.media     {
    background: var(--accent);
    color: #fff;
}
.toolbar .toggle-group input:checked + span.starred   {
    background: #683381;
    color: #fff;
}
.toolbar .clear-filters  {
    margin-left: auto;
    padding: 0.5rem 0.95rem;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--ink-soft);
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 999px;
    text-decoration: none;
}
.toolbar .clear-filters:hover  {
    background: var(--surface-2);
    color: var(--ink);
}
.toolbar .add-btn  {
    padding: 0.55rem 1rem;
    font-size: 0.85rem;
    font-weight: 700;
    color: #fff;
    background: var(--accent);
    border: 0;
    border-radius: 999px;
    cursor: pointer;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    box-shadow: 0 2px 8px -2px rgba(43,  110,  58,  0.4);
}
.toolbar .add-btn:hover  {
    background: var(--accent-hover);
}
.results-count  {
    font-size: 0.82rem;
    color: var(--muted);
    margin: 0 0 0.85rem;
}
/* --- Guest grid + cards --- */
.guest-grid  {
    display: grid;
    grid-template-columns: repeat(auto-fill,  minmax(320px,  1fr));
    gap: 0.85rem;
}
@media (min-width: 900px)   {
    .guest-grid  {
        grid-template-columns: repeat(2,  1fr);
    }
}
@media (min-width: 1200px)  {
    .guest-grid  {
        grid-template-columns: repeat(3,  1fr);
    }
}
.guest-card  {
    position: relative;
    display: flex;
    flex-direction: column;
    background: var(--surface);
    border: 1px solid var(--line);
    border-left: 4px solid var(--line-strong);
    /* handler colour overrides this */
    border-radius: var(--radius);
    padding: 1.1rem 1.2rem 1rem;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s,  transform 0.05s,  box-shadow 0.15s;
}
.guest-card:hover  {
    border-color: var(--line-strong);
    box-shadow: 0 1px 0 rgba(28, 29, 26, 0.02),  0 6px 20px -8px rgba(28, 29, 26, 0.12);
}
.guest-card.dnp  {
    background: repeating-linear-gradient(135deg,  var(--surface),  var(--surface) 10px,  var(--surface-2) 10px,  var(--surface-2) 20px);
}
.guest-flags  {
    position: absolute;
    top: 0.7rem;
    right: 0.85rem;
    display: inline-flex;
    gap: 0.35rem;
    align-items: center;
}
.flag-vip  {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.15rem 0.5rem 0.15rem 0.4rem;
    background: linear-gradient(135deg,  #d4a73a 0%,  #a8782b 100%);
    color: #fff;
    font-size: 0.66rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    border-radius: 999px;
    box-shadow: 0 2px 6px -2px rgba(168,  120,  43,  0.5);
}
.flag-vip::before  {
    content: '★';
    font-size: 0.78rem;
}
.flag-star  {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    background: var(--surface);
    border: 1px solid var(--line-strong);
    border-radius: 50%;
    color: #683381;
    font-size: 0.85rem;
    line-height: 1;
}
.flag-dnp  {
    display: inline-flex;
    align-items: center;
    padding: 0.15rem 0.5rem;
    background: var(--danger-soft);
    color: var(--danger);
    font-size: 0.66rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    border-radius: 999px;
    border: 1px solid rgba(179,  40,  30,  0.25);
}
.guest-name  {
    font-family: var(--serif);
    font-weight: 600;
    font-size: 1.15rem;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--ink);
    margin: 0 4rem 0.25rem 0;
    /* leave room for the flag corner */
    word-wrap: break-word;
}
.guest-name .designation  {
    font-style: italic;
    font-weight: 400;
    color: var(--ink-soft);
    margin-right: 0.3rem;
}
.guest-title  {
    font-size: 0.92rem;
    color: var(--ink-soft);
    margin: 0 0 0.55rem;
    line-height: 1.35;
}
.guest-title strong  {
    color: var(--ink);
    font-weight: 600;
}
.guest-bio  {
    font-size: 0.88rem;
    color: var(--ink-soft);
    margin: 0 0 0.85rem;
    line-height: 1.45;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.guest-chips  {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem;
    margin: 0 0 0.7rem;
}
.guest-chips .pill  {
    padding: 0.15rem 0.55rem;
    font-size: 0.66rem;
    letter-spacing: 0.05em;
}
.pill.country   {
    background: #eef0ed;
    color: var(--ink);
    border: 1px solid var(--line);
}
.pill.sector    {
    background: #fbeed5;
    color: #6b4f00;
}
.pill.market    {
    background: #eaf0ff;
    color: #295BF6;
}
.pill.media     {
    background: var(--accent-soft);
    color: var(--accent);
}
.guest-foot  {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: auto;
    padding-top: 0.65rem;
    border-top: 1px dashed var(--line);
    font-size: 0.78rem;
    color: var(--muted);
}
.guest-foot .lead  {
    color: var(--ink-soft);
    font-weight: 600;
}
.guest-foot .lead em  {
    color: var(--muted);
    font-style: normal;
    font-weight: 400;
}
.handler-pill  {
    font-size: 0.66rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    padding: 0.18rem 0.55rem;
    text-transform: uppercase;
}
/* --- Designation custom input toggle --- */
.designation-row  {
    display: grid;
    grid-template-columns: 220px 1fr;
    gap: 0.6rem;
    align-items: start;
}
@media (max-width: 540px)  {
    .designation-row  {
        grid-template-columns: 1fr;
    }
}
/* --- Markets multi-select chips --- */
.market-chips  {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-top: 0.4rem;
}
.market-chips label  {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.4rem 0.8rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 999px;
    font-size: 0.82rem;
    font-weight: 500;
    color: var(--ink-soft);
    cursor: pointer;
    user-select: none;
    transition: all 0.15s;
}
.market-chips label:hover  {
    border-color: var(--line-strong);
}
.market-chips input  {
    display: none;
}
.market-chips input:checked + span  {
    /* nothing — handled on the wrapping label via :has() */
}
.market-chips label:has(input:checked)  {
    background: #eaf0ff;
    border-color: #295BF6;
    color: #295BF6;
    font-weight: 600;
}
/* --- Contacts panel inside Edit/Add Guest --- */
.contact-blocks  {
    display: grid;
    gap: 0.85rem;
}
.contact-block  {
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    padding: 1rem 1.1rem;
}
.contact-block h4  {
    margin: 0 0 0.6rem;
    font-family: var(--sans);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--ink-soft);
}
.contact-grid  {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.6rem;
}
@media (max-width: 540px)  {
    .contact-grid  {
        grid-template-columns: 1fr;
    }
}
/* --- Two-column form rows --- */
.form-row  {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.7rem;
}
.form-row.three   {
    grid-template-columns: 1fr 1fr 1fr;
}
@media (max-width: 540px)  {
    .form-row,  .form-row.three  {
        grid-template-columns: 1fr;
    }
}
/* --- Flag toggle row inside Add/Edit --- */
.flag-row  {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}
.flag-toggle  {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.55rem 1rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 999px;
    cursor: pointer;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--ink-soft);
    user-select: none;
    transition: all 0.15s;
}
.flag-toggle input  {
    display: none;
}
.flag-toggle:has(input:checked)  {
    background: var(--ink);
    color: #fff;
    border-color: var(--ink);
}
.flag-toggle.vip:has(input:checked)    {
    background: linear-gradient(135deg, #d4a73a, #a8782b);
    border-color: #a8782b;
    color: #fff;
}
.flag-toggle.dnp:has(input:checked)    {
    background: var(--danger);
    border-color: var(--danger);
    color: #fff;
}
.flag-toggle.star:has(input:checked)   {
    background: #683381;
    border-color: #683381;
    color: #fff;
}
.flag-toggle.media:has(input:checked)  {
    background: var(--accent);
    border-color: var(--accent);
    color: #fff;
}
/* --- Edit-page secondary buttons --- */
.btn-secondary  {
    padding: 0.85rem 1.25rem;
    font-family: var(--sans);
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--ink);
    background: var(--surface);
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-sm);
    cursor: pointer;
    text-decoration: none;
    transition: all 0.15s;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.btn-secondary:hover  {
    background: var(--surface-2);
}
.button-row  {
    display: flex;
    gap: 0.6rem;
    flex-wrap: wrap;
}
.button-row .submit  {
    flex: 1;
    min-width: 220px;
}
/* --- Import wizard steps --- */
.wizard-progress  {
    display: flex;
    gap: 0.5rem;
    margin-bottom: 1.5rem;
    flex-wrap: wrap;
}
.wizard-step  {
    flex: 1;
    min-width: 120px;
    padding: 0.7rem 0.95rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--muted);
    text-align: center;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}
.wizard-step.active    {
    background: var(--accent);
    color: #fff;
    border-color: var(--accent);
}
.wizard-step.done      {
    background: var(--accent-soft);
    color: var(--accent);
    border-color: rgba(43, 110, 58, 0.25);
}
.wizard-step .num      {
    font-family: var(--mono);
    margin-right: 0.35rem;
}
/* --- Mapping table (import step 2) --- */
.mapping-table  {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.88rem;
}
.mapping-table th,  .mapping-table td  {
    padding: 0.65rem 0.5rem;
    text-align: left;
    border-bottom: 1px solid var(--line);
}
.mapping-table th  {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--ink-soft);
    background: var(--surface-2);
}
.mapping-table .col-header  {
    font-weight: 600;
    color: var(--ink);
}
.mapping-table select  {
    width: 100%;
    padding: 0.45rem 0.6rem;
    font-size: 0.85rem;
}
.mapping-table .auto-tag  {
    display: inline-block;
    margin-top: 0.25rem;
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--accent);
}
/* --- Preview table (import step 3) --- */
.preview-totals  {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 1rem;
}
.preview-totals .stat  {
    padding: 0.5rem 0.95rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    font-size: 0.85rem;
}
.preview-totals .stat strong  {
    font-size: 1.1rem;
}
.preview-totals .stat.new     {
    background: var(--accent-soft);
    color: var(--accent);
    border-color: rgba(43, 110, 58, 0.25);
}
.preview-totals .stat.update  {
    background: #eaf0ff;
    color: #295BF6;
    border-color: rgba(41, 91, 246, 0.2);
}
.preview-totals .stat.skip    {
    background: var(--surface-2);
    color: var(--ink-soft);
}
.preview-totals .stat.error   {
    background: var(--err-bg);
    color: var(--err);
    border-color: rgba(168, 50, 50, 0.25);
}
.preview-table  {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.85rem;
}
.preview-table th,  .preview-table td  {
    padding: 0.55rem 0.6rem;
    text-align: left;
    border-bottom: 1px solid var(--line);
    vertical-align: top;
}
.preview-table th  {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--ink-soft);
    background: var(--surface-2);
}
.preview-table .status-pill  {
    display: inline-block;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}
.preview-table .status-new     {
    background: var(--accent-soft);
    color: var(--accent);
}
.preview-table .status-update  {
    background: #eaf0ff;
    color: #295BF6;
}
.preview-table .status-skip    {
    background: var(--surface-2);
    color: var(--muted);
}
.preview-table .status-error   {
    background: var(--danger-soft);
    color: var(--danger);
}
.preview-table .err-msg  {
    color: var(--danger);
    font-size: 0.78rem;
}
.preview-table .new-handler-tag  {
    display: inline-block;
    margin-left: 0.3rem;
    padding: 0 0.35rem;
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    background: var(--warn-bg);
    color: var(--warn);
    border-radius: 3px;
}
/* --- Dashboard tiles --- */
.dash-grid  {
    display: grid;
    grid-template-columns: repeat(auto-fill,  minmax(220px,  1fr));
    gap: 0.85rem;
    margin-bottom: 1.5rem;
}
.dash-tile  {
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: 1.1rem 1.25rem;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s,  box-shadow 0.15s;
    display: block;
}
.dash-tile:hover  {
    border-color: var(--line-strong);
    box-shadow: 0 1px 0 rgba(28, 29, 26, 0.02),  0 4px 18px -6px rgba(28, 29, 26, 0.1);
}
.dash-tile .num  {
    font-family: var(--serif);
    font-weight: 500;
    font-size: 2.25rem;
    line-height: 1;
    color: var(--ink);
}
.dash-tile .label  {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--ink-soft);
    margin-top: 0.4rem;
}
.dash-tile .hint  {
    font-size: 0.82rem;
    color: var(--muted);
    margin-top: 0.25rem;
}
/* --- Handler swatch in handlers.php --- */
.handler-card  {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    padding: 0.95rem 1.1rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    margin-bottom: 0.55rem;
}
.handler-swatch  {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    flex-shrink: 0;
    border: 2px solid #fff;
    box-shadow: 0 0 0 1px var(--line-strong);
}
.handler-info  {
    flex: 1;
    min-width: 0;
}
.handler-info strong  {
    font-size: 1rem;
}
.handler-info small  {
    display: block;
    color: var(--muted);
    font-size: 0.82rem;
    margin-top: 0.15rem;
}
.handler-actions  {
    display: inline-flex;
    gap: 0.35rem;
}
.handler-actions a,  .handler-actions button  {
    padding: 0.4rem 0.85rem;
    font-size: 0.78rem;
    font-weight: 600;
    border: 1px solid var(--line-strong);
    background: var(--surface);
    border-radius: var(--radius-sm);
    color: var(--ink);
    text-decoration: none;
    cursor: pointer;
}
.handler-actions a:hover,  .handler-actions button:hover  {
    background: var(--surface-2);
}
/* --- Empty state shared style --- */
.empty-card  {
    background: var(--surface);
    border: 1px dashed var(--line-strong);
    border-radius: var(--radius);
    padding: 2.5rem 1.5rem;
    text-align: center;
    color: var(--muted);
}
.empty-card h3  {
    font-family: var(--serif);
    font-weight: 500;
    color: var(--ink-soft);
    margin: 0 0 0.4rem;
    font-size: 1.2rem;
}
.empty-card a  {
    display: inline-block;
    margin-top: 0.85rem;
    padding: 0.7rem 1.1rem;
    font-size: 0.88rem;
    font-weight: 700;
    background: var(--accent);
    color: #fff;
    text-decoration: none;
    border-radius: var(--radius-sm);
}
.empty-card a:hover  {
    background: var(--accent-hover);
}
/* --- Tighten things on phones --- */
@media (max-width: 540px)  {
    .toolbar  {
        gap: 0.4rem;
    }
    .toolbar select  {
        font-size: 0.78rem;
        padding: 0.5rem 1.6rem 0.5rem 0.75rem;
    }
    .guest-card  {
        padding: 1rem 1rem 0.85rem;
    }
    .guest-name  {
        margin-right: 5.5rem;
    }
}
/* =====================================================================
v2 additions — bulk selection, trash, import warnings, mobile pass
===================================================================== */
/* ---- Bulk-selection checkbox on each guest card ---- */
.guest-card  {
    position: relative;
    /* anchor for the checkbox + the new <a> wrapper */
}
.guest-card-link  {
    /* The actual link area inside the card. The card itself is now a <div> so
    that an interactive checkbox can sit alongside the link. */
    display: block;
    color: inherit;
    text-decoration: none;
}
.guest-card-link:hover  {
    color: inherit;
}
.guest-select  {
    position: absolute;
    top: 0.55rem;
    left: 0.55rem;
    width: 1.5rem;
    height: 1.5rem;
    z-index: 2;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 6px;
    opacity: 0;
    /* invisible until hover or selection */
    transition: opacity 0.15s ease;
}
.guest-card:hover .guest-select,
.guest-card.is-selected .guest-select  {
    opacity: 1;
}
.guest-select input  {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
.guest-select-box  {
    width: 1.25rem;
    height: 1.25rem;
    border: 2px solid var(--ink,  #1c1d1a);
    border-radius: 5px;
    background: rgba(255, 255, 255, 0.85);
    display: inline-block;
    position: relative;
}
.guest-select input:checked + .guest-select-box  {
    background: var(--accent,  #295BF6);
    border-color: var(--accent,  #295BF6);
}
.guest-select input:checked + .guest-select-box::after  {
    content: '';
    position: absolute;
    inset: 0;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='white' d='M6.5 11.5L3 8l1-1 2.5 2.5L12 4l1 1z'/></svg>");
    background-size: 100%;
    background-repeat: no-repeat;
}
.guest-card.is-selected  {
    box-shadow: 0 0 0 2px var(--accent,  #295BF6);
}
/* ---- Sticky bulk action bar ---- */
.bulk-form  {
    position: relative;
}
.bulk-bar  {
    position: sticky;
    bottom: 0.6rem;
    z-index: 30;
    margin: 1.2rem 0 0;
    padding: 0.7rem 0.9rem;
    background: #1c1d1a;
    color: #fffaf0;
    border-radius: 10px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.7rem;
    box-shadow: 0 12px 30px -10px rgba(0, 0, 0, 0.4);
    font-size: 0.92rem;
}
.bulk-bar[hidden]  {
    display: none;
}
.bulk-count  {
    font-weight: 600;
    padding-right: 0.6rem;
    border-right: 1px solid rgba(255, 255, 255, 0.18);
}
.bulk-clear  {
    background: transparent;
    border: 1px solid rgba(255, 255, 255, 0.3);
    color: #fffaf0;
    padding: 0.35rem 0.7rem;
    border-radius: 6px;
    cursor: pointer;
    font-size: 0.85rem;
}
.bulk-clear:hover  {
    background: rgba(255, 255, 255, 0.08);
}
.bulk-control  {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    background: rgba(255, 255, 255, 0.08);
    padding: 0.3rem 0.5rem 0.3rem 0.6rem;
    border-radius: 8px;
}
.bulk-control select  {
    background: #2a2b27;
    color: #fffaf0;
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 5px;
    padding: 0.3rem 0.5rem;
    font-size: 0.85rem;
}
.bulk-do  {
    background: #fffaf0;
    color: #1c1d1a;
    border: none;
    padding: 0.4rem 0.75rem;
    border-radius: 6px;
    cursor: pointer;
    font-size: 0.85rem;
    font-weight: 600;
}
.bulk-do:hover  {
    background: #f0e9d8;
}
.bulk-flag-group  {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 0.3rem;
}
.bulk-flag-btn  {
    padding: 0.35rem 0.6rem;
    font-size: 0.78rem;
    font-weight: 500;
}
.bulk-export  {
    background: #2b6e3a;
    color: #fff;
}
.bulk-export:hover  {
    background: #265e32;
}
.bulk-danger  {
    background: #a8323f;
    color: #fff;
}
.bulk-danger:hover  {
    background: #8e2a35;
}
/* ---- Trash page ---- */
.trash-link  {
    align-self: center;
    padding: 0.55rem 0.85rem;
    border-radius: 8px;
    text-decoration: none;
    color: var(--muted,  #8a8b86);
    font-size: 0.88rem;
    border: 1px solid transparent;
}
.trash-link:hover  {
    background: var(--surface-2,  #f4f1e8);
    color: var(--ink,  #1c1d1a);
}
.trash-toolbar  {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
    margin: 1rem 0;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--border,  #ddd6c0);
}
.trash-toolbar .results-count  {
    margin: 0;
    flex-grow: 1;
}
.inline-form  {
    display: inline;
    margin: 0;
}
.btn-secondary  {
    padding: 0.45rem 0.85rem;
    border-radius: 7px;
    border: 1px solid var(--border,  #ddd6c0);
    background: var(--surface,  #fffaf0);
    color: var(--ink,  #1c1d1a);
    cursor: pointer;
    font-size: 0.88rem;
}
.btn-secondary:hover  {
    background: var(--surface-2,  #f4f1e8);
}
.btn-danger  {
    padding: 0.45rem 0.85rem;
    border-radius: 7px;
    border: none;
    background: #a8323f;
    color: #fff;
    cursor: pointer;
    font-size: 0.88rem;
}
.btn-danger:hover  {
    background: #8e2a35;
}
.btn-danger:disabled  {
    background: #d0d0d0;
    color: #888;
    cursor: not-allowed;
}
.btn-danger-outline  {
    padding: 0.45rem 0.85rem;
    border-radius: 7px;
    border: 1px solid #a8323f;
    background: transparent;
    color: #a8323f;
    cursor: pointer;
    font-size: 0.88rem;
}
.btn-danger-outline:hover  {
    background: #a8323f;
    color: #fff;
}
.btn-link  {
    background: none;
    border: none;
    color: var(--accent,  #295BF6);
    cursor: pointer;
    padding: 0;
    font-size: 0.9rem;
    text-decoration: underline;
}
.trash-table  {
    width: 100%;
    border-collapse: collapse;
    margin-top: 0.5rem;
}
.trash-table th,  .trash-table td  {
    text-align: left;
    padding: 0.6rem 0.5rem;
    border-bottom: 1px solid var(--border,  #ddd6c0);
    font-size: 0.92rem;
}
.trash-table th  {
    font-weight: 600;
    color: var(--muted,  #8a8b86);
    font-size: 0.82rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.trash-table .muted  {
    color: var(--muted,  #8a8b86);
    font-size: 0.85rem;
}
.trash-foot-help  {
    margin-top: 1.5rem;
    padding: 0.85rem 1rem;
    background: var(--surface-2,  #f4f1e8);
    border-radius: 8px;
    font-size: 0.85rem;
    color: var(--muted,  #8a8b86);
    line-height: 1.55;
}
/* ---- Import preview: warnings + auto-fixes ---- */
.stat.warn  {
    color: #8a6b0c;
}
.stat.fix   {
    color: #2b6e3a;
}
.warn-msg  {
    color: #8a6b0c;
    background: #fff8e1;
    border-left: 3px solid #d4a017;
    padding: 0.25rem 0.55rem;
    margin: 0.2rem 0;
    border-radius: 4px;
    font-size: 0.85rem;
}
.fix-msg  {
    color: #2b6e3a;
    background: #ebf5ec;
    border-left: 3px solid #2b6e3a;
    padding: 0.25rem 0.55rem;
    margin: 0.2rem 0;
    border-radius: 4px;
    font-size: 0.85rem;
}
/* =====================================================================
Mobile pass — tighter at <= 768px, single column <= 540px
===================================================================== */
@media (max-width: 768px)  {
    .page  {
        padding-left: 0.85rem;
        padding-right: 0.85rem;
    }
    header h1  {
        font-size: 1.6rem;
    }
    .subtitle  {
        font-size: 0.92rem;
    }
    /* Toolbar wraps to multiple lines and each control is full width */
    .toolbar  {
        flex-direction: column;
        align-items: stretch;
        gap: 0.55rem;
    }
    .toolbar .search  {
        width: 100%;
    }
    .toolbar .search input  {
        width: 100%;
        box-sizing: border-box;
        padding: 0.7rem 0.9rem;
        font-size: 1rem;
    }
    .toolbar select  {
        width: 100%;
        padding: 0.65rem 1.8rem 0.65rem 0.8rem;
        font-size: 0.95rem;
    }
    .toolbar .toggle-group  {
        justify-content: flex-start;
        flex-wrap: wrap;
    }
    .toolbar .add-btn,
    .toolbar .clear-filters,
    .toolbar .trash-link  {
        width: 100%;
        text-align: center;
        box-sizing: border-box;
        padding: 0.7rem 0.9rem;
        font-size: 0.95rem;
    }
    /* Bulk bar: stack and pin to the bottom of the viewport on mobile */
    .bulk-bar  {
        position: fixed;
        left: 0.6rem;
        right: 0.6rem;
        bottom: 0.6rem;
        margin: 0;
        padding: 0.6rem 0.75rem;
        gap: 0.5rem;
        font-size: 0.85rem;
    }
    .bulk-bar .bulk-count  {
        width: 100%;
        padding-right: 0;
        border-right: none;
    }
    .bulk-control  {
        flex: 1 1 auto;
    }
    .bulk-flag-group  {
        flex: 1 1 100%;
        justify-content: flex-start;
    }
    /* Trash page: action buttons go full-width and stack */
    .trash-toolbar  {
        flex-direction: column;
        align-items: stretch;
    }
    .trash-toolbar .btn-secondary,
    .trash-toolbar .btn-danger,
    .trash-toolbar .btn-danger-outline  {
        width: 100%;
    }
    .trash-table thead  {
        display: none;
    }
    .trash-table,  .trash-table tbody,  .trash-table tr,  .trash-table td  {
        display: block;
        width: 100%;
    }
    .trash-table tr  {
        border: 1px solid var(--border,  #ddd6c0);
        border-radius: 8px;
        padding: 0.6rem 0.75rem;
        margin-bottom: 0.6rem;
    }
    .trash-table td  {
        border: none;
        padding: 0.25rem 0;
    }
    .trash-table td:first-child  {
        font-size: 1rem;
    }
    /* Make the always-visible checkbox bigger and visible on mobile (no hover) */
    .guest-select  {
        opacity: 1;
    }
    .guest-select-box  {
        width: 1.5rem;
        height: 1.5rem;
    }
    /* Make sure card content isn't covered by the fixed bulk bar */
    .bulk-form  {
        padding-bottom: 5.5rem;
    }
    /* Import preview table: scrollable */
    .preview-table  {
        display: block;
        overflow-x: auto;
    }
    /* Make body text in cards a touch bigger */
    .guest-card  {
        padding: 1rem;
    }
    .guest-name  {
        font-size: 1.05rem;
    }
    .guest-title  {
        font-size: 0.92rem;
    }
}
@media (max-width: 540px)  {
    .toolbar .toggle-group  {
        gap: 0.35rem;
    }
    .toolbar .toggle-group label  {
        flex: 1 0 auto;
    }
    .bulk-flag-group .bulk-flag-btn  {
        flex: 1 1 auto;
    }
    .bulk-do  {
        padding: 0.5rem 0.7rem;
    }
    /* fatter touch targets */
}


/* =================================================================
 *  ZoomBot tool styles
 *  (Originally zoombot/lookandfeel.css. The shared :root and reset
 *  blocks above already set the design tokens; these rules add the
 *  ZoomBot-specific form, log, and status styling.)
 * =================================================================
 */
/* ===================================================================
ZoomBot — lookandfeel.css
Single stylesheet for all pages. Edit colours, fonts, and spacing
here; changes apply across index.php, log.php, and status.php.
Bump the ?v= query string in each page's <link> tag after editing
if browsers serve a stale cached version.
Sections:
1. CSS variables (colours, radii, fonts)
2. Base / reset
3. Layout (page widths per route)
4. Typography (h1, eyebrow, subtitle)
5. Brand pill
6. Nav + footer
7. Form components (inputs, radios, steps)
8. Buttons (submit, CTA, cancel, copy)
9. Alert / success card
10. Meta + copy rows + invite text
11. World clocks
12. Log page (entries, filters)
13. Status page (summary, checks)
14. Animations + reduced motion
=================================================================== */


html,  body  {
    height: 100%;
}
body  {
    margin: 0;
    font-family: var(--sans);
    font-size: 16px;
    line-height: 1.5;
    color: var(--ink);
    background: var(--bg);
    background-image:
    radial-gradient(at 15% 0%,  rgba(43,  110,  58,  0.04) 0%,  transparent 50%),
    radial-gradient(at 95% 100%,  rgba(168,  130,  60,  0.05) 0%,  transparent 45%);
    background-attachment: fixed;
    -webkit-font-smoothing: antialiased;
}
.page  {
    max-width: 1000px;
    margin: 0 auto;
    padding: 2.5rem 1rem 3.5rem;
}
@media (max-width: 540px)  {
    .page  {
        padding: 1.5rem 0.85rem 2.5rem;
    }
}
/* --- Header --- */
header  {
    margin-bottom: 2.25rem;
}
.brand  {
    display: inline-flex;
    align-items: center;
    gap: 0.7rem;
    font-size: 1.70rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    /* text-transform: uppercase; */
    color: #295BF6;
    margin: 0 0 1.1rem;
    padding: 0.55rem 1.1rem;
    background: #eaf0ff;
    border-radius: 999px;
    text-decoration: none;
    transition: background 0.15s,  transform 0.05s;
}
.brand:hover   {
    background: #d8e3ff;
}
.brand:active  {
    transform: translateY(1px);
}
.brand:visited  {
    color: #295BF6;
}
.brand-dot  {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: #ff1f1f;
    box-shadow: 0 0 0 0 rgba(255,  31,  31,  0.6);
    animation: pulse 2s infinite;
}
@keyframes pulse  {
    0%    {
        box-shadow: 0 0 0 0 rgba(255,  31,  31,  0.6);
    }
    70%   {
        box-shadow: 0 0 0 6px rgba(255,  31,  31,  0);
    }
    100%  {
        box-shadow: 0 0 0 0 rgba(255,  31,  31,  0);
    }
}
h1  {
    font-family: var(--serif);
    font-weight: 500;
    font-variation-settings: 'opsz' 96;
    font-size: clamp(1.85rem,  4.5vw,  2.5rem);
    line-height: 1.1;
    letter-spacing: -0.02em;
    margin: 0 0 0.6rem;
}
h1 em  {
    font-style: italic;
    color: var(--ink-soft);
    font-weight: 400;
}
.subtitle  {
    color: var(--ink-soft);
    font-size: 0.95rem;
    margin: 0;
}
.subtitle strong  {
    color: var(--ink);
    font-weight: 600;
}
.tz-pill  {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    margin-top: 0.85rem;
    padding: 0.35rem 0.7rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 999px;
    font-size: 0.82rem;
    color: var(--ink-soft);
}
.tz-pill svg  {
    color: var(--accent);
}
.tz-pill code  {
    font-family: var(--mono);
    font-size: 0.78rem;
    color: var(--ink);
}
/* --- Card --- */
.card  {
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: 2rem;
    box-shadow: 0 1px 0 rgba(28,  29,  26,  0.02),  0 4px 24px -8px rgba(28,  29,  26,  0.06);
    margin-bottom: 1.25rem;
}
@media (max-width: 540px)  {
    .card  {
        padding: 1.5rem 1.25rem;
    }
}
/* --- Form --- */
.step  {
    position: relative;
    margin-bottom: 1.25rem;
    padding: 1.25rem 1.25rem 1.4rem;
    background: var(--surface-2);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
}
.step:last-of-type  {
    margin-bottom: 1.75rem;
}
@media (max-width: 540px)  {
    .step  {
        padding: 1rem 1rem 1.15rem;
    }
}
.step-head  {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    margin-bottom: 0.85rem;
}
.step-num  {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--accent);
    color: #fff;
    font-size: 0.72rem;
    font-weight: 700;
    flex-shrink: 0;
}
.step-title  {
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--ink);
    margin: 0;
}
.field  {
    margin-bottom: 0;
}
label.lbl  {
    display: block;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--ink-soft);
    margin-bottom: 0.65rem;
}
input[type="text"],
input[type="time"],
input[type="number"],
input[type="date"],
select  {
    width: 100%;
    padding: 0.85rem 0.95rem;
    font-family: var(--sans);
    font-size: 1rem;
    font-weight: 500;
    color: var(--ink);
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    transition: border-color 0.15s,  background 0.15s,  box-shadow 0.15s;
    appearance: none;
    -webkit-appearance: none;
}
input:hover,  select:hover  {
    border-color: var(--line-strong);
}
input:focus,  select:focus  {
    outline: 0;
    background: var(--surface);
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-soft);
}
input::placeholder  {
    color: var(--muted);
    font-weight: 400;
}
/* --- Generic radio groups (studio + date) --- */
.radios  {
    display: grid;
    gap: 0.5rem;
}
.radios.studios  {
    grid-template-columns: repeat(auto-fill,  minmax(190px,  1fr));
}
.radios.dates    {
    grid-template-columns: repeat(auto-fill,  minmax(160px,  1fr));
}
.radio-item  {
    position: relative;
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.85rem 1rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all 0.15s;
    font-weight: 500;
    user-select: none;
}
.radio-item:hover  {
    border-color: var(--line-strong);
}
.radio-item input  {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
.radio-dot  {
    width: 16px;
    height: 16px;
    border-radius: 50%;
    border: 1.5px solid var(--line-strong);
    background: var(--surface);
    flex-shrink: 0;
    transition: all 0.15s;
    position: relative;
}
.radio-item.checked  {
    background: var(--accent-soft);
    border-color: var(--accent);
    color: var(--accent);
}
.radio-item.checked .radio-dot  {
    border-color: var(--accent);
    background: var(--accent);
}
.radio-item.checked .radio-dot::after  {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%,  -50%);
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--surface);
}
.radio-content  {
    display: flex;
    flex-direction: column;
    line-height: 1.25;
}
.radio-content small  {
    display: block;
    font-size: 0.72rem;
    font-weight: 500;
    color: var(--muted);
    letter-spacing: 0;
    margin-top: 2px;
    font-family: var(--mono);
    text-transform: none;
}
.radio-item.checked .radio-content small  {
    color: var(--accent);
}
/* --- Large checkbox (cloud recording) --- */
.checkbox-item  {
    position: relative;
    display: flex;
    align-items: center;
    gap: 0.85rem;
    padding: 1.1rem 1.15rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all 0.15s;
    font-weight: 500;
    user-select: none;
}
.checkbox-item:hover  {
    border-color: var(--line-strong);
}
.checkbox-item input  {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
.checkbox-box  {
    width: 26px;
    height: 26px;
    border-radius: 6px;
    border: 2px solid var(--line-strong);
    background: var(--surface);
    flex-shrink: 0;
    transition: all 0.15s;
    position: relative;
}
.checkbox-item.checked  {
    background: var(--accent-soft);
    border-color: var(--accent);
    color: var(--accent);
}
.checkbox-item.checked .checkbox-box  {
    border-color: var(--accent);
    background: var(--accent);
}
.checkbox-item.checked .checkbox-box::after  {
    content: '';
    position: absolute;
    top: 45%;
    left: 50%;
    transform: translate(-50%,  -55%) rotate(45deg);
    width: 7px;
    height: 13px;
    border: solid var(--surface);
    border-width: 0 2.5px 2.5px 0;
}
.checkbox-text  {
    font-size: 1.02rem;
    line-height: 1.3;
}
/* --- Custom date toggle --- */
.date-or  {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin: 0.85rem 0;
    color: var(--muted);
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
.date-or::before,  .date-or::after  {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--line);
}
.custom-date-row  {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}
.custom-date-row input[type="date"]  {
    flex: 1;
}
.custom-date-clear  {
    padding: 0.5rem 0.85rem;
    font-family: var(--sans);
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--ink-soft);
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all 0.15s;
}
.custom-date-clear:hover  {
    background: var(--bg);
    border-color: var(--line-strong);
}
.row  {
    display: grid;
    grid-template-columns: 1fr 140px;
    gap: 1rem;
}
@media (max-width: 480px)  {
    .row  {
        grid-template-columns: 1fr;
    }
}
.help  {
    font-size: 0.82rem;
    color: var(--muted);
    margin-top: 0.4rem;
}
.char-counter  {
    display: block;
    text-align: right;
    font-size: 0.78rem;
    color: var(--muted);
    margin-top: 0.35rem;
}
.char-counter.warn  {
    color: var(--danger);
}
/* --- Submit --- */
.submit  {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    width: 100%;
    padding: 1.15rem 1.25rem;
    font-family: var(--sans);
    font-size: 1.05rem;
    font-weight: 700;
    color: #fff;
    background: var(--accent);
    border: 0;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: background 0.15s,  transform 0.05s,  box-shadow 0.15s;
    box-shadow: 0 1px 0 rgba(0, 0, 0, 0.05),  0 2px 8px -2px rgba(43,  110,  58,  0.4);
}
.submit:hover:not(:disabled)  {
    background: var(--accent-hover);
    box-shadow: 0 1px 0 rgba(0, 0, 0, 0.05),  0 4px 16px -4px rgba(43,  110,  58,  0.5);
}
.submit:active:not(:disabled)  {
    transform: translateY(1px);
}
.submit:disabled  {
    opacity: 0.5;
    cursor: not-allowed;
}
.submit svg  {
    transition: transform 0.2s;
}
.submit:hover:not(:disabled) svg  {
    transform: translateX(2px);
}
/* --- Alerts / success card --- */
.alert  {
    border-radius: var(--radius);
    padding: 1.75rem 1.75rem 1.6rem;
    margin-bottom: 1.25rem;
    border: 1px solid;
    animation: slideIn 0.3s ease-out;
}
@media (max-width: 540px)  {
    .alert  {
        padding: 1.4rem 1.25rem 1.3rem;
    }
}
@keyframes slideIn  {
    from  {
        opacity: 0;
        transform: translateY(-6px);
    }
    to    {
        opacity: 1;
        transform: translateY(0);
    }
}
.alert.ok         {
    border-color: rgba(43,  110,  58,  0.25);
    background: var(--ok-bg);
}
.alert.cancelled  {
    border-color: var(--line-strong);
    background: var(--surface-2);
}
.alert.err        {
    border-color: rgba(179,  40,  30,  0.25);
    background: var(--err-bg);
}
.alert h2.headline  {
    font-family: var(--serif);
    font-weight: 600;
    font-size: clamp(1.5rem,  4vw,  1.85rem);
    line-height: 1.1;
    letter-spacing: -0.015em;
    margin: 0 0 0.4rem;
    color: var(--accent);
}
.alert.cancelled h2.headline  {
    color: var(--ink);
}
.alert.err       h2.headline  {
    color: var(--danger);
}
.alert .sub  {
    color: var(--ink-soft);
    margin: 0 0 1.25rem;
    font-size: 0.95rem;
}
.alert .sub strong  {
    color: var(--ink);
    font-weight: 600;
}
.imminent-warn  {
    margin: 0 0 1rem;
    padding: 0.7rem 0.9rem;
    background: rgba(255,  200,  0,  0.12);
    border: 1px solid rgba(180,  130,  0,  0.3);
    border-radius: var(--radius-sm);
    font-size: 0.88rem;
    color: #6b4f00;
}
/* --- Cloud recording status (on success card) --- */
.rec-warn  {
    margin: 0 0 1rem;
    padding: 0.8rem 1rem;
    background: var(--warn-bg);
    border: 1px solid rgba(180,  130,  0,  0.35);
    border-left: 4px solid var(--warn);
    border-radius: var(--radius-sm);
    font-size: 0.9rem;
    line-height: 1.45;
    color: #6b4f00;
}
.rec-warn code  {
    background: rgba(255,  255,  255,  0.6);
    padding: 1px 5px;
    border-radius: 3px;
    font-size: 0.85em;
}
.rec-status  {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-weight: 600;
    font-size: 0.92rem;
}
.rec-status.rec-on         {
    color: var(--accent);
}
.rec-status.rec-off        {
    color: var(--muted);
    font-weight: 500;
}
.rec-status.rec-warn-inline  {
    color: var(--warn);
}
.rec-status code  {
    font-size: 0.85em;
    background: rgba(0,  0,  0,  0.04);
    padding: 1px 5px;
    border-radius: 3px;
}
.meta  {
    display: grid;
    grid-template-columns: max-content 1fr;
    gap: 0.55rem 1.25rem;
    font-size: 0.92rem;
    margin: 0 0 1rem;
    padding: 0.95rem 1.1rem;
    background: rgba(255,  255,  255,  0.6);
    border-radius: var(--radius-sm);
}
.meta dt  {
    color: var(--ink-soft);
    font-weight: 500;
}
.meta dd  {
    margin: 0;
    word-break: break-word;
    font-weight: 600;
}
.meta code  {
    font-family: var(--mono);
    font-size: 0.88rem;
    background: rgba(0, 0, 0, 0.04);
    padding: 1px 6px;
    border-radius: 3px;
}
.copy-row  {
    display: flex;
    gap: 0.5rem;
    align-items: stretch;
    margin-top: 0.6rem;
}
.copy-row input  {
    flex: 1;
    font-family: var(--mono);
    font-size: 0.82rem;
    padding: 0.65rem 0.8rem;
    background: rgba(255,  255,  255,  0.7);
    border-color: var(--line);
}
.copy-row button  {
    width: auto;
    padding: 0 1rem;
    font-family: var(--sans);
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--ink);
    background: var(--surface);
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all 0.15s;
    white-space: nowrap;
    min-width: 110px;
}
.copy-row button:hover  {
    background: var(--ink);
    color: var(--surface);
    border-color: var(--ink);
}
.copy-row button.copied  {
    background: var(--accent);
    color: #fff;
    border-color: var(--accent);
}
.copy-label  {
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--ink-soft);
    margin: 0.95rem 0 0.35rem;
}
/* --- World clock grid --- */
.clocks-title  {
    font-family: var(--serif);
    font-weight: 500;
    font-size: 1rem;
    letter-spacing: -0.01em;
    color: var(--ink-soft);
    margin: 1.25rem 0 0.6rem;
}
.clocks  {
    display: grid;
    grid-template-columns: repeat(auto-fill,  minmax(170px,  1fr));
    gap: 0.5rem;
    margin: 0;
    padding: 0;
    list-style: none;
}
.clock  {
    background: rgba(255,  255,  255,  0.55);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    padding: 0.65rem 0.85rem;
}
.clock.same  {
    background: var(--accent-soft);
    border-color: rgba(43,  110,  58,  0.3);
}
.clock-city  {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--ink-soft);
    margin-bottom: 0.15rem;
}
.clock-offset  {
    font-family: var(--mono);
    font-size: 0.7rem;
    color: var(--muted);
    text-transform: none;
    letter-spacing: 0;
}
.clock.same .clock-offset  {
    color: var(--accent);
    font-weight: 700;
}
.clock-time  {
    font-family: var(--serif);
    font-weight: 500;
    font-size: 1rem;
    color: var(--ink);
    line-height: 1.2;
}
/* --- Cancel button --- */
.danger-zone  {
    margin-top: 1.5rem;
    padding-top: 1.25rem;
    border-top: 1px dashed var(--line-strong);
}
.cancel-btn  {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0.95rem 1.25rem;
    font-family: var(--sans);
    font-size: 0.95rem;
    font-weight: 700;
    color: #fff;
    background: var(--danger);
    border: 0;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: background 0.15s,  transform 0.05s;
    box-shadow: 0 2px 8px -2px rgba(179,  40,  30,  0.4);
}
.cancel-btn:hover  {
    background: var(--danger-hover);
}
.cancel-btn:active  {
    transform: translateY(1px);
}
.cancel-btn:disabled  {
    opacity: 0.5;
    cursor: not-allowed;
}
.cancel-confirm  {
    margin-bottom: 0.75rem;
    padding: 0.75rem 1rem;
    background: var(--danger-soft);
    border: 1px solid rgba(179,  40,  30,  0.25);
    border-radius: var(--radius-sm);
    color: var(--danger);
    font-size: 0.88rem;
    text-align: center;
    font-weight: 600;
}
.cancel-actions  {
    display: flex;
    gap: 0.5rem;
}
.cancel-actions button  {
    flex: 1;
}
.cancel-keep  {
    padding: 0.95rem 1.25rem;
    font-weight: 600;
    color: var(--ink);
    background: var(--surface);
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-sm);
    cursor: pointer;
}
.cancel-keep:hover  {
    background: var(--surface-2);
}
.empty-note  {
    color: var(--muted);
    font-size: 0.92rem;
    padding: 0.85rem 1rem;
    background: var(--surface-2);
    border-radius: var(--radius-sm);
    border: 1px dashed var(--line-strong);
}
.empty-note code  {
    font-family: var(--mono);
    font-size: 0.85rem;
    background: rgba(0, 0, 0, 0.04);
    padding: 1px 6px;
    border-radius: 3px;
}
footer  {
    text-align: center;
    color: var(--muted);
    font-size: 0.78rem;
    margin-top: 1rem;
}
.page > *  {
    animation: fadeUp 0.4s ease-out backwards;
}
.page > header  {
    animation-delay: 0.05s;
}
.page > .alert  {
    animation-delay: 0.1s;
}
.page > .card   {
    animation-delay: 0.15s;
}
.page > footer  {
    animation-delay: 0.25s;
}
@keyframes fadeUp  {
    from  {
        opacity: 0;
        transform: translateY(8px);
    }
    to    {
        opacity: 1;
        transform: translateY(0);
    }
}
@media (prefers-reduced-motion: reduce)  {
    *,  *::before,  *::after  {
        animation-duration: 0.01ms !important;
        transition-duration: 0.01ms !important;
    }
    .brand-dot  {
        animation: none;
    }
}
/* --- Make-another-meeting CTA --- */
.cta-again  {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: 100%;
    padding: 1.05rem 1.25rem;
    margin-bottom: 1.25rem;
    font-family: var(--sans);
    font-size: 1rem;
    font-weight: 700;
    color: var(--accent);
    background: var(--surface);
    border: 1.5px solid var(--accent);
    border-radius: var(--radius-sm);
    text-decoration: none;
    transition: all 0.15s;
}
.cta-again:hover  {
    background: var(--accent-soft);
}
.cta-again::after  {
    content: '→';
    font-size: 1.1rem;
    transition: transform 0.2s;
}
.cta-again:hover::after  {
    transform: translateX(3px);
}
/* --- Invite text block --- */
.invite-text  {
    width: 100%;
    margin-top: 0.6rem;
    padding: 0.85rem 1rem;
    font-family: var(--mono);
    font-size: 0.82rem;
    line-height: 1.55;
    color: var(--ink);
    background: rgba(255,  255,  255,  0.7);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    resize: vertical;
    white-space: pre;
    overflow-x: auto;
}
.invite-text:focus  {
    outline: 0;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-soft);
    background: #fff;
}
.invite-copy-btn  {
    width: 100%;
    margin-top: 0.5rem;
    padding: 0.7rem 1rem;
    font-family: var(--sans);
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--ink);
    background: var(--surface);
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all 0.15s;
}
.invite-copy-btn:hover  {
    background: var(--ink);
    color: var(--surface);
    border-color: var(--ink);
}
.invite-copy-btn.copied  {
    background: var(--accent);
    color: #fff;
    border-color: var(--accent);
}
/* ===================================================================
Log page — overrides + entry-specific styles
=================================================================== */
body.page-log .subtitle  {
    margin-bottom: 2rem;
}
.log-controls  {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1.5rem;
    flex-wrap: wrap;
}
.cleared-banner  {
    padding: 0.85rem 1.1rem;
    margin-bottom: 1.25rem;
    background: var(--ok-bg);
    border: 1px solid rgba(43,  110,  58,  0.25);
    border-radius: var(--radius-sm);
    color: var(--ok);
    font-size: 0.9rem;
    font-weight: 600;
}
.filters  {
    display: flex;
    gap: 0.4rem;
    padding: 0.3rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 999px;
    width: fit-content;
}
.filters a  {
    padding: 0.5rem 1.1rem;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--ink-soft);
    text-decoration: none;
    border-radius: 999px;
    transition: background 0.15s,  color 0.15s;
}
.filters a:hover  {
    background: var(--surface-2);
    color: var(--ink);
}
.filters a.active  {
    background: var(--accent);
    color: #fff;
}
.filters a .count  {
    margin-left: 0.45rem;
    padding: 0.05rem 0.4rem;
    background: rgba(0,  0,  0,  0.08);
    border-radius: 999px;
    font-size: 0.72rem;
}
.filters a.active .count  {
    background: rgba(255,  255,  255,  0.25);
}
/* Clear-log button — subtle by default, confirmation step is red */
.clear-zone  {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}
.clear-btn  {
    padding: 0.55rem 1rem;
    font-family: var(--sans);
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--ink-soft);
    background: var(--surface);
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all 0.15s;
}
.clear-btn:hover  {
    background: var(--danger-soft);
    border-color: var(--danger);
    color: var(--danger);
}
.clear-confirm  {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 0.6rem 0.4rem 0.95rem;
    background: var(--danger-soft);
    border: 1px solid rgba(179,  40,  30,  0.25);
    border-radius: var(--radius-sm);
}
.clear-confirm > span  {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--danger);
}
.clear-keep  {
    padding: 0.4rem 0.75rem;
    font-family: var(--sans);
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--ink);
    background: var(--surface);
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-sm);
    cursor: pointer;
}
.clear-keep:hover  {
    background: var(--surface-2);
}
.clear-confirm-btn  {
    padding: 0.4rem 0.85rem;
    font-family: var(--sans);
    font-size: 0.78rem;
    font-weight: 700;
    color: #fff;
    background: var(--danger);
    border: 0;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: background 0.15s;
}
.clear-confirm-btn:hover  {
    background: var(--danger-hover);
}
.empty  {
    background: var(--surface);
    border: 1px dashed var(--line-strong);
    border-radius: var(--radius);
    padding: 3rem 1.5rem;
    text-align: center;
    color: var(--muted);
}
.empty h3  {
    font-family: var(--serif);
    font-weight: 500;
    color: var(--ink-soft);
    margin: 0 0 0.5rem;
    font-size: 1.25rem;
}
.entries  {
    list-style: none;
    padding: 0;
    margin: 0;
}
.entry  {
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: 1.25rem 1.4rem;
    margin-bottom: 0.85rem;
    transition: border-color 0.15s;
}
.entry:hover  {
    border-color: var(--line-strong);
}
.entry.cancelled  {
    background: var(--surface-2);
    opacity: 0.7;
}
.entry.cancelled .topic  {
    text-decoration: line-through;
}
.entry-head  {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 0.6rem;
}
.topic  {
    font-family: var(--serif);
    font-weight: 600;
    font-size: 1.1rem;
    line-height: 1.25;
    margin: 0;
    color: var(--ink);
}
.pill  {
    display: inline-flex;
    flex-shrink: 0;
    padding: 0.2rem 0.6rem;
    background: var(--accent-soft);
    color: var(--accent);
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    border-radius: 999px;
}
.pill.cancelled  {
    background: var(--danger-soft);
    color: var(--danger);
}
.meta-row  {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem 1.25rem;
    font-size: 0.85rem;
    color: var(--ink-soft);
    margin-bottom: 0.85rem;
}
.meta-row span strong  {
    color: var(--ink);
    font-weight: 600;
}
.meta-row code  {
    font-family: var(--mono);
    font-size: 0.78rem;
    background: rgba(0,  0,  0,  0.04);
    padding: 1px 5px;
    border-radius: 3px;
}
.join-row  {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}
.join-link  {
    flex: 1;
    padding: 0.55rem 0.75rem;
    font-family: var(--mono);
    font-size: 0.78rem;
    color: var(--ink);
    background: var(--surface-2);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.copy-mini  {
    padding: 0.55rem 0.95rem;
    font-family: var(--sans);
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--ink);
    background: var(--surface);
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-sm);
    cursor: pointer;
    white-space: nowrap;
    transition: all 0.15s;
}
.copy-mini:hover   {
    background: var(--ink);
    color: var(--surface);
    border-color: var(--ink);
}
.copy-mini.copied  {
    background: var(--accent);
    color: #fff;
    border-color: var(--accent);
}
/* Brought in from _partials */
/* ===================================================================
Status page — overrides + check-specific styles
=================================================================== */
body.page-status .subtitle  {
    margin-bottom: 2rem;
}
.summary  {
    padding: 1.4rem 1.5rem;
    border-radius: var(--radius);
    border: 1px solid;
    margin-bottom: 1.5rem;
}
.summary.ok   {
    background: var(--ok-bg);
    border-color: rgba(43,  110,  58,  0.25);
}
.summary.err  {
    background: var(--err-bg);
    border-color: rgba(168,  50,  50,  0.25);
}
.summary h2  {
    font-family: var(--serif);
    font-weight: 500;
    font-size: 1.4rem;
    margin: 0 0 0.4rem;
}
.summary.ok  h2  {
    color: var(--ok);
}
.summary.err h2  {
    color: var(--err);
}
.summary p  {
    margin: 0;
    color: var(--ink-soft);
    font-size: 0.92rem;
}
h2.section  {
    font-family: var(--serif);
    font-weight: 500;
    font-size: 1.15rem;
    margin: 1.75rem 0 0.75rem;
    color: var(--ink-soft);
}
.checks  {
    list-style: none;
    padding: 0;
    margin: 0;
}
.check  {
    display: flex;
    align-items: flex-start;
    gap: 0.85rem;
    padding: 0.95rem 1.1rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    margin-bottom: 0.5rem;
}
.indicator  {
    flex-shrink: 0;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-weight: 700;
    font-size: 0.78rem;
    margin-top: 1px;
}
.indicator.ok    {
    background: var(--ok);
}
.indicator.err   {
    background: var(--err);
}
.indicator.skip  {
    background: var(--muted);
}
.check-body  {
    flex: 1;
    min-width: 0;
}
.check-name  {
    font-weight: 600;
    color: var(--ink);
    margin: 0 0 0.15rem;
}
.check-detail  {
    color: var(--ink-soft);
    font-size: 0.86rem;
    margin: 0;
    word-break: break-word;
}
.check-detail code  {
    font-family: var(--mono);
    font-size: 0.8rem;
    background: rgba(0,  0,  0,  0.04);
    padding: 1px 5px;
    border-radius: 3px;
}
.check-email  {
    font-family: var(--mono);
    font-size: 0.78rem;
    color: var(--muted);
    margin: 0.15rem 0 0;
}
.refresh  {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    margin-top: 1.5rem;
    padding: 0.7rem 1.1rem;
    font-family: var(--sans);
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--ink);
    background: var(--surface);
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-sm);
    text-decoration: none;
    transition: all 0.15s;
}
.refresh:hover  {
    background: var(--ink);
    color: var(--surface);
    border-color: var(--ink);
}
/* ===================================================================
Nav bar + footer (shown on every page)
=================================================================== */
.zb-nav  {
    display: flex;
    gap: 0.4rem;
    margin: 0 0 1.75rem;
    padding: 0.3rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 999px;
    width: fit-content;
}
.zb-nav a  {
    padding: 0.45rem 0.95rem;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--ink-soft);
    text-decoration: none;
    border-radius: 999px;
    transition: background 0.15s,  color 0.15s;
}
.zb-nav a:hover  {
    background: var(--surface-2);
    color: var(--ink);
}
.zb-nav a.active  {
    background: var(--ink);
    color: var(--surface);
}
.zb-nav a.active:hover  {
    background: var(--ink);
}
.zb-footer  {
    text-align: center;
    color: var(--muted);
    font-size: 0.78rem;
    margin-top: 1.5rem;
}
.zb-footer strong  {
    color: var(--ink-soft);
    font-weight: 600;
}
@media (max-width: 540px)  {
    .zb-nav  {
        width: 100%;
        justify-content: space-between;
    }
    .zb-nav a  {
        flex: 1;
        text-align: center;
        padding: 0.5rem 0.5rem;
    }
}
/* let's adjust the look of the title */
h1 em  {
    font-style: italic;
    font-weight: 500;
    background: linear-gradient(to right,  #d83933 0%,  #683381 50%,  #3f529e 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    padding-right: 0.25em;
    display: inline-block;
}
