/* NAVE UI v1 — one look for every NAVE page.
   Fonts, spacing, shapes and components are identical everywhere. A page only chooses a THEME (colours):
     <html data-theme="terracota">  light, cream + ocre     (default)
     <html data-theme="verde">      light, soft green + verde
     <html data-theme="escuro">     dark, black + ocre
   Link it with:  <link rel="stylesheet" href="https://<ui-host>/v1/nave-ui.css">  */

/* ── Font: Jost (SIL Open Font Licence), served from here ─────────────────────── */
@font-face { font-family: "Jost"; font-weight: 400; font-style: normal; font-display: swap; src: url(fonts/jost-latin-400-normal.woff2) format("woff2"); }
@font-face { font-family: "Jost"; font-weight: 500; font-style: normal; font-display: swap; src: url(fonts/jost-latin-500-normal.woff2) format("woff2"); }
@font-face { font-family: "Jost"; font-weight: 600; font-style: normal; font-display: swap; src: url(fonts/jost-latin-600-normal.woff2) format("woff2"); }
@font-face { font-family: "Jost"; font-weight: 700; font-style: normal; font-display: swap; src: url(fonts/jost-latin-700-normal.woff2) format("woff2"); }
@font-face { font-family: "Jost"; font-weight: 400; font-style: italic; font-display: swap; src: url(fonts/jost-latin-400-italic.woff2) format("woff2"); }

/* ── Themes: colours only ─────────────────────────────────────────────────────── */
:root, [data-theme="terracota"] {
  --nv-bg: #F7F4EF;  --nv-surface: #FFFFFF;  --nv-surface-2: #EDE9E1;
  --nv-ink: #0F0D0A; --nv-muted: #7F7870;    --nv-line: #DDD5C8;
  --nv-accent: #BC5828; --nv-on-accent: #FFFFFF; --nv-accent-soft: rgba(188, 88, 40, .12);
  --nv-accent-2: #006E54; --nv-on-accent-2: #FFFFFF;
  --nv-danger: #C0392B; --nv-danger-bg: #FBECEA; --nv-ok: #006E54; --nv-ok-bg: #E4F1EC; --nv-warn: #8A5A12; --nv-warn-bg: #FDF0E0;
  --nv-banner-fallback: #6E8F8B; --nv-hero-bg: linear-gradient(180deg, #EFE6DA, #DCCBBB);
  --nv-shadow: 0 2px 18px rgba(15, 13, 10, .07);
}
[data-theme="verde"] {
  --nv-bg: #EEF3EF;  --nv-surface: #FFFFFF;  --nv-surface-2: #E1EAE4;
  --nv-ink: #0F0D0A; --nv-muted: #6E7A73;    --nv-line: #CBD8CF;
  --nv-accent: #006E54; --nv-on-accent: #FFFFFF; --nv-accent-soft: rgba(0, 110, 84, .12);
  --nv-accent-2: #BC5828; --nv-on-accent-2: #FFFFFF;
  --nv-danger: #C0392B; --nv-danger-bg: #FBECEA; --nv-ok: #006E54; --nv-ok-bg: #DDEFE7; --nv-warn: #8A5A12; --nv-warn-bg: #FDF0E0;
  --nv-banner-fallback: #5E8F83; --nv-hero-bg: linear-gradient(180deg, #E3EDE6, #C9DACF);
  --nv-shadow: 0 2px 18px rgba(15, 40, 30, .08);
}
[data-theme="escuro"] {
  --nv-bg: #0F0D0A;  --nv-surface: #1A1714;  --nv-surface-2: #26211C;
  --nv-ink: #F4EFE8; --nv-muted: #A59C90;    --nv-line: #38322B;
  --nv-accent: #BC5828; --nv-on-accent: #FFFFFF; --nv-accent-soft: rgba(188, 88, 40, .22);
  --nv-accent-2: #3FA98C; --nv-on-accent-2: #0F0D0A;
  --nv-danger: #F0877B; --nv-danger-bg: #3A1F1B; --nv-ok: #6CCBAE; --nv-ok-bg: #16302A; --nv-warn: #E8B563; --nv-warn-bg: #33270F;
  --nv-banner-fallback: #26211C; --nv-hero-bg: linear-gradient(180deg, #1A1714, #0F0D0A);
  --nv-shadow: 0 2px 18px rgba(0, 0, 0, .45);
}

/* ── Shape and rhythm: the same in every theme ────────────────────────────────── */
:root {
  --nv-font: "Jost", system-ui, -apple-system, "Segoe UI", sans-serif;
  --nv-r-input: 12px; --nv-r-card: 16px; --nv-r-pill: 999px;
  --nv-gap: 16px; --nv-pad: 24px;
}

/* ── Base ─────────────────────────────────────────────────────────────────────── */
.nv-page, .nv-page * { box-sizing: border-box; }
.nv-page { margin: 0; min-height: 100vh; font-family: var(--nv-font); font-size: 16px; line-height: 1.45; color: var(--nv-ink); background: var(--nv-bg);
           padding-bottom: max(32px, env(safe-area-inset-bottom)); -webkit-text-size-adjust: 100%; }
html[data-theme] body.nv-page, body.nv-page { background: var(--nv-bg); }
.nv-hidden { display: none !important; }
.nv-wrap { width: 100%; max-width: 680px; margin: 0 auto; padding: 0 14px; }
.nv-wrap--wide { max-width: 980px; }

/* ── Type ─────────────────────────────────────────────────────────────────────── */
.nv-brand { font-weight: 700; letter-spacing: .04em; }
.nv-brand span { color: var(--nv-accent); }
.nv-h1 { font-size: clamp(1.6rem, 5.4vw, 2.2rem); font-weight: 700; line-height: 1.15; margin: 0 0 12px; }
.nv-h2 { font-size: clamp(1.25rem, 4.2vw, 1.55rem); font-weight: 600; line-height: 1.2; margin: 0 0 10px; }
.nv-lead { color: var(--nv-muted); font-weight: 400; margin: 0 0 18px; }
.nv-muted { color: var(--nv-muted); }
.nv-rule { border: 0; border-top: 1px solid var(--nv-line); margin: 18px 0 22px; }

/* ── Layout pieces ────────────────────────────────────────────────────────────── */
.nv-banner { height: clamp(110px, 18vw, 190px); background: var(--nv-banner-fallback) var(--nv-banner-img, url("img/courts.jpg")) center / cover no-repeat; }
/* No image yet (or it failed to load): the banner shrinks to a slim colour bar instead of an empty block. Set by nave-ui.js. */
.nv-banner.is-empty { height: 48px; }
.nv-card { background: var(--nv-surface); border-radius: var(--nv-r-card); padding: var(--nv-pad); box-shadow: var(--nv-shadow); }
.nv-card--under-banner { border-radius: 0 0 var(--nv-r-card) var(--nv-r-card); }
.nv-stack > * + * { margin-top: var(--nv-gap); }
.nv-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px var(--nv-gap); }
@media (max-width: 560px) { .nv-grid { grid-template-columns: 1fr; } }
.nv-full { grid-column: 1 / -1; }

/* ── Forms ────────────────────────────────────────────────────────────────────── */
.nv-field { display: flex; flex-direction: column; }
.nv-label { font-weight: 600; font-size: .95rem; color: var(--nv-ink); margin: 0 0 7px; }
.nv-req { color: var(--nv-accent); }
.nv-input { font: inherit; font-size: 1rem; color: var(--nv-ink); background: var(--nv-surface); border: 1.5px solid var(--nv-line);
            border-radius: var(--nv-r-input); padding: 12px 14px; min-height: 50px; width: 100%; -webkit-appearance: none; appearance: none; transition: border-color .15s, box-shadow .15s; }
.nv-input::placeholder { color: var(--nv-muted); opacity: .8; }
select.nv-input { padding-right: 38px; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23888' stroke-width='2'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 14px center; }
.nv-input:focus { outline: none; border-color: var(--nv-accent); box-shadow: 0 0 0 3px var(--nv-accent-soft); }
textarea.nv-input { min-height: 96px; resize: vertical; }
.nv-hint { color: var(--nv-muted); font-size: .8rem; margin-top: 6px; }
.nv-err { display: none; color: var(--nv-danger); font-size: .85rem; margin-top: 6px; }
.nv-field.is-bad .nv-input { border-color: var(--nv-danger); }
.nv-field.is-bad .nv-err { display: block; }
.nv-field.is-bad .nv-choices, .nv-field.is-bad .nv-slots { outline: 2px solid var(--nv-danger); outline-offset: 2px; }
.nv-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Day / month / year (always in that order) */
.nv-date3 { display: flex; gap: 8px; }
.nv-date3 .nv-input { flex: 1; min-width: 0; padding-left: 12px; }
.nv-date3 .nv-input:nth-child(1) { flex: .75; } .nv-date3 .nv-input:nth-child(2) { flex: 1.6; }

/* Radio and checkbox rows */
.nv-choices { display: flex; flex-direction: column; gap: 8px; border-radius: var(--nv-r-input); }
.nv-choice { display: flex; align-items: center; gap: 12px; padding: 12px 14px; min-height: 50px; border: 1.5px solid var(--nv-line); border-radius: var(--nv-r-input);
             background: var(--nv-surface); cursor: pointer; font-weight: 400; margin: 0; }
.nv-choice input { width: 20px; height: 20px; accent-color: var(--nv-accent); flex: none; margin: 0; }
.nv-choice:has(input:checked) { border-color: var(--nv-accent); background: var(--nv-accent-soft); }

/* Time slots: label on the left, one checkbox column per time */
.nv-slots { border: 1.5px solid var(--nv-line); border-radius: var(--nv-r-input); overflow: hidden; }
.nv-slots-head, .nv-slots-row { display: grid; grid-template-columns: 1fr repeat(var(--nv-cols, 1), var(--nv-col-w, 96px)); align-items: center; padding: 12px 14px; }
.nv-slots-head { background: var(--nv-surface-2); font-weight: 600; text-align: center; font-size: .95rem; }
.nv-slots-head span:first-child { text-align: left; }
.nv-slots-row { border-top: 1px solid var(--nv-line); }
.nv-slots-row label { margin: 0; font-weight: 400; cursor: pointer; }
.nv-slots-row .c { display: flex; justify-content: center; }
.nv-slots-row input[type=checkbox] { width: 24px; height: 24px; accent-color: var(--nv-accent); cursor: pointer; }
.nv-slots-row:has(input:checked) { background: var(--nv-accent-soft); }

/* ── Buttons ──────────────────────────────────────────────────────────────────── */
.nv-btn { font: inherit; font-weight: 600; font-size: 1.05rem; line-height: 1; display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 50px;
          padding: 0 30px; border: 0; border-radius: var(--nv-r-pill); background: var(--nv-accent); color: var(--nv-on-accent); cursor: pointer; text-decoration: none; transition: filter .15s; }
.nv-btn:hover { filter: brightness(1.06); }
.nv-btn:disabled { opacity: .6; cursor: default; }
.nv-btn--secondary { background: var(--nv-accent-2); color: var(--nv-on-accent-2); }
.nv-btn--ghost { background: transparent; color: var(--nv-ink); border: 1.5px solid var(--nv-line); }
.nv-btn--block { width: 100%; }
.nv-actions { margin-top: 22px; display: flex; gap: 12px; flex-wrap: wrap; }

/* ── Messages ─────────────────────────────────────────────────────────────────── */
.nv-alert { display: none; padding: 12px 14px; border-radius: var(--nv-r-input); font-size: .95rem; background: var(--nv-danger-bg); color: var(--nv-danger); margin-top: 16px; }
.nv-alert.is-on { display: block; }
.nv-alert--ok { background: var(--nv-ok-bg); color: var(--nv-ok); }
.nv-alert--info { background: var(--nv-surface-2); color: var(--nv-ink); }
.nv-alert--static { display: block; }
.nv-badge { display: inline-block; padding: 3px 10px; border-radius: var(--nv-r-pill); font-size: .78rem; font-weight: 600; background: var(--nv-surface-2); color: var(--nv-ink); }
.nv-badge--accent { background: var(--nv-accent-soft); color: var(--nv-accent); }
.nv-badge--ok { background: var(--nv-ok-bg); color: var(--nv-ok); }
.nv-badge--danger { background: var(--nv-danger-bg); color: var(--nv-danger); }

/* ── Lists ────────────────────────────────────────────────────────────────────── */
.nv-list { border: 1.5px solid var(--nv-line); border-radius: var(--nv-r-input); overflow: hidden; background: var(--nv-surface); }
.nv-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 16px; }
.nv-row + .nv-row { border-top: 1px solid var(--nv-line); }
.nv-row small { color: var(--nv-muted); }

/* ── Welcome and thank-you screens ────────────────────────────────────────────── */
.nv-hero { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 40px 24px; position: relative;
           background: var(--nv-hero-bg); }
.nv-hero::before { content: ""; position: absolute; inset: 0; background: var(--nv-hero-img, none) center / cover no-repeat; opacity: .5; }
.nv-hero > * { position: relative; }
.nv-hero .nv-brand { font-size: clamp(1.25rem, 4.2vw, 1.7rem); margin-bottom: 30px; }
.nv-hero .nv-h1 { margin-bottom: 30px; }
.nv-tile { width: min(44vw, 170px); aspect-ratio: 1; border-radius: 8px; background: var(--nv-accent) var(--nv-tile-img, url("img/logo-tile.png")) center / cover no-repeat; color: #000; display: grid; place-items: center; overflow: hidden; margin: 0 auto 30px; font-weight: 700; font-size: 2.6rem; }
.nv-tile.has-img { color: transparent; }
.nv-end { text-align: center; padding: 38px 18px 34px; }
.nv-dot { width: 68px; height: 68px; border-radius: 50%; background: var(--nv-accent-soft); color: var(--nv-accent); display: grid; place-items: center; font-size: 2rem; margin: 0 auto 24px; }
.nv-end .nv-h1 { color: var(--nv-accent); }
.nv-logo-box { width: min(60vw, 280px); aspect-ratio: 1; margin: 28px auto 0; background: #fff; border-radius: 8px; display: grid; place-items: center; overflow: hidden; }
.nv-logo-box img { width: 100%; height: 100%; object-fit: contain; display: block; }

/* ── Masthead: the same header on every form ─────────────────────────────────── */
.nv-masthead { text-align: center; margin-bottom: 6px; }
.nv-masthead .nv-tile { width: 84px; margin: 0 auto 16px; font-size: 1.6rem; }
.nv-masthead .nv-brand { margin-bottom: 10px; }
.nv-masthead .nv-h1 { margin: 0; }
.nv-masthead .nv-h2 { font-weight: 500; margin-bottom: 6px; }

/* ── Top bar: brand on the left, actions (e.g. PT/EN) on the right. Colour = the theme's accent ───────── */
.nv-topbar { background: var(--nv-accent); color: var(--nv-on-accent); }
.nv-topbar--sticky { position: sticky; top: 0; z-index: 10; }
.nv-topbar-in { max-width: 680px; margin: 0 auto; padding: 14px 16px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.nv-topbar .nv-brand { font-size: 1rem; }
.nv-topbar .nv-brand span { color: inherit; }
.nv-topbar small { display: block; font-weight: 400; font-size: .8rem; opacity: .85; letter-spacing: 0; }
.nv-lang { display: flex; gap: 6px; }
.nv-lang button { font: inherit; font-size: .85rem; font-weight: 600; color: var(--nv-on-accent); background: transparent; border: 1.5px solid rgba(255,255,255,.55);
                  border-radius: var(--nv-r-pill); padding: 5px 13px; cursor: pointer; }
.nv-lang button.is-on { background: var(--nv-on-accent); color: var(--nv-accent); border-color: var(--nv-on-accent); }

/* ── Tabs / segmented control ─────────────────────────────────────────────────── */
.nv-seg { display: flex; flex-wrap: wrap; gap: 4px; padding: 4px; background: var(--nv-surface-2); border-radius: var(--nv-r-pill); }
.nv-seg button { flex: 1 1 auto; font: inherit; font-weight: 600; font-size: .95rem; border: 0; background: transparent; color: var(--nv-muted);
                 padding: 9px 16px; border-radius: var(--nv-r-pill); cursor: pointer; }
.nv-seg button.is-on, .nv-seg button[aria-pressed="true"] { background: var(--nv-accent); color: var(--nv-on-accent); }

/* ── Table (rankings, results) ────────────────────────────────────────────────── */
.nv-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1.5px solid var(--nv-line); border-radius: var(--nv-r-input); background: var(--nv-surface); }
.nv-table { width: 100%; border-collapse: collapse; font-size: .95rem; font-variant-numeric: tabular-nums; }
.nv-table th { text-align: left; font-weight: 600; font-size: .75rem; text-transform: uppercase; letter-spacing: .05em; color: var(--nv-muted); background: var(--nv-surface-2); padding: 10px 12px; white-space: nowrap; }
.nv-table td { padding: 11px 12px; border-top: 1px solid var(--nv-line); vertical-align: middle; }
.nv-table .num { text-align: right; white-space: nowrap; }
.nv-table .rank { width: 2.2em; color: var(--nv-muted); }
.nv-table tr.is-top td { background: var(--nv-surface-2); }
.nv-table tr.is-top .rank { color: var(--nv-accent-2); font-weight: 700; }
.nv-table tr.is-top .nv-linkbtn { font-weight: 700; }
.nv-table .pts { color: var(--nv-accent); font-weight: 700; }
.nv-table-wrap--plain { border: 0; border-radius: 0; background: transparent; }
.nv-table-wrap--plain .nv-table th { background: transparent; border-bottom: 1.5px solid var(--nv-line); }
.nv-table tr.is-me td { background: var(--nv-accent-soft); font-weight: 600; }
.nv-table caption { text-align: left; padding: 10px 12px; font-weight: 600; caption-side: top; }

/* ── Stat tiles ───────────────────────────────────────────────────────────────── */
.nv-stats { display: grid; grid-template-columns: repeat(var(--nv-cols, 2), 1fr); gap: 10px; }
.nv-stat { background: var(--nv-surface-2); border-radius: var(--nv-r-input); padding: 12px 14px; }
.nv-stat b { display: block; font-size: 1.6rem; font-weight: 700; line-height: 1.1; }
.nv-stat span { color: var(--nv-muted); font-size: .82rem; }

/* ── Chips, pick lists, text-style buttons ────────────────────────────────────── */
.nv-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.nv-chip { font: inherit; font-size: .95rem; padding: 8px 14px; border: 1.5px solid var(--nv-line); border-radius: var(--nv-r-pill); background: var(--nv-surface); color: var(--nv-ink); cursor: pointer; }
.nv-chip.is-on { border-color: var(--nv-accent); background: var(--nv-accent-soft); }
.nv-pick { display: block; width: 100%; text-align: left; font: inherit; font-size: 1rem; padding: 12px 14px; margin: 0 0 8px; border: 1.5px solid var(--nv-line);
           border-radius: var(--nv-r-input); background: var(--nv-surface); color: var(--nv-ink); cursor: pointer; }
.nv-pick:hover, .nv-pick.is-on { border-color: var(--nv-accent); }
.nv-linkbtn { font: inherit; background: none; border: 0; padding: 4px 0; color: inherit; cursor: pointer; text-decoration: underline; text-decoration-color: var(--nv-line); text-underline-offset: 3px; }
.nv-linkbtn--muted { color: var(--nv-muted); }
.nv-btn--sm { min-height: 40px; padding: 0 16px; font-size: .95rem; }

/* ── Lists with a title row, simple rows, match rows, toolbars ────────────────── */
.nv-count { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin: 16px 0 4px; font-weight: 600; }
.nv-count span { font-weight: 400; font-size: .85rem; color: var(--nv-muted); }
.nv-lrow { display: flex; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--nv-line); font-size: .98rem; }
.nv-lrow .n { color: var(--nv-muted); min-width: 1.6em; }
.nv-lrow.is-me { font-weight: 700; }
.nv-match { display: grid; grid-template-columns: 1fr auto; gap: 2px 12px; padding: 12px 0; border-bottom: 1px solid var(--nv-line); }
.nv-match small { color: var(--nv-muted); grid-column: 1 / -1; order: -1; }
.nv-res { font-weight: 700; text-align: right; white-space: nowrap; }
.nv-res.is-win { color: var(--nv-ok); }
.nv-res.is-loss { color: var(--nv-danger); }
.nv-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 4px 0 12px; }
.nv-alert--warn { background: var(--nv-warn-bg); color: var(--nv-warn); }

/* ── Eyebrow label, accent headings, pill tabs, callout card ─────────────────── */
.nv-eyebrow { font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; margin: 0 0 6px; }
.nv-eyebrow--accent { color: var(--nv-accent); }
.nv-h2--accent { color: var(--nv-accent); }
.nv-tabs { display: flex; flex-wrap: wrap; gap: 8px; }
.nv-tabs button { font: inherit; font-weight: 600; font-size: 1rem; padding: 11px 22px; border-radius: var(--nv-r-pill); border: 1.5px solid var(--nv-line); background: var(--nv-surface); color: var(--nv-ink); cursor: pointer; }
.nv-tabs button.is-on { background: var(--nv-accent); border-color: var(--nv-accent); color: var(--nv-on-accent); }
.nv-tabs--alt button.is-on { background: var(--nv-accent-2); border-color: var(--nv-accent-2); color: var(--nv-on-accent-2); }
.nv-tabs--fill button { flex: 1 1 0; text-align: center; }
.nv-callout { background: var(--nv-surface-2); border-radius: var(--nv-r-card); padding: 16px 18px; }
.nv-callout .nv-eyebrow { color: var(--nv-accent); }
.nv-callout-title { font-weight: 700; font-size: 1.2rem; margin: 0 0 14px; }

/* ── Score card: a player's (or pair's) result panel ─────────────────────────── */
.nv-score { background: var(--nv-accent); color: var(--nv-on-accent); border-radius: 24px; padding: 24px; }
.nv-score h2 { margin: 0; font-size: clamp(1.6rem, 6vw, 2.1rem); font-weight: 700; line-height: 1.15; }
.nv-score .nv-score-sub { opacity: .85; margin: 6px 0 20px; }
.nv-score-main { display: flex; gap: 16px; align-items: center; }
.nv-rank-badge { flex: none; width: 92px; height: 92px; border-radius: 16px; background: var(--nv-accent-2); color: var(--nv-on-accent-2); display: grid; place-items: center; font-size: 2.3rem; font-weight: 700; }
.nv-score-num b { display: block; font-size: 2.8rem; line-height: 1; font-weight: 700; }
.nv-score-num span { display: block; opacity: .9; margin-top: 2px; }
.nv-bars { display: flex; align-items: flex-end; gap: 5px; height: 52px; margin-top: 22px; }
.nv-bars i { flex: 1 1 0; max-width: 16px; min-width: 6px; height: 100%; background: var(--nv-on-accent); border-radius: 4px; }
.nv-bars i.l { height: 28%; background: var(--nv-accent-2); filter: brightness(1.3); }
.nv-score .nv-score-note { font-size: .9rem; opacity: .85; margin: 8px 0 0; }
.nv-statrow { display: grid; grid-template-columns: repeat(var(--nv-cols, 4), 1fr); margin-top: 18px; padding-top: 16px; border-top: 1px solid rgba(255,255,255,.35); text-align: center; }
.nv-statrow > div + div { border-left: 1px solid rgba(255,255,255,.35); }
.nv-statrow b { display: block; font-size: 1.6rem; font-weight: 700; }
.nv-statrow span { opacity: .85; font-size: .9rem; }

/* Time-slot matrix on a phone: narrower columns so four of them fit next to the day label */
@media (max-width: 520px) {
  .nv-slots { --nv-col-w: 56px; }
  .nv-slots-head, .nv-slots-row { padding: 10px 10px; }
  .nv-slots-head { font-size: .78rem; }
  .nv-slots-row label { font-size: .92rem; }
}
/* Choice rows side by side when there is room */
.nv-choices--2 { display: grid; grid-template-columns: 1fr 1fr; }
@media (max-width: 420px) { .nv-choices--2 { grid-template-columns: 1fr; } }
/* Level buttons: N1 ... N6 */
.nv-chips--levels .nv-chip { min-width: 62px; text-align: center; font-weight: 600; }

/* ── Day rows with tick chips: a compact way to pick time windows (one line per weekday) ─────────────── */
.nv-dayrows { border: 1.5px solid var(--nv-line); border-radius: var(--nv-r-input); overflow: hidden; background: var(--nv-surface); }
.nv-dayrow { display: grid; grid-template-columns: 5em 1fr; gap: 10px; align-items: center; padding: 10px 14px; }
.nv-dayrow + .nv-dayrow { border-top: 1px solid var(--nv-line); }
.nv-dayrow .d { font-weight: 600; font-size: .95rem; }
.nv-chip--check { position: relative; cursor: pointer; user-select: none; }
.nv-chip--check input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.nv-chip--check:has(input:checked) { border-color: var(--nv-accent); background: var(--nv-accent-soft); font-weight: 600; }
.nv-chip--check:has(input:checked)::before { content: "\2713\00a0"; color: var(--nv-accent); }
.nv-chip--check:has(input:focus-visible) { outline: 2px solid var(--nv-accent); outline-offset: 2px; }
@media (max-width: 420px) { .nv-dayrow { grid-template-columns: 4.4em 1fr; padding: 9px 10px; gap: 8px; } .nv-dayrow .nv-chip { padding: 7px 11px; font-size: .9rem; } }
