/* Norfolk direct booking — scoped styles (prefix .nfc-). Kept in its own file so
   it never collides with the global stylesheet. Brand tokens inline. */
.nfc{
  --forest:#1F2419; --brass:#B08D57; --cream:#FAF7F2; --ink:#1A1612;
  --accent:#3D4F3D; --stone:#E8E5DD; --brass-lt:#C9A878; --cream-alt:#F2EBE0;
  --avail:#dcecd0; --avail-bd:#a9cf90; --unavail:#ecd6cf; --unavail-bd:#d39e8e;
  --enq:#f4e6c2; --enq-bd:#dcbd80;
  max-width:1100px; margin:0 auto; padding:clamp(1.5rem,4vw,4rem) 1.25rem 4rem;
  color:var(--ink); font-family:"Inter",system-ui,sans-serif;
}
.nfc-eyebrow{ letter-spacing:.18em; text-transform:uppercase; font-size:.72rem; font-weight:600; color:var(--brass); margin:0 0 .9rem; }
.nfc h1{ font-family:"Fraunces",Georgia,serif; font-weight:400; font-size:clamp(2rem,5vw,3rem); line-height:1.05; color:var(--forest); margin:0 0 .6rem; }
.nfc h2{ font-family:"Fraunces",serif; font-weight:400; color:var(--forest); font-size:1.5rem; margin:2.4rem 0 .4rem; }
.nfc .nfc-sub{ max-width:60ch; color:#4a4339; font-size:1rem; line-height:1.6; margin:0 0 1rem; }
.nfc-disclaimer{ font-size:.85rem; line-height:1.55; color:#5a5347; background:var(--cream-alt);
  border-left:3px solid var(--brass); border-radius:0 8px 8px 0; padding:.85rem 1rem; margin:1rem 0; }

/* Controls */
.nfc-controls{ display:flex; flex-wrap:wrap; gap:.6rem; align-items:center; margin:.6rem 0 1rem; }
.nfc-controls .nfc-range-label{ font-weight:600; color:var(--forest); margin-right:auto; }
.nfc-btn{ font:inherit; font-size:.85rem; font-weight:600; padding:.45rem .8rem; border-radius:8px;
  border:1px solid var(--stone); background:#fff; color:var(--forest); cursor:pointer; }
.nfc-btn[aria-pressed="true"]{ background:var(--forest); color:var(--cream); border-color:var(--forest); }
.nfc-btn:disabled{ opacity:.4; cursor:not-allowed; }

/* Grid */
.nfc-gridwrap{ overflow-x:auto; border:1px solid var(--stone); border-radius:12px; background:var(--cream); -webkit-overflow-scrolling:touch; }
.nfc-grid{ border-collapse:separate; border-spacing:0; min-width:max-content; font-size:.72rem; }
.nfc-grid th, .nfc-grid td{ padding:0; }
.nfc-grid thead th{ position:sticky; top:0; background:var(--cream); font-weight:600; color:#6a6253;
  height:38px; min-width:26px; text-align:center; border-bottom:1px solid var(--stone); }
.nfc-grid thead th.nfc-month{ color:var(--brass); }
.nfc-rowlabel{ position:sticky; left:0; z-index:2; background:var(--cream); text-align:left;
  font-size:.82rem; font-weight:600; color:var(--forest); padding:0 .9rem; min-width:140px;
  border-right:1px solid var(--stone); border-bottom:1px solid var(--stone); white-space:nowrap; }
.nfc-grid thead th.nfc-corner{ left:0; z-index:3; text-align:left; padding:0 .9rem; min-width:140px; border-right:1px solid var(--stone); }
.nfc-cell{ height:34px; min-width:26px; border-bottom:1px solid #f3f1ea; border-right:1px solid #f3f1ea; cursor:default; }
.nfc-cell.A{ background:var(--avail); box-shadow:inset 0 0 0 1px var(--avail-bd); }
.nfc-cell.U{ background:var(--unavail); box-shadow:inset 0 2px 0 var(--unavail-bd), inset 0 -2px 0 var(--unavail-bd); }
.nfc-cell.E{ background:var(--enq); box-shadow:inset 0 2px 0 var(--enq-bd), inset 0 -2px 0 var(--enq-bd); }
.nfc-cell.A{ cursor:pointer; }
.nfc-cell.A:hover{ outline:2px solid var(--brass); outline-offset:-2px; }

.nfc-legend{ display:flex; gap:1rem; flex-wrap:wrap; font-size:.78rem; color:#5a5347; margin:.7rem 0 0; }
.nfc-legend span{ display:inline-flex; align-items:center; gap:.4rem; }
.nfc-sw{ width:14px; height:14px; border-radius:3px; display:inline-block; }
.nfc-sw.A{ background:var(--avail); border:1px solid var(--avail-bd); }
.nfc-sw.U{ background:var(--unavail); border:1px solid var(--unavail-bd); }
.nfc-sw.E{ background:var(--enq); border:1px solid var(--enq-bd); }

/* Checker + table */
.nfc-panel{ background:var(--cream); border:1px solid var(--stone); border-radius:12px; padding:clamp(1.1rem,3vw,1.6rem); }
.nfc-daterow{ display:grid; gap:.9rem; grid-template-columns:1fr 1fr; max-width:420px; }
.nfc-field label{ display:block; font-size:.8rem; font-weight:600; color:var(--forest); margin:0 0 .35rem; }
.nfc-field input, .nfc-field select, .nfc-field textarea{ width:100%; box-sizing:border-box; padding:.65rem .75rem;
  font:inherit; color:var(--ink); background:#fff; border:1px solid #d8d2c6; border-radius:9px; }
.nfc-field input:focus, .nfc-field select:focus, .nfc-field textarea:focus{ outline:2px solid var(--brass); outline-offset:1px; border-color:var(--brass); }
.nfc-field{ margin:0 0 1rem; }

.nfc-results{ width:100%; border-collapse:collapse; margin:1.1rem 0 0; font-size:.92rem; }
.nfc-results th, .nfc-results td{ text-align:left; padding:.6rem .6rem; border-bottom:1px solid var(--stone); vertical-align:middle; }
.nfc-results th{ font-size:.74rem; letter-spacing:.04em; text-transform:uppercase; color:#7a715f; }
.nfc-pill{ display:inline-block; font-size:.74rem; font-weight:700; padding:.2rem .55rem; border-radius:999px; }
.nfc-pill.A{ background:var(--avail); color:#2c3d2c; }
.nfc-pill.U{ background:var(--unavail); color:#7a3526; }
.nfc-pill.E{ background:var(--enq); color:#6a5326; }
.nfc-pick{ font:inherit; font-size:.82rem; font-weight:600; padding:.4rem .75rem; border-radius:8px; cursor:pointer; border:1px solid var(--forest); background:var(--forest); color:var(--cream); }
.nfc-pick.enq{ background:#fff; color:var(--forest); border-color:var(--brass); }
.nfc-warn{ background:#fbf3e6; color:#6a5326; border:1px solid #e9d6ad; border-radius:9px; padding:.7rem .85rem; font-size:.88rem; margin:.9rem 0 0; }

/* Form */
.nfc-form{ margin-top:1.2rem; }
.nfc-form .nfc-grid2{ display:grid; gap:.9rem; grid-template-columns:1fr 1fr; }
.nfc-cta{ width:100%; padding:.95rem 1.2rem; font:inherit; font-weight:600; color:var(--cream);
  background:var(--forest); border:0; border-radius:10px; cursor:pointer; transition:background .15s ease; }
.nfc-cta:hover:not(:disabled){ background:var(--accent); }
.nfc-cta:disabled{ background:#b6b0a4; cursor:not-allowed; }
.nfc-status{ margin:.6rem 0; padding:.7rem .85rem; border-radius:9px; font-size:.9rem; border:1px solid transparent; }
.nfc-status[data-kind="ok"]{ background:var(--avail); color:#2c3d2c; border-color:var(--avail-bd); }
.nfc-status[data-kind="error"]{ background:#f7ecea; color:#7a3a30; border-color:#e6c6bf; }
.nfc-hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

@media(max-width:620px){
  .nfc-daterow, .nfc-form .nfc-grid2{ grid-template-columns:1fr; }
}
@media(prefers-reduced-motion:reduce){ .nfc-cta{ transition:none; } }

/* ----- pricing + capacity additions ----- */
.nfc-rl-name{ font-weight:600; color:var(--forest); line-height:1.15; }
.nfc-rl-meta{ font-size:.7rem; font-weight:500; color:#8a8170; margin-top:.15rem; white-space:nowrap; }
.nfc-rowlabel{ min-width:200px; }
.nfc-grid thead th.nfc-corner{ min-width:200px; }

.nfc-pricing-note{ font-size:.8rem; line-height:1.5; color:#6a6253; background:var(--cream-alt);
  border-left:3px solid var(--brass-lt); border-radius:0 8px 8px 0; padding:.7rem .9rem; margin:1rem 0 0; }

.nfc-tablewrap{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
.nfc-results th:nth-child(2), .nfc-results td:nth-child(2),
.nfc-results th:nth-child(3), .nfc-results td:nth-child(3){ white-space:nowrap; }
.nfc-notes{ font-size:.82rem; color:#6a6253; max-width:24ch; }

.nfc-summary-card{ background:var(--cream-alt); border:1px solid var(--stone); border-radius:12px;
  padding:1rem 1.1rem; margin:0 0 1.2rem; }
.nfc-summary-card h3{ font-family:"Fraunces",serif; font-weight:400; color:var(--forest);
  font-size:1.15rem; margin:0 0 .6rem; }
.nfc-summary-card dl{ display:grid; grid-template-columns:auto 1fr; gap:.3rem 1rem; margin:0; font-size:.9rem; }
.nfc-summary-card dt{ color:#7a715f; font-weight:600; }
.nfc-summary-card dd{ margin:0; color:var(--ink); }
.nfc-summary-card .nfc-pricing-note{ margin-top:.8rem; }

/* How payment works */
.nfc-pay p{ margin:0 0 .8rem; line-height:1.6; color:var(--ink); }
.nfc-paylist{ margin:.2rem 0 .8rem; padding-left:1.1rem; line-height:1.6; }
.nfc-paylist li{ margin:.25rem 0; }
.nfc-paylist strong{ color:var(--forest); }

/* iCal-missing fallback */
.nfc-fallback{ margin:1rem 0 0; padding:.85rem 1rem; border-radius:0 8px 8px 0;
  background:#f4e6c2; border-left:3px solid var(--brass); color:#6a5326;
  font-size:.9rem; line-height:1.5; font-weight:500; }

/* Make "Unavailable" unmistakable: diagonal hatch over the pink fill.
   Appended last so it overrides the earlier .nfc-cell.U rule. */
.nfc-cell.U{
  background:
    repeating-linear-gradient(45deg, rgba(150,52,33,.34) 0 4px, rgba(150,52,33,0) 4px 8px),
    var(--unavail) !important;
  box-shadow: inset 0 0 0 1px var(--unavail-bd) !important;
}
.nfc-sw.U{
  background:
    repeating-linear-gradient(45deg, rgba(150,52,33,.5) 0 3px, rgba(150,52,33,0) 3px 6px),
    var(--unavail) !important;
}

/* Guest-facing availability message */
.nfc-cal-msg{
  margin:.9rem 0 0; padding:.75rem .9rem; font-size:.9rem; line-height:1.5;
  color:#6a5326; background:#f9f1de; border:1px solid #e9d6ad; border-radius:9px;
}
.nfc-cal-msg strong{ color:#7a3526; }
