@import url('./brand-tokens.css?v=20261005-consent-v1');
.th-privacy-dialog, .privacy-page { font-family: var(--th-font-interface); color: var(--th-color-ink); font-size: 16px; line-height: 1.5; }
.th-privacy-footer { clear: both; padding: 0; padding-block-end: max(env(safe-area-inset-bottom, 0px), var(--th-privacy-bottom-clearance, 0px)); background: transparent; border: 0; text-align: center; }
.th-privacy-footer:has(> .th-privacy-policy-link) { padding-inline: var(--th-space-4); }
.th-privacy-policy-link { box-sizing: border-box; display: inline-flex; align-items: center; min-height: var(--th-control-height-standard); min-width: 44px; max-width: 100%; padding: var(--th-space-2) 0; color: inherit; font-family: var(--th-font-interface); font-size: var(--th-control-font-size-standard); line-height: var(--th-control-line-height-standard); text-decoration: underline; text-underline-offset: 3px; overflow-wrap: anywhere; }
/* The menu builder raises Back to top above its fixed wizard toolbar. */
body[data-th-page="menu-builder"] .th-privacy-footer { padding-inline-end: calc(var(--th-space-12) + var(--th-space-12) + env(safe-area-inset-right, 0px)); }
.th-privacy-dialog a, .privacy-page a { color: var(--th-color-violet-strong); }
.th-privacy-dialog button, .privacy-page button { min-height: var(--th-control-height-standard); min-width: 44px; padding: var(--th-space-2) var(--th-space-4); border: 1px solid var(--th-color-control-border); border-radius: var(--th-radius-control); background: var(--th-color-surface); color: var(--th-color-ink); font-family: var(--th-font-interface); font-size: var(--th-control-font-size-standard); line-height: var(--th-control-line-height-standard); font-weight: var(--th-control-font-weight-secondary); cursor: pointer; white-space: normal; }
.th-privacy-dialog { box-sizing: border-box; width: min(36rem, calc(100% - 32px)); max-height: calc(100dvh - 32px); margin: auto; padding: var(--th-space-6); overflow: auto; background: var(--th-color-surface); border: 1px solid var(--th-color-border); border-radius: var(--th-radius-dialog); box-shadow: var(--th-shadow-floating); }
.th-privacy-dialog::backdrop { background: rgb(0 0 0 / 45%); }
.th-privacy-dialog p { margin: var(--th-space-4) 0; }
.th-privacy-dialog h2 { margin: 0; font-size: 20px; font-weight: var(--th-control-font-weight-secondary); line-height: 1.3; }
.th-privacy-heading { display: flex; align-items: start; justify-content: space-between; gap: var(--th-space-4); }
.th-privacy-actions { display: flex; flex-wrap: wrap; gap: var(--th-space-3); }
.th-privacy-actions button { flex: 1 1 180px; }
.th-privacy-dialog [hidden] { display: none !important; }
.th-privacy-dialog [data-privacy-state] { font-weight: 600; }
.th-privacy-dialog [data-privacy-status]:empty { margin: 0; }
.th-privacy-policy-link:focus-visible, .th-privacy-footer :focus-visible, .th-privacy-dialog :focus-visible, .privacy-page :focus-visible { outline: 3px solid var(--th-color-violet); outline-offset: 3px; }
.privacy-page { margin: 0; background: var(--th-color-canvas); }
.privacy-page header, .privacy-page main { box-sizing: border-box; max-width: 780px; margin: auto; padding: var(--th-space-6); }
.privacy-page header { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--th-space-4); }
.privacy-page header img { width: 144px; height: auto; }
.privacy-page main { padding-top: 0; }
.privacy-page h1 { font-size: clamp(28px, 6vw, 38px); font-weight: 600; line-height: 1.2; }
.privacy-page h2 { font-size: 20px; font-weight: 600; }
.privacy-page main section { margin: var(--th-space-5) 0; padding: var(--th-space-5); background: var(--th-color-surface); border: 1px solid var(--th-color-border); border-radius: var(--th-radius-card); }
.privacy-page a { overflow-wrap: anywhere; }
.privacy-page .privacy-skip { position: absolute; transform: translateY(-200%); padding: var(--th-space-3); background: var(--th-color-surface); }
.privacy-page .privacy-skip:focus { transform: none; }
@media (max-width: 400px) { .th-privacy-dialog { padding: var(--th-space-4); } .th-privacy-heading { flex-wrap: wrap; } .privacy-page header, .privacy-page main { padding: var(--th-space-4); } }
@media print { .th-privacy-footer, .th-privacy-dialog { display: none !important; } }
@media (forced-colors: active) { .th-privacy-dialog, .privacy-page main section { border: 1px solid CanvasText; } .th-privacy-dialog::backdrop { background: Canvas; opacity: .8; } }

.login-privacy-notice { margin: var(--th-space-4) 0; color: var(--th-color-text-muted); font-family: var(--th-font-interface); font-size: var(--th-control-font-size-compact); line-height: 1.6; }
.login-privacy-notice a { color: var(--th-color-violet-strong); text-decoration: underline; }

.th-privacy-dialog [data-privacy-demo] { font-size: var(--th-control-font-size-compact); color: var(--th-color-text-muted); }
.th-consent-banner {
  box-sizing: border-box;
  position: relative;
  width: min(27.5rem, calc(100% - var(--th-space-8) - 2 * max(env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px))));
  margin: var(--th-space-4) auto;
  padding: var(--th-space-5);
  border: 1px solid var(--th-color-border);
  border-radius: var(--th-radius-card);
  background: var(--th-color-surface);
  box-shadow: var(--th-shadow-card-soft);
  font-family: var(--th-font-interface);
  color: var(--th-color-consent-text);
  font-size: 12px;
  font-weight: 400;
  line-height: 1.5;
  text-align: start;
  overflow-wrap: anywhere;
}
.th-consent-banner[hidden] { display: none !important; }
.th-consent-banner h2 { margin: 0 0 var(--th-space-2); color: var(--th-color-consent-text); font-family: var(--th-font-interface); font-size: 16px; font-weight: 400; line-height: 1.375; letter-spacing: normal; }
.th-consent-banner p { margin: 0 0 var(--th-space-3); }
.th-consent-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--th-space-3); }
.th-consent-banner button, .th-consent-banner a { box-sizing: border-box; min-height: var(--th-control-height-standard); min-width: 44px; max-width: 100%; font-family: var(--th-font-interface); font-size: var(--th-control-font-size-standard); line-height: var(--th-control-line-height-standard); font-weight: var(--th-control-font-weight-secondary); letter-spacing: normal; white-space: normal; }
.th-consent-banner button { padding: var(--th-space-2) var(--th-space-3); border: 1px solid var(--th-color-control-border); border-radius: var(--th-radius-control); background: var(--th-color-surface); color: var(--th-color-ink); box-shadow: none; cursor: pointer; }
.th-consent-banner button:hover { text-decoration: underline; text-underline-offset: 3px; }
.th-consent-banner [data-consent-accept], .th-privacy-dialog [data-privacy-accept] { background: var(--th-color-action-primary); border-color: var(--th-color-action-primary); color: var(--th-color-surface); font-weight: 700; }
.th-consent-banner [data-consent-required], .th-privacy-dialog [data-privacy-reject] { background: var(--th-color-consent-required); border-color: var(--th-color-consent-required); color: var(--th-color-surface); font-weight: 700; }
.th-consent-actions button:hover, .th-privacy-actions button:hover { text-decoration: underline; text-underline-offset: 3px; }
.th-consent-banner [data-consent-required], .th-consent-banner [data-consent-required]:hover, .th-privacy-dialog [data-privacy-reject], .th-privacy-dialog [data-privacy-reject]:hover { text-decoration: none; }
.th-consent-banner .th-consent-demo { margin: var(--th-space-1) 0 0; color: var(--th-color-text-muted); font-size: var(--th-control-font-size-compact); }
.th-consent-banner .th-consent-status { margin: var(--th-space-2) 0 0; color: var(--th-color-danger); }
.th-consent-banner .th-consent-status:empty { display: none; }
.th-consent-banner :focus-visible { outline: 3px solid var(--th-color-violet); outline-offset: 3px; }
.th-privacy-footer[data-consent-floating="true"]::after { content: ''; display: block; height: calc(var(--th-consent-clearance, 24rem) + var(--th-space-12) + var(--th-space-8) + env(safe-area-inset-bottom, 0px)); pointer-events: none; }
/* Small screens, landscape phones, and browser zoom use ordinary page flow.
   Only roomy public pages get an overlay; workspace, login, and booking forms
   stay in flow. The bottom gap preserves floating tools. */
@media (min-width: 1024px) and (min-height: 700px) {
  body:not([data-th-ui]) .th-consent-banner:not([data-in-flow="true"]) {
    position: fixed;
    z-index: 20;
    inset: auto max(var(--th-space-4), env(safe-area-inset-right, 0px)) calc(var(--th-space-12) + var(--th-space-8) + env(safe-area-inset-bottom, 0px)) auto;
    max-height: calc(100dvh - 5 * var(--th-space-12) - env(safe-area-inset-bottom, 0px));
    overflow: auto;
    margin: 0;
    box-shadow: var(--th-shadow-floating);
  }
}
/* Home removes the shared body offset, so reserve its fixed navigation here. */
@media (max-width: 900px) {
  body.home > .th-consent-banner { margin-block-start: calc(68px + var(--lang-bar-height, 0px) + var(--install-bar-height, 0px) + var(--th-space-4)); }
}
@media (max-width: 640px) { .th-consent-actions, .th-privacy-actions { display: grid; grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 390px) { .th-consent-banner { padding: var(--th-space-4); } }
@media print { .th-consent-banner { display: none !important; } }
@media (forced-colors: active) { .th-consent-banner { border: 1px solid CanvasText; } .th-consent-banner .th-consent-actions button, .th-privacy-dialog .th-privacy-actions button { color: ButtonText; background: ButtonFace; border-color: ButtonText; } .th-privacy-policy-link { color: LinkText; } }

.privacy-choice-controls { display: flex; flex-wrap: wrap; gap: var(--th-space-3); }
[data-privacy-page-status]:empty { display: none; }

/* Keep the sole policy entry point clearly focused in the dark public footer. */
.th-footer .th-privacy-policy-link:focus-visible { outline: 3px solid var(--th-color-surface); outline-offset: 3px; box-shadow: none; }
@media (forced-colors: active) { .th-privacy-policy-link:focus-visible, .th-footer .th-privacy-policy-link:focus-visible { outline-color: Highlight; } }

/* Home Depot-inspired two-step choices; Tune Hustle tokens and accessible sizing. */
.th-consent-banner { width: min(27.5rem, calc(100% - var(--th-space-8) - 2 * max(env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px)))); padding: var(--th-space-6); color: var(--th-color-ink); font-size: 14px; line-height: 1.6; }
.th-consent-banner h2 { margin-bottom: var(--th-space-4); color: var(--th-color-ink); font-size: 20px; font-weight: 600; line-height: 1.3; }
.th-consent-actions { grid-template-columns: minmax(0, 1fr); }
.th-consent-banner [data-consent-accept], .th-privacy-dialog [data-privacy-save] { background: var(--th-color-action-primary); border-color: var(--th-color-action-primary); color: var(--th-color-surface); font-weight: var(--th-control-font-weight-primary); }
.th-consent-banner [data-consent-manage] { border-color: var(--th-color-violet-strong); color: var(--th-color-violet-strong); font-weight: var(--th-control-font-weight-secondary); }
.th-consent-banner .th-consent-policy { display: inline-flex; align-items: center; margin-top: var(--th-space-2); color: var(--th-color-violet-strong); text-decoration: underline; text-underline-offset: 3px; }
.th-consent-banner .th-consent-demo { margin-top: var(--th-space-3); }
.th-privacy-dialog { position: fixed; inset: 0 auto 0 0; width: min(36rem, 100%); height: 100dvh; max-width: 100%; max-height: 100dvh; margin: 0; padding: 0; border: 0; border-inline-end: 1px solid var(--th-color-border); border-radius: 0; overflow: hidden; font-size: 15px; line-height: 1.6; }
.th-privacy-dialog[open] { display: flex; flex-direction: column; }
.th-privacy-dialog * { box-sizing: border-box; }
.th-privacy-dialog .th-privacy-heading { flex: 0 0 auto; flex-wrap: nowrap; align-items: center; padding: var(--th-space-5) var(--th-space-6); border-bottom: 1px solid var(--th-color-border); }
.th-privacy-dialog h2 { font-size: 22px; font-weight: 600; }
.th-privacy-dialog [data-privacy-close] { flex: 0 0 var(--th-control-height-standard); padding: 0; border-color: transparent; font-size: 30px; line-height: 1; }
.th-privacy-body { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: var(--th-space-6); }
.th-privacy-body > p:first-child { margin-top: 0; }
.th-privacy-body h3 { margin: var(--th-space-8) 0 var(--th-space-3); font-size: 18px; line-height: 1.4; font-weight: 600; }
.th-privacy-dialog .th-privacy-note { color: var(--th-color-text-muted); font-size: 13px; line-height: 1.55; font-weight: 400; }
.th-privacy-categories { margin-top: var(--th-space-5); border: 1px solid var(--th-color-border); border-radius: var(--th-radius-control); overflow: hidden; }
.th-privacy-category + .th-privacy-category { border-top: 1px solid var(--th-color-border); }
.th-privacy-category-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: var(--th-space-2); padding: var(--th-space-2) var(--th-space-3); }
.th-privacy-category h4 { min-width: 0; margin: 0; font-size: 14px; line-height: 1.45; }
.th-privacy-category h4 button { display: flex; align-items: center; gap: var(--th-space-2); width: 100%; padding: var(--th-space-2) 0; border: 0; border-radius: 0; text-align: start; font-weight: 600; }
.th-privacy-expand-icon { flex: 0 0 var(--th-space-5); text-align: center; font-size: 22px; font-weight: 400; line-height: 1; }
.th-privacy-expand-icon::before { content: '+'; }
[aria-expanded='true'] > .th-privacy-expand-icon::before { content: '−'; }
.th-privacy-always { width: 6rem; color: var(--th-color-violet-strong); font-size: 13px; line-height: 1.4; text-align: end; font-weight: 600; }
.th-privacy-category-detail { padding: 0 var(--th-space-5) var(--th-space-4); background: var(--th-color-surface-soft); }
.th-privacy-category-detail p { margin: 0; padding-top: var(--th-space-4); font-size: 14px; line-height: 1.6; }
.th-privacy-dialog .th-privacy-switch { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; min-width: 64px; min-height: 64px; padding: var(--th-space-1); border: 0; background: transparent; }
.th-privacy-switch-track { position: relative; display: block; width: 52px; height: 28px; border: 1px solid var(--th-color-control-border); border-radius: var(--th-radius-pill); background: var(--th-color-text-muted); }
.th-privacy-switch-track::after { content: ''; position: absolute; inset: 3px auto auto 3px; width: 20px; height: 20px; border-radius: 50%; background: var(--th-color-surface); }
.th-privacy-switch[aria-checked='true'] .th-privacy-switch-track { background: var(--th-color-action-primary); border-color: var(--th-color-action-primary); }
.th-privacy-switch[aria-checked='true'] .th-privacy-switch-track::after { inset-inline-start: 27px; }
.th-privacy-switch-check { position: absolute; inset: 2px auto auto 7px; display: none; color: var(--th-color-surface); font-size: 16px; line-height: 22px; }
.th-privacy-switch[aria-checked='true'] .th-privacy-switch-check { display: block; }
.th-privacy-switch-state { font-size: 12px; line-height: 1.4; }
.th-privacy-switch:disabled { cursor: not-allowed; }
.th-privacy-dialog [data-privacy-accept] { margin-top: var(--th-space-4); width: 100%; background: var(--th-color-surface); border-color: var(--th-color-violet-strong); color: var(--th-color-violet-strong); font-weight: var(--th-control-font-weight-secondary); }
.th-privacy-savebar { flex: 0 0 auto; padding: var(--th-space-4) var(--th-space-6) max(var(--th-space-4), env(safe-area-inset-bottom)); border-top: 1px solid var(--th-color-border); background: var(--th-color-surface); box-shadow: var(--th-shadow-control); }
.th-privacy-dialog [data-privacy-status] { margin: 0 0 var(--th-space-3); color: var(--th-color-danger); font-size: 13px; }
.th-privacy-dialog [data-privacy-status]:empty { display: none; }
.th-privacy-savebar .th-privacy-actions { display: grid; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 1024px) and (min-height: 700px) { body:not([data-th-ui]) .th-consent-banner:not([data-in-flow='true']) { inset-inline-start: max(var(--th-space-4), env(safe-area-inset-left, 0px)); inset-inline-end: auto; } }
@media (max-width: 390px) { .th-consent-banner { padding: var(--th-space-4); } .th-privacy-dialog .th-privacy-heading, .th-privacy-body, .th-privacy-savebar { padding-inline: var(--th-space-4); } .th-privacy-dialog h2 { font-size: 20px; } }
@media (forced-colors: active) {
  .th-privacy-dialog { border: 1px solid CanvasText; }
  .th-privacy-switch-track, .th-privacy-switch[aria-checked='true'] .th-privacy-switch-track { border-color: ButtonText; background: Canvas; }
  .th-privacy-switch-track::after { background: ButtonText; }
  .th-privacy-switch-check { color: ButtonText; }
  .th-privacy-always { color: CanvasText; }
  .th-consent-banner [data-consent-manage], .th-privacy-dialog [data-privacy-save], .th-privacy-dialog [data-privacy-accept] { color: ButtonText; background: ButtonFace; border-color: ButtonText; }
}

/* Informational account-data notice, independent from optional tracking. */
.th-data-notice { display: flex; align-items: start; gap: var(--th-space-5); margin-bottom: var(--th-space-5); padding: var(--th-space-5); border: 1px solid var(--th-color-border); border-radius: var(--th-radius-card); background: var(--th-color-surface); color: var(--th-color-ink); font-family: var(--th-font-interface); }
.th-data-notice[hidden] { display: none !important; }
.th-data-notice h2 { margin: 0 0 var(--th-space-2); font-size: 18px; line-height: 1.4; font-weight: 600; }
.th-data-notice p { margin: 0 0 var(--th-space-2); font-size: 14px; line-height: 1.6; }
.th-data-notice p:last-child { margin-bottom: 0; }
.th-data-notice a { color: var(--th-color-violet-strong); text-decoration: underline; text-underline-offset: 3px; }
.th-data-notice button { flex: 0 0 auto; min-height: var(--th-control-height-standard); min-width: 72px; padding: var(--th-space-2) var(--th-space-4); border: 1px solid var(--th-color-control-border); border-radius: var(--th-radius-control); background: var(--th-color-surface); color: var(--th-color-ink); font: 500 var(--th-control-font-size-standard)/var(--th-control-line-height-standard) var(--th-font-interface); cursor: pointer; }
.th-data-notice :focus-visible { outline: 3px solid var(--th-color-violet); outline-offset: 3px; }
@media (max-width: 640px) { .th-data-notice { flex-direction: column; gap: var(--th-space-3); } }
@media print { .th-data-notice { display: none !important; } }

/* Regional first-layer presentation; consent behavior is managed separately. */
.th-consent-actions { grid-template-columns: minmax(0, 1fr); }
.th-consent-actions [hidden] { display: none !important; }
.th-consent-banner [data-consent-reject] { min-height: var(--th-control-height-standard); padding: var(--th-space-2) 0; background: var(--th-color-surface); border-color: transparent; color: var(--th-color-violet-strong); font-weight: var(--th-control-font-weight-primary); text-decoration: underline; text-underline-offset: 3px; }
.th-consent-banner [data-consent-reject]:hover { text-decoration-thickness: 2px; }
@media (forced-colors: active) { .th-consent-banner [data-consent-reject] { color: ButtonText; background: ButtonFace; border-color: ButtonText; } }
