/**
 * NiXel Accommodation Booking — guest-facing design system.
 *
 * Self-contained on purpose. The guest pages must NOT depend on the admin
 * stylesheet: it is not loaded on the front end, and every class it provides
 * silently resolved to nothing — which is why the checkout form rendered as
 * bare labels and inputs.
 *
 * Everything is scoped under .nxr so a host theme cannot bleed into it and it
 * cannot bleed into the theme.
 */

/* The wrapper wears `alignfull` and absorbs the theme's break-out margins.
   The inner .nxr only has to centre itself — and no theme rule targets it, so
   the centring cannot be out-specified. */
/* width:auto, NOT 100%: a percentage resolves against the parent's CONTENT box,
   so with the theme's negative break-out margins the box ended up short by the
   padding and sat off-centre. auto lets the margins expand it to full width. */
.nxr-wrap{width:auto;display:block;}

.nxr{
  --nxr-ink:#0f172a;
  --nxr-body:#334155;
  --nxr-mut:#64748b;
  --nxr-line:#e2e8f0;
  --nxr-line-2:#cbd5e1;
  --nxr-bg:#ffffff;
  --nxr-soft:#f8fafc;
  --nxr-brand:var(--nx-b1,#2563eb);
  --nxr-brand-2:var(--nx-b2,#3b82f6);
  --nxr-ok:#047857;
  --nxr-warn:#b45309;
  --nxr-bad:#b91c1c;
  --nxr-r:14px;
  --nxr-shadow:0 1px 2px rgba(15,23,42,.04), 0 8px 24px rgba(15,23,42,.06);
  --nxr-shadow-lg:0 24px 60px rgba(15,23,42,.18);

  color:var(--nxr-body);
  font-size:15px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  /* 80% of the SCREEN, not of the theme's content column — themes wrap the
     shortcode in a narrow container, which is why `width:80%` rendered at 45%.
     The negative margin breaks out of that container without transform, which
     would create a containing block and trap the position:fixed modals. */
  /* `alignfull` already removes the theme's content-width cap, so the box only
     has to size and centre itself. The earlier negative-margin break-out was
     redundant and lost to the theme's own alignfull margins, leaving it flush
     left. auto margins cannot be out-specified in the same way. */
  width:min(80vw, 1500px);
  max-width:min(80vw, 1500px);
  margin-left:auto;
  margin-right:auto;
  /* Breathing room above and below.
     `alignfull` strips the theme's block spacing, so without this the first
     card is welded to the site header and the last one to the footer. Stated
     here rather than left to the theme, since we just removed the very margins
     it would have supplied. */
  margin-top:clamp(24px, 4vw, 56px);
  margin-bottom:clamp(32px, 5vw, 72px);
  min-width:0;
}
.nxr *,.nxr *::before,.nxr *::after{box-sizing:border-box;}
.nxr h2,.nxr h3{color:var(--nxr-ink);margin:0;line-height:1.25;letter-spacing:-.01em;}
.nxr h2{font-size:1.22rem;font-weight:700;}
.nxr h3{font-size:1.05rem;font-weight:650;}
.nxr p{margin:0;}
.nxr .nxr-muted{color:var(--nxr-mut);font-size:.86rem;}

/* ---------- surfaces ---------- */
.nxr-panel{
  background:var(--nxr-bg);
  border:1px solid var(--nxr-line);
  border-radius:var(--nxr-r);
  padding:22px;
  box-shadow:var(--nxr-shadow);
}
.nxr-panel + .nxr-panel{margin-top:16px;}

/* ---------- search bar ---------- */
.nxr-bar{
  /* Flex, not auto-fit grid: the dates want a fixed comfortable width, the
     guests summary wants the slack, and the button must size to its label
     rather than stretching to a column. */
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  align-items:stretch;
  background:var(--nxr-bg);
  border:1px solid var(--nxr-line);
  border-radius:var(--nxr-r);
  padding:10px;
  box-shadow:var(--nxr-shadow);
}
.nxr-field{
  flex:1 1 190px;
  display:flex;flex-direction:column;gap:3px;
  padding:11px 14px;
  border:1px solid var(--nxr-line);
  border-radius:10px;
  background:var(--nxr-bg);
  text-align:left;font:inherit;color:var(--nxr-ink);
  cursor:pointer;min-width:0;
  transition:border-color .15s ease, box-shadow .15s ease;
}
.nxr .nxr-field:hover{border-color:var(--nxr-line-2);}
.nxr-field:focus-within,.nxr-field:focus-visible{
  outline:none;border-color:var(--nxr-brand);
  box-shadow:0 0 0 3px color-mix(in srgb, var(--nxr-brand) 18%, transparent);
}
.nxr-lab{font-size:.7rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--nxr-mut);}
.nxr-field input[type=date],.nxr-field select{
  border:0;padding:0;font:inherit;font-size:.98rem;color:var(--nxr-ink);
  background:transparent;width:100%;outline:none;cursor:pointer;
}
.nxr-guests-summary{font-size:.98rem;color:var(--nxr-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.nxr-guests-btn{flex:1 1 210px;}
.nxr-date-field{flex:0 1 200px;}
.nxr-type-field{flex:1 1 190px;}
.nxr-search-btn{
  flex:0 0 auto;
  border:0;border-radius:10px;cursor:pointer;padding:0 34px;min-height:58px;
  font:inherit;font-weight:650;font-size:1rem;color:#fff;letter-spacing:.01em;
  background:linear-gradient(135deg,var(--nxr-brand),var(--nxr-brand-2));
  transition:filter .15s ease, transform .05s ease;
}
.nxr-search-btn:hover{filter:brightness(1.07);}
.nxr-search-btn:active{transform:translateY(1px);}
.nxr-nights{margin:10px 2px 18px;font-size:.86rem;color:var(--nxr-mut);}

/* ---------- results ---------- */
.nxr-type{
  display:grid;
  grid-template-columns:224px 1fr 210px;
  gap:20px;
  align-items:start;
  background:var(--nxr-bg);
  border:1px solid var(--nxr-line);
  border-radius:var(--nxr-r);
  padding:18px;
  margin:14px 0;
  box-shadow:var(--nxr-shadow);
  transition:border-color .15s ease, box-shadow .15s ease;
}
.nxr .nxr-type:hover{border-color:var(--nxr-line-2);box-shadow:0 4px 10px rgba(15,23,42,.05),0 16px 40px rgba(15,23,42,.09);}
.nxr-type.sold{opacity:.62;}
.nxr-type.sold:hover{border-color:var(--nxr-line);box-shadow:var(--nxr-shadow);}
.nxr-photo{
  width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:10px;display:block;
  background:linear-gradient(135deg,#eef2f7,#e2e8f0);
}
.nxr-type-body{min-width:0;}
.nxr-type-body h3{margin-bottom:2px;}
.nxr-sub{font-size:.82rem;color:var(--nxr-mut);}
.nxr-desc{margin-top:8px;font-size:.9rem;color:var(--nxr-body);}
.nxr-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px;}
.nxr-chip{
  font-size:.74rem;padding:4px 11px;border-radius:999px;
  background:var(--nxr-soft);border:1px solid var(--nxr-line);color:#475569;white-space:nowrap;
}
.nxr-price{
  display:flex;flex-direction:column;align-items:flex-end;gap:2px;text-align:right;
  padding-left:18px;border-left:1px solid var(--nxr-line);align-self:stretch;justify-content:center;
}
.nxr-amt{font-size:1.5rem;font-weight:750;color:var(--nxr-ink);line-height:1.1;letter-spacing:-.02em;}
.nxr-per{font-size:.78rem;color:var(--nxr-mut);}
.nxr-left{font-size:.76rem;font-weight:650;color:var(--nxr-warn);margin-top:4px;}
.nxr-pick{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:.85rem;color:var(--nxr-mut);}
.nxr-qty{
  padding:9px 11px;border:1px solid var(--nxr-line-2);border-radius:9px;
  font:inherit;font-size:.95rem;background:var(--nxr-bg);color:var(--nxr-ink);cursor:pointer;
}
.nxr-qty:focus{outline:none;border-color:var(--nxr-brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--nxr-brand) 18%,transparent);}
.nxr-reason{font-size:.84rem;font-weight:600;color:#9a3412;text-align:right;}

/* ---------- forms ---------- */
.nxr-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;}
.nxr-grid .full{grid-column:1/-1;}
.nxr-f{display:flex;flex-direction:column;gap:6px;min-width:0;}
.nxr-f > label{font-size:.82rem;font-weight:600;color:var(--nxr-ink);}
.nxr-f > label .req{color:var(--nxr-bad);}
.nxr-f input[type=text],.nxr-f input[type=email],.nxr-f input[type=tel],
.nxr-f input[type=time],.nxr-f input[type=date],.nxr-f input[type=number],
.nxr-f select,.nxr-f textarea{
  width:100%;padding:11px 13px;font:inherit;font-size:.95rem;color:var(--nxr-ink);
  background:var(--nxr-bg);border:1px solid var(--nxr-line-2);border-radius:10px;
  transition:border-color .15s ease, box-shadow .15s ease;
}
.nxr-f textarea{resize:vertical;min-height:76px;line-height:1.5;}
.nxr-f input:focus,.nxr-f select:focus,.nxr-f textarea:focus{
  outline:none;border-color:var(--nxr-brand);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--nxr-brand) 18%,transparent);
}
.nxr-f input::placeholder,.nxr-f textarea::placeholder{color:#94a3b8;}
.nxr-hint{font-size:.78rem;color:var(--nxr-mut);}
.nxr-f.err input,.nxr-f.err select{border-color:var(--nxr-bad);background:#fef2f2;}

/* ---------- summary table ---------- */
/* The bill. It read as a bare grid of hairlines with cramped rows; it should
   read as a receipt — what you booked, then the adjustments, then the total. */
.nxr .nxr-sumtable{
  width:100%;border-collapse:separate;border-spacing:0;font-size:.93rem;
  border:1px solid var(--nxr-line);border-radius:12px;overflow:hidden;
  background:var(--nxr-bg);
}
.nxr .nxr-sumtable td{
  padding:12px 16px;border-bottom:1px solid var(--nxr-line);
  color:var(--nxr-body);vertical-align:top;
}
.nxr .nxr-sumtable tr:last-child td{ border-bottom:0; }
.nxr .nxr-sumtable td:last-child{
  text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;
  color:var(--nxr-ink);font-weight:600;width:1%;
}
/* The booked line gets a name and a quiet second line of detail. */
.nxr .nxr-line-n{ display:block;font-weight:700;color:var(--nxr-ink);line-height:1.35; }
.nxr .nxr-line-s{ display:block;font-size:.82rem;color:var(--nxr-mut);margin-top:2px; }
.nxr-total td{font-weight:750;font-size:1.1rem;color:var(--nxr-ink);border-top:2px solid var(--nxr-line-2);border-bottom:0;padding-top:13px;}
.nxr-disc td{color:var(--nxr-ok);}
.nxr-was{text-decoration:line-through;opacity:.5;font-weight:400;margin-right:8px;}
.nxr-saved td{color:var(--nxr-ok);font-weight:650;text-align:right !important;font-size:.85rem;border:0;padding-top:3px;}
.nxr-note td{color:var(--nxr-mut);font-size:.8rem;border:0;padding-top:8px;text-align:left !important;}
.nxr-cap{display:block;margin-top:12px;padding:11px 14px;border-radius:10px;
  background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;font-size:.87rem;}

/* ---------- extras ---------- */
.nxr-extras{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:8px;}
.nxr-extra{
  display:flex;gap:10px;align-items:center;font-size:.9rem;padding:12px 14px;
  border:1px solid var(--nxr-line);border-radius:10px;cursor:pointer;background:var(--nxr-bg);
  transition:border-color .15s ease,background .15s ease;
}
.nxr .nxr-extra:hover{border-color:var(--nxr-brand);background:var(--nxr-soft);}
.nxr-extra input{accent-color:var(--nxr-brand);width:17px;height:17px;}
.nxr-extra .nxr-hint{margin-left:auto;}

/* ---------- consent + submit ---------- */
.nxr-consent{display:flex;gap:11px;align-items:flex-start;margin:20px 0 14px;font-size:.9rem;color:var(--nxr-body);}
.nxr-consent input{accent-color:var(--nxr-brand);width:18px;height:18px;margin-top:1px;flex:0 0 auto;}
.nxr-book-btn{
  width:100%;border:0;border-radius:999px;padding:16px;cursor:pointer;
  font:inherit;font-weight:700;font-size:1.02rem;color:#fff;letter-spacing:.01em;
  background:linear-gradient(135deg,var(--nxr-brand),var(--nxr-brand-2));
  box-shadow:0 8px 20px color-mix(in srgb,var(--nxr-brand) 26%,transparent);
  transition:filter .15s ease,transform .05s ease;
}
.nxr-book-btn:hover{filter:brightness(1.07);}
.nxr-book-btn:active{transform:translateY(1px);}
.nxr-book-btn:disabled{opacity:.55;cursor:progress;box-shadow:none;}
.nxr-msg{margin-top:13px;font-size:.9rem;color:var(--nxr-body);}
.nxr-msg.err{color:var(--nxr-bad);font-weight:600;}

/* ---------- success ---------- */
.nxr-success{
  border:1px solid #a7f3d0;background:linear-gradient(180deg,#f0fdf4,#ffffff);
  border-radius:var(--nxr-r);padding:30px;box-shadow:var(--nxr-shadow);
}
.nxr-success h2{margin-bottom:10px;}
.nxr-success .nxr-ref{
  display:inline-block;margin:4px 0 14px;padding:8px 16px;border-radius:9px;
  background:#fff;border:1px solid #a7f3d0;font-weight:750;letter-spacing:.06em;color:var(--nxr-ok);
}

/* ---------- guests modal ---------- */
.nxr-modal{position:fixed;inset:0;z-index:99999;background:rgba(15,23,42,.5);
  display:flex;align-items:center;justify-content:center;padding:18px;backdrop-filter:blur(2px);}
.nxr-modal[hidden]{display:none;}
.nxr-modal-card{
  background:#fff;border-radius:18px;width:min(560px,100%);max-height:88vh;overflow:auto;
  padding:22px 24px 24px;box-shadow:var(--nxr-shadow-lg);
}
.nxr-modal-head{display:flex;align-items:center;gap:14px;margin-bottom:8px;}
.nxr-modal-head strong{font-size:1.1rem;color:var(--nxr-ink);}
.nxr-modal-x{border:0;background:none;font-size:1.6rem;line-height:1;cursor:pointer;color:var(--nxr-mut);padding:0 4px;}
.nxr .nxr-modal-x:hover{color:var(--nxr-ink);}
.nxr-room-block{padding:16px 0;border-top:1px solid var(--nxr-line);}
.nxr-room-block:first-child{border-top:0;}
.nxr-room-head{display:flex;justify-content:space-between;align-items:center;}
.nxr-room-head strong{font-size:.95rem;color:var(--nxr-ink);}
.nxr-remove-room{border:0;background:none;color:var(--nxr-bad);cursor:pointer;font:inherit;font-size:.84rem;}
.nxr-remove-room:hover{text-decoration:underline;}
.nxr-count{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-top:14px;}
.nxr-count-lab{font-size:.95rem;color:var(--nxr-ink);}
.nxr-count-sub{display:block;font-size:.76rem;color:var(--nxr-mut);}
.nxr-step{display:flex;align-items:center;gap:14px;}
.nxr-step button{
  width:38px;height:38px;border-radius:50%;border:1.5px solid var(--nxr-brand);
  background:#fff;color:var(--nxr-brand);font-size:1.2rem;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:background .15s ease;
}
.nxr-step button:hover:not(:disabled){background:color-mix(in srgb,var(--nxr-brand) 10%,transparent);}
.nxr-step button:disabled{opacity:.3;cursor:not-allowed;border-color:var(--nxr-line-2);color:var(--nxr-mut);}
.nxr-step output{min-width:1.6em;text-align:center;font-variant-numeric:tabular-nums;font-weight:650;color:var(--nxr-ink);}
.nxr-ages{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px;}
.nxr-age{display:flex;flex-direction:column;gap:3px;padding:9px 12px;border:1px solid var(--nxr-line-2);border-radius:10px;}
.nxr-age span{font-size:.72rem;color:var(--nxr-mut);}
.nxr-age select{border:0;padding:0;font:inherit;background:transparent;outline:none;color:var(--nxr-ink);}
.nxr-validate .nxr-age.missing{border-color:var(--nxr-bad);background:#fef2f2;}
.nxr-modal-actions{display:flex;justify-content:flex-end;padding:14px 0 4px;}
.nxr-add-room{border:0;background:none;color:var(--nxr-brand);font:inherit;font-weight:650;cursor:pointer;font-size:.92rem;}
.nxr-add-room:hover{text-decoration:underline;}
.nxr-add-room:disabled{opacity:.4;cursor:not-allowed;text-decoration:none;}
.nxr-done{
  width:100%;border:0;border-radius:999px;padding:15px;font:inherit;font-weight:700;font-size:1rem;
  color:#fff;cursor:pointer;background:linear-gradient(135deg,var(--nxr-brand),var(--nxr-brand-2));
}
.nxr-done:hover{filter:brightness(1.07);}
.nxr-modal-err{color:var(--nxr-bad);font-size:.86rem;margin-top:10px;font-weight:600;}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .nxr-type{grid-template-columns:180px 1fr;}
  .nxr-price{grid-column:1/-1;border-left:0;border-top:1px solid var(--nxr-line);
    padding-left:0;padding-top:14px;align-items:flex-start;text-align:left;}
  .nxr-reason{text-align:left;}
}
/* Full-bleed is disabled on narrow screens: a viewport-width box plus a
   scrollbar produces horizontal overflow on mobile. */
@media (max-width:900px){
  .nxr{width:auto;max-width:100%;}
}
@media (max-width:600px){
  .nxr-bar{grid-template-columns:1fr;}
  .nxr-search-btn{width:100%;padding:15px;}
  .nxr-type{grid-template-columns:1fr;}
  .nxr-photo{aspect-ratio:16/9;}
  .nxr-ages{grid-template-columns:1fr;}
  .nxr-panel{padding:18px;}
}

/* honour a reader who has asked for less motion */
@media (prefers-reduced-motion:reduce){
  .nxr *{transition:none !important;}
}

/* ---------- select / stepper on a result card ---------- */
.nxr-type.chosen{border-color:var(--nxr-brand);box-shadow:0 0 0 1px var(--nxr-brand) inset, var(--nxr-shadow);}
.nxr-select-btn{
  margin-top:12px;border:0;border-radius:10px;cursor:pointer;padding:11px 26px;
  font:inherit;font-weight:650;font-size:.95rem;color:#fff;
  background:linear-gradient(135deg,var(--nxr-brand),var(--nxr-brand-2));
  transition:filter .15s ease,transform .05s ease;
}
.nxr-select-btn:hover{filter:brightness(1.07);}
.nxr-select-btn:active{transform:translateY(1px);}
.nxr-chosen{display:flex;align-items:center;gap:12px;margin-top:12px;}
.nxr-stp{
  width:34px;height:34px;border-radius:50%;border:1.5px solid var(--nxr-brand);
  background:#fff;color:var(--nxr-brand);font-size:1.1rem;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
}
.nxr-stp:hover:not(:disabled){background:color-mix(in srgb,var(--nxr-brand) 10%,transparent);}
.nxr-stp:disabled{opacity:.35;cursor:not-allowed;border-color:var(--nxr-line-2);color:var(--nxr-mut);}
.nxr-chosen-n{font-weight:650;color:var(--nxr-ink);font-size:.95rem;white-space:nowrap;}
.nxr-remove-type{
  margin-top:8px;border:0;background:none;color:var(--nxr-mut);cursor:pointer;
  font:inherit;font-size:.82rem;text-decoration:underline;padding:0;
}
.nxr .nxr-remove-type:hover{color:var(--nxr-bad);}
.nxr-more{
  margin-top:12px;border:0;background:none;padding:0;cursor:pointer;
  font:inherit;font-size:.85rem;font-weight:600;color:var(--nxr-brand);text-decoration:underline;
}
.nxr .nxr-more:hover{color:var(--nxr-brand-2);}

/* ---------- details modal ---------- */
.nxr-detail-card{width:min(760px,100%);}
.nxr-detail-body{margin-top:6px;}
.nxr-gallery{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin-bottom:16px;
}
.nxr-gallery img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:9px;display:block;background:var(--nxr-soft);}
.nxr-gallery img:first-child{grid-column:1/-1;aspect-ratio:16/9;}
.nxr-detail-desc{color:var(--nxr-body);margin-bottom:14px;}
.nxr-specs{
  display:grid;grid-template-columns:auto 1fr;gap:6px 16px;margin:0 0 18px;
  padding:14px 16px;background:var(--nxr-soft);border-radius:10px;font-size:.88rem;
}
.nxr-specs dt{color:var(--nxr-mut);}
.nxr-specs dd{margin:0;color:var(--nxr-ink);font-weight:600;}
.nxr-fgroups{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;}
.nxr-fgroup h4{
  margin:0 0 7px;font-size:.74rem;font-weight:700;letter-spacing:.05em;
  text-transform:uppercase;color:var(--nxr-mut);
}
.nxr-fgroup ul{margin:0;padding:0;list-style:none;}
.nxr-fgroup li{
  font-size:.87rem;color:var(--nxr-body);padding:3px 0 3px 20px;position:relative;
}
.nxr-fgroup li::before{
  content:"";position:absolute;left:2px;top:11px;width:9px;height:5px;
  border-left:2px solid var(--nxr-ok);border-bottom:2px solid var(--nxr-ok);
  transform:rotate(-45deg);
}
.nxr-fprop{grid-column:1/-1;margin-top:12px;padding-top:14px;border-top:1px solid var(--nxr-line);}
/* Property facilities are one long list rather than several short groups, so
   they get their own columns instead of running down a single narrow rail. */
.nxr-fprop ul{columns:2;column-gap:26px;}
.nxr-fprop li{break-inside:avoid;}
@media (max-width:520px){.nxr-fprop ul{columns:1;}}
.nxr-detail-select{margin-top:20px;}
.nxr-detail-select:disabled{opacity:.5;cursor:not-allowed;filter:none;}
@media (max-width:600px){
  .nxr-gallery{grid-template-columns:1fr 1fr;}
  .nxr-specs{grid-template-columns:1fr;}
  .nxr-specs dd{margin-bottom:6px;}
}

/* ---------- attribution footer ---------- */
.nxr-foot{
  margin-top:32px;padding-top:20px;border-top:1px solid var(--nxr-line);
  text-align:center;color:var(--nxr-mut);font-size:.84rem;
}
.nxr-foot-biz{margin-bottom:12px;}
.nxr-foot-addr{color:var(--nxr-body);margin-bottom:4px;}
.nxr-foot-links a{color:var(--nxr-mut);text-decoration:none;}
.nxr-foot-links a:hover{color:var(--nxr-brand);text-decoration:underline;}
.nxr-foot-by{font-size:.82rem;}
.nxr-foot-by a{color:var(--nxr-body);font-weight:600;text-decoration:none;}
.nxr-foot-by a:hover{color:var(--nxr-brand);text-decoration:underline;}
.nxr-foot-cr{font-size:.74rem;opacity:.7;margin-top:3px;}

/* ---------- secondary buttons used on the manage + review pages ---------- */
.nxr-ghost{
  border:1px solid var(--nxr-line-2);background:#fff;color:var(--nxr-body);
  border-radius:10px;padding:11px 22px;font:inherit;font-weight:600;font-size:.95rem;cursor:pointer;
  transition:border-color .15s ease,background .15s ease;
}
.nxr .nxr-ghost:hover{border-color:var(--nxr-line);background:var(--nxr-soft);}
.nxr-danger{
  border:0;border-radius:10px;padding:11px 24px;font:inherit;font-weight:650;font-size:.95rem;
  color:#fff;background:var(--nxr-bad);cursor:pointer;
}
.nxr-danger:hover{filter:brightness(1.08);}
.nxr-danger:disabled{opacity:.45;cursor:not-allowed;filter:none;}

/* manage page rows */
.nxr .nxm-row{display:flex;justify-content:space-between;gap:14px;padding:10px 0;
  border-bottom:1px solid #f1f5f9;font-size:.93rem;}
.nxr .nxm-row b{font-weight:650;color:var(--nxr-ink);text-align:right;}
.nxr .nxm-penalty{padding:14px 16px;border-radius:11px;background:var(--nxr-soft);
  border:1px solid var(--nxr-line);margin-bottom:16px;}
.nxr .nxm-free{color:var(--nxr-ok);}
.nxr .nxm-charge{color:var(--nxr-bad);}
.nxr .nxm-msg,.nxr .nxm-mmsg,.nxr .nxm-rmsg{margin-top:12px;font-size:.9rem;}
.nxr .nxm-msg.err,.nxr .nxm-mmsg.err{color:var(--nxr-bad);font-weight:600;}
.nxr .nxm-diff{margin:6px 0 4px;}

/* review page */
.nxr .nxrv-stars{display:flex;gap:8px;}
.nxr .nxrv-star{border:0;background:none;font-size:2.2rem;line-height:1;cursor:pointer;color:#d7dbe3;padding:0 2px;transition:color .12s ease;}
.nxr .nxrv-star:hover,.nxr .nxrv-star.on{color:#f5b400;}
.nxr .nxrv-consent{display:flex;gap:10px;align-items:flex-start;margin:14px 0;font-size:.9rem;}
.nxr .nxrv-msg{margin-top:12px;font-size:.9rem;}
.nxr .nxrv-msg.err{color:var(--nxr-bad);font-weight:600;}
.nxr .nxrv-google{display:inline-block;margin-top:14px;padding:13px 26px;border-radius:10px;
  background:#4285f4;color:#fff;text-decoration:none;font-weight:650;}

/* ---------- manage page actions ---------- */
.nxr .nxm-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px;padding-top:16px;border-top:1px solid var(--nxr-line);}
.nxr .nxm-emailbox{margin-top:14px;padding:14px 16px;border:1px solid var(--nxr-line);border-radius:11px;background:var(--nxr-soft);}
.nxr .nxm-emailbox label{display:block;font-size:.82rem;font-weight:600;color:var(--nxr-ink);margin-bottom:6px;}
.nxr .nxm-emails{width:100%;padding:11px 13px;font:inherit;font-size:.95rem;border:1px solid var(--nxr-line-2);border-radius:10px;}
.nxr .nxm-emails:focus{outline:none;border-color:var(--nxr-brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--nxr-brand) 18%,transparent);}
.nxr .nxm-emailrow{display:flex;gap:12px;align-items:center;margin-top:10px;flex-wrap:wrap;}
.nxr .nxm-emailmsg{font-size:.85rem;color:var(--nxr-ok);}

/* ---------- print / save as PDF ---------- */
@media print{
  body{background:#fff !important;}
  header,footer,nav,.wp-block-navigation,.nxm-actions,.nxm-emailbox,
  .nxm-start-modify,.nxm-start-cancel,.nxm-modify,.nxm-confirm,.nxm-find,
  .nxr-bar,.nxr-nights,.nxr-results,.nxr-checkout{display:none !important;}
  .nxr{width:100% !important;max-width:100% !important;margin:0 !important;}
  .nxr-panel,.nxr-success{border:0 !important;box-shadow:none !important;padding:0 !important;}
  .nxr .nxm-row{break-inside:avoid;}
  .nxr-foot{border-top:1px solid #ddd;margin-top:24px;}
  a[href]::after{content:"";}   /* no URL noise on a printed confirmation */
}

/* ---------- "can't cancel online" panel ---------- */
/* A refusal is a moment of friction; it should read as help, not as an error. */
.nxr .nxm-blocked{
  margin-top:18px;padding:18px 20px;border-radius:14px;
  background:linear-gradient(180deg,#fbfcfe,#f4f7fb);
  border:1px solid var(--nxr-line);
}
.nxr .nxm-blocked-head{font-weight:800;font-size:1.02rem;color:var(--nxr-ink);margin-bottom:6px;}
.nxr .nxm-blocked-why{margin:0 0 14px;color:var(--nxr-muted);font-size:.95rem;line-height:1.5;}
.nxr .nxm-blocked-ways{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:10px;}
.nxr .nxm-blocked-ways > *{text-decoration:none;}
.nxr .nxm-blocked .nxr-hint{margin:0;}
@media (max-width:520px){
  .nxr .nxm-blocked-ways{flex-direction:column;align-items:stretch;}
  .nxr .nxm-blocked-ways > *{text-align:center;}
}

/* A unit that cannot hold the party — said on the card, not at checkout. */
.nxr .nxr-toosmall{
  margin-top:6px;font-size:.84rem;font-weight:600;line-height:1.45;
  color:var(--nxr-bad,#c2410c);
}

/* ================================================================
   Theme-bleed guard
   ================================================================
   This widget renders inside somebody else's theme, and themes style bare
   `button:hover { color:#fff }`. Every property we leave unstated is one the
   theme gets to decide — which is how "Email this confirmation" ended up white
   text on a white background the moment you hovered it.

   So: state the text colour for EVERY interactive state, not just the resting
   one. Scoped under .nxr so none of this escapes into the host page. */
.nxr .nxr-ghost,
.nxr .nxr-ghost:hover,
.nxr .nxr-ghost:focus,
.nxr .nxr-ghost:active,
.nxr .nxr-ghost:visited{ color:var(--nxr-body); text-decoration:none; }
.nxr .nxr-ghost:hover{ border-color:var(--nxr-line); background:var(--nxr-soft); }

/* Field-shaped controls (the date and guests pickers are BUTTONS styled as
   fields). Pin the background as well as the text: a theme painting
   `button:hover{background:#2b4ba0}` turned the guests picker into dark text on
   a dark blue block. Colour alone was not enough — state every property the
   theme could set. */
.nxr .nxr-field,
.nxr .nxr-field:hover,
.nxr .nxr-field:focus,
.nxr .nxr-field:focus-within,
.nxr .nxr-field:active{
  background:var(--nxr-bg);
  color:var(--nxr-ink);
  box-shadow:none;
}
.nxr .nxr-field:hover{ border-color:var(--nxr-line-2); }
.nxr .nxr-field:focus-within,
.nxr .nxr-field:focus-visible{
  border-color:var(--nxr-brand);
  box-shadow:0 0 0 3px color-mix(in srgb, var(--nxr-brand) 18%, transparent);
}
/* The label and value inside it are separate elements, so they need saying too. */
.nxr .nxr-field .nxr-lab,
.nxr .nxr-field:hover .nxr-lab{ color:var(--nxr-mut); }
.nxr .nxr-field .nxr-guests-summary,
.nxr .nxr-field:hover .nxr-guests-summary,
.nxr .nxr-field input,
.nxr .nxr-field:hover input,
.nxr .nxr-field select,
.nxr .nxr-field:hover select{ color:var(--nxr-ink); background:transparent; }

/* Solid buttons: white on brand, in every state. */
.nxr .nxr-search-btn,  .nxr .nxr-search-btn:hover,  .nxr .nxr-search-btn:focus,  .nxr .nxr-search-btn:active,
.nxr .nxr-book-btn,    .nxr .nxr-book-btn:hover,    .nxr .nxr-book-btn:focus,    .nxr .nxr-book-btn:active,
.nxr .nxr-select-btn,  .nxr .nxr-select-btn:hover,  .nxr .nxr-select-btn:focus,  .nxr .nxr-select-btn:active,
.nxr .nxr-done,        .nxr .nxr-done:hover,        .nxr .nxr-done:focus,        .nxr .nxr-done:active,
.nxr .nxr-danger,      .nxr .nxr-danger:hover,      .nxr .nxr-danger:focus,      .nxr .nxr-danger:active{
  color:#fff; text-decoration:none;
}
/* …and their backgrounds, so a theme cannot repaint them either. */
.nxr .nxr-search-btn, .nxr .nxr-search-btn:hover, .nxr .nxr-search-btn:focus,
.nxr .nxr-book-btn,   .nxr .nxr-book-btn:hover,   .nxr .nxr-book-btn:focus,
.nxr .nxr-select-btn, .nxr .nxr-select-btn:hover, .nxr .nxr-select-btn:focus,
.nxr .nxr-done,       .nxr .nxr-done:hover,       .nxr .nxr-done:focus{
  background:var(--nxr-brand);
}
.nxr .nxr-danger, .nxr .nxr-danger:hover, .nxr .nxr-danger:focus{ background:var(--nxr-bad); }
.nxr .nxr-ghost,  .nxr .nxr-ghost:focus{ background:#fff; }

/* Link-style controls keep the brand colour rather than inheriting a theme's. */
.nxr .nxr-more,        .nxr .nxr-more:focus,        .nxr .nxr-more:active,
.nxr .nxr-add-room,    .nxr .nxr-add-room:hover,    .nxr .nxr-add-room:focus,
.nxr .nxr-remove-room, .nxr .nxr-remove-room:hover, .nxr .nxr-remove-room:focus{
  color:var(--nxr-brand);
}
.nxr .nxr-more:hover{ color:var(--nxr-brand-2); }

/* Steppers and pickers: the glyph must stay readable on its tinted hover. */
.nxr .nxr-stp, .nxr .nxr-stp:hover, .nxr .nxr-stp:focus,
.nxr .nxr-step button, .nxr .nxr-step button:hover, .nxr .nxr-step button:focus{
  color:var(--nxr-ink);
}
.nxr .nxr-modal-x, .nxr .nxr-modal-x:hover, .nxr .nxr-modal-x:focus{ color:var(--nxr-ink); }

/* A keyboard user must see focus even if the theme removed the outline. */
.nxr button:focus-visible,
.nxr a:focus-visible,
.nxr input:focus-visible,
.nxr select:focus-visible,
.nxr textarea:focus-visible{
  outline:2px solid var(--nxr-brand);
  outline-offset:2px;
}

/* ---------- property contact card ---------- */
/* Was one run-on line of pipe-separated links. These are the details a guest
   needs right before they travel, so each gets its own labelled row and its own
   tap target. */
.nxr .nxr-contact{
  border:1px solid var(--nxr-line);
  border-radius:14px;
  background:var(--nxr-bg);
  padding:18px 20px;
  text-align:left;
}
.nxr .nxr-ct-head{
  font-weight:800;font-size:1.02rem;color:var(--nxr-ink);
  margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--nxr-line);
}
.nxr .nxr-ct-row{
  display:flex;gap:12px;align-items:flex-start;
  padding:9px 0;
}
.nxr .nxr-ct-row + .nxr-ct-row{ border-top:1px solid color-mix(in srgb, var(--nxr-line) 55%, transparent); }
.nxr .nxr-ct-ico{
  flex:0 0 auto;width:26px;height:26px;border-radius:8px;
  display:inline-flex;align-items:center;justify-content:center;
  background:color-mix(in srgb, var(--nxr-brand) 10%, transparent);
  color:var(--nxr-brand);font-size:.85rem;line-height:1;
}
.nxr .nxr-ct-val{
  min-width:0;font-size:.95rem;line-height:1.5;color:var(--nxr-body);
  word-break:break-word;
}
.nxr .nxr-ct-lab{
  display:block;font-size:.68rem;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--nxr-mut);margin-bottom:1px;
}
.nxr .nxr-ct-val a{ color:var(--nxr-brand);text-decoration:none;font-weight:600; }
.nxr .nxr-ct-val a:hover{ text-decoration:underline; }
.nxr .nxr-ct-map{ white-space:nowrap; }
@media (max-width:520px){
  .nxr .nxr-contact{ padding:14px 15px; }
  .nxr .nxr-ct-map{ display:block;margin-top:3px; }
}

/* The Find/submit button must not sit flush against the field row above it —
   they read as one control otherwise, and on a narrow screen the eye jumps
   straight past the labels. */
.nxr .nxr-grid + .nxr-book-btn,
.nxr .nxr-grid + .nxr-select-btn,
.nxr .nxr-grid + .nxr-ghost{ margin-top:18px; }
.nxr .nxm-find-btn{ margin-top:18px; }
.nxr .nxm-find-msg:not(:empty){ margin-top:12px; }

/* And the panels themselves need room from each other. */
.nxr .nxr-panel + .nxr-panel{ margin-top:20px; }

/* Link-style buttons must pin their BACKGROUND too, not just their colour.
   `.nxr-more` ("+68 more · View details") is a <button>, so a theme painting
   `button:hover{background:#2b4ba0}` put a blue block behind purple text. */
.nxr .nxr-more,
.nxr .nxr-more:hover,
.nxr .nxr-more:focus,
.nxr .nxr-more:active,
.nxr .nxr-add-room,
.nxr .nxr-add-room:hover,
.nxr .nxr-add-room:focus,
.nxr .nxr-remove-room,
.nxr .nxr-remove-room:hover,
.nxr .nxr-remove-room:focus,
.nxr .nxr-modal-x,
.nxr .nxr-modal-x:hover,
.nxr .nxr-modal-x:focus{
  background:transparent;
  box-shadow:none;
}
.nxr .nxr-more:hover{ color:var(--nxr-brand-2); text-decoration:underline; }

/* ---------- full-size photo viewer ---------- */
.nxr .nxr-photo-btn{
  display:block;padding:0;border:0;background:none;cursor:zoom-in;position:relative;
  border-radius:12px;overflow:hidden;
}
.nxr .nxr-photo-n{
  position:absolute;left:8px;bottom:8px;padding:3px 9px;border-radius:6px;
  background:rgba(15,23,42,.72);color:#fff;font-size:.7rem;font-weight:700;
  pointer-events:none;
}
.nxr .nxr-gal-btn{ display:block;padding:0;border:0;background:none;cursor:zoom-in; }
.nxr .nxr-gal-btn img{ display:block; }

.nxr .nxr-lightbox{
  position:fixed;inset:0;z-index:100000;
  display:flex;align-items:center;justify-content:center;
  background:rgba(8,12,20,.92);padding:4vh 4vw;
}
.nxr .nxr-lightbox[hidden]{ display:none; }
.nxr .nxr-lb-img{
  max-width:100%;max-height:92vh;width:auto;height:auto;
  border-radius:10px;box-shadow:0 30px 80px rgba(0,0,0,.5);
  /* The backdrop closes on click; the photo must not. */
  pointer-events:none;
}
.nxr .nxr-lb-x,.nxr .nxr-lb-prev,.nxr .nxr-lb-next{
  position:absolute;border:0;cursor:pointer;color:#fff;
  background:rgba(255,255,255,.14);border-radius:999px;
  width:46px;height:46px;font-size:26px;line-height:1;
  display:flex;align-items:center;justify-content:center;
}
.nxr .nxr-lb-x{ top:16px;right:16px;font-size:30px; }
.nxr .nxr-lb-prev{ left:14px; }
.nxr .nxr-lb-next{ right:14px; }
.nxr .nxr-lb-x:hover,.nxr .nxr-lb-prev:hover,.nxr .nxr-lb-next:hover{
  background:rgba(255,255,255,.28);color:#fff;
}
.nxr .nxr-lb-count{
  position:absolute;bottom:18px;left:0;right:0;text-align:center;
  color:#fff;font-size:.85rem;font-weight:600;opacity:.85;
}
@media (max-width:560px){
  .nxr .nxr-lightbox{ padding:0; }
  .nxr .nxr-lb-img{ max-height:100vh;border-radius:0; }
  .nxr .nxr-lb-prev,.nxr .nxr-lb-next{ bottom:18px;top:auto;width:42px;height:42px; }
}

/* ================================================================
   Blanket theme-bleed guard — stop patching this one control at a time
   ================================================================
   Themes style bare `button:hover { background:…; color:… }`, which has
   specificity 0,1,1. Every control we render is inside .nxr, so `.nxr button`
   (0,2,1) beats the theme, while our own component rules — `.nxr .nxr-book-btn`
   and friends (0,3,1) — still beat this. That ordering is the whole point:
   one rule neutralises the host for EVERY control, and our components paint
   the ones that should look painted.

   Chasing this element by element (ghost, then the guests field, then "+68
   more", then "Add another apartment") was never going to end. */
.nxr button,
.nxr button:hover,
.nxr button:focus,
.nxr button:active,
.nxr a,
.nxr a:hover,
.nxr a:focus,
.nxr a:active{
  background-color:transparent;
  background-image:none;
  box-shadow:none;
  text-shadow:none;
}
.nxr button:hover,
.nxr button:focus,
.nxr button:active{ color:inherit; }
/* Inputs keep their own surface, but the theme must not repaint it. */
.nxr input,
.nxr input:hover,
.nxr input:focus,
.nxr select,
.nxr select:hover,
.nxr select:focus,
.nxr textarea,
.nxr textarea:hover,
.nxr textarea:focus{
  background-color:var(--nxr-bg);
  color:var(--nxr-ink);
  box-shadow:none;
}
/* Checkboxes and radios draw themselves; a background here would hide them. */
.nxr input[type=checkbox],
.nxr input[type=radio]{ background-color:initial; }

/* Never render an empty notice: an element with a background but no text reads
   as a broken row. */
.nxr .nxr-cap[hidden]{ display:none; }
.nxr .nxr-cap:empty{ display:none; }
.nxr .nxr-policy-text:empty{ display:none; }

/* ================================================================
   Tablet — the gap between the phone rules and the desktop layout
   ================================================================
   Breakpoints existed at 520/560/600/900 but nothing addressed the 600–900
   band, where a portrait tablet lands: a four-across facilities grid and a
   side-by-side result card both squeeze there rather than break. */
@media (max-width:900px){
  .nxr{ width:min(94vw, 1500px); max-width:min(94vw, 1500px); }
  .nxr .nxr-bar{ flex-wrap:wrap; }
  .nxr .nxr-field{ flex:1 1 calc(50% - 10px); }
  .nxr .nxr-search-btn{ flex:1 1 100%; }
  .nxr .nxr-grid{ grid-template-columns:repeat(2, minmax(0, 1fr)); }
  .nxr .nxr-gallery{ grid-template-columns:repeat(3, minmax(0, 1fr)); }
}
@media (max-width:760px){
  /* The result card stops being a row: photo on top, then the detail, then
     the price — a 190px photo beside 60% of a tablet's width is unreadable. */
  .nxr .nxr-type{ flex-direction:column; align-items:stretch; }
  .nxr .nxr-type .nxr-photo,
  .nxr .nxr-type .nxr-photo-btn{ width:100%; }
  .nxr .nxr-type .nxr-photo{ height:200px;object-fit:cover; }
  .nxr .nxr-price{ border-left:0;border-top:1px solid var(--nxr-line);text-align:left; }
  .nxr .nxr-gallery{ grid-template-columns:repeat(2, minmax(0, 1fr)); }
  .nxr .nxr-specs{ grid-template-columns:1fr; }
}
@media (max-width:600px){
  /* Full width, but NOT flush to the glass: padding here rather than a narrower
     box, so cards still use the screen while nothing touches the bezel. */
  .nxr{
    width:100%; max-width:100%;
    padding-left:14px; padding-right:14px;
    box-sizing:border-box;
    margin-top:18px; margin-bottom:24px;
  }
  .nxr .nxr-field{ flex:1 1 100%; }
  .nxr .nxr-grid{ grid-template-columns:1fr; }
  .nxr .nxr-gallery{ grid-template-columns:1fr 1fr; }
  /* A modal that is 90% of a phone leaves nowhere to put a thumb. */
  .nxr .nxr-modal-card{ width:100%;max-width:100%;max-height:100dvh;border-radius:0; }
}

/* Anything that can overflow gets to scroll inside itself rather than pushing
   the page sideways — a horizontal scrollbar on a phone is always a bug. */
.nxr table{ max-width:100%; }
.nxr .nxr-summary{ overflow-x:auto; }
.nxr img{ max-width:100%; height:auto; }

/* ================================================================
   Two-month date-range picker
   ================================================================ */
.nxr .nxr-dates-btn{ flex:1 1 320px; text-align:left; }
.nxr .nxr-dates-summary{
  font-size:.98rem;color:var(--nxr-ink);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;
}
.nxr .nxr-cal{
  position:fixed;inset:0;z-index:99998;
  display:flex;align-items:center;justify-content:center;
  background:rgba(8,12,20,.45);padding:3vh 3vw;
}
.nxr .nxr-cal[hidden]{ display:none; }
.nxr .nxr-cal-card{
  background:var(--nxr-bg);border-radius:16px;box-shadow:var(--nxr-shadow-lg);
  width:min(760px, 100%);max-height:94vh;overflow:auto;padding:18px 20px 14px;
}
.nxr .nxr-cal-top{ display:flex;align-items:center;justify-content:space-between;gap:12px; }
.nxr .nxr-cal-legend{ display:flex;gap:14px;font-size:.78rem;color:var(--nxr-mut);font-weight:600; }
.nxr .nxr-cal-leg-in::before,
.nxr .nxr-cal-leg-out::before{
  content:"";display:inline-block;width:11px;height:11px;border-radius:50%;
  margin-right:6px;vertical-align:-1px;background:var(--nxr-brand);
}
.nxr .nxr-cal-leg-out::before{ background:color-mix(in srgb,var(--nxr-brand) 40%,#fff); }

.nxr .nxr-cal-nav{ position:relative;margin-top:8px; }
.nxr .nxr-cal-months{ display:grid;grid-template-columns:1fr 1fr;gap:26px; }
.nxr .nxr-cal-prev,.nxr .nxr-cal-next{
  position:absolute;top:-2px;border:1px solid var(--nxr-line);background:var(--nxr-bg);
  width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:19px;line-height:1;
  color:var(--nxr-ink);display:flex;align-items:center;justify-content:center;z-index:1;
}
.nxr .nxr-cal-prev{ left:0; }
.nxr .nxr-cal-next{ right:0; }
.nxr .nxr-cal-prev:disabled{ opacity:.35;cursor:not-allowed; }

.nxr .nxr-cal-mh{ text-align:center;font-weight:800;color:var(--nxr-ink);margin:2px 0 12px;font-size:1rem; }
.nxr .nxr-cal-dow,
.nxr .nxr-cal-grid{ display:grid;grid-template-columns:repeat(7,1fr);gap:2px; }
.nxr .nxr-cal-dow span{
  text-align:center;font-size:.72rem;font-weight:700;color:var(--nxr-mut);padding-bottom:6px;
}
.nxr .nxr-cal-d{
  aspect-ratio:1;border:0;background:transparent;cursor:pointer;border-radius:50%;
  font:inherit;font-size:.92rem;color:var(--nxr-ink);
  display:flex;align-items:center;justify-content:center;
}
.nxr .nxr-cal-d:hover:not(:disabled){ background:var(--nxr-soft);color:var(--nxr-ink); }
.nxr .nxr-cal-d.is-past{ color:var(--nxr-line-2);cursor:not-allowed; }
.nxr .nxr-cal-d.is-between{
  background:color-mix(in srgb,var(--nxr-brand) 12%,transparent);
  border-radius:0;color:var(--nxr-ink);
}
.nxr .nxr-cal-d.is-start,
.nxr .nxr-cal-d.is-end,
.nxr .nxr-cal-d.is-start:hover,
.nxr .nxr-cal-d.is-end:hover{ background:var(--nxr-brand);color:#fff;font-weight:700; }

.nxr .nxr-cal-foot{
  display:flex;align-items:center;gap:12px;margin-top:14px;padding-top:12px;
  border-top:1px solid var(--nxr-line);
}
.nxr .nxr-cal-said{ flex:1 1 auto;font-size:.86rem;color:var(--nxr-mut); }

@media (max-width:720px){
  .nxr .nxr-cal{ padding:0; }
  .nxr .nxr-cal-card{ width:100%;max-width:100%;max-height:100dvh;border-radius:0;padding:14px; }
  /* One month at a time, scrolled — two never fit on a phone. */
  .nxr .nxr-cal-months{ grid-template-columns:1fr;gap:20px; }
  .nxr .nxr-cal-foot{ position:sticky;bottom:0;background:var(--nxr-bg);padding-bottom:6px; }
}

/* ---------- mobile: nothing touches the edge ---------- */
@media (max-width:600px){
  /* Panels keep their own inner padding so text never starts at the border. */
  .nxr .nxr-panel,
  .nxr .nxr-type,
  .nxr .nxr-contact,
  .nxr .nxr-summary{ padding-left:16px; padding-right:16px; }
  .nxr .nxr-panel{ padding-top:18px; padding-bottom:18px; }

  /* The lightbox and the calendar are deliberately edge-to-edge — they are
     full-screen surfaces, not cards — so exempt them from the page padding. */
  .nxr .nxr-lightbox,
  .nxr .nxr-cal{ padding-left:0; padding-right:0; }

  /* A sticky footer inside a full-screen panel needs its own side padding
     back, or its buttons sit on the bezel. */
  .nxr .nxr-cal-foot{ padding-left:14px; padding-right:14px; }
}
@media (max-width:400px){
  .nxr{ padding-left:10px; padding-right:10px; }
  .nxr .nxr-panel,
  .nxr .nxr-type,
  .nxr .nxr-contact{ padding-left:13px; padding-right:13px; }
}

/* ---------- the bill, continued ---------- */
.nxr .nxr-sumtable .nxr-disc td{ color:var(--nxr-ok); }
.nxr .nxr-sumtable .nxr-disc td:last-child{ color:var(--nxr-ok); }
.nxr .nxr-sumtable .nxr-total td{
  background:var(--nxr-soft);
  border-top:2px solid var(--nxr-line);
  font-size:1.06rem;font-weight:800;color:var(--nxr-ink);padding-top:14px;padding-bottom:14px;
}
.nxr .nxr-sumtable .nxr-total td:last-child{ font-size:1.18rem;font-weight:800; }
.nxr .nxr-was{
  color:var(--nxr-mut);text-decoration:line-through;font-weight:600;
  font-size:.88rem;margin-right:8px;
}
.nxr .nxr-sumtable .nxr-saved td{
  background:color-mix(in srgb, var(--nxr-ok) 9%, transparent);
  color:var(--nxr-ok);font-weight:700;font-size:.86rem;text-align:center;
}
.nxr .nxr-sumtable .nxr-note td{
  color:var(--nxr-mut);font-size:.82rem;font-weight:400;line-height:1.5;
  background:var(--nxr-soft);
}
@media (max-width:520px){
  .nxr .nxr-sumtable td{ padding:11px 12px; }
  .nxr .nxr-sumtable .nxr-total td{ font-size:1rem; }
  .nxr .nxr-sumtable .nxr-total td:last-child{ font-size:1.1rem; }
}


/* hidden means hidden — see the note in nixel-admin.css. */
.nxr [hidden]{ display:none !important; }
