/* Shared public date-picker component: Tisch, Brunch and booking management.
   WordPress enqueue dependencies ensure this loads after the respective form CSS. */
.ww-pub-table .ww-date-calendar,.wwb .wwb-calendar{margin:14px 0;padding:14px;border:1px solid #b8b8b4;border-radius:6px;background:#fff;font-family:"Crimson Text",Georgia,serif;color:#49483f;line-height:1.55}
.ww-pub-table .ww-date-head,.wwb .wwb-calendar-head{display:flex;align-items:center;justify-content:space-between;margin:0 0 14px;gap:8px}
.ww-pub-table .ww-date-head strong,.wwb .wwb-calendar-head strong{font:600 16px/1.4 "Crimson Text",Georgia,serif;text-align:center}
.ww-pub-table .ww-date-head button,.wwb .wwb-calendar-head button{display:flex;align-items:center;justify-content:center;flex:0 0 36px;width:36px;min-height:40px;margin:0;padding:0;background:#fff;color:#49483f;border:1px solid #b8b8b4;border-radius:3px;font:24px/1 "Crimson Text",Georgia,serif;letter-spacing:0;text-transform:none;transform:none}
.ww-pub-table .ww-date-weekdays,.ww-pub-table .ww-date-days,.wwb .wwb-weekdays,.wwb .wwb-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;text-align:center}
.ww-pub-table .ww-date-weekdays,.wwb .wwb-weekdays{font-size:12px;color:#75786e;margin:0 0 8px}
.ww-pub-table .ww-date-days button,.wwb .wwb-days button{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;min-height:58px;margin:0;padding:4px 1px;font:15px/1.3 "Crimson Text",Georgia,serif;letter-spacing:0;text-transform:none;border-radius:4px;box-shadow:none;transform:none}
.ww-pub-table .ww-date-calendar .ww-pub-hint,.wwb .wwb-calendar .wwb-calendar-note{font:12px/1.5 "Crimson Text",Georgia,serif;color:#75786e;margin:12px 0 0}
.ww-date-status:empty{display:none}
.ww-date-status{padding:12px;background:#fff2ef;color:#8a3027;border-left:3px solid #aa4439}
.ww-table-picker [hidden]{display:none!important}
.ww-pub-table [data-date-toggle]{background:#fff;color:#292b29;border:1px solid #b8b8b4;text-align:left}
.ww-pub-table .ww-date-days button.is-unavailable,.wwb .wwb-days button.is-unavailable{background:#ededed;color:#777;border:1px solid #d3d3d3;opacity:1;cursor:not-allowed}
.ww-pub-table .ww-date-days button.is-bookable,.wwb .wwb-days button.is-bookable{background:#e0edd9;color:#254b24;border:1px solid #86a780}
.ww-pub-table .ww-date-days button.is-full,.wwb .wwb-days button.is-full{background:#f9ddda;color:#852d26;border:1px solid #ca847c}
.ww-pub-table .ww-date-days button.is-bookable:hover,.wwb .wwb-days button.is-bookable:hover{background:#c8dfbe}
.ww-pub-table .ww-date-days button.is-full:hover,.wwb .wwb-days button.is-full:hover{background:#f1c2bd}
.ww-pub-table .ww-date-days button[aria-pressed=true],.wwb .wwb-days button[aria-pressed=true]{outline:2px solid #254b24!important;outline-offset:1px;font-weight:700}
.ww-pub-table .ww-date-days button.is-today,.wwb .wwb-days button.is-today{font-weight:700;text-decoration:none;background:#e9e5d9}
.wwb .wwb-days button:focus-visible,.ww-pub-table .ww-date-days button:focus-visible{outline:2px solid #292b29!important;outline-offset:2px}
.wwb .wwb-days button small,.ww-pub-table .ww-date-days button small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0;margin:0;font:9px/1.3 Arial,sans-serif;letter-spacing:0!important;text-transform:none}
@media(max-width:520px){.ww-pub-table .ww-date-calendar,.wwb .wwb-calendar{padding:8px}.ww-pub-table .ww-date-days button,.wwb .wwb-days button{min-height:54px}}
/* A visible inset ring preserves date colours and does not move the grid. */
@media(hover:hover){.ww-pub-table .ww-date-days button:not(:disabled):hover,.wwb .wwb-days button:not(:disabled):hover,.ww-self-service .ww-calendar-days button:not(:disabled):hover{box-shadow:inset 0 0 0 2px currentColor;filter:brightness(.94);transform:none}}

/* Shared calendar layout and states for all three public date pickers.
   Use the same design tokens and do not introduce per-form variants. */
:is(.ww-pub-table,.wwb,.ww-self-service){
  --ww-date-bg:#fff;
  --ww-date-ink:#49483f;
  --ww-date-border:#c9c6bd;
  --ww-date-inactive-bg:#ededed;
  --ww-date-inactive-border:#d3d3d3;
  --ww-date-inactive-ink:#777;
  --ww-date-open-bg:#e0edd9;
  --ww-date-open-border:#86a780;
  --ww-date-open-ink:#254b24;
  --ww-date-full-bg:#f9ddda;
  --ww-date-full-border:#ca847c;
  --ww-date-full-ink:#852d26;
  --ww-date-walkin-bg:#dcebf5;
  --ww-date-walkin-border:#7eaac7;
  --ww-date-walkin-ink:#174c70;
}
:is(.ww-pub-table .ww-date-calendar,.wwb .wwb-calendar,.ww-self-service .ww-revision-calendar){
  margin:14px 0;
  padding:14px;
  border:1px solid var(--ww-date-border);
  border-radius:6px;
  background:var(--ww-date-bg);
  color:var(--ww-date-ink);
  font-family:"Crimson Text",Georgia,serif;
  line-height:1.55;
}
:is(.ww-pub-table .ww-date-head,.wwb .wwb-calendar-head,.ww-self-service .ww-calendar-head){
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  margin:0 0 14px;
}
:is(.ww-pub-table .ww-date-head strong,.wwb .wwb-calendar-head strong,.ww-self-service .ww-calendar-head strong){
  font:600 16px/1.4 "Crimson Text",Georgia,serif;
  text-align:center;
}
:is(.ww-pub-table .ww-date-head button,.wwb .wwb-calendar-head button,.ww-self-service .ww-calendar-head button){
  display:flex;align-items:center;justify-content:center;
  flex:0 0 40px;width:40px;min-width:40px;min-height:40px;
  margin:0;padding:0;
  background:var(--ww-date-bg);color:var(--ww-date-ink);
  border:1px solid var(--ww-date-border);border-radius:4px;
  font:24px/1 "Crimson Text",Georgia,serif;
  letter-spacing:0;text-transform:none;box-shadow:none;transform:none;
}
:is(.ww-pub-table .ww-date-weekdays,.ww-pub-table .ww-date-days,.wwb .wwb-weekdays,.wwb .wwb-days,.ww-self-service .ww-weekdays,.ww-self-service .ww-calendar-days){
  display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;text-align:center;
}
:is(.ww-pub-table .ww-date-weekdays,.wwb .wwb-weekdays,.ww-self-service .ww-weekdays){
  margin:0 0 8px;color:#75786e;font:400 13px/1.45 "Crimson Text",Georgia,serif;
}
:is(.ww-pub-table .ww-date-days button,.wwb .wwb-days button,.ww-self-service .ww-calendar-days button){
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  box-sizing:border-box;width:100%;min-width:0;min-height:58px;
  margin:0;padding:4px 1px;
  font:400 16px/1.3 "Crimson Text",Georgia,serif;
  letter-spacing:0;text-transform:none;border-radius:4px;
  box-shadow:none;transform:none;
}
:is(.ww-pub-table .ww-date-days button.is-unavailable,.wwb .wwb-days button.is-unavailable,.ww-self-service .ww-calendar-days button[data-state="gray"]){
  background:var(--ww-date-inactive-bg);color:var(--ww-date-inactive-ink);
  border:1px solid var(--ww-date-inactive-border);opacity:1;
}
:is(.ww-pub-table .ww-date-days button.is-bookable,.wwb .wwb-days button.is-bookable,.ww-self-service .ww-calendar-days button:not([data-state="gray"]):not([data-state="red"]):not([data-state="blue"])){ 
  background:var(--ww-date-open-bg);color:var(--ww-date-open-ink);
  border:1px solid var(--ww-date-open-border);
}
:is(.ww-pub-table .ww-date-days button.is-full,.wwb .wwb-days button.is-full,.ww-self-service .ww-calendar-days button[data-state="red"]){
  background:var(--ww-date-full-bg);color:var(--ww-date-full-ink);
  border:1px solid var(--ww-date-full-border);
}
/* Blue: café open, table reservations not offered; button stays keyboard/touch accessible. */
:is(.ww-pub-table .ww-date-days button.is-walk-in-only,.wwb .wwb-days button.is-walk-in-only,.ww-self-service .ww-calendar-days button[data-state="blue"]){
  background:var(--ww-date-walkin-bg);color:var(--ww-date-walkin-ink);
  border:1px solid var(--ww-date-walkin-border);cursor:pointer;
}
/* Today adds a marker; it must never replace the actual availability colour. */
:is(.ww-pub-table .ww-date-days button.is-today,.wwb .wwb-days button.is-today,.ww-self-service .ww-calendar-days button.is-today){
  text-decoration:none;font-weight:600;
  box-shadow:inset 0 0 0 1px currentColor;
}
:is(.ww-pub-table .ww-date-days button small,.wwb .wwb-days button small,.ww-self-service .ww-calendar-days button small){
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  margin:0;padding:0;
  font:500 11px/1.3 "Crimson Text",Georgia,serif;
  letter-spacing:0;text-transform:none;
}
:is(.ww-pub-table,.wwb,.ww-self-service) .ww-availability-legend{
  display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;
  margin:14px 0 0;color:#68695d;
  font:400 15px/1.45 "Crimson Text",Georgia,serif;
}
:is(.ww-pub-table,.wwb,.ww-self-service) .ww-availability-legend-item{
  display:inline-flex;align-items:center;gap:7px;white-space:normal;
}
:is(.ww-pub-table,.wwb,.ww-self-service) .ww-availability-legend-swatch{
  display:inline-block;box-sizing:border-box;flex:0 0 15px;
  width:15px;height:15px;border:1px solid;border-radius:3px;
}
:is(.ww-pub-table,.wwb,.ww-self-service) .ww-availability-legend-swatch.is-unavailable{
  background:var(--ww-date-inactive-bg);border-color:var(--ww-date-inactive-border);
}
:is(.ww-pub-table,.wwb,.ww-self-service) .ww-availability-legend-swatch.is-bookable{
  background:var(--ww-date-open-bg);border-color:var(--ww-date-open-border);
}
:is(.ww-pub-table,.wwb,.ww-self-service) .ww-availability-legend-swatch.is-full{
  background:var(--ww-date-full-bg);border-color:var(--ww-date-full-border);
}
:is(.ww-pub-table,.wwb,.ww-self-service) .ww-availability-legend-swatch.is-walk-in-only{
  background:var(--ww-date-walkin-bg);border-color:var(--ww-date-walkin-border);
}
@media(max-width:520px){
  :is(.ww-pub-table .ww-date-calendar,.wwb .wwb-calendar,.ww-self-service .ww-revision-calendar){padding:8px;}
  :is(.ww-pub-table .ww-date-days button,.wwb .wwb-days button,.ww-self-service .ww-calendar-days button){min-height:50px;font-size:15px;}
  :is(.ww-pub-table,.wwb,.ww-self-service) .ww-availability-legend{gap:7px 12px;font-size:14px;}
}
