/* Stepfox Food Delivery · sfd-base.css (P-RUNTIME) · ceiling 55 lines (SPEC §3.1, §4.1): the --sfd-* alias block (values are theme-owned), a11y utils, [hidden] on plugin markup, dialog/sheet/drawer + sheet-panel mechanics, toasts, loading states, reduced motion. Mechanics and token reads only; no priority flags. */
:root{
 --sfd-bg:var(--wp--preset--color--base,#fff); --sfd-surface:var(--wp--preset--color--panel,#fff); --sfd-surface-2:var(--wp--preset--color--panel-2,#f4f4f4); --sfd-surface-3:var(--wp--preset--color--panel-3,#e8e8e8); --sfd-line:var(--wp--preset--color--line,#e5e5e5); --sfd-edge:var(--wp--preset--color--edge,#8a8a8a);
 --sfd-ink:var(--wp--preset--color--ink,#1a1a1a); --sfd-ink-2:var(--wp--preset--color--ink-2,#444); --sfd-muted:var(--wp--preset--color--muted,#666); --sfd-accent:var(--wp--preset--color--accent,#1a1a1a); --sfd-on-accent:var(--wp--preset--color--white,#fff); --sfd-accent-deep:var(--wp--preset--color--accent-deep,#000);
 --sfd-accent-ink:var(--wp--preset--color--accent-ink,#1a1a1a); --sfd-accent-soft:var(--wp--preset--color--accent-soft,#eee); --sfd-accent-2:var(--wp--preset--color--accent-2,#ccc); --sfd-accent-2-soft:var(--wp--preset--color--accent-2-soft,#f4f4f4);
 --sfd-success:var(--wp--preset--color--basil,#2e7d32); --sfd-success-ink:var(--wp--preset--color--basil-ink,#2e7d32); --sfd-success-soft:var(--wp--preset--color--basil-soft,#e8f5e9);
 --sfd-danger:var(--wp--preset--color--danger,#b00020); --sfd-danger-ink:var(--wp--preset--color--danger-ink,#b00020); --sfd-danger-soft:var(--wp--preset--color--danger-soft,#fdecea);
 --sfd-star:var(--wp--preset--color--gold,#999); --sfd-rate-star:var(--wp--custom--sfd--rate-star,var(--sfd-muted)); --sfd-night:var(--wp--preset--color--night,#111); --sfd-on-night:var(--wp--preset--color--on-night,#fff);
 --sfd-radius-xs:var(--wp--custom--sfd--radius-xs,4px); --sfd-radius-sm:var(--wp--custom--sfd--radius-sm,6px); --sfd-radius-md:var(--wp--custom--sfd--radius-md,8px); --sfd-radius-lg:var(--wp--custom--sfd--radius-lg,12px); --sfd-radius-xl:var(--wp--custom--sfd--radius-xl,16px); --sfd-radius-pill:var(--wp--custom--sfd--radius-pill,999px);
 --sfd-shadow-xs:var(--wp--preset--shadow--xs,none); --sfd-shadow-card:var(--wp--preset--shadow--card,none); --sfd-shadow-float:var(--wp--preset--shadow--float,none); --sfd-shadow-pop:var(--wp--preset--shadow--pop,none); --sfd-shadow-glow:var(--wp--preset--shadow--glow,none); --sfd-shadow-focus:var(--wp--custom--sfd--shadow-focus,0 0 0 2px #fff,0 0 0 4px #1a1a1a);
 --sfd-font-body:var(--wp--preset--font-family--body,inherit); --sfd-font-display:var(--wp--preset--font-family--display,inherit); --sfd-chip-bg:var(--wp--custom--sfd--chip-bg,var(--sfd-surface-2)); --sfd-chip-fg:var(--wp--custom--sfd--chip-fg,var(--sfd-ink)); --sfd-chip-bg-on:var(--wp--custom--sfd--chip-bg-on,var(--sfd-ink)); --sfd-chip-fg-on:var(--wp--custom--sfd--chip-fg-on,var(--sfd-bg)); --sfd-strong:var(--wp--custom--sfd--strong,700); --sfd-nums:var(--wp--custom--sfd--nums,tabular-nums); --sfd-ring:var(--wp--custom--sfd--ring,2px);
 --sfd-pin-size:var(--wp--custom--sfd--pin-size,40px); --sfd-pin-ring:var(--wp--custom--sfd--pin-ring,2px); --sfd-courier-size:var(--wp--custom--sfd--courier-size,48px); --sfd-pin-shadow:var(--wp--custom--sfd--pin-shadow,none); --sfd-cluster-halo:var(--wp--custom--sfd--cluster-halo,none);
 --sfd-map-land:var(--wp--custom--sfd--map-land,#eee); --sfd-map-land-dark:var(--wp--custom--sfd--map-land-dark,#2b2b2b); --sfd-map-h:var(--wp--custom--sfd--map-h,320px); --sfd-rail-item:var(--wp--custom--sfd--rail-item,240px); --sfd-rail-item-mobile:var(--wp--custom--sfd--rail-item-mobile,72vw); --sfd-sheet-max:var(--wp--custom--sfd--sheet-max,92dvh);
 --sfd-dur-1:var(--wp--custom--sfd--dur-1,120ms); --sfd-dur-2:var(--wp--custom--sfd--dur-2,180ms); --sfd-dur-3:var(--wp--custom--sfd--dur-3,260ms); --sfd-dur-4:var(--wp--custom--sfd--dur-4,340ms); --sfd-ease:var(--wp--custom--sfd--ease,ease-out); --sfd-spring:var(--wp--custom--sfd--spring,ease-out); --sfd-header-h:0px; --sfd-demo-bar-h:0px; --sfd-bottom-offset:0px; }
.sfd-visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
[class^="sfd-"][hidden],[class*=" sfd-"][hidden]{display:none}
.sfd-sheet{box-sizing:border-box;width:100%;margin:auto;padding:0;border:0;max-height:var(--sfd-sheet-max);overflow:auto;overscroll-behavior:contain;background:var(--sfd-surface);color:var(--sfd-ink);border-radius:var(--sfd-radius-xl);box-shadow:var(--sfd-shadow-pop);transition:transform var(--sfd-dur-4) var(--sfd-ease),opacity var(--sfd-dur-3) var(--sfd-ease)}
.sfd-sheet:not([open]):not(.is-editor-inline){display:none}
.sfd-sheet::backdrop{background:var(--sfd-night,#111);opacity:.55}
.sfd-sheet.is-entering,.sfd-sheet.is-leaving{opacity:0;transform:translateY(1.5rem) scale(.98)}
.sfd-sheet--drawer{margin:0 0 0 auto;height:100dvh;max-height:none;border-radius:0}
.sfd-sheet--drawer.is-entering,.sfd-sheet--drawer.is-leaving{opacity:1;transform:translateX(100%)}
.sfd-sheet.is-leaving{transition-duration:240ms}.sfd-sheet.is-dragging,.sfd-sheet-panel.is-dragging{transition:none}
.sfd-sheet__grip,.sfd-sheet-panel__handle{display:none}
.sfd-sheet__handle,.sfd-sheet-panel__handle{appearance:none;align-items:center;justify-content:center;width:100%;min-height:44px;padding:0;border:0;background:none;color:inherit;cursor:grab;touch-action:none}
.sfd-sheet__handle::before,.sfd-sheet-panel__handle::before{content:"";width:2.5rem;height:.3rem;border-radius:var(--sfd-radius-pill);background:var(--sfd-edge)}
@media (max-width:768px){.sfd-sheet,.sfd-sheet--drawer{width:100%;max-width:100%;height:fit-content;max-height:var(--sfd-sheet-max);margin:auto 0 0;border-radius:var(--sfd-radius-xl) var(--sfd-radius-xl) 0 0}
.sfd-sheet.is-entering,.sfd-sheet.is-leaving{opacity:1;transform:translateY(100%)}.sfd-sheet.is-expanded{max-height:100dvh}
.sfd-sheet__grip{display:flex;position:sticky;top:0;z-index:1;background:inherit}.sfd-sheet__handle{display:flex}}
/* Plugin <details> with a plain <summary>: the UA triangle becomes a currentColor chevron (themes override at :where weight). */
:where(body:not(.wp-admin) details[class*="sfd-"])>summary:where(:not([class])){display:flex;align-items:center;gap:.5em;min-height:44px;list-style:none;cursor:pointer}:where(body:not(.wp-admin) details[class*="sfd-"])>summary:where(:not([class]))::-webkit-details-marker{display:none}
:where(body:not(.wp-admin) details[class*="sfd-"])>summary:where(:not([class]))::after{content:"";flex:none;width:.4em;height:.4em;margin-block-start:-.2em;border:solid currentColor;border-width:0 .125em .125em 0;transform:rotate(45deg);transition:transform var(--sfd-dur-2) var(--sfd-ease)}:where(body:not(.wp-admin) details[open][class*="sfd-"])>summary:where(:not([class]))::after{margin-block-start:.2em;transform:rotate(225deg)}
.sfd-sheet-close,.sfd-scheme-toggle{appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:44px;min-height:44px;padding:0;border:0;background:none;color:inherit;font:inherit;text-decoration:none;cursor:pointer}
.sfd-scheme-toggle[aria-pressed="false"] .sfd-icon--sun,.sfd-scheme-toggle[aria-pressed="true"] .sfd-icon--moon{display:none}
.sfd-button{appearance:none;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:.5em;min-height:44px;padding:.5em 1.375em;border:0;border-radius:var(--sfd-radius-pill);background:var(--sfd-button-bg,var(--sfd-accent));color:var(--sfd-button-fg,var(--sfd-on-accent));box-shadow:var(--sfd-button-ring,var(--sfd-shadow-glow));font:inherit;font-weight:var(--sfd-strong);line-height:1.2;text-align:center;text-decoration:none;cursor:pointer;transition:background-color var(--sfd-dur-2) var(--sfd-ease),color var(--sfd-dur-2) var(--sfd-ease)}
.sfd-button:hover{--sfd-button-bg:var(--sfd-accent-deep);text-decoration:none}.sfd-button--ghost{--sfd-button-bg:transparent;--sfd-button-fg:var(--sfd-ink);--sfd-button-ring:inset 0 0 0 var(--sfd-ring) var(--sfd-ink)}.sfd-button--ghost:hover{--sfd-button-bg:var(--sfd-surface-2)}
.sfd-button:disabled,.sfd-button[aria-disabled="true"]{--sfd-button-bg:var(--sfd-surface-3);--sfd-button-fg:var(--sfd-muted);--sfd-button-ring:none;cursor:not-allowed}
.sfd-button:focus-visible,.sfd-sheet-close:focus-visible,.sfd-scheme-toggle:focus-visible,.sfd-sheet__handle:focus-visible,.sfd-sheet-panel__handle:focus-visible,.sfd-toast__action:focus-visible{outline:0;box-shadow:var(--sfd-shadow-focus)}
.sfd-sheet-panel.is-sheet{box-sizing:border-box;position:fixed;inset:auto 0 var(--sfd-bottom-offset);z-index:94;display:flex;flex-direction:column;background:var(--sfd-surface);color:var(--sfd-ink);border-radius:var(--sfd-radius-xl) var(--sfd-radius-xl) 0 0;box-shadow:var(--sfd-shadow-float);transition:height var(--sfd-dur-3) var(--sfd-ease)}
.sfd-sheet-panel.is-sheet .sfd-sheet-panel__handle{display:flex;flex:none}
.sfd-sheet-panel.is-sheet .sfd-sheet-panel__body{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain}
.sfd-toasts{position:fixed;inset:auto 0 calc(var(--sfd-bottom-offset) + var(--sfd-toast-lift,0px));z-index:1200;display:grid;justify-items:center;gap:.5rem;padding:1rem;pointer-events:none}
.sfd-toast{display:flex;align-items:center;gap:.75rem;max-width:min(100%,30rem);padding:.75rem 1rem;border-radius:var(--sfd-radius-sm);background:var(--sfd-night);color:var(--sfd-on-night);box-shadow:var(--sfd-shadow-pop);font-family:var(--sfd-font-body);pointer-events:auto;opacity:0;transform:translateY(.75rem);transition:opacity var(--sfd-dur-2) var(--sfd-ease),transform var(--sfd-dur-3) var(--sfd-ease)}
.sfd-toast.is-shown{opacity:1;transform:none}
.sfd-toast__action{appearance:none;min-height:44px;padding:0 .25rem;border:0;background:none;color:inherit;font:inherit;text-decoration:underline;cursor:pointer}
.sfd-is-loading{opacity:.6;transition:opacity var(--sfd-dur-2) var(--sfd-ease)}
.sfd-is-loading-slow,.sfd-skeleton{animation:sfd-pulse 1.2s var(--sfd-ease) infinite}
.sfd-skeleton{background:var(--sfd-surface-3);border-radius:var(--sfd-radius-sm)}@keyframes sfd-pulse{50%{opacity:.45}}
@media (prefers-reduced-motion:reduce){.sfd-sheet,.sfd-toast,.sfd-sheet-panel.is-sheet{transition:opacity var(--sfd-dur-1) linear}
.sfd-sheet.is-entering,.sfd-sheet.is-leaving,.sfd-sheet--drawer.is-entering,.sfd-sheet--drawer.is-leaving{opacity:0;transform:none}.sfd-toast{transform:none}.sfd-is-loading-slow,.sfd-skeleton{animation:none}:where(details[class*="sfd-"])>summary::after{transition:none}}
