/* Component styles use shared semantic tokens; visual/API approval remains Proposed. */
.ds-button,.ds-input,.ds-select{font:inherit;min-height:var(--ds-control-md);border:1px solid var(--ds-control-border);color:var(--ds-ink);background:var(--ds-paper);transition:background-color var(--ds-motion-fast),border-color var(--ds-motion-fast)}
.ds-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--ds-space-2);border-radius:var(--ds-radius-action);padding:10px var(--ds-space-5);cursor:pointer;font-size:var(--ds-text-sm);font-weight:var(--ds-weight-semibold);line-height:20px;white-space:nowrap;border-color:var(--ds-line)}
.ds-button[data-variant=primary]{background:var(--ds-ink);border-color:var(--ds-ink);color:var(--ds-paper)}
.ds-button[data-variant=accent]{background:var(--ds-accent);border-color:var(--ds-accent);color:var(--ds-paper)}
.ds-button[data-variant=danger]{background:var(--ds-danger);border-color:var(--ds-danger);color:var(--ds-paper)}
.ds-button[data-variant=soft]{background:var(--ds-accent-soft);border-color:transparent;color:var(--ds-accent)}
.ds-button[data-variant=quiet],.ds-button[data-variant=link]{border-color:transparent;background:transparent}.ds-button[data-variant=link]{text-decoration:underline;text-underline-offset:4px;color:var(--ds-action)}
.ds-button[data-shape=rounded]{border-radius:var(--ds-radius-control)}.ds-button:active:not(:disabled){box-shadow:inset 0 0 0 2px #ffffff40}.ds-button:hover:not(:disabled){filter:brightness(.94)}
.ds-button:disabled{opacity:.45;cursor:not-allowed}.ds-button[aria-busy=true]{opacity:1;cursor:progress}.ds-button-label:empty{display:none}
.ds-button[data-size=sm],.ds-input[data-size=sm],.ds-select[data-size=sm]{min-height:var(--ds-control-sm);font-size:13px;padding:7px var(--ds-space-3)}
.ds-button[data-size=lg],.ds-input[data-size=lg],.ds-select[data-size=lg]{min-height:var(--ds-control-lg);font-size:var(--ds-text-md);padding:14px 22px}
.ds-icon{width:18px;height:18px;flex-shrink:0;vertical-align:middle;pointer-events:none}.ds-spinner{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0}
.ds-field{display:grid;gap:var(--ds-space-2);max-width:400px;width:100%;font-size:var(--ds-text-sm);min-width:0}.ds-label{font-weight:var(--ds-weight-semibold);font-size:13px;color:var(--ds-ink)}.ds-required{color:var(--ds-danger)}
.ds-input,.ds-select{width:100%;min-width:0;padding:11px 14px;border-radius:var(--ds-radius-control);font-size:var(--ds-text-sm);line-height:20px}
.ds-input:hover:not(:disabled),.ds-select:hover:not(:disabled){border-color:var(--ds-ink)}.ds-input:focus,.ds-select:focus-visible{border-color:var(--ds-action);box-shadow:0 0 0 3px var(--ds-action-soft)}
.ds-input[data-variant=filled],.ds-select[data-variant=filled]{background:var(--ds-soft);border-color:var(--ds-soft)}.ds-input[data-variant=borderless],.ds-select[data-variant=borderless]{border-color:transparent;background:transparent}.ds-input[data-variant=underline],.ds-select[data-variant=underline]{border-radius:0;border:0;border-bottom:1px solid var(--ds-control-border);background:transparent}
.ds-input:disabled,.ds-select:disabled{background:var(--ds-soft);color:var(--ds-muted);cursor:not-allowed;border-color:var(--ds-line)}.ds-input[readonly]{background:var(--ds-soft)}
.ds-input[aria-invalid=true],.ds-select[aria-invalid=true]{border-color:var(--ds-danger);background:var(--ds-danger-soft)}.ds-help{font-size:var(--ds-text-xs);color:var(--ds-muted);line-height:1.6}.ds-help[data-error=true]{color:var(--ds-danger)}
.ds-input-wrap{display:flex;align-items:center;position:relative}.ds-input-wrap>.ds-input{padding-left:14px}.ds-input-wrap:has(>.ds-prefix)>.ds-input,.ds-input-wrap:has(>.ds-icon)>.ds-input{padding-left:42px}.ds-input-wrap:has(>.ds-suffix)>.ds-input{padding-right:58px}.ds-input-wrap:has(>.ds-input-action)>.ds-input{padding-right:44px}.ds-prefix,.ds-input-wrap>.ds-icon{position:absolute;left:14px;color:var(--ds-muted);z-index:1}.ds-prefix{font-size:var(--ds-text-sm)}.ds-suffix{position:absolute;right:14px;font-size:var(--ds-text-xs);color:var(--ds-muted)}.ds-input-action{position:absolute;right:4px;border:0;background:transparent;display:grid;place-items:center;width:36px;min-height:36px;padding:6px;cursor:pointer;border-radius:7px;color:var(--ds-muted)}.ds-input-action:disabled{cursor:not-allowed}.ds-input::-webkit-search-cancel-button{display:none}.ds-input::-webkit-outer-spin-button,.ds-input::-webkit-inner-spin-button{-webkit-appearance:none}.ds-textarea{resize:vertical;min-height:120px;display:block}.ds-count{display:block;text-align:right;font:11px var(--ds-mono);color:var(--ds-muted);margin-top:5px}
.ds-select-root{position:relative;min-width:0}.ds-select{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3);text-align:left;cursor:pointer}.ds-select-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ds-select[aria-expanded=true]{border-color:var(--ds-action);box-shadow:0 0 0 3px var(--ds-action-soft)}.ds-select>.ds-icon{transition:transform var(--ds-motion-fast)}.ds-select[aria-expanded=true]>.ds-icon{transform:rotate(180deg)}
.ds-listbox,.ds-popover{position:fixed;inset:auto;margin:0;border:1px solid var(--ds-line);border-radius:12px;background:var(--ds-paper);color:var(--ds-ink);padding:6px;box-shadow:var(--ds-overlay-shadow);overflow:auto;font:14px/1.5 var(--ds-font);z-index:var(--ds-overlay-z)}.ds-listbox::backdrop,.ds-popover::backdrop{background:transparent}.ds-option{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:11px var(--ds-space-3);min-height:44px;border-radius:7px;cursor:pointer}.ds-option-copy{display:grid;gap:2px}.ds-option-description{font-size:11px;color:var(--ds-muted)}.ds-option>.ds-icon{visibility:hidden;color:var(--ds-action)}.ds-option[aria-selected=true]{background:var(--ds-action-soft);color:var(--ds-action);font-weight:var(--ds-weight-semibold)}.ds-option[aria-selected=true]>.ds-icon{visibility:visible}.ds-option[data-active=true]{outline:1px solid var(--ds-action);outline-offset:-1px;background:var(--ds-soft)}.ds-option[aria-disabled=true]{opacity:.4;cursor:not-allowed}.ds-listbox-empty{padding:var(--ds-space-3);color:var(--ds-muted);margin:0}.ds-popover{padding:var(--ds-space-5);overflow:visible}.ds-popover h3{margin:0 0 var(--ds-space-2);font-size:var(--ds-text-md)}.ds-popover p{font-size:13px;color:var(--ds-muted);margin:0 0 var(--ds-space-4)}
.ds-choice{display:inline-flex;align-items:center;gap:10px;font-size:var(--ds-text-sm);cursor:pointer;line-height:1.5;min-height:36px;position:relative}.ds-checkbox,.ds-radio{appearance:none;-webkit-appearance:none;margin:0;width:20px;height:20px;flex-shrink:0;border:1px solid var(--ds-control-border);background:var(--ds-paper);border-radius:5px;display:grid;place-content:center;cursor:pointer}.ds-checkbox:checked,.ds-checkbox:indeterminate,.ds-radio:checked{background:var(--ds-action);border-color:var(--ds-action)}.ds-checkbox:checked:after{content:'';width:10px;height:6px;border-left:2px solid var(--ds-paper);border-bottom:2px solid var(--ds-paper);transform:rotate(-45deg) translateY(-1px)}.ds-checkbox:indeterminate:after{content:'';width:10px;height:2px;background:var(--ds-paper)}.ds-checkbox:disabled,.ds-radio:disabled{opacity:.4;cursor:not-allowed}.ds-choice:has(:disabled){color:var(--ds-muted);cursor:not-allowed}.ds-radio{border-radius:50%}.ds-radio:checked:after{content:'';width:7px;height:7px;border-radius:50%;background:var(--ds-paper)}.ds-radio-group{border:0;margin:0;padding:0;display:grid;gap:var(--ds-space-2)}.ds-radio-group legend{padding:0;margin-bottom:10px}.ds-choice[data-size=sm],.ds-radio-group[data-size=sm] .ds-choice{font-size:13px}.ds-choice[data-size=lg],.ds-radio-group[data-size=lg] .ds-choice{font-size:var(--ds-text-md);min-height:44px}
.ds-toggle-wrap{display:flex;align-items:center;gap:var(--ds-space-3);font-size:var(--ds-text-sm)}.ds-switch{border:0;border-radius:30px;width:44px;height:26px;background:var(--ds-control-border);padding:3px;cursor:pointer;transition:background var(--ds-motion-fast);flex-shrink:0}.ds-switch>span{display:block;height:20px;width:20px;background:var(--ds-paper);border-radius:50%;transition:transform var(--ds-motion-fast)}.ds-switch[aria-checked=true]{background:var(--ds-action)}.ds-switch[aria-checked=true]>span{transform:translateX(18px)}.ds-switch[data-size=sm]{width:36px;height:22px}.ds-switch[data-size=sm]>span{width:16px;height:16px}.ds-switch[data-size=sm][aria-checked=true]>span{transform:translateX(14px)}.ds-switch[data-size=lg]{width:52px;height:30px}.ds-switch[data-size=lg]>span{width:24px;height:24px}.ds-switch[data-size=lg][aria-checked=true]>span{transform:translateX(22px)}.ds-switch:disabled{opacity:.4;cursor:not-allowed}
.ds-number{display:flex;border:1px solid var(--ds-control-border);border-radius:var(--ds-radius-control);align-items:center;overflow:hidden}.ds-number .ds-input{border:0;text-align:center;border-radius:0;padding-left:var(--ds-space-1);padding-right:var(--ds-space-1)}.ds-number>.ds-button{border-radius:0;flex-shrink:0}.ds-number[data-variant=filled],.ds-number[data-variant=filled] .ds-input{background:var(--ds-soft)}.ds-number:focus-within{outline:2px solid var(--ds-action);outline-offset:2px}.ds-number .ds-input:focus{box-shadow:none;outline:none}
.ds-badge{display:inline-flex;align-items:center;gap:6px;border:1px solid transparent;border-radius:var(--ds-radius-sm);padding:var(--ds-space-1) 9px;font-size:var(--ds-text-xs);line-height:18px;font-weight:var(--ds-weight-semibold);background:var(--ds-soft);color:var(--ds-muted);width:fit-content;white-space:nowrap}.ds-badge[data-tone=success]{--badge-color:var(--ds-accent);--badge-bg:var(--ds-accent-soft)}.ds-badge[data-tone=warning]{--badge-color:var(--ds-warning);--badge-bg:var(--ds-warning-soft)}.ds-badge[data-tone=danger]{--badge-color:var(--ds-danger);--badge-bg:var(--ds-danger-soft)}.ds-badge[data-tone=info]{--badge-color:var(--ds-info);--badge-bg:var(--ds-info-soft)}.ds-badge[data-tone]{color:var(--badge-color,var(--ds-muted));background:var(--badge-bg,var(--ds-soft))}.ds-badge[data-variant=outline]{background:transparent;border-color:currentColor}.ds-badge[data-variant=solid]{background:var(--badge-color,var(--ds-ink));color:var(--ds-paper)}.ds-badge[data-size=sm]{font-size:10px;padding:1px 6px}.ds-badge[data-size=lg]{font-size:var(--ds-text-sm);padding:6px var(--ds-space-3)}.ds-status-dot{height:6px;width:6px;border-radius:50%;background:currentColor}
.ds-alert{--tone:var(--ds-info);--tone-bg:var(--ds-info-soft);display:flex;align-items:start;gap:var(--ds-space-3);border:1px solid transparent;border-radius:var(--ds-radius-md);padding:17px 18px;color:var(--tone);background:var(--tone-bg);width:100%;font:14px/1.6 var(--ds-font)}.ds-alert[data-tone=success]{--tone:var(--ds-accent);--tone-bg:var(--ds-accent-soft)}.ds-alert[data-tone=warning]{--tone:var(--ds-warning);--tone-bg:var(--ds-warning-soft)}.ds-alert[data-tone=danger]{--tone:var(--ds-danger);--tone-bg:var(--ds-danger-soft)}.ds-alert[data-variant=outline]{background:var(--ds-paper);border-color:var(--tone)}.ds-alert>.ds-icon{margin-top:3px}.ds-alert>div{flex:1}.ds-alert strong{font-size:var(--ds-text-sm)}.ds-alert p{font-size:13px;margin:var(--ds-space-1) 0 0;color:inherit}.ds-alert>.ds-button{padding:3px;min-height:28px;color:inherit}.ds-alert p a{color:inherit;font-weight:var(--ds-weight-semibold)}.ds-alert-actions{display:flex;flex-wrap:wrap;gap:var(--ds-space-2);margin-top:var(--ds-space-3)}.ds-toast{position:fixed;inset:auto 24px 24px auto;width:min(420px,calc(100vw - 32px));border:1px solid var(--ds-line);border-radius:12px;background:var(--ds-paper);padding:0;box-shadow:var(--ds-overlay-shadow);margin:0}.ds-toast>.ds-alert{padding-right:var(--ds-space-12);background:var(--ds-paper)}.ds-toast>.ds-button{position:absolute;top:10px;right:8px;padding:6px}.ds-toast::backdrop{background:transparent}
.ds-tooltip-wrap{position:relative;display:inline-flex;max-width:100%}.ds-tooltip{position:absolute;bottom:calc(100% + 10px);left:50%;transform:translateX(-50%);width:230px;max-width:75vw;border-radius:7px;background:var(--ds-ink);color:var(--ds-paper);padding:10px var(--ds-space-3);font-size:var(--ds-text-xs);line-height:1.6;opacity:0;visibility:hidden;transition:opacity var(--ds-motion-fast);z-index:2;pointer-events:none}.ds-tooltip[data-placement=bottom]{bottom:auto;top:calc(100% + 10px)}.ds-tooltip-wrap:hover .ds-tooltip,.ds-tooltip-wrap:focus-within .ds-tooltip{opacity:1;visibility:visible}.ds-tooltip-wrap[data-dismissed=true] .ds-tooltip{opacity:0;visibility:hidden}
.ds-modal{width:min(500px,calc(100vw - 32px));max-height:calc(100dvh - 48px);border:1px solid var(--ds-line);border-radius:var(--ds-radius-panel);padding:28px;background:var(--ds-paper);color:var(--ds-ink);box-shadow:var(--ds-overlay-shadow);overflow:auto}.ds-modal::backdrop{background:var(--ds-overlay-backdrop)}.ds-modal-head{display:flex;justify-content:space-between;gap:var(--ds-space-4);align-items:center}.ds-modal-head h2{font-size:var(--ds-text-xl);margin:0}.ds-modal-head .ds-button{padding:5px}.ds-modal-description{font-size:var(--ds-text-sm);color:var(--ds-muted);margin:var(--ds-space-5) 0 28px}.ds-modal-footer{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.ds-modal-demo>.ds-help{margin:var(--ds-space-3) 0 0}
.ds-progress-wrap{width:100%;max-width:400px}.ds-progress-head{display:flex;justify-content:space-between;font-size:13px;margin-bottom:10px}.ds-progress{height:8px;background:var(--ds-soft);border-radius:30px;overflow:hidden}.ds-progress>span{display:block;height:100%;border-radius:inherit;background:var(--ds-action);transition:width var(--ds-motion-normal)}.ds-progress[data-size=sm]{height:4px}.ds-progress[data-size=lg]{height:12px}.ds-progress[data-tone=danger]>span{background:var(--ds-danger)}.ds-progress[data-tone=info]>span{background:var(--ds-info)}
.ds-skeleton{display:grid;gap:var(--ds-space-3);width:100%;max-width:360px}.ds-skeleton span{display:block;height:14px;background:var(--ds-line);border-radius:var(--ds-radius-sm)}.ds-skeleton .sk-title{height:22px;width:55%}.ds-skeleton .sk-last{width:72%}.ds-skeleton[data-active=true] span{animation:breathe 1.5s ease-in-out infinite alternate}.ds-skeleton[data-shape=card]::before{content:'';height:100px;background:var(--ds-line);border-radius:var(--ds-radius-control)}
.ds-tabs{width:100%;min-width:0}.ds-tablist{display:flex;gap:22px;border-bottom:1px solid var(--ds-line);overflow:auto}.ds-tab{flex-shrink:0;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--ds-muted);font:14px var(--ds-font);padding:13px 2px;cursor:pointer;min-height:44px}.ds-tab[aria-selected=true]{color:var(--ds-action);border-color:var(--ds-action);font-weight:var(--ds-weight-semibold)}.ds-tab:disabled{opacity:.4;cursor:not-allowed}.ds-tabpanel{padding:var(--ds-space-6) 0;font-size:var(--ds-text-sm);color:var(--ds-muted)}.ds-tabs[data-variant=segmented]>.ds-tablist{background:var(--ds-segment-track);padding:var(--ds-space-1);border:var(--ds-segment-border);border-radius:var(--ds-segment-radius);gap:var(--ds-space-1);width:fit-content;max-width:100%}.ds-tabs[data-variant=segmented] .ds-tab{border:0;padding:10px var(--ds-space-4);border-radius:var(--ds-segment-item-radius);min-height:36px}.ds-tabs[data-variant=segmented] .ds-tab[aria-selected=true]{background:var(--ds-segment-selected-bg);box-shadow:var(--ds-segment-selected-shadow);color:var(--ds-segment-selected-ink)}.ds-tabs[data-size=sm] .ds-tab{font-size:var(--ds-text-xs)}.ds-tabs[data-size=lg] .ds-tab{font-size:var(--ds-text-md);min-height:52px}
.ds-breadcrumb ol{display:flex;flex-wrap:wrap;gap:10px;list-style:none;margin:0;padding:0}.ds-breadcrumb li{display:flex;align-items:center;gap:10px;margin:0;font-size:13px;color:var(--ds-muted)}.ds-breadcrumb .ds-icon{width:12px;height:12px}.ds-breadcrumb a{text-decoration:none}.ds-breadcrumb [aria-current]{color:var(--ds-ink)}.ds-pagination{display:flex;gap:var(--ds-space-1);align-items:center;flex-wrap:wrap}.ds-pagination .ds-button{padding:var(--ds-space-2);min-width:40px;border-radius:8px}.ds-pagination .ds-button[data-size=sm]{min-width:34px}.ds-pagination-gap{padding:0 var(--ds-space-1);color:var(--ds-muted)}.ds-page-prev .ds-icon{transform:rotate(180deg)}.ds-pagination>.ds-help{flex-basis:100%;margin-top:var(--ds-space-2)}
.ds-table-root{width:100%;min-width:0}.ds-table-scroll{overflow:auto;border:1px solid var(--ds-line);border-radius:12px}.ds-table{width:100%;border-collapse:collapse;text-align:left;font-size:13px;white-space:nowrap}.ds-table caption{padding:14px var(--ds-space-4);text-align:left;font-size:11px;color:var(--ds-muted);border-bottom:1px solid var(--ds-line)}.ds-table th,.ds-table td{padding:var(--ds-density-comfortable);border-bottom:1px solid var(--ds-line);vertical-align:middle}.ds-table th{background:var(--ds-soft);text-transform:none;letter-spacing:0;font-weight:var(--ds-weight-semibold);color:var(--ds-muted)}.ds-table th .ds-button{padding:0;gap:var(--ds-space-2);min-height:24px;color:inherit;font-size:var(--ds-text-xs)}.ds-table[data-density=compact] td{padding-top:var(--ds-density-compact);padding-bottom:var(--ds-density-compact)}.ds-table tr:last-child td{border-bottom:0}.ds-table tr[data-selected=true]{background:var(--ds-action-soft)}.ds-table th .ds-choice,.ds-table td .ds-choice{min-height:20px}.ds-table-root>.ds-help{margin:10px 0 0}.ds-table th[aria-sort=ascending] svg{transform:rotate(180deg)}
.ds-empty{text-align:center;max-width:420px;padding:30px var(--ds-space-5);width:100%}.ds-empty>.ds-icon{width:32px;height:32px;color:var(--ds-muted);margin-bottom:18px}.ds-empty h3{font-size:var(--ds-text-lg);margin:0 0 var(--ds-space-2)}.ds-empty p{font-size:var(--ds-text-sm);color:var(--ds-muted);margin:0 0 var(--ds-space-5)}.ds-empty[data-variant=error]>.ds-icon{color:var(--ds-danger)}
:where(button,a,input,textarea,select,summary,[tabindex]):focus-visible{outline:3px solid var(--ds-focus);outline-offset:4px}
@keyframes breathe{to{opacity:.4}}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:700px){.ds-button[data-size=sm],.ds-select[data-size=sm],.ds-input[data-size=sm]{min-height:44px}.ds-choice{min-height:44px}.ds-switch{position:relative}.ds-switch:before{content:'';position:absolute;inset:-10px -3px}.ds-tooltip{max-width:65vw}.ds-modal{padding:22px}.ds-modal-footer>.ds-button{flex:1}.ds-toast{right:16px;bottom:16px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Keep the button's footprint stable while loading; accessible text stays in DOM. */
.ds-button{position:relative}.ds-button>.ds-spinner{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px}.ds-button[aria-busy=true]>.ds-button-label,.ds-button[aria-busy=true]>.ds-icon{opacity:0}
/* Date-only booking calendar. A date can be a checkout boundary and an occupied night. */
.ds-calendar{width:100%;max-width:760px;min-width:0;color:var(--ds-ink);font:14px/1.5 var(--ds-font)}.ds-calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3);margin-bottom:var(--ds-space-5)}.ds-calendar-heading{font-size:13px;color:var(--ds-muted);text-align:center;text-transform:capitalize}.ds-calendar-toolbar>.ds-button{width:36px;flex-shrink:0;padding:7px}.ds-calendar-prev>.ds-icon{transform:rotate(180deg)}
.ds-calendar-fields{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--ds-control-border);border-radius:12px;overflow:hidden;margin-bottom:26px}.ds-calendar-fields>.ds-button{border:2px solid transparent;border-radius:var(--ds-radius-md);display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:var(--ds-space-3) var(--ds-space-4);text-align:left}.ds-calendar-fields>.ds-button>span{font-size:11px;font-weight:var(--ds-weight-regular);color:var(--ds-muted)}.ds-calendar-fields>.ds-button>strong{font-size:var(--ds-text-sm);font-weight:var(--ds-weight-medium)}.ds-calendar-fields>.ds-button[aria-pressed=true]{border-color:var(--ds-action);background:var(--ds-paper)}
.ds-calendar-months{display:grid;gap:28px;grid-template-columns:minmax(0,1fr)}.ds-calendar[data-months="2"] .ds-calendar-months{grid-template-columns:repeat(2,minmax(0,1fr))}.ds-calendar-month{min-width:0}.ds-calendar-month>h3{text-align:center;text-transform:capitalize;font-size:15px;font-weight:var(--ds-weight-semibold);margin:0 0 14px}
.ds-calendar-grid{width:100%;table-layout:fixed;border-collapse:collapse;line-height:1.2}.ds-calendar-grid th{padding:10px 0;color:var(--ds-muted);font-size:10px;font-weight:var(--ds-weight-regular);letter-spacing:0;background:transparent;text-align:center;border:0;text-transform:none}.ds-calendar-grid abbr{text-decoration:none}.ds-calendar-grid td{padding:3px 0;text-align:center;border:0;vertical-align:middle;background:transparent;position:relative}.ds-calendar-blank{height:var(--ds-calendar-day)}
.ds-calendar-day{position:relative;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;width:100%;min-width:0;min-height:var(--ds-calendar-day);padding:0;border:0;border-radius:8px;background:transparent;color:var(--ds-ink);font:14px var(--ds-font);cursor:pointer;isolation:isolate}.ds-calendar-number{position:relative;z-index:1;width:36px;height:36px;display:grid;place-items:center;border:1px solid transparent;border-radius:50%}.ds-calendar-mark{font-size:10px;height:10px;line-height:10px;z-index:1}.ds-calendar-price{display:block;max-width:100%;white-space:nowrap;letter-spacing:-.4px;font-size:9px;font-weight:var(--ds-weight-regular);margin-top:var(--ds-space-1);color:var(--ds-muted);height:13px;line-height:13px;z-index:1}.ds-calendar-day:has(.ds-calendar-price){min-height:66px}.ds-calendar-day[aria-current=date] .ds-calendar-number{border-bottom-color:var(--ds-action)}
.ds-calendar-day[data-status=booked] .ds-calendar-number,.ds-calendar-day[data-status=unavailable] .ds-calendar-number{color:var(--ds-muted);text-decoration:line-through;background:var(--ds-calendar-occupied)}.ds-calendar-day[data-status=held] .ds-calendar-number{background:var(--ds-status-held-bg);color:var(--ds-status-held-ink)}.ds-calendar-day[data-status=blocked] .ds-calendar-number{background:repeating-linear-gradient(135deg,var(--ds-soft),var(--ds-soft) 3px,var(--ds-line) 3px,var(--ds-line) 4px);color:var(--ds-muted)}.ds-calendar-day[data-status=unknown]:not([data-past=true]) .ds-calendar-number{border:1px dashed var(--ds-control-border);color:var(--ds-muted)}.ds-calendar-day[data-status=pending] .ds-calendar-mark{color:var(--ds-calendar-pending)}.ds-calendar-day[data-past=true]:not([data-status=booked]):not([data-status=held]):not([data-status=blocked]){opacity:.4}.ds-calendar-day[aria-disabled=true]{cursor:not-allowed}.ds-calendar[data-mode=inspect] .ds-calendar-day{cursor:pointer}
.ds-calendar-day[data-in-range=true]:before,.ds-calendar-day[data-preview=true]:before{content:'';position:absolute;inset:0 0 auto;height:36px;background:var(--ds-calendar-range);z-index:0}.ds-calendar-day[data-preview-invalid=true]:before{background:var(--ds-danger-soft)}.ds-calendar-day[data-endpoint=arrival]:before,.ds-calendar-day[data-endpoint=departure]:before{content:'';position:absolute;inset:0 0 auto;height:36px;background:var(--ds-calendar-range);z-index:0}.ds-calendar-day[data-endpoint=arrival]:before{left:50%}.ds-calendar-day[data-endpoint=departure]:before{right:50%}.ds-calendar-day[data-endpoint=arrival]:not(:has(+*)){border-radius:0}.ds-calendar-day[data-endpoint]:not([data-endpoint=""]) .ds-calendar-number{background:var(--ds-action);border-color:var(--ds-action);color:var(--ds-paper);text-decoration:none}.ds-calendar-day:focus-visible{outline:2px solid var(--ds-action);outline-offset:-1px;z-index:2}.ds-calendar-day:hover .ds-calendar-number{border-color:var(--ds-action)}
.ds-calendar-status{font-size:13px;margin:18px 0 0;color:var(--ds-muted)}.ds-calendar-error{font-size:13px;margin:10px 0 0;color:var(--ds-danger)}.ds-calendar-error:empty{display:none}.ds-calendar-legend{display:flex;flex-wrap:wrap;gap:10px var(--ds-space-4);padding:18px 0;margin-top:18px;border-top:1px solid var(--ds-line)}.ds-calendar-legend>span{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--ds-muted)}.ds-calendar-legend>span:before{content:'';width:9px;height:9px;border:1px solid var(--ds-control-border);border-radius:50%;background:var(--ds-paper)}.ds-calendar-legend>[data-state=booked]:before{background:var(--ds-calendar-occupied)}.ds-calendar-legend>[data-state=held]:before{background:var(--ds-status-held-bg);border-color:var(--ds-status-held-line)}.ds-calendar-legend>[data-state=pending]:before{border-style:dotted;border-width:2px;border-color:var(--ds-status-pending-line)}.ds-calendar-legend>[data-state=blocked]:before{border-radius:2px;background:var(--ds-line)}.ds-calendar-legend>[data-state=unknown]:before{border-style:dashed}.ds-calendar-bottom{display:flex;justify-content:space-between;align-items:center;gap:var(--ds-space-4);border-top:1px solid var(--ds-line);padding-top:14px}.ds-calendar-bottom>.ds-help{font-size:10px;max-width:270px;margin:0}.ds-calendar-loading,.ds-calendar-unavailable{grid-column:1/-1;min-height:320px;display:grid;align-content:center;gap:18px}.ds-calendar-unavailable{justify-items:center;text-align:center;color:var(--ds-muted);font-size:var(--ds-text-sm)}.ds-calendar-loading .ds-skeleton{max-width:none}.ds-calendar[data-density=compact] .ds-calendar-grid td{padding:0}.ds-calendar[data-density=compact] .ds-calendar-day{min-height:40px}.ds-calendar[data-density=compact] .ds-calendar-legend{gap:var(--ds-space-2)}
.ds-range-picker{width:100%;max-width:800px;min-width:0}.ds-range-picker>.ds-label{display:block;margin-bottom:10px}.ds-range-picker>.ds-help{margin:var(--ds-space-3) 0 0}.ds-range-panel{border:1px solid var(--ds-line);border-radius:var(--ds-radius-panel);padding:var(--ds-space-6);background:var(--ds-paper)}.ds-range-panel>.ds-calendar{max-width:none}.ds-range-footer{display:flex;justify-content:flex-end;align-items:center;gap:10px;flex-wrap:wrap;border-top:1px solid var(--ds-line);padding-top:18px;margin-top:var(--ds-space-4)}.ds-range-footer>.ds-button:first-child{margin-right:auto}.ds-range-trigger{display:flex;justify-content:space-between;align-items:center;gap:var(--ds-space-5);width:100%;min-height:44px;border:1px solid var(--ds-control-border);border-radius:var(--ds-radius-control);background:var(--ds-paper);color:var(--ds-ink);padding:var(--ds-space-3) var(--ds-space-4);font:14px var(--ds-font);cursor:pointer}.ds-range-trigger[data-size=sm]{min-height:36px;font-size:13px;padding:var(--ds-space-2) var(--ds-space-3)}.ds-range-trigger[data-size=lg]{min-height:52px;font-size:var(--ds-text-md);padding:14px 18px}.ds-range-trigger[data-variant=filled]{border-color:var(--ds-soft);background:var(--ds-soft)}.ds-range-trigger:disabled{background:var(--ds-soft);color:var(--ds-muted);cursor:not-allowed}.ds-range-dialog{width:min(850px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;border:0;background:var(--ds-paper);padding:0;border-radius:var(--ds-radius-panel);color:var(--ds-ink);box-shadow:var(--ds-overlay-shadow)}.ds-range-dialog::backdrop{background:var(--ds-overlay-backdrop)}.ds-range-dialog>.ds-range-panel{border:0}
@media(max-width:700px){.ds-calendar[data-months="2"] .ds-calendar-months{grid-template-columns:1fr;gap:28px}.ds-calendar-toolbar{gap:var(--ds-space-2)}.ds-calendar-heading{font-size:11px}.ds-calendar-toolbar>.ds-button{width:44px;min-height:44px}.ds-calendar-fields>.ds-button{padding:var(--ds-space-3)}.ds-calendar-month>h3{font-size:var(--ds-text-sm)}.ds-calendar-number{height:34px;width:34px}.ds-calendar-day{min-height:46px}.ds-calendar-day:has(.ds-calendar-price){min-height:62px}.ds-calendar-grid td{padding:2px 0}.ds-calendar[data-density=compact] .ds-calendar-day{min-height:44px}.ds-calendar-day[data-in-range=true]:before,.ds-calendar-day[data-preview=true]:before,.ds-calendar-day[data-endpoint=arrival]:before,.ds-calendar-day[data-endpoint=departure]:before{height:34px}.ds-calendar-price{font-size:8px;letter-spacing:-.6px}.ds-calendar-legend{gap:10px var(--ds-space-3)}.ds-calendar-legend>span{font-size:9px}.ds-calendar-bottom{align-items:start;flex-wrap:wrap;gap:10px}.ds-range-panel{padding:var(--ds-space-4)}.ds-range-footer{gap:var(--ds-space-2)}.ds-range-footer>.ds-button{padding:10px var(--ds-space-3);font-size:var(--ds-text-xs)}.ds-range-footer>.ds-button:first-child{margin-right:0}.ds-range-footer>.ds-button:last-child{margin-left:auto}.ds-range-trigger[data-size=sm]{min-height:44px}.ds-range-dialog{width:calc(100vw - 16px);max-height:calc(100dvh - 16px);border-radius:14px}}
.ds-calendar-day[data-restriction]:not([data-restriction=""]) .ds-calendar-mark{color:var(--ds-info);font-size:11px}.ds-range-dialog .ds-range-footer{position:sticky;bottom:-24px;background:var(--ds-paper);margin-left:-24px;margin-right:-24px;padding:18px var(--ds-space-6) var(--ds-space-4);z-index:3;box-shadow:0 -6px 10px #ffffffdd}.ds-calendar-legend>[data-state=unavailable]:before{background:var(--ds-calendar-occupied);border-radius:2px}
@media(max-width:700px){.ds-range-dialog .ds-range-footer{bottom:-8px;margin-left:-8px;margin-right:-8px;padding:var(--ds-space-3) var(--ds-space-2)}.ds-calendar-day[data-restriction]:not([data-restriction=""]) .ds-calendar-number{border-bottom-color:var(--ds-info)}}
.ds-calendar-price{overflow:hidden;text-overflow:ellipsis}
@media(max-width:700px){.ds-calendar-price{font-size:9.5px;letter-spacing:-.6px}}
/* v0.4: content and composition primitives */
.ds-typography{margin:0;font-family:var(--ds-font);color:var(--ds-ink);overflow-wrap:anywhere}.ds-typography[data-variant=title]{font-size:36px;line-height:1.2;font-weight:var(--ds-weight-medium);letter-spacing:-1px}.ds-typography[data-variant=heading]{font-size:var(--ds-text-xl);line-height:1.3;font-weight:var(--ds-weight-medium)}.ds-typography[data-variant=body]{font-size:var(--ds-text-md);line-height:1.65}.ds-typography[data-variant=caption]{font-size:var(--ds-text-xs);line-height:1.6}.ds-typography[data-variant=code]{font:13px/1.7 var(--ds-mono);background:var(--ds-soft);padding:5px var(--ds-space-2);border-radius:5px}.ds-typography[data-variant=link]{font-size:var(--ds-text-sm);text-decoration:underline;text-underline-offset:4px}.ds-typography[data-tone=muted]{color:var(--ds-muted)}.ds-typography[data-tone=success],.ds-icon-view[data-tone=success]{color:var(--ds-accent)}.ds-typography[data-tone=danger],.ds-icon-view[data-tone=danger]{color:var(--ds-danger)}.ds-copy-text{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.ds-copy-text>.ds-help{flex-basis:100%}
.ds-card{width:100%;max-width:480px;border:1px solid var(--ds-line);border-radius:var(--ds-radius-panel);padding:var(--ds-space-6);background:var(--ds-paper)}.ds-card[data-variant=filled]{background:var(--ds-soft);border-color:var(--ds-soft)}.ds-card[data-variant=borderless]{border-color:transparent}.ds-card[data-size=sm]{padding:var(--ds-space-4)}.ds-card[data-size=lg]{padding:var(--ds-space-8)}.ds-card-head{display:flex;justify-content:space-between;gap:14px;align-items:start}.ds-card-head h3{font-size:20px;font-weight:var(--ds-weight-medium);margin:0;overflow-wrap:anywhere}.ds-card-description{color:var(--ds-muted);font-size:var(--ds-text-sm);margin:var(--ds-space-3) 0 var(--ds-space-5)}.ds-card>.ds-button{margin-top:var(--ds-space-5)}.ds-descriptions{width:100%;min-width:0}.ds-descriptions>h3{font-size:var(--ds-text-sm);margin:0 0 var(--ds-space-4)}.ds-descriptions>dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px var(--ds-space-6);margin:0}.ds-descriptions[data-columns="1"]>dl{grid-template-columns:1fr}.ds-descriptions[data-columns="3"]>dl{grid-template-columns:repeat(3,minmax(0,1fr))}.ds-descriptions dt{font-size:var(--ds-text-xs);color:var(--ds-muted);margin-bottom:5px}.ds-descriptions dd{font-size:var(--ds-text-sm);margin:0;overflow-wrap:anywhere}.ds-descriptions[data-bordered=true]>dl{gap:0;border:1px solid var(--ds-line);border-radius:var(--ds-radius-md);overflow:hidden}.ds-descriptions[data-bordered=true]>dl>div{padding:var(--ds-space-4);border-bottom:1px solid var(--ds-line)}
.ds-image{width:100%;max-width:600px;margin:0}.ds-image-box{position:relative;border-radius:14px;overflow:hidden;background:var(--ds-soft);width:100%;min-height:140px}.ds-image-box>img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}.ds-image[data-fit=contain] .ds-image-box>img{object-fit:contain}.ds-image-preview{position:absolute;bottom:12px;right:12px;background:var(--ds-paper)}.ds-image-message{position:absolute;inset:0;display:grid;place-content:center;text-align:center;padding:18px;gap:10px;font-size:13px;color:var(--ds-muted)}.ds-image-message:empty{display:none}.ds-image figcaption{font-size:11px;color:var(--ds-muted);margin-top:10px}.ds-image-dialog{width:min(1000px,calc(100vw - 24px));max-height:90dvh;padding:18px;border:1px solid var(--ds-line);border-radius:var(--ds-radius-lg);background:var(--ds-paper)}.ds-image-dialog::backdrop{background:var(--ds-overlay-backdrop)}.ds-image-dialog>img{width:100%;max-height:70dvh;object-fit:contain;display:block;margin-top:var(--ds-space-3)}.ds-image-dialog>.ds-button{display:flex;margin-left:auto}
.ds-flex,.ds-space{display:flex;min-width:0;width:100%;align-items:center;flex-wrap:wrap}.ds-space[data-direction=vertical]{flex-direction:column;align-items:flex-start}.ds-grid{display:grid;width:100%;min-width:0;grid-template-columns:repeat(2,minmax(0,1fr))}.ds-grid[data-columns="1"]{grid-template-columns:1fr}.ds-grid[data-columns="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}.ds-grid[data-columns="4"]{grid-template-columns:repeat(4,minmax(0,1fr))}.ds-divider{display:flex;align-items:center;gap:var(--ds-space-4);width:100%;font-size:var(--ds-text-xs);color:var(--ds-muted)}.ds-divider:before,.ds-divider:after{content:'';height:1px;background:var(--ds-line);flex:1}.ds-divider:empty:after{display:none}.ds-divider[data-orientation=vertical]{width:1px;min-height:70px;background:var(--ds-line);align-self:stretch}.ds-divider[data-orientation=vertical]:before,.ds-divider[data-orientation=vertical]:after{display:none}
.ds-layout{width:100%;border:1px solid var(--ds-line);border-radius:14px;overflow:hidden;display:grid;grid-template-columns:170px minmax(0,1fr);background:var(--ds-paper);min-height:300px}.ds-layout-head{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;gap:var(--ds-space-4);padding:18px 22px;border-bottom:1px solid var(--ds-line);font-size:var(--ds-text-sm)}.ds-layout-nav{display:flex;flex-direction:column;align-items:stretch;padding:var(--ds-space-3);background:var(--ds-canvas);border-right:1px solid var(--ds-line);gap:5px}.ds-layout-nav>.ds-button{justify-content:flex-start;white-space:normal;border-radius:7px;text-align:left}.ds-layout-nav [aria-current]{background:var(--ds-action-soft);color:var(--ds-action)}.ds-layout-body{padding:26px;min-width:0;font-size:var(--ds-text-sm);color:var(--ds-muted)}.ds-layout-body h3{color:var(--ds-ink);font-size:22px;font-weight:var(--ds-weight-medium);margin:0 0 18px}.ds-layout-body>span{display:block}.ds-layout-toggle{display:none}.ds-layout[data-variant=catalog]{grid-template-columns:1fr}.ds-layout[data-variant=catalog]>.ds-layout-nav{flex-direction:row;flex-wrap:wrap;border:0;border-bottom:1px solid var(--ds-line)}
/* v0.4: accessible form composition */
.ds-form{width:100%;max-width:640px;min-width:0}.ds-form-fields{margin:0;padding:0;border:0;display:grid;gap:22px;min-width:0}.ds-form-fields>.ds-field{max-width:none}.ds-form-field-error{font-size:var(--ds-text-xs);color:var(--ds-danger)}.ds-form-summary{background:var(--ds-danger-soft);border:1px solid var(--ds-danger);padding:var(--ds-space-4);border-radius:var(--ds-radius-md);margin-bottom:22px;font-size:13px;color:var(--ds-danger)}.ds-form-summary>strong{display:block;margin-bottom:var(--ds-space-2)}.ds-form-summary>.ds-button{display:flex;white-space:normal;text-align:left;color:var(--ds-danger);padding:5px 0;justify-content:flex-start}.ds-form-actions{display:flex;justify-content:flex-end;gap:var(--ds-space-3);margin-top:26px;padding-top:var(--ds-space-5);border-top:1px solid var(--ds-line)}.ds-form>.ds-help{margin:var(--ds-space-3) 0 0}.ds-form[data-layout=horizontal] .ds-form-fields>.ds-field{grid-template-columns:150px minmax(0,1fr)}.ds-form[data-layout=horizontal] .ds-field>.ds-label{padding-top:10px}.ds-form[data-layout=horizontal] .ds-field>.ds-help,.ds-form[data-layout=horizontal] .ds-field>.ds-form-field-error{grid-column:2}.ds-form-fields:disabled{opacity:.65}
/* v0.4: local file selection and consumer-supplied transport */
.ds-upload{width:100%;max-width:680px;min-width:0}.ds-upload>h3{font-size:var(--ds-text-sm);margin:0 0 14px}.ds-upload-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:var(--ds-space-8) var(--ds-space-5);background:var(--ds-canvas);border:1px dashed var(--ds-control-border);border-radius:12px;text-align:center}.ds-upload-zone>.ds-icon{height:28px;width:28px;color:var(--ds-action)}.ds-upload-zone>strong{font-size:15px;font-weight:var(--ds-weight-medium)}.ds-upload-zone>p{font-size:var(--ds-text-xs);color:var(--ds-muted);margin:0}.ds-upload-zone[data-dragging=true]{border-color:var(--ds-action);background:var(--ds-action-soft)}.ds-upload-list{padding:0;margin:18px 0;list-style:none}.ds-upload-row{display:flex;align-items:center;gap:14px;border:1px solid var(--ds-line);border-radius:var(--ds-radius-md);padding:var(--ds-space-3);margin:0 0 10px;flex-wrap:wrap}.ds-upload-row>img{width:64px;height:56px;object-fit:cover;border-radius:var(--ds-radius-sm);background:var(--ds-soft)}.ds-upload-copy{display:grid;gap:var(--ds-space-1);flex:1;min-width:100px;overflow:hidden}.ds-upload-copy strong{font-size:var(--ds-text-xs);font-weight:var(--ds-weight-medium);overflow-wrap:anywhere}.ds-upload-copy>span{font-size:11px;color:var(--ds-muted)}.ds-upload-copy>progress{width:100%;height:6px;accent-color:var(--ds-action)}.ds-upload-row-actions{display:flex;gap:2px;flex-wrap:wrap}.ds-upload-row-actions>.ds-button{padding:var(--ds-space-1) 7px;font-size:11px;min-height:30px}.ds-upload-row[data-state=error]{border-color:var(--ds-danger)}.ds-upload-error{font-size:var(--ds-text-xs);color:var(--ds-danger);margin:var(--ds-space-3) 0}.ds-upload-error:empty{display:none}.ds-upload>.ds-help{margin:var(--ds-space-3) 0 0}
/* v0.4: menu, drawer, step navigation */
.ds-menu{display:flex;flex-direction:column;gap:var(--ds-space-1);min-width:180px;padding:6px;border:1px solid var(--ds-line);border-radius:var(--ds-radius-md);background:var(--ds-paper)}.ds-menu>.ds-button{justify-content:flex-start;text-align:left;border-radius:7px;white-space:normal;min-height:40px}.ds-menu>.ds-button:hover{background:var(--ds-soft)}.ds-menu>.ds-button[data-danger=true]{color:var(--ds-danger)}.ds-menu[data-orientation=horizontal]{flex-direction:row;flex-wrap:wrap}.ds-dropdown-panel{position:fixed;inset:auto;margin:0;padding:0;border:0;background:var(--ds-paper);border-radius:var(--ds-radius-md);box-shadow:var(--ds-overlay-shadow);overflow:auto}.ds-dropdown-panel .ds-menu{border-color:var(--ds-line)}.ds-drawer{position:fixed;inset:0 0 0 auto;margin:0;width:min(480px,100vw);max-width:100vw;max-height:100dvh;height:100dvh;padding:0;border:0;background:var(--ds-paper);color:var(--ds-ink);box-shadow:var(--ds-overlay-shadow)}.ds-drawer[open]{display:flex;flex-direction:column}.ds-drawer::backdrop{background:var(--ds-overlay-backdrop)}.ds-drawer[data-placement=left]{inset:0 auto 0 0}.ds-drawer[data-placement=bottom]{inset:auto 0 0;width:100%;height:min(520px,90dvh);border-radius:var(--ds-radius-lg) var(--ds-radius-lg) 0 0}.ds-drawer[data-size=sm]{width:min(360px,100vw)}.ds-drawer[data-size=lg]{width:min(680px,100vw)}.ds-drawer[data-placement=bottom]{width:100%}.ds-drawer-head{display:flex;justify-content:space-between;align-items:center;padding:var(--ds-space-6);border-bottom:1px solid var(--ds-line);gap:var(--ds-space-4)}.ds-drawer-head h2{font-size:var(--ds-text-xl);margin:0}.ds-drawer-body{padding:var(--ds-space-6);overflow:auto;flex:1;font-size:var(--ds-text-sm);color:var(--ds-muted)}.ds-drawer-example{display:grid;grid-template-columns:1fr 1fr;gap:var(--ds-space-4)}.ds-drawer-example dt{font-size:var(--ds-text-xs);color:var(--ds-muted)}.ds-drawer-example dd{margin:0;color:var(--ds-ink)}.ds-drawer-footer{display:flex;justify-content:flex-end;gap:var(--ds-space-3);padding:var(--ds-space-5) var(--ds-space-6);border-top:1px solid var(--ds-line)}
.ds-steps{width:100%;min-width:0}.ds-steps>ol{display:flex;gap:14px;list-style:none;margin:0;padding:0}.ds-steps li{flex:1;min-width:0;margin:0;position:relative}.ds-steps li:after{content:'';position:absolute;height:1px;background:var(--ds-line);top:22px;left:55px;right:0;z-index:0}.ds-steps li:last-child:after{display:none}.ds-steps .ds-button{width:100%;white-space:normal;align-items:flex-start;justify-content:flex-start;padding:0;gap:10px;text-align:left;position:relative;z-index:1;background:transparent}.ds-step-mark{width:34px;height:34px;flex-shrink:0;border:1px solid var(--ds-control-border);border-radius:50%;display:grid;place-items:center;background:var(--ds-paper);color:var(--ds-muted);font-size:13px}.ds-step-copy{display:grid;gap:5px;background:var(--ds-paper);padding:5px 6px 0 0}.ds-step-copy strong{font-size:13px;font-weight:var(--ds-weight-medium)}.ds-step-copy small{font-size:11px;font-weight:var(--ds-weight-regular);color:var(--ds-muted)}.ds-steps li[data-state=process] .ds-step-mark{background:var(--ds-action);border-color:var(--ds-action);color:var(--ds-paper)}.ds-steps li[data-state=complete] .ds-step-mark{background:var(--ds-action-soft);border-color:var(--ds-action);color:var(--ds-action)}.ds-steps li[data-state=error] .ds-step-mark{background:var(--ds-danger-soft);border-color:var(--ds-danger);color:var(--ds-danger)}.ds-steps[data-orientation=vertical]>ol{flex-direction:column;gap:22px}.ds-steps[data-orientation=vertical] li:after{width:1px;height:calc(100% + 22px);left:17px;top:34px;right:auto}.ds-steps[data-orientation=vertical] .ds-step-copy{background:transparent}
@media(max-width:700px){.ds-descriptions>dl,.ds-descriptions[data-columns="3"]>dl{grid-template-columns:1fr}.ds-grid{grid-template-columns:1fr!important}.ds-layout{grid-template-columns:1fr}.ds-layout-toggle{display:inline-flex}.ds-layout-nav{display:none;border-right:0;border-bottom:1px solid var(--ds-line)}.ds-layout[data-open=true]>.ds-layout-nav{display:flex}.ds-layout[data-variant=catalog]>.ds-layout-nav{display:none}.ds-layout[data-variant=catalog][data-open=true]>.ds-layout-nav{display:flex}.ds-layout-head{padding:var(--ds-space-4)}.ds-layout-body{padding:var(--ds-space-5)}.ds-form[data-layout=horizontal] .ds-form-fields>.ds-field{grid-template-columns:1fr}.ds-form[data-layout=horizontal] .ds-field>.ds-help,.ds-form[data-layout=horizontal] .ds-field>.ds-form-field-error{grid-column:1}.ds-form-actions>.ds-button{flex:1}.ds-upload-zone{padding:var(--ds-space-6) 14px}.ds-upload-row-actions{flex-basis:100%}.ds-upload-row-actions>.ds-button{min-height:44px}.ds-drawer[data-placement=right],.ds-drawer[data-placement=left]{width:100vw}.ds-drawer-head,.ds-drawer-body{padding:var(--ds-space-5)}.ds-drawer-head h2{font-size:22px}.ds-drawer-footer{padding:var(--ds-space-4) var(--ds-space-5)}.ds-drawer-footer>.ds-button{flex:1}.ds-steps>ol{flex-direction:column;gap:22px}.ds-steps li:after{width:1px;height:calc(100% + 22px);left:17px;top:34px;right:auto}.ds-steps .ds-button{min-height:44px}.ds-menu>.ds-button{min-height:44px}}
.ds-layout{grid-template-rows:auto 1fr}.ds-layout[data-variant=catalog]{grid-template-rows:auto auto 1fr}.ds-form-summary{scroll-margin-top:160px}
.ds-menu>.ds-button[aria-disabled=true]{opacity:.45;cursor:not-allowed}
/* HMS private operational calendar. Same tokens, separate from public date picking. */





/* v0.7: cabin rows / civil-date columns. Scroll belongs to the timeline, not the page. */


















/* Identity media is optional; plain-text Selects keep their previous geometry. */
.ds-identity-media{position:relative;display:inline-grid;place-items:center;flex:0 0 auto;width:32px;height:32px;overflow:hidden;border-radius:8px;background:var(--ds-accent-soft);color:var(--ds-accent);font:600 11px/1 var(--ds-font);vertical-align:middle;isolation:isolate}
.ds-identity-media[data-kind=person]{border-radius:50%}.ds-identity-media[data-size=sm]{width:24px;height:24px;font-size:9px}.ds-identity-media[data-size=lg]{width:40px;height:40px;font-size:13px}.ds-identity-media[data-size=xl]{width:96px;height:96px;font-size:var(--ds-text-2xl)}.ds-identity-fallback{display:grid;place-items:center;position:absolute;inset:0}.ds-identity-fallback svg{width:60%;height:60%}.ds-identity-media>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0}.ds-identity-media[data-loaded=true]>img{opacity:1}
.ds-select-value{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.ds-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.ds-select[data-media=true]{padding-block:5px}.ds-select[data-media=true][data-size=sm]{padding-block:5px}.ds-select[data-media=true][data-size=lg]{padding-block:5px}.ds-select>.ds-icon,.ds-option>.ds-icon{flex-shrink:0}.ds-option-copy{flex:1;min-width:0;overflow-wrap:anywhere}.ds-option:has(.ds-identity-media){gap:10px;padding-block:var(--ds-space-2)}.ds-option-copy .ds-option-label{min-width:0}
/* v0.9: narrower cabin rail on phone; the dates keep their own readable widths. */


/* v0.10: two-row phone toolbar, full controls retained on desktop. */


/* v0.11: one cabin month / horizontally scrollable identity tabs. */




















/* Cabin picker shares a row with a scroll strip: size by component, not viewport. */




/* Single-month picker: compact photo rail and inline identity details on wide components. */




















/* Keep the horizontal identity scroller inside its own toolbar track. */



/* Narrow single-month toolbars: cabin cards get a full row, View its own row. */


/* Checkout extends visually into the next date; occupied nights stay exclusive. */



/* Date availability and range eligibility must be visible before activation. */
.ds-calendar-day[aria-disabled=true]:not([data-past=true]):not([data-endpoint=arrival][data-status=available]):not([data-endpoint=arrival][data-status=pending]) .ds-calendar-number{text-decoration:line-through;text-decoration-thickness:1.5px;opacity:.65}
.ds-calendar-day[aria-disabled=true][data-status=available]:not([data-endpoint=arrival]) .ds-calendar-number,.ds-calendar-day[aria-disabled=true][data-status=pending]:not([data-endpoint=arrival]) .ds-calendar-number{background:var(--ds-soft);color:var(--ds-muted)}
.ds-calendar-day[aria-disabled=true]:hover .ds-calendar-number{border-color:transparent}

/* Multi-select extension: existing select trigger and anchored surface. */
.ds-multi-select{box-sizing:border-box}.ds-multi-option{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px var(--ds-space-3);min-height:44px;box-sizing:border-box;border-radius:7px;cursor:pointer;font:400 14px/1.5 var(--ds-font);color:var(--ds-ink)}.ds-multi-option input{width:18px;height:18px;min-height:0;flex-shrink:0;accent-color:var(--ds-action)}.ds-multi-option[data-selected=true]{background:var(--ds-action-soft);color:var(--ds-action)}.ds-multi-option:focus-within{outline:2px solid var(--ds-action);outline-offset:-2px}.ds-multi-clear{width:100%;margin-bottom:var(--ds-space-1);text-align:left;justify-content:flex-start}


/* Approved 2026-10-27: scrollable dialogs keep heading and actions visible. */
.ds-modal[open]{display:flex;flex-direction:column;padding:0;overflow:hidden;width:min(620px,calc(100vw - 32px));box-sizing:border-box}.ds-modal-head{flex-shrink:0;padding:var(--ds-space-8) var(--ds-space-6) var(--ds-space-2);gap:var(--ds-space-3);background:var(--ds-paper)}.ds-modal-head h2{font:700 19px/1.4 var(--ds-font)}.ds-modal-head .ds-button{min-width:44px;min-height:44px}.ds-modal-body{min-height:0;overflow:auto;padding:18px var(--ds-space-6);scroll-padding:16px}.ds-modal-body .ds-modal-description{margin:0 0 var(--ds-space-4)}.ds-modal-body .ds-modal-description:last-child{margin-bottom:0}.ds-modal-footer{flex-shrink:0;padding:14px var(--ds-space-6) max(14px,env(safe-area-inset-bottom));border-top:1px solid var(--ds-line);background:var(--ds-paper)}
@media(max-width:700px){.ds-modal[open]{padding:0;max-height:92dvh}.ds-modal-head{padding:28px var(--ds-space-5) var(--ds-space-2)}.ds-modal-body{padding:18px var(--ds-space-5)}.ds-modal-footer{padding-left:var(--ds-space-5);padding-right:var(--ds-space-5)}}

.ds-modal-head{padding-top:calc(var(--ds-space-8) - var(--ds-dialog-header-shift,0px))}
@media(max-width:700px){.ds-modal-head{padding-top:calc(28px - var(--ds-dialog-header-shift,0px))}}
/* v0.14 components: Chip, Icon button, Stat. */
.ds-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.ds-chip{display:inline-flex;align-items:center;gap:var(--ds-space-2);min-height:var(--ds-control-sm);padding:0 var(--ds-space-4);border:1px solid var(--ds-line);border-radius:var(--ds-radius-pill);background:var(--ds-paper);color:var(--ds-ink);font:inherit;font-size:var(--ds-text-sm);font-weight:var(--ds-weight-medium);line-height:1.2;white-space:nowrap;cursor:pointer;transition:background var(--ds-motion-fast),color var(--ds-motion-fast),border-color var(--ds-motion-fast)}
.ds-chip[data-size=sm]{min-height:32px;padding:0 var(--ds-space-3);font-size:var(--ds-text-xs)}
.ds-chip[data-size=lg]{min-height:var(--ds-control-md);padding:0 var(--ds-space-5);font-size:var(--ds-text-md)}
button.ds-chip:hover:not(:disabled){border-color:var(--ds-control-border)}
.ds-chip[aria-pressed=true]{background:var(--ds-action);border-color:var(--ds-action);color:var(--ds-action-ink)}
.ds-chip:disabled{opacity:.45;cursor:not-allowed}
.ds-chip-count{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 var(--ds-space-1);border-radius:var(--ds-radius-pill);background:var(--ds-soft);color:var(--ds-ink);font-size:var(--ds-text-xs);font-weight:var(--ds-weight-semibold);font-variant-numeric:tabular-nums}
.ds-chip[aria-pressed=true] .ds-chip-count{background:var(--ds-action-ink);color:var(--ds-action)}
.ds-chip[data-removable]{cursor:default;padding-inline-end:var(--ds-space-1);border-color:transparent;background:var(--ds-soft)}
.ds-chip-remove{display:inline-grid;place-items:center;width:28px;height:28px;padding:0;border:0;border-radius:var(--ds-radius-pill);background:transparent;color:inherit;cursor:pointer}
.ds-chip-remove:hover:not(:disabled){background:var(--ds-line)}
.ds-chip-remove .ds-icon{width:16px;height:16px}
.ds-icon-button{position:relative;display:inline-grid;place-items:center;flex-shrink:0;width:var(--ds-control-md);height:var(--ds-control-md);padding:0;border:1px solid var(--ds-line);border-radius:var(--ds-radius-pill);background:var(--ds-paper);color:var(--ds-ink);cursor:pointer;transition:background var(--ds-motion-fast)}
.ds-icon-button[data-size=sm]{width:var(--ds-control-sm);height:var(--ds-control-sm)}
.ds-icon-button[data-size=lg]{width:var(--ds-control-lg);height:var(--ds-control-lg)}
.ds-icon-button .ds-icon{width:20px;height:20px}
.ds-icon-button[data-variant=soft]{border-color:transparent;background:var(--ds-soft)}
.ds-icon-button[data-variant=solid]{border-color:var(--ds-action);background:var(--ds-action);color:var(--ds-action-ink)}
.ds-icon-button[data-variant=quiet]{border-color:transparent;background:transparent}
.ds-icon-button:hover:not(:disabled){filter:brightness(.94)}
.ds-icon-button:disabled{opacity:.45;cursor:not-allowed}
.ds-icon-button-dot{position:absolute;top:var(--ds-space-2);right:var(--ds-space-2);width:8px;height:8px;border-radius:var(--ds-radius-pill);background:var(--ds-danger);box-shadow:0 0 0 2px var(--ds-paper)}
.ds-stat{display:flex;flex-direction:column;gap:var(--ds-space-1);margin:0;min-width:0}
.ds-stat-label{order:2;color:var(--ds-muted);font-size:var(--ds-text-sm);line-height:1.4}
.ds-stat-value{order:1;display:flex;align-items:baseline;gap:var(--ds-space-1);margin:0;color:var(--ds-ink);font-size:var(--ds-text-3xl);font-weight:var(--ds-weight-regular);line-height:var(--ds-leading-tight);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.ds-stat-unit{color:var(--ds-muted);font-size:var(--ds-text-xl)}
.ds-stat-caption{order:3;margin:0;color:var(--ds-muted);font-size:var(--ds-text-xs);line-height:1.4}
.ds-stat[data-size=sm] .ds-stat-value{font-size:var(--ds-text-2xl)}
.ds-stat[data-size=sm] .ds-stat-unit{font-size:var(--ds-text-lg)}
.ds-stat[data-state=unknown] .ds-stat-value{color:var(--ds-muted)}
.ds-stat-placeholder{display:block;width:96px;height:1em;border-radius:var(--ds-radius-sm);background:var(--ds-line)}
@media(prefers-reduced-motion:reduce){.ds-chip,.ds-icon-button{transition:none}}
/* v0.14: dark filled buttons get their own hover colour; brightness(.94) is invisible on ink/accent. White text stays ≥6:1; press returns to the base fill. */
.ds-button[data-variant=primary],.ds-button[data-variant=accent]{transition:background-color var(--ds-motion-fast),border-color var(--ds-motion-fast)}
.ds-button[data-variant=primary]:hover:not(:disabled){filter:none;background:var(--ds-button-primary-hover);border-color:var(--ds-button-primary-hover)}
.ds-button[data-variant=accent]:hover:not(:disabled){filter:none;background:var(--ds-button-accent-hover);border-color:var(--ds-button-accent-hover)}
.ds-button[data-variant=primary]:active:not(:disabled){background:var(--ds-ink);border-color:var(--ds-ink);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--ds-paper) 25%,transparent)}
.ds-button[data-variant=accent]:active:not(:disabled){background:var(--ds-accent);border-color:var(--ds-accent);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--ds-paper) 25%,transparent)}
@media(prefers-reduced-motion:reduce){.ds-button[data-variant=primary],.ds-button[data-variant=accent]{transition:none}}

/* Number input, row layout: label and hint on the left, stepper on the right (guest counters). */
.ds-field[data-layout=row]{
 max-width:none;
 grid-template-columns:minmax(0,1fr) auto;
 grid-template-areas:"label control" "help control";
 align-items:center;
 column-gap:var(--ds-space-4);
 row-gap:0;
}
.ds-field[data-layout=row]>.ds-label{grid-area:label;font-size:var(--ds-text-md)}
.ds-field[data-layout=row]>.ds-help{grid-area:help}
.ds-field[data-layout=row]>.ds-number{grid-area:control}
.ds-field[data-layout=row] .ds-number .ds-input{width:var(--ds-control-md)}

/* Gallery: one photo at a time, counter and arrows over the image, dots below. */
.ds-gallery{display:grid;gap:var(--ds-space-2);width:100%;margin:0}
.ds-gallery-stage{position:relative;width:100%;overflow:hidden;border-radius:var(--ds-radius-panel);background:var(--ds-soft)}
.ds-gallery-photo{display:block;width:100%;height:100%;padding:0;border:0;background:transparent;cursor:zoom-in}
.ds-gallery-photo>img{display:block;width:100%;height:100%;object-fit:cover}
.ds-gallery-photo:focus-visible{outline:2px solid var(--ds-focus);outline-offset:-4px}
.ds-gallery-prev,.ds-gallery-next{position:absolute;top:50%;transform:translateY(-50%)}
.ds-gallery-prev{left:var(--ds-space-3)}
.ds-gallery-next{right:var(--ds-space-3)}
.ds-gallery-count{position:absolute;right:var(--ds-space-3);bottom:var(--ds-space-3);padding:var(--ds-space-1) var(--ds-space-3);border-radius:var(--ds-radius-pill);background:var(--ds-paper);color:var(--ds-ink);font-size:var(--ds-text-xs);font-weight:var(--ds-weight-semibold)}
.ds-gallery-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3);font-size:var(--ds-text-xs);color:var(--ds-muted)}
.ds-gallery-dots{display:flex;gap:var(--ds-space-1)}
.ds-gallery-dot{width:var(--ds-space-2);height:var(--ds-space-2);border-radius:var(--ds-radius-pill);background:var(--ds-line);transition:width var(--ds-motion-fast)}
.ds-gallery-dot[data-active=true]{width:var(--ds-space-6);background:var(--ds-ink)}
.ds-gallery-dialog{width:min(1000px,calc(100vw - var(--ds-space-6)));max-height:94dvh;padding:var(--ds-space-4);border:0;border-radius:var(--ds-radius-lg);background:var(--ds-paper)}
.ds-gallery-dialog::backdrop{background:var(--ds-overlay-backdrop)}
.ds-gallery-dialog-stage{position:relative;margin-top:var(--ds-space-3)}
.ds-gallery-dialog-stage>img{display:block;width:100%;max-height:74dvh;object-fit:contain;border-radius:var(--ds-radius-md)}
.ds-gallery-dialog>.ds-gallery-dots{justify-content:center;margin-top:var(--ds-space-3)}
.ds-gallery-dialog>.ds-button{display:flex;margin-left:auto}

/* Action bar: running summary and the single next step. */
.ds-action-bar{display:flex;align-items:center;gap:var(--ds-space-4);padding:var(--ds-space-4) 0;background:var(--ds-paper)}
.ds-action-bar-summary{display:grid;flex:1;min-width:0}
.ds-action-bar-value{font-size:var(--ds-text-lg);font-weight:var(--ds-weight-semibold);color:var(--ds-ink)}
.ds-action-bar-caption{font-size:var(--ds-text-xs);color:var(--ds-muted)}
.ds-action-bar-action{flex-shrink:0}
@media(max-width:700px){
 .ds-action-bar{position:fixed;left:0;right:0;bottom:0;z-index:4;padding:var(--ds-space-3) max(var(--ds-space-4),var(--ds-safe-right)) calc(var(--ds-space-3) + var(--ds-safe-bottom)) max(var(--ds-space-4),var(--ds-safe-left));border-top:1px solid var(--ds-line)}
 :root:has(input:not([type=checkbox],[type=radio],[type=button],[type=submit],[type=range]):focus,textarea:focus) .ds-action-bar{position:static;padding-left:0;padding-right:0;border-top:0}
 .ds-gallery-prev,.ds-gallery-next{width:var(--ds-touch-target);height:var(--ds-touch-target)}
 /* Phones: the enlarged view takes the whole screen on black, only the photo and its controls. */
 .ds-gallery-dialog{width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:calc(var(--ds-space-3) + var(--ds-safe-top)) var(--ds-space-3) calc(var(--ds-space-4) + var(--ds-safe-bottom));border-radius:0;background:var(--ds-media-stage);color:var(--ds-on-media)}
 .ds-gallery-dialog[open]{display:grid;grid-template-rows:auto 1fr auto}
 .ds-gallery-dialog::backdrop{background:var(--ds-media-stage)}
 .ds-gallery-dialog-stage{display:grid;place-items:center;min-height:0;margin-top:0}
 .ds-gallery-dialog-stage>img{max-height:100%;height:100%;border-radius:0}
 .ds-gallery-dialog>.ds-gallery-dots{margin-top:var(--ds-space-4)}
 .ds-gallery-dialog .ds-gallery-dot{background:var(--ds-on-media-muted)}
 .ds-gallery-dialog .ds-gallery-dot[data-active=true]{background:var(--ds-on-media)}
}
@media(prefers-reduced-motion:reduce){.ds-gallery-dot{transition:none}}

/* Unit picker: all cabins / a complex / one cabin, with photos. */
.ds-unit-picker{min-width:0;max-width:400px;width:100%}
.ds-unit-picker-current,.ds-unit-picker-option{display:flex;align-items:center;gap:var(--ds-space-3);width:100%;min-width:0;padding:var(--ds-space-2) var(--ds-space-3);border:1px solid var(--ds-line);border-radius:var(--ds-radius-control);background:var(--ds-paper);color:var(--ds-ink);font:inherit;text-align:left}
.ds-unit-picker-current{min-height:calc(var(--ds-space-12) + var(--ds-space-2))}
button.ds-unit-picker-current{cursor:pointer}
.ds-unit-picker-current>.ds-icon{flex-shrink:0;width:var(--ds-space-4);height:var(--ds-space-4);color:var(--ds-muted)}
.ds-unit-picker-copy{display:grid;gap:var(--ds-space-1);min-width:0;flex:1}
.ds-unit-picker-copy strong{font-size:var(--ds-text-sm);overflow-wrap:anywhere}
.ds-unit-picker-copy small{font-size:var(--ds-text-xs);color:var(--ds-muted);overflow-wrap:anywhere}
.ds-unit-picker-option{min-height:var(--ds-space-16);margin-bottom:var(--ds-space-2);cursor:pointer}
.ds-unit-picker-option[aria-pressed=true]{border-color:var(--ds-action);background:var(--ds-action-soft)}
.ds-unit-picker-check{display:inline-grid;width:var(--ds-space-5);color:var(--ds-action)}
.ds-unit-picker-check>.ds-icon{width:var(--ds-space-5);height:var(--ds-space-5)}
.ds-unit-picker-current:focus-visible,.ds-unit-picker-option:focus-visible{outline:2px solid var(--ds-focus);outline-offset:2px}
.ds-unit-picker-head{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3);margin-bottom:var(--ds-space-2)}
.ds-unit-picker-head h2{margin:0;font-size:var(--ds-text-md)}
.ds-unit-picker-group{margin:var(--ds-space-3) 0 var(--ds-space-2);font-size:var(--ds-text-xs);font-weight:var(--ds-weight-semibold);color:var(--ds-muted)}
.ds-unit-picker-empty{font-size:var(--ds-text-sm);color:var(--ds-muted)}
.ds-unit-picker-popover .ds-field,.ds-unit-picker-sheet .ds-field{max-width:none;margin-bottom:var(--ds-space-2)}
.ds-unit-picker-popover{position:fixed;inset:auto;margin:0;box-sizing:border-box;padding:var(--ds-space-4);border:1px solid var(--ds-line);border-radius:var(--ds-radius-panel);background:var(--ds-paper);color:var(--ds-ink);box-shadow:var(--ds-overlay-shadow);overflow:auto;font-family:var(--ds-font)}
.ds-unit-picker-popover::backdrop{background:transparent}
.ds-unit-picker-sheet[open]{display:block;height:auto;max-height:88dvh;overflow:auto;padding:var(--ds-space-5) var(--ds-space-4) calc(var(--ds-space-6) + var(--ds-safe-bottom))}
@media(max-width:760px){
 .ds-unit-picker{max-width:none}
}

/* Selection dock: what is selected and what to do with it, fixed to the bottom of the viewport. */
.ds-selection-dock{position:fixed;left:var(--ds-space-8);right:var(--ds-space-8);bottom:var(--ds-space-4);z-index:18;box-sizing:border-box;max-width:1216px;max-height:calc(100dvh - var(--ds-space-8));margin:0 auto;overflow:auto;display:flex;flex-wrap:wrap;align-items:center;gap:var(--ds-space-2);padding:var(--ds-space-4);border:1px solid var(--ds-line);border-radius:var(--ds-radius-panel);background:var(--ds-paper);color:var(--ds-ink);box-shadow:var(--ds-overlay-shadow);font-family:var(--ds-font)}
.ds-selection-dock[data-entering=true]{animation:ds-selection-dock-enter var(--ds-motion-normal) ease-out both}
@keyframes ds-selection-dock-enter{from{opacity:0;transform:translateY(var(--ds-space-4))}to{opacity:1;transform:none}}
.ds-selection-dock-head{display:contents}
.ds-selection-dock-summary{flex:1 0 100%;font-size:var(--ds-text-sm);overflow-wrap:anywhere}
.ds-selection-dock-dismiss{display:none}
.ds-selection-dock-actions{display:flex;flex-wrap:wrap;gap:var(--ds-space-2)}
.ds-selection-dock-actions>.ds-button{min-height:var(--ds-touch-target)}
.ds-selection-dock-hint{flex-basis:100%;font-size:var(--ds-text-xs);color:var(--ds-muted)}
@media(max-width:760px){
 .ds-selection-dock{left:0;right:0;bottom:0;max-width:none;z-index:25;max-height:calc(100dvh - var(--ds-space-4));padding:var(--ds-space-3) var(--ds-space-4) max(var(--ds-space-3),var(--ds-safe-bottom));border-bottom:0;border-radius:var(--ds-radius-panel) var(--ds-radius-panel) 0 0}
 .ds-selection-dock-head{display:flex;align-items:center;gap:var(--ds-space-3);flex:1 0 100%;min-width:0}
 .ds-selection-dock-summary{flex:1 1 auto;min-width:0}
 .ds-selection-dock-dismiss{display:inline-grid;width:var(--ds-touch-target);height:var(--ds-touch-target)}
 .ds-selection-dock-actions{flex:1 0 100%}
 .ds-selection-dock-actions>.ds-button{flex:1 1 42%;padding-inline:var(--ds-space-2)}
 .ds-selection-dock-actions>.ds-button:first-child{flex-basis:100%}
 .ds-selection-dock-cancel{display:none}
}
@media(prefers-reduced-motion:reduce){.ds-selection-dock[data-entering=true]{animation:none}}

/* HMS owner calendar (Flow 03): toolbar, period, week by cabin, month matrix, one-cabin month, list. */
.ds-hms-calendar{width:100%;min-width:0;box-sizing:border-box;--ds-hms-cell:82px;--ds-hms-checkout-tail:clamp(6px,1cqi,12px);padding-bottom:var(--ds-hms-selection-space,0px);font-family:var(--ds-font);color:var(--ds-ink)}
.ds-hms-calendar button:focus-visible{outline:2px solid var(--ds-focus);outline-offset:2px}
.ds-hms-filters{display:flex;align-items:center;gap:var(--ds-space-4);margin:var(--ds-space-5) 0 var(--ds-space-4)}
.ds-hms-filters>.ds-unit-picker{flex:1}
.ds-hms-views{display:flex;align-items:stretch;min-height:calc(var(--ds-space-12) + var(--ds-space-2));margin-left:auto;padding:var(--ds-space-1);box-sizing:border-box;border:1px solid var(--ds-segment-border,transparent);border-radius:var(--ds-segment-radius,var(--ds-radius-control));background:var(--ds-segment-track,var(--ds-action-soft))}
.ds-hms-views>.ds-button{min-height:var(--ds-space-12);padding:var(--ds-space-2) var(--ds-space-4);border:0;border-radius:var(--ds-segment-item-radius,var(--ds-radius-control));font-size:var(--ds-text-xs)}
.ds-hms-views>.ds-button[aria-pressed=true]{background:var(--ds-segment-selected-bg,var(--ds-paper));color:var(--ds-segment-selected-ink,var(--ds-ink));box-shadow:var(--ds-segment-selected-shadow,none)}
.ds-hms-notice,.ds-hms-help{font-size:var(--ds-text-xs);color:var(--ds-muted);line-height:1.6}
.ds-hms-warning{padding:var(--ds-space-3);border-radius:var(--ds-radius-control);background:var(--ds-status-held-bg);color:var(--ds-status-held-ink);font-size:var(--ds-text-sm)}
.ds-hms-panel{padding:var(--ds-space-5);border:1px solid var(--ds-line);border-radius:var(--ds-radius-panel);background:var(--ds-paper)}
.ds-hms-period{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3);margin:0 0 var(--ds-space-4);padding-bottom:var(--ds-space-4);border-bottom:1px solid var(--ds-line)}
.ds-hms-period-nav{display:flex;align-items:center;gap:var(--ds-space-3);min-width:0}
.ds-hms-period-nav strong{font-size:var(--ds-text-sm);text-align:center}
.ds-hms-panel>.ds-field{margin-bottom:var(--ds-space-4);max-width:250px}
.ds-hms-empty{padding:var(--ds-space-6);font-size:var(--ds-text-sm);color:var(--ds-muted)}
.ds-hms-error h2,.ds-hms-empty h2{font-size:var(--ds-text-xl);margin:0 0 var(--ds-space-3)}

/* Shared cell pieces. */
.ds-hms-track{position:relative;display:grid;min-width:0}
.ds-hms-night-grid,.ds-hms-bands{grid-area:1/1;display:grid;grid-template-columns:repeat(var(--ds-hms-days,7),minmax(0,1fr))}
.ds-hms-night{display:flex;flex-direction:column;gap:var(--ds-space-1);min-height:var(--ds-hms-cell);padding:var(--ds-space-2) var(--ds-space-1);border:1px solid var(--ds-line);border-radius:var(--ds-radius-sm);background:var(--ds-paper);color:var(--ds-ink);font:inherit;text-align:left;cursor:pointer}
.ds-hms-night[disabled]{cursor:default;background:var(--ds-soft)}
.ds-hms-night[data-state=unknown]{background:var(--ds-status-blocked-bg)}.ds-hms-night[data-state=locked]{background:var(--ds-soft);color:var(--ds-muted)}
.ds-hms-night[data-state=blocked] strong{text-decoration:line-through;text-decoration-thickness:2px}
.ds-hms-night[aria-pressed=true]{background:var(--ds-action-soft);outline:2px solid var(--ds-action);outline-offset:-2px}
.ds-hms-night strong{font-size:var(--ds-text-sm)}
.ds-hms-night small{margin-top:auto;font-size:10px;color:var(--ds-muted);white-space:nowrap}
.ds-hms-outside{min-height:var(--ds-hms-cell)}
.ds-hms-bands{grid-template-rows:repeat(var(--ds-hms-lanes,1),28px);row-gap:var(--ds-space-1);align-content:start;padding:var(--ds-space-2) 0;min-height:var(--ds-hms-cell);pointer-events:none}
.ds-hms-event{pointer-events:auto;z-index:1;display:flex;align-items:center;gap:var(--ds-space-2);min-width:0;margin:0 var(--ds-space-1);padding:var(--ds-space-1) var(--ds-space-2);border:1px solid var(--ds-status-booked-line);border-radius:var(--ds-radius-control);background:var(--ds-status-booked-bg);color:var(--ds-status-booked-ink);font:var(--ds-weight-semibold) 11px/1.2 var(--ds-font);text-align:left;cursor:pointer}
.ds-hms-event-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ds-hms-event{container-type:inline-size}
.ds-hms-event-status{display:inline-flex;align-items:center;gap:var(--ds-space-1);flex-shrink:0;margin-left:auto;font-weight:var(--ds-weight-medium)}
.ds-hms-event-status .ds-icon{width:12px;height:12px;flex-shrink:0}
.ds-hms-event-status small{font:inherit;white-space:nowrap}
@container (max-width:200px){.ds-hms-event-status small{display:none}}
@container (max-width:56px){.ds-hms-event .ds-hms-avatar{display:none}}
.ds-hms-event[data-status=pending]{border-style:dashed;border-color:var(--ds-status-pending-line);background:var(--ds-paper);color:var(--ds-status-pending-ink)}
.ds-hms-event[data-status=held]{border-color:var(--ds-status-held-line);background:var(--ds-status-held-bg);color:var(--ds-status-held-ink)}
.ds-hms-event[data-status=blocked]{border-color:var(--ds-status-blocked-line);background:var(--ds-status-blocked-bg);color:var(--ds-status-blocked-ink)}
.ds-hms-event[data-status=stayed]{border-style:dotted;background:var(--ds-action-soft)}
.ds-hms-bands>.ds-hms-event[data-checkout=true]{--ds-hms-checkout-tail:clamp(6px,calc(25% / var(--ds-hms-span,1)),12px);margin-inline-end:calc(-1 * var(--ds-hms-checkout-tail))}
.ds-hms-avatar{flex-shrink:0}
.ds-hms-day-head{display:grid;gap:var(--ds-space-1);padding:var(--ds-space-3) 0;text-align:center;font-size:var(--ds-text-xs)}
.ds-hms-day-head small{color:var(--ds-muted)}

/* Cabin label and the phone rail (60px photo + number, expandable to 160px). */
.ds-hms-unit{display:flex;align-items:center;gap:var(--ds-space-3);padding-right:var(--ds-space-4);min-width:0}
.ds-hms-unit-copy{display:grid;gap:var(--ds-space-1);min-width:0}
.ds-hms-unit-copy strong{font-size:var(--ds-text-sm);overflow-wrap:anywhere}
.ds-hms-unit-copy small{font-size:var(--ds-text-xs);color:var(--ds-muted)}.ds-hms-unit-copy .ds-hms-unit-locked{--badge-color:var(--ds-status-blocked-ink);--badge-bg:var(--ds-status-blocked-bg);color:var(--badge-color);background:var(--badge-bg)}.ds-hms-unit-peek .ds-hms-unit-locked{display:inline-flex;color:var(--ds-status-blocked-ink)}.ds-hms-unit-peek .ds-hms-unit-locked svg{width:var(--ds-space-4);height:var(--ds-space-4)}
.ds-hms-unit-peek,.ds-hms-rail-toggle{display:none}
.ds-hms-corner{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-2);padding-right:var(--ds-space-4);font-size:var(--ds-text-xs)}
.ds-hms-details-toggle{min-height:var(--ds-touch-target)}

/* Week. */
.ds-hms-week-scroll{max-width:100%;overflow:auto}
.ds-hms-calendar .ds-hms-week{min-width:840px;--ds-hms-label:210px}
.ds-hms-calendar[data-compact=true] .ds-hms-week{--ds-hms-label:150px}
.ds-hms-week-head,.ds-hms-week-row{display:grid;grid-template-columns:var(--ds-hms-label) minmax(0,1fr)}
.ds-hms-week-head{grid-template-columns:var(--ds-hms-label) repeat(7,minmax(0,1fr));align-items:center;min-height:60px}
.ds-hms-week-row{padding:var(--ds-space-3) 0;border-top:1px solid var(--ds-line)}
.ds-hms-calendar[data-compact=true] .ds-hms-week .ds-hms-unit-photo,.ds-hms-calendar[data-compact=true] .ds-hms-week .ds-hms-unit-copy small{display:none}

/* Month of all cabins: sticky cabin column, dates scroll inside the panel. */
.ds-hms-month{margin-bottom:var(--ds-space-8)}
.ds-hms-month>h2{font-size:var(--ds-text-lg);text-transform:capitalize}
.ds-hms-overview{--ds-hms-label:180px;--ds-hms-day-min:30px}
.ds-hms-month-scroll{max-width:100%;overflow:auto;border:1px solid var(--ds-line);border-radius:var(--ds-radius-control)}
/* Scoped to the calendar so a host's global `* {min-width:0}` cannot collapse the scrolling grids. */
.ds-hms-calendar .ds-hms-matrix{min-width:calc(var(--ds-hms-label) + var(--ds-hms-days) * var(--ds-hms-day-min))}
.ds-hms-matrix-head,.ds-hms-matrix-row{display:grid;grid-template-columns:var(--ds-hms-label) minmax(0,1fr);border-bottom:1px solid var(--ds-line)}
.ds-hms-matrix-head>.ds-hms-corner,.ds-hms-matrix-row>.ds-hms-unit{position:sticky;left:0;z-index:4;padding:var(--ds-space-3);border-right:1px solid var(--ds-line);background:var(--ds-paper)}
.ds-hms-matrix-days{display:grid;grid-template-columns:repeat(var(--ds-hms-days),minmax(0,1fr))}
.ds-hms-matrix-days>.ds-hms-day-head{border-right:1px solid var(--ds-line)}
.ds-hms-matrix-row .ds-hms-night{min-height:86px;justify-content:flex-end;border-width:0 1px 0 0;border-radius:0}
.ds-hms-matrix-row .ds-hms-night>strong{display:none}
.ds-hms-matrix-row .ds-hms-night small{font-size:9px;white-space:normal;line-height:1.25}
.ds-hms-matrix-row .ds-hms-bands{min-height:86px;padding-bottom:var(--ds-space-6)}
.ds-hms-matrix-row .ds-hms-event,.ds-hms-month-week .ds-hms-event{font-size:10px}
.ds-hms-matrix-row .ds-hms-avatar,.ds-hms-month-week .ds-hms-avatar{display:none}

/* Month of one cabin with nightly prices. */
.ds-hms-weekdays{display:grid;grid-template-columns:repeat(7,1fr);padding:var(--ds-space-3) 0;text-align:center;font-size:var(--ds-text-xs);color:var(--ds-muted)}
.ds-hms-month-week .ds-hms-bands{padding-top:var(--ds-space-6);padding-bottom:var(--ds-space-6)}
.ds-hms-more{margin-top:var(--ds-space-2)}
.ds-hms-cabin-tabs{display:flex;gap:var(--ds-space-2);margin-bottom:var(--ds-space-4);overflow-x:auto;scrollbar-width:thin}
.ds-hms-cabin-tab{display:flex;flex-shrink:0;align-items:center;gap:var(--ds-space-2);min-height:var(--ds-touch-target);padding:var(--ds-space-1) var(--ds-space-3);border:1px solid var(--ds-line);border-radius:var(--ds-radius-pill);background:var(--ds-paper);color:var(--ds-ink);font:inherit;font-size:var(--ds-text-sm);cursor:pointer}
.ds-hms-cabin-tab[aria-selected=true]{border-color:var(--ds-action);background:var(--ds-action-soft)}

/* List. */
.ds-hms-list article{display:grid;grid-template-columns:150px minmax(0,1fr) 170px;align-items:center;gap:var(--ds-space-4);padding:var(--ds-space-3) 0;border-bottom:1px solid var(--ds-line);font-size:var(--ds-text-xs)}
.ds-hms-list article small{display:block;margin-top:var(--ds-space-1);color:var(--ds-muted)}
.ds-hms-list .ds-hms-event{min-height:var(--ds-touch-target)}
.ds-hms-list .ds-hms-event-status small{display:inline}

/* Legend: every state also has its word. */
.ds-hms-legend{display:flex;flex-wrap:wrap;gap:var(--ds-space-4);margin:var(--ds-space-5) 0;font-size:var(--ds-text-xs);color:var(--ds-muted)}
.ds-hms-legend>span{display:flex;align-items:center;gap:var(--ds-space-2)}
.ds-hms-legend>span::before{content:"";width:var(--ds-space-3);height:var(--ds-space-3);border:1px solid var(--ds-status-booked-line);border-radius:var(--ds-radius-sm);background:var(--ds-status-booked-bg)}
.ds-hms-legend>[data-status=pending]::before{border-style:dashed;border-color:var(--ds-status-pending-line);background:var(--ds-paper)}
.ds-hms-legend>[data-status=held]::before{border-color:var(--ds-status-held-line);background:var(--ds-status-held-bg)}
.ds-hms-legend>[data-status=blocked]::before{border-color:var(--ds-status-blocked-line);background:var(--ds-status-blocked-bg)}
.ds-hms-legend>[data-status=stayed]::before{border-style:dotted;background:var(--ds-action-soft)}
.ds-hms-legend>[data-status=free]::before{border-color:var(--ds-line);border-radius:var(--ds-radius-pill);background:var(--ds-paper)}
.ds-hms-legend .ds-icon{width:12px;height:12px;margin-left:calc(-1 * var(--ds-space-1));color:var(--ds-ink)}

/* Read-only cabin details from the rail. */
.ds-hms-unit-dialog{width:min(480px,calc(100vw - var(--ds-space-8)));padding:var(--ds-space-6);border:1px solid var(--ds-line);border-radius:var(--ds-radius-panel);background:var(--ds-paper);color:var(--ds-ink)}
.ds-hms-unit-dialog::backdrop{background:var(--ds-overlay-backdrop)}
.ds-hms-unit-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3)}
.ds-hms-unit-dialog-head h2{margin:0;font-size:var(--ds-text-lg)}
.ds-hms-unit-dialog-body{display:flex;align-items:center;gap:var(--ds-space-4);margin-top:var(--ds-space-4)}
.ds-hms-unit-dialog-body h3{margin:0;font-size:var(--ds-text-lg)}
.ds-hms-unit-dialog-body p{margin:var(--ds-space-2) 0;font-size:var(--ds-text-sm);color:var(--ds-muted)}

@media(max-width:760px){
 .ds-hms-filters{flex-wrap:wrap;gap:var(--ds-space-3)}
 .ds-hms-filters>.ds-unit-picker{flex-basis:100%}
 .ds-hms-views{width:100%;margin:0}
 .ds-hms-views>.ds-button{flex:1;padding:var(--ds-space-2)}
 .ds-hms-panel{padding:var(--ds-space-2)}
 .ds-hms-period{gap:var(--ds-space-2);margin-bottom:var(--ds-space-3);padding-bottom:var(--ds-space-3)}
 .ds-hms-period-nav{flex:1;gap:var(--ds-space-1)}
 .ds-hms-period-nav strong{flex:1;font-size:11px;line-height:1.35}
 .ds-hms-month>h2{font-size:var(--ds-text-lg)}
 .ds-hms-list article{grid-template-columns:1fr;gap:var(--ds-space-2)}
 .ds-hms-month-week .ds-hms-night{padding:var(--ds-space-1) 2px}
 .ds-hms-month-week .ds-hms-night small{font-size:8px}
 .ds-hms-month-week .ds-hms-event{padding:var(--ds-space-1);font-size:9px}

 /* Phone rail: photo and number only until expanded. */
 .ds-hms-calendar .ds-hms-week{--ds-hms-label:60px;min-width:calc(var(--ds-hms-label) + 308px)}
 .ds-hms-overview{--ds-hms-label:60px;--ds-hms-day-min:44px}
 .ds-hms-calendar[data-unit-info=true] .ds-hms-week,.ds-hms-calendar[data-unit-info=true] .ds-hms-overview{--ds-hms-label:160px}
 .ds-hms-week-head{grid-template-columns:var(--ds-hms-label) repeat(7,minmax(44px,1fr))}
 .ds-hms-week-row{padding:0}
 .ds-hms-week-head>.ds-hms-corner,.ds-hms-week-row>.ds-hms-unit{position:sticky;left:0;z-index:4;border-right:1px solid var(--ds-line);background:var(--ds-paper)}
 .ds-hms-corner{justify-content:center;padding:var(--ds-space-1)}
 .ds-hms-rail-heading,.ds-hms-details-toggle,.ds-hms-unit-photo,.ds-hms-unit-copy{display:none}
 .ds-hms-rail-toggle{display:grid;place-items:center;width:var(--ds-touch-target);min-height:var(--ds-touch-target);padding:0;border:1px solid var(--ds-line);border-radius:var(--ds-radius-control);background:var(--ds-paper);color:var(--ds-action);font-size:var(--ds-text-xl);cursor:pointer}
 .ds-hms-unit,.ds-hms-matrix-row>.ds-hms-unit{flex-direction:column;justify-content:center;gap:var(--ds-space-1);min-height:86px;padding:var(--ds-space-1)}
 .ds-hms-unit-peek{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--ds-space-1);width:46px;min-height:60px;padding:var(--ds-space-1) 0;border:0;border-radius:var(--ds-radius-control);background:none;color:var(--ds-ink);font:var(--ds-weight-semibold) 11px/1.2 var(--ds-font);cursor:pointer}
 .ds-hms-calendar[data-unit-info=true] .ds-hms-unit{flex-direction:row;justify-content:flex-start}
 .ds-hms-calendar[data-unit-info=true] .ds-hms-unit-copy{display:grid}
 .ds-hms-calendar[data-unit-info=true] .ds-hms-rail-heading{display:block;flex:1;font-size:11px}
 .ds-hms-unit-copy strong{font-size:11px}
 .ds-hms-unit-copy small{font-size:9px}
 .ds-hms-week .ds-hms-night,.ds-hms-week .ds-hms-bands{min-height:86px}
 .ds-hms-bands{grid-template-rows:repeat(var(--ds-hms-lanes,1),28px)}
 .ds-hms-week .ds-hms-event{font-size:10px}
 .ds-hms-week .ds-hms-avatar{display:none}
 .ds-hms-unit-dialog{width:100%;max-width:100%;margin:auto 0 0;border-radius:var(--ds-radius-panel) var(--ds-radius-panel) 0 0}
}
/* A hairline of air between day cells (owner review): cells and the bars laid over them share the same gap.
   The month of all cabins keeps its table-like shared lines. One 4px step. */
.ds-hms-calendar{--ds-hms-cell-gap:var(--ds-space-1)}
.ds-hms-weekdays,.ds-hms-week-row .ds-hms-night-grid,.ds-hms-week-row .ds-hms-bands,.ds-hms-month-week .ds-hms-night-grid,.ds-hms-month-week .ds-hms-bands{column-gap:var(--ds-hms-cell-gap)}
.ds-hms-month-week+.ds-hms-month-week{margin-top:var(--ds-hms-cell-gap)}

/* Event preview (owner decision 29.10.2026): panel next to the bar on desktop, bottom sheet on phones. */
.ds-hms-event-popover{position:fixed;inset:auto;margin:0;box-sizing:border-box;padding:var(--ds-space-5);border:1px solid var(--ds-line);border-radius:var(--ds-radius-panel);background:var(--ds-paper);color:var(--ds-ink);box-shadow:var(--ds-overlay-shadow);overflow:auto;font-family:var(--ds-font)}
.ds-hms-event-popover::backdrop{background:transparent}
.ds-hms-event-sheet[open]{display:block;height:auto;max-height:88dvh;overflow:auto;padding:var(--ds-space-5) var(--ds-space-4) calc(var(--ds-space-6) + var(--ds-safe-bottom));font-family:var(--ds-font)}
.ds-hms-event-head{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3)}
.ds-hms-event-state{padding:var(--ds-space-1) var(--ds-space-3);border:1px solid var(--ds-status-booked-line);border-radius:var(--ds-radius-pill);background:var(--ds-status-booked-bg);color:var(--ds-status-booked-ink);font-size:var(--ds-text-xs);font-weight:var(--ds-weight-semibold)}
[data-status=pending]>.ds-hms-event-head .ds-hms-event-state{border-style:dashed;border-color:var(--ds-status-pending-line);background:var(--ds-paper);color:var(--ds-status-pending-ink)}
[data-status=held]>.ds-hms-event-head .ds-hms-event-state{border-color:var(--ds-status-held-line);background:var(--ds-status-held-bg);color:var(--ds-status-held-ink)}
[data-status=blocked]>.ds-hms-event-head .ds-hms-event-state{border-color:var(--ds-status-blocked-line);background:var(--ds-status-blocked-bg);color:var(--ds-status-blocked-ink)}
[data-status=stayed]>.ds-hms-event-head .ds-hms-event-state{border-style:dotted;background:var(--ds-action-soft);color:var(--ds-ink)}
.ds-hms-event-popover>h2,.ds-hms-event-sheet>h2{margin:var(--ds-space-3) 0 var(--ds-space-4);font-size:var(--ds-text-lg);overflow-wrap:anywhere}
.ds-hms-event-rows{display:grid;gap:var(--ds-space-2);margin:0}
.ds-hms-event-rows>div{display:grid;grid-template-columns:minmax(0,9rem) minmax(0,1fr);gap:var(--ds-space-3);font-size:var(--ds-text-sm)}
.ds-hms-event-rows dt{color:var(--ds-muted)}
.ds-hms-event-rows dd{margin:0;overflow-wrap:anywhere}
.ds-hms-event-rows a{color:var(--ds-action);text-underline-offset:var(--ds-space-1)}
.ds-hms-event-note{margin:var(--ds-space-4) 0 0;padding:var(--ds-space-3);border-radius:var(--ds-radius-control);background:var(--ds-soft);font-size:var(--ds-text-sm)}
.ds-hms-event-error{margin:var(--ds-space-3) 0 0;color:var(--ds-danger);font-size:var(--ds-text-sm)}
.ds-hms-event-error:empty{display:none}
.ds-hms-event-actions{display:flex;flex-wrap:wrap;gap:var(--ds-space-2);margin-top:var(--ds-space-5)}
@media(max-width:760px){.ds-hms-event-actions>.ds-button{flex:1 1 100%}}

/* Number input, row layout (guest counters, owner review 29.10.2026): round −/+ buttons, the value
   without a box, a hairline between neighbouring rows. */
.ds-field[data-layout=row]>.ds-number{gap:var(--ds-space-3);border:0;border-radius:0;overflow:visible;background:transparent}
.ds-field[data-layout=row]>.ds-number>.ds-button{width:var(--ds-control-md);height:var(--ds-control-md);min-height:var(--ds-control-md);padding:0;border:1px solid var(--ds-control-border);border-radius:var(--ds-radius-pill);background:var(--ds-paper)}
.ds-field[data-layout=row]>.ds-number>.ds-button:disabled{border-color:var(--ds-line);opacity:1;color:var(--ds-line)}
.ds-field[data-layout=row]>.ds-number>.ds-input{width:var(--ds-space-8);padding:0;background:transparent;font-size:var(--ds-text-md);text-align:center}
.ds-field[data-layout=row]>.ds-number:focus-within{outline:0}
.ds-field[data-layout=row]>.ds-number>.ds-input:focus-visible{outline:2px solid var(--ds-focus);outline-offset:2px;border-radius:var(--ds-radius-sm)}
.ds-field[data-layout=row]{padding:var(--ds-space-4) 0}
.ds-field[data-layout=row]+.ds-field[data-layout=row]{border-top:1px solid var(--ds-line)}

/* Guest picker: one field, counters in a panel (desktop) or a bottom sheet (phones). */
.ds-guest-picker{max-width:none}
.ds-guest-trigger{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3);width:100%;min-height:var(--ds-control-md);padding:var(--ds-space-2) var(--ds-space-4);border:1px solid var(--ds-control-border);border-radius:var(--ds-radius-control);background:var(--ds-paper);color:var(--ds-ink);font:inherit;font-size:var(--ds-text-md);text-align:left;cursor:pointer}
.ds-guest-trigger>.ds-icon{width:var(--ds-space-4);height:var(--ds-space-4);color:var(--ds-muted)}
.ds-guest-trigger:focus-visible{outline:2px solid var(--ds-focus);outline-offset:2px}
.ds-guest-popover{position:fixed;inset:auto;margin:0;box-sizing:border-box;padding:var(--ds-space-2) var(--ds-space-5) var(--ds-space-5);border:1px solid var(--ds-line);border-radius:var(--ds-radius-panel);background:var(--ds-paper);color:var(--ds-ink);box-shadow:var(--ds-overlay-shadow);overflow:auto;font-family:var(--ds-font)}
.ds-guest-popover::backdrop{background:transparent}
.ds-guest-sheet[open]{display:block;height:auto;max-height:88dvh;overflow:auto;padding:var(--ds-space-2) var(--ds-space-4) calc(var(--ds-space-6) + var(--ds-safe-bottom));font-family:var(--ds-font)}
.ds-guest-panel-body{display:grid}
.ds-guest-done{justify-self:end;margin-top:var(--ds-space-3)}

/* Price summary: label — amount rows, a per-night breakdown, notes and one total. */
.ds-price-summary{display:grid;gap:var(--ds-space-3)}
.ds-price-summary>h3{margin:0;font-size:var(--ds-text-md)}
.ds-price-rows{display:grid;gap:var(--ds-space-2);margin:0}
.ds-price-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--ds-space-4);font-size:var(--ds-text-sm)}
.ds-price-row dt{min-width:0;color:var(--ds-ink)}
.ds-price-row dd{margin:0;white-space:nowrap}
.ds-price-row summary{cursor:pointer;text-decoration:underline;text-decoration-color:var(--ds-line);text-underline-offset:var(--ds-space-1)}
.ds-price-details{display:grid;gap:var(--ds-space-1);margin:var(--ds-space-2) 0 0;padding:0;list-style:none;color:var(--ds-muted);font-size:var(--ds-text-xs)}
.ds-price-details li{display:flex;justify-content:space-between;gap:var(--ds-space-6)}
.ds-price-note{margin:0;font-size:var(--ds-text-xs);color:var(--ds-muted)}
.ds-price-total{display:flex;align-items:baseline;justify-content:space-between;gap:var(--ds-space-4);padding-top:var(--ds-space-3);border-top:1px solid var(--ds-line);font-size:var(--ds-text-md)}
.ds-price-total>span{font-weight:var(--ds-weight-semibold)}
.ds-price-total strong{font-size:var(--ds-text-xl);font-weight:var(--ds-weight-semibold)}

/* Plain calendar (date choice without availability): no state legend or keyboard footnote. */
.ds-calendar[data-plain=true] .ds-calendar-legend,.ds-calendar[data-plain=true] .ds-calendar-bottom{display:none}
/* Status line with its "Очистити дати" action. */
.ds-calendar-status-row{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3);margin-top:var(--ds-space-4)}
.ds-calendar-status-row>.ds-calendar-status{margin:0 auto 0 0}
.ds-calendar-status-row>.ds-button{flex-shrink:0}
/* A past day is simply past: muted number, no strike-through, dashes or state glyph (booked/held/blocked keep theirs). */
.ds-calendar-day[data-past=true]:is([data-status=unknown],[data-status=available],[data-status=pending]) .ds-calendar-mark{visibility:hidden}

/* Clickable card: the action button's hit area stretches over the whole card. */
.ds-card[data-clickable=true]{position:relative;cursor:pointer;transition:border-color var(--ds-motion-fast),box-shadow var(--ds-motion-fast)}
/* No filter on hover: a filter would make the button the containing block and shrink the stretched area. */
.ds-card[data-clickable=true]>.ds-button,.ds-card[data-clickable=true]>.ds-button:hover:not(:disabled){position:static;filter:none}
.ds-card[data-clickable=true]:hover>.ds-button{border-color:var(--ds-ink)}
.ds-card[data-clickable=true]>.ds-button::after{content:"";position:absolute;inset:0;border-radius:inherit}
.ds-card[data-clickable=true]:hover{border-color:var(--ds-control-border);box-shadow:var(--ds-overlay-shadow)}
.ds-card[data-clickable=true]:has(>.ds-button:focus-visible){outline:2px solid var(--ds-focus);outline-offset:2px}
.ds-card[data-clickable=true]>.ds-button:focus-visible{outline:0}
@media(prefers-reduced-motion:reduce){.ds-card[data-clickable=true]{transition:none}}

/* Hatky wordmark. */
.ds-wordmark{display:inline-flex;align-items:baseline;gap:var(--ds-space-2);color:var(--ds-ink);font-family:var(--ds-font);font-weight:var(--ds-weight-semibold);letter-spacing:-0.05em;line-height:1}
.ds-wordmark-dot{color:var(--ds-accent)}
.ds-wordmark-product{font-weight:var(--ds-weight-regular);letter-spacing:0;color:var(--ds-muted)}
.ds-wordmark[data-size=sm]{font-size:var(--ds-text-lg)}
.ds-wordmark[data-size=md]{font-size:var(--ds-text-xl)}
.ds-wordmark[data-size=lg]{font-size:var(--ds-text-2xl)}

/* Upgraded native date fields: the picker takes the row of the two inputs it replaces. */
.ds-date-fields{max-width:none;grid-column:1/-1;flex:1 1 100%}
.ds-date-fields-error{margin:var(--ds-space-2) 0 0}
.ds-location{display:grid;gap:var(--ds-space-4)}
.ds-location>h2{margin:0;font-size:var(--ds-text-lg)}
.ds-location-map{position:relative;margin:0;aspect-ratio:16/7;overflow:hidden;border-radius:var(--ds-radius-panel);background:var(--ds-soft);border:1px solid var(--ds-line)}
.ds-location-tiles{position:absolute}
.ds-location-tiles img{position:absolute;max-width:none;user-select:none;pointer-events:none}
.ds-location-pin{position:absolute;left:50%;top:50%;width:var(--ds-space-6);height:var(--ds-space-6);transform:translate(-50%,-110%) rotate(-45deg);border-radius:50% 50% 50% 0;background:var(--ds-action);border:2px solid var(--ds-paper)}
.ds-location-credit{position:absolute;right:0;bottom:0;padding:var(--ds-space-1) var(--ds-space-2);background:var(--ds-paper);font-size:var(--ds-text-xs);border-top-left-radius:var(--ds-radius-sm)}
.ds-location-credit a{color:var(--ds-muted)}
.ds-location-where{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--ds-space-2) var(--ds-space-4)}
.ds-location-lines{display:grid;gap:var(--ds-space-1)}
.ds-location-lines>p{margin:0}
.ds-location-place{font-weight:var(--ds-weight-semibold)}
.ds-location-address{color:var(--ds-muted);font-size:var(--ds-text-sm)}
.ds-location-access{display:flex;flex-wrap:wrap;gap:var(--ds-space-2);margin:0;padding:0;list-style:none}
.ds-location-access li{padding:var(--ds-space-1) var(--ds-space-3);border:1px solid var(--ds-line);border-radius:var(--ds-radius-pill);font-size:var(--ds-text-sm)}
.ds-location-directions h3{margin:0 0 var(--ds-space-1);font-size:var(--ds-text-md)}
.ds-location-directions p{margin:0;white-space:pre-line;font-size:var(--ds-text-sm)}
.ds-location-note{margin:0;padding:var(--ds-space-3) var(--ds-space-4);border-radius:var(--ds-radius-control);background:var(--ds-soft);font-size:var(--ds-text-sm);color:var(--ds-muted)}
@media (max-width:600px){.ds-location-map{aspect-ratio:4/3}}

/* Notification center (Flow 09 v0.4, owner decision 29.10.2026): bell with an unread counter, latest
   events in a panel (desktop) or a bottom sheet (phones), full rows on the history page.
   Unread is a dot plus hidden text; "Потребує уваги" and the booking state are always words. */
.ds-notification-bell{position:relative;display:inline-flex}
.ds-notification-trigger{position:relative;display:inline-grid;place-items:center;width:var(--ds-touch-target);height:var(--ds-touch-target);padding:0;border:1px solid var(--ds-line);border-radius:var(--ds-radius-pill);background:var(--ds-paper);color:var(--ds-ink);cursor:pointer}
.ds-notification-trigger:hover{background:var(--ds-soft)}
.ds-notification-trigger:focus-visible{outline:2px solid var(--ds-focus);outline-offset:2px}
.ds-notification-trigger[aria-expanded=true]{background:var(--ds-soft)}
.ds-notification-trigger-icon{display:inline-grid}
.ds-notification-counter{position:absolute;top:calc(-1 * var(--ds-space-1));right:calc(-1 * var(--ds-space-1));min-width:var(--ds-space-5);height:var(--ds-space-5);padding:0 var(--ds-space-1);box-sizing:border-box;border-radius:var(--ds-radius-pill);background:var(--ds-action);color:var(--ds-action-ink);box-shadow:0 0 0 2px var(--ds-paper);font-size:var(--ds-text-xs);font-weight:var(--ds-weight-semibold);line-height:var(--ds-space-5);text-align:center}
.ds-notification-counter[hidden]{display:none}
.ds-notification-popover{position:fixed;inset:auto;margin:0;box-sizing:border-box;padding:var(--ds-space-4) 0 0;border:1px solid var(--ds-line);border-radius:var(--ds-radius-panel);background:var(--ds-paper);color:var(--ds-ink);box-shadow:var(--ds-overlay-shadow);overflow:auto;font-family:var(--ds-font)}
.ds-notification-popover::backdrop{background:transparent}
.ds-notification-sheet[open]{display:block;height:auto;max-height:88dvh;overflow:auto;padding:var(--ds-space-4) 0 0;font-family:var(--ds-font)}
.ds-notification-panel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3);padding:0 var(--ds-space-4) 0 var(--ds-space-5)}
.ds-notification-panel-head>h2{margin:0;font-size:var(--ds-text-lg)}
.ds-notification-summary{margin:var(--ds-space-1) 0 var(--ds-space-3);padding:0 var(--ds-space-5);color:var(--ds-muted);font-size:var(--ds-text-sm)}
.ds-notification-list{margin:0;padding:0;list-style:none;border-top:1px solid var(--ds-line)}
.ds-notification-list>li{border-bottom:1px solid var(--ds-line)}
.ds-notification-empty{margin:0;padding:var(--ds-space-6) var(--ds-space-5);border-top:1px solid var(--ds-line);color:var(--ds-muted);font-size:var(--ds-text-sm);text-align:center}
.ds-notification-foot{position:sticky;bottom:0;padding:var(--ds-space-4);background:var(--ds-paper)}
.ds-notification-sheet .ds-notification-foot{padding-bottom:calc(var(--ds-space-4) + var(--ds-safe-bottom))}
.ds-notification-all{display:flex;width:100%}
.ds-notification-all>.ds-icon,.ds-notification-actions>.ds-button>.ds-icon{order:1}

.ds-notification{display:flex;align-items:flex-start;gap:var(--ds-space-3);box-sizing:border-box;width:100%;font-family:var(--ds-font);color:var(--ds-ink);text-align:left}
.ds-notification[data-layout=compact]{padding:var(--ds-space-3) var(--ds-space-5);border:0;background:transparent;font:inherit;cursor:pointer}
.ds-notification[data-layout=compact]:hover{background:var(--ds-soft)}
.ds-notification[data-layout=compact]:focus-visible{outline:2px solid var(--ds-focus);outline-offset:-2px}
.ds-notification[data-layout=full]{padding:var(--ds-space-4);border:1px solid var(--ds-line);border-radius:var(--ds-radius-md);background:var(--ds-paper)}
.ds-notification[data-layout=full][data-unread=true]{border-color:var(--ds-control-border)}
.ds-notification-icon{display:inline-grid;place-items:center;flex-shrink:0;width:var(--ds-space-10);height:var(--ds-space-10);border-radius:var(--ds-radius-control);background:var(--ds-soft);color:var(--ds-ink)}
.ds-notification-body{display:grid;gap:var(--ds-space-1);flex:1;min-width:0}
.ds-notification-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--ds-space-2)}
.ds-notification-title{margin:0;font-size:var(--ds-text-sm);font-weight:var(--ds-weight-semibold);overflow-wrap:anywhere}
.ds-notification[data-layout=full] .ds-notification-title{font-size:var(--ds-text-md)}
.ds-notification[data-unread=false] .ds-notification-title{font-weight:var(--ds-weight-medium)}
.ds-notification-dot{flex-shrink:0;width:var(--ds-space-2);height:var(--ds-space-2);margin-top:var(--ds-space-1);border-radius:var(--ds-radius-pill);background:var(--ds-accent)}
.ds-notification[data-unread=false] .ds-notification-dot{visibility:hidden}
.ds-notification-detail{font-size:var(--ds-text-sm);overflow-wrap:anywhere}
.ds-notification-meta{color:var(--ds-muted);font-size:var(--ds-text-xs)}
.ds-notification-tags{display:flex;flex-wrap:wrap;gap:var(--ds-space-2)}
.ds-notification-tags:not(:has(>:not([hidden]))){display:none}
.ds-notification-attention[hidden]{display:none}
.ds-notification-status{padding:var(--ds-space-0) var(--ds-space-2);border:1px solid var(--ds-line);border-radius:var(--ds-radius-pill);background:var(--ds-soft);color:var(--ds-ink);font-size:var(--ds-text-xs);font-weight:var(--ds-weight-semibold)}
.ds-notification-status[data-kind=booked]{border-color:var(--ds-status-booked-line);background:var(--ds-status-booked-bg);color:var(--ds-status-booked-ink)}
.ds-notification-status[data-kind=pending]{border-style:dashed;border-color:var(--ds-status-pending-line);background:var(--ds-paper);color:var(--ds-status-pending-ink)}
.ds-notification-status[data-kind=held]{border-color:var(--ds-status-held-line);background:var(--ds-status-held-bg);color:var(--ds-status-held-ink)}
.ds-notification-status[data-kind=blocked]{border-color:var(--ds-status-blocked-line);background:var(--ds-status-blocked-bg);color:var(--ds-status-blocked-ink)}
.ds-notification-actions{display:flex;flex-wrap:wrap;gap:var(--ds-space-2);margin-top:var(--ds-space-2)}

.ds-action-bar-link{justify-self:start;padding:0;border:0;background:none;font:inherit;font-size:var(--ds-text-lg);font-weight:var(--ds-weight-semibold);color:var(--ds-ink);text-align:start;text-decoration:underline;text-decoration-color:var(--ds-line);text-underline-offset:var(--ds-space-1);cursor:pointer}
.ds-action-bar-link:hover{text-decoration-color:currentColor}
/* Phones: the date picker is a bottom sheet like the guest picker; both slide up from the bottom. */
@keyframes ds-sheet-enter{from{transform:translateY(100%)}to{transform:none}}
@media(max-width:700px){
 .ds-range-dialog{position:fixed;inset:auto 0 0;margin:0;width:100%;max-width:100%;max-height:92dvh;border-radius:var(--ds-radius-lg) var(--ds-radius-lg) 0 0;box-shadow:none}
 .ds-range-dialog>.ds-range-panel{padding:var(--ds-space-4) var(--ds-space-4) 0}
 .ds-range-dialog .ds-range-footer{display:grid;grid-template-columns:1fr 1fr;bottom:0;margin:var(--ds-space-4) calc(-1 * var(--ds-space-4)) 0;padding:var(--ds-space-3) var(--ds-space-4) calc(var(--ds-space-3) + var(--ds-safe-bottom))}
 .ds-range-dialog .ds-range-footer>.ds-button{width:100%;margin:0}
 .ds-range-dialog .ds-range-footer>.ds-range-apply{grid-column:1 / -1}
 .ds-range-dialog[open],.ds-guest-sheet[open]{animation:ds-sheet-enter var(--ds-motion-normal) ease-out}
}
@media(max-width:700px) and (prefers-reduced-motion:reduce){.ds-range-dialog[open],.ds-guest-sheet[open]{animation:none}}
/* Touch screens have no hover: after a tap the next button can appear under the finger and keep the hover shade. */
@media(hover:none){.ds-button[data-variant=primary]:hover:not(:disabled){background:var(--ds-ink);border-color:var(--ds-ink)}.ds-button[data-variant=accent]:hover:not(:disabled){filter:none}}
.ds-action-bar-caption{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ds-info-sheet-row{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3);width:100%;min-height:var(--ds-touch-target);padding:var(--ds-space-3) 0;border:0;border-bottom:1px solid var(--ds-line);background:none;color:var(--ds-ink);font:inherit;text-align:start;cursor:pointer}
.ds-info-sheet-row:focus-visible{outline:2px solid var(--ds-focus);outline-offset:2px}
.ds-info-sheet-copy{display:grid;gap:var(--ds-space-1);min-width:0}
.ds-info-sheet-label{font-size:var(--ds-text-md);font-weight:var(--ds-weight-semibold)}
.ds-info-sheet-preview{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:var(--ds-text-sm);color:var(--ds-muted)}
.ds-info-sheet-preview:empty{display:none}
.ds-info-sheet-chevron{flex-shrink:0;font-size:var(--ds-text-xl);color:var(--ds-muted)}
.ds-info-sheet-dialog{width:min(640px,calc(100vw - var(--ds-space-8)));max-height:min(80dvh,720px);padding:0;border:0;border-radius:var(--ds-radius-panel);background:var(--ds-paper);color:var(--ds-ink);box-shadow:var(--ds-overlay-shadow)}
/* Flex, not a 1fr grid row: WebKit stretched the 1fr row to max-height, leaving an empty sheet under short content. */
.ds-info-sheet-dialog[open]{display:flex;flex-direction:column}
.ds-info-sheet-head,.ds-info-sheet-done{flex-shrink:0}
.ds-info-sheet-dialog::backdrop{background:var(--ds-overlay-backdrop)}
.ds-info-sheet-dialog:focus{outline:none}
.ds-info-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3);padding:var(--ds-space-4) var(--ds-space-4) var(--ds-space-3) var(--ds-space-6);border-bottom:1px solid var(--ds-line)}
.ds-info-sheet-head h2{margin:0;font-size:var(--ds-text-lg)}
.ds-info-sheet-body{flex:0 1 auto;min-height:0;overflow:auto;padding:var(--ds-space-4) var(--ds-space-6);white-space:pre-line;font-size:var(--ds-text-md);line-height:1.6}
.ds-info-sheet-done{margin:0 var(--ds-space-6) var(--ds-space-4);align-self:flex-end}
@media(max-width:700px){
 .ds-info-sheet-dialog{position:fixed;inset:auto 0 0;margin:0;width:100%;max-width:100%;max-height:88dvh;border-radius:var(--ds-radius-lg) var(--ds-radius-lg) 0 0;box-shadow:none}
 .ds-info-sheet-dialog[open]{animation:ds-sheet-enter var(--ds-motion-normal) ease-out}
 .ds-info-sheet-head{padding:var(--ds-space-3) var(--ds-space-2) var(--ds-space-2) var(--ds-space-4)}
 .ds-info-sheet-body{padding:var(--ds-space-4) var(--ds-space-4) calc(var(--ds-space-4) + var(--ds-safe-bottom))}
 .ds-info-sheet-done{align-self:stretch;margin:0 var(--ds-space-4) calc(var(--ds-space-4) + var(--ds-safe-bottom))}
}
@media(max-width:700px) and (prefers-reduced-motion:reduce){.ds-info-sheet-dialog[open]{animation:none}}
.ds-visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* Booking states on a badge: the pastel status palette, always together with the text label. */
.ds-badge[data-tone=pending]{--badge-color:var(--ds-status-pending-ink);--badge-bg:var(--ds-status-pending-bg)}
.ds-badge[data-tone=booked]{--badge-color:var(--ds-status-booked-ink);--badge-bg:var(--ds-status-booked-bg)}
.ds-badge[data-tone=held]{--badge-color:var(--ds-status-held-ink);--badge-bg:var(--ds-status-held-bg)}
.ds-badge[data-tone=blocked]{--badge-color:var(--ds-status-blocked-ink);--badge-bg:var(--ds-status-blocked-bg)}
.ds-tracker{display:flex;margin:0;padding:0;list-style:none}
.ds-tracker-step{position:relative;display:grid;justify-items:center;gap:var(--ds-space-2);flex:1;min-width:0;text-align:center;font-size:var(--ds-text-xs);color:var(--ds-muted)}
.ds-tracker-step:not(:last-child)::after{content:"";position:absolute;top:calc(var(--ds-space-6) / 2);left:calc(50% + var(--ds-space-4));right:calc(-50% + var(--ds-space-4));height:2px;background:var(--ds-line)}
.ds-tracker-step[data-state=done]:not(:last-child)::after{background:var(--ds-ink)}
.ds-tracker-mark{display:grid;place-items:center;width:var(--ds-space-6);height:var(--ds-space-6);border:2px solid var(--ds-line);border-radius:var(--ds-radius-pill);background:var(--ds-paper);font-size:var(--ds-text-xs);font-weight:var(--ds-weight-semibold);line-height:1}
.ds-tracker-step[data-state=done] .ds-tracker-mark{border-color:var(--ds-ink);background:var(--ds-ink);color:var(--ds-paper)}
.ds-tracker-step[data-state=current] .ds-tracker-mark{border-color:var(--ds-ink);box-shadow:inset 0 0 0 4px var(--ds-paper),inset 0 0 0 12px var(--ds-ink)}
.ds-tracker-step[data-state=failed] .ds-tracker-mark{border-color:var(--ds-status-blocked-ink);background:var(--ds-status-blocked-bg);color:var(--ds-status-blocked-ink)}
.ds-tracker-step[data-state=done],.ds-tracker-step[data-state=current]{color:var(--ds-ink)}
.ds-tracker-step[data-state=current] .ds-tracker-label{font-weight:var(--ds-weight-semibold)}
.ds-tracker-label{overflow-wrap:anywhere}
.ds-action-sheet-list{display:grid;padding:0 var(--ds-space-6) var(--ds-space-4)}
.ds-action-sheet-item{color:var(--ds-ink);text-decoration:none}
.ds-action-sheet-item:last-child{border-bottom:0}
@media(max-width:700px){.ds-action-sheet-list{padding:0 var(--ds-space-4) calc(var(--ds-space-4) + var(--ds-safe-bottom))}}
.ds-info-sheet-body[data-content=true]{white-space:normal}
/* Guest reviews (Flow 10): stars always come with text. */
.ds-star{width:1em;height:1em;flex:none;fill:var(--ds-line);stroke:none}
.ds-rating{display:inline-flex;align-items:center;gap:var(--ds-space-2);color:var(--ds-ink);font-size:var(--ds-text-sm)}
.ds-rating[data-size=lg]{font-size:var(--ds-text-lg)}
.ds-rating-stars{display:inline-flex;gap:var(--ds-space-1);font-size:var(--ds-text-md)}
.ds-rating[data-size=lg] .ds-rating-stars{font-size:var(--ds-text-xl)}
.ds-rating .ds-star[data-fill=full]{fill:var(--ds-ink)}
.ds-rating-text{font-weight:var(--ds-weight-medium)}
.ds-rating-input{margin:0;padding:0;border:0;min-width:0}
.ds-rating-legend{padding:0;margin-bottom:var(--ds-space-2);font-size:var(--ds-text-sm);font-weight:var(--ds-weight-semibold);color:var(--ds-ink)}
.ds-rating-options{display:flex;gap:var(--ds-space-1)}
.ds-rating-radio{position:absolute;width:1px;height:1px;margin:0;opacity:0;pointer-events:none}
.ds-rating-option{display:inline-grid;place-items:center;width:var(--ds-touch-target);height:var(--ds-touch-target);border-radius:var(--ds-radius-pill);font-size:var(--ds-text-2xl);cursor:pointer}
.ds-rating-option[data-on=true] .ds-star{fill:var(--ds-ink)}
.ds-rating-option:hover{background:var(--ds-soft)}
.ds-rating-radio:focus-visible+.ds-rating-option{outline:2px solid var(--ds-focus);outline-offset:2px}
.ds-rating-radio:disabled+.ds-rating-option{cursor:not-allowed;opacity:.5}
.ds-rating-hint{margin:var(--ds-space-2) 0 0;font-size:var(--ds-text-sm);color:var(--ds-muted)}
.ds-review{display:grid;gap:var(--ds-space-3);padding:var(--ds-space-5);border:1px solid var(--ds-line);border-radius:var(--ds-radius-panel);background:var(--ds-paper);color:var(--ds-ink)}
.ds-review-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--ds-space-3)}
.ds-review-who{min-width:0}
.ds-review-name{margin:0;font-size:var(--ds-text-md);font-weight:var(--ds-weight-semibold);overflow-wrap:anywhere}
.ds-review-meta,.ds-review-trust{margin:var(--ds-space-1) 0 0;font-size:var(--ds-text-sm);color:var(--ds-muted)}
.ds-review-status{flex:none}
.ds-review-text{margin:0;font-size:var(--ds-text-md);line-height:var(--ds-leading-body);white-space:pre-line;overflow-wrap:anywhere}
.ds-review-empty{color:var(--ds-muted)}
.ds-review-reply{margin:0;padding:var(--ds-space-3) var(--ds-space-4);border-radius:var(--ds-radius-md);background:var(--ds-soft)}
.ds-review-reply-label{margin:0 0 var(--ds-space-1);font-size:var(--ds-text-sm);font-weight:var(--ds-weight-semibold)}
.ds-review-reply-text{margin:0;font-size:var(--ds-text-sm);line-height:var(--ds-leading-body);white-space:pre-line;overflow-wrap:anywhere}
.ds-review-actions{display:flex;flex-wrap:wrap;gap:var(--ds-space-2)}
.ds-rating-input[data-size=sm]{display:grid;grid-template-columns:minmax(0,calc(var(--ds-space-12) * 4)) auto 1fr;grid-template-areas:'label stars hint';align-items:center;gap:0 var(--ds-space-3)}
.ds-rating-input[data-size=sm] .ds-rating-legend{float:left;grid-area:label;margin:0;font-weight:var(--ds-weight-medium)}
.ds-rating-input[data-size=sm] .ds-rating-options{grid-area:stars}
.ds-rating-input[data-size=sm] .ds-rating-option{font-size:var(--ds-text-lg)}
.ds-rating-input[data-size=sm] .ds-rating-hint{grid-area:hint;margin:0;font-size:var(--ds-text-xs)}
.ds-rating-breakdown{display:grid;grid-template-columns:repeat(auto-fill,minmax(calc(var(--ds-space-16) * 4),1fr));gap:var(--ds-space-2) var(--ds-space-8);margin:0}
.ds-rating-breakdown-row{display:grid;grid-template-columns:minmax(0,1fr) calc(var(--ds-space-12) * 2) var(--ds-space-8);align-items:center;gap:var(--ds-space-3);font-size:var(--ds-text-sm)}
.ds-rating-breakdown-label{color:var(--ds-ink);overflow-wrap:anywhere}
.ds-rating-breakdown-bar{height:var(--ds-space-1);border-radius:var(--ds-radius-pill);background:var(--ds-line);overflow:hidden}
.ds-rating-breakdown-fill{display:block;height:100%;border-radius:inherit;background:var(--ds-ink)}
.ds-rating-breakdown-value{margin:0;text-align:end;font-weight:var(--ds-weight-semibold)}
.ds-review-scores{margin:0;font-size:var(--ds-text-sm);color:var(--ds-ink)}
@media(max-width:700px){.ds-rating-input[data-size=sm]{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:'label hint' 'stars stars'}.ds-rating-input[data-size=sm] .ds-rating-hint{text-align:end}.ds-rating-breakdown{grid-template-columns:minmax(0,1fr)}}
.ds-review-carousel{display:grid;gap:var(--ds-space-4);min-width:0}
.ds-review-carousel-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--ds-space-2) var(--ds-space-4)}
.ds-review-carousel-note{margin:0;font-size:var(--ds-text-sm);color:var(--ds-muted)}
.ds-review-carousel-track{display:flex;gap:var(--ds-space-4);overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain}
.ds-review-carousel-track::-webkit-scrollbar{display:none}
.ds-review-carousel-track:focus-visible{outline:2px solid var(--ds-focus);outline-offset:2px}
.ds-review-carousel-track>.ds-review{flex:0 0 calc((100% - var(--ds-space-4)) / 2);align-content:start;scroll-snap-align:start}
.ds-review-carousel-track .ds-review-text{display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}
.ds-review-carousel-track .ds-review-reply-text{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.ds-review-carousel-nav{display:flex;align-items:center;justify-content:center;gap:var(--ds-space-3)}
.ds-review-carousel-nav[hidden]{display:none}
.ds-review-carousel-all{display:grid;gap:var(--ds-space-4)}
@media(max-width:700px){.ds-review-carousel-track>.ds-review{flex-basis:85%}.ds-review-carousel-nav .ds-icon-button{width:var(--ds-touch-target);height:var(--ds-touch-target)}.ds-review-carousel-all-button{min-height:var(--ds-touch-target)}}
/* Pro lock and Pro offer (Flow 11): Free sees synthetic shapes only, never blurred real numbers. */
.ds-pro-lock{display:grid;gap:var(--ds-space-3);width:100%;min-height:var(--ds-touch-target);padding:var(--ds-space-4);border:1px dashed var(--ds-line);border-radius:var(--ds-radius-panel);background:var(--ds-paper);color:var(--ds-ink);font:inherit;text-align:start;cursor:pointer}
.ds-pro-lock:hover{border-color:var(--ds-accent)}
.ds-pro-lock:focus-visible{outline:2px solid var(--ds-focus);outline-offset:2px}
.ds-pro-lock-head{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-2)}
.ds-pro-lock-title{font-size:var(--ds-text-md);font-weight:var(--ds-weight-semibold)}
.ds-pro-lock-art{width:100%;height:calc(var(--ds-space-16) + var(--ds-space-2));opacity:.45}
.ds-pro-lock-art polyline{stroke:var(--ds-muted);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.ds-pro-lock-art rect{fill:var(--ds-line)}
.ds-pro-lock-hint{display:flex;align-items:center;gap:var(--ds-space-2);font-size:var(--ds-text-sm);color:var(--ds-muted)}
.ds-pro-lock-hint .ds-icon{width:var(--ds-space-4);height:var(--ds-space-4)}
.ds-pro-lock:hover .ds-pro-lock-hint{color:var(--ds-ink)}
.ds-pro-offer-dialog{width:min(520px,calc(100vw - var(--ds-space-8)));max-height:min(85dvh,720px);padding:0;border:0;border-radius:var(--ds-radius-panel);background:var(--ds-paper);color:var(--ds-ink);box-shadow:var(--ds-overlay-shadow)}
.ds-pro-offer-dialog[open]{display:grid;grid-template-rows:auto 1fr auto}
.ds-pro-offer-dialog::backdrop{background:var(--ds-overlay-backdrop)}
.ds-pro-offer-head{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3);padding:var(--ds-space-4) var(--ds-space-4) var(--ds-space-3) var(--ds-space-6);border-bottom:1px solid var(--ds-line)}
.ds-pro-offer-head h2{margin:0;font-size:var(--ds-text-lg)}
.ds-pro-offer-body{display:grid;gap:var(--ds-space-4);overflow:auto;padding:var(--ds-space-4) var(--ds-space-6)}
.ds-pro-offer-description,.ds-pro-offer-note{margin:0;font-size:var(--ds-text-md);line-height:1.5}
.ds-pro-offer-note{font-size:var(--ds-text-sm);color:var(--ds-muted)}
.ds-pro-offer-benefits{display:grid;gap:var(--ds-space-2);margin:0;padding:0;list-style:none}
.ds-pro-offer-benefits li{display:flex;align-items:flex-start;gap:var(--ds-space-2);font-size:var(--ds-text-md)}
.ds-pro-offer-benefits .ds-icon{flex-shrink:0;width:var(--ds-space-5);height:var(--ds-space-5);color:var(--ds-accent)}
.ds-pro-offer-price{display:grid;gap:var(--ds-space-1);margin:0;padding:var(--ds-space-3) var(--ds-space-4);border-radius:var(--ds-radius-md);background:var(--ds-accent-soft)}
.ds-pro-offer-price strong{font-size:var(--ds-text-xl);color:var(--ds-ink)}
.ds-pro-offer-price span{font-size:var(--ds-text-sm);color:var(--ds-muted)}
.ds-pro-offer-actions{display:flex;justify-content:flex-end;gap:var(--ds-space-2);padding:var(--ds-space-3) var(--ds-space-6) var(--ds-space-4)}
@media(max-width:700px){
 .ds-pro-offer-dialog{position:fixed;inset:auto 0 0;margin:0;width:100%;max-width:100%;max-height:88dvh;border-radius:var(--ds-radius-lg) var(--ds-radius-lg) 0 0;box-shadow:none}
 .ds-pro-offer-dialog[open]{animation:ds-sheet-enter var(--ds-motion-normal) ease-out}
 .ds-pro-offer-head{padding:var(--ds-space-3) var(--ds-space-2) var(--ds-space-2) var(--ds-space-4)}
 .ds-pro-offer-body{padding:var(--ds-space-4)}
 .ds-pro-offer-actions{flex-direction:column-reverse;padding:var(--ds-space-3) var(--ds-space-4) calc(var(--ds-space-4) + var(--ds-safe-bottom))}
 .ds-pro-offer-actions .ds-button{width:100%}
}
/* Charts and funnel (Flow 11): unknown values break the line, exact values sit under the chart. */
.ds-chart,.ds-funnel{display:grid;gap:var(--ds-space-3);margin:0;min-width:0}
.ds-chart-title{font-size:var(--ds-text-md);font-weight:var(--ds-weight-semibold);color:var(--ds-ink)}
.ds-chart-empty{margin:0;font-size:var(--ds-text-sm);color:var(--ds-muted)}
.ds-chart-legend{display:flex;flex-wrap:wrap;gap:var(--ds-space-2) var(--ds-space-4);margin:0;padding:0;list-style:none;font-size:var(--ds-text-sm);color:var(--ds-muted)}
.ds-chart-legend li{display:flex;align-items:center;gap:var(--ds-space-2)}
.ds-chart-swatch{width:var(--ds-space-3);height:var(--ds-space-3);border-radius:var(--ds-radius-sm);background:var(--ds-chart-color)}
.ds-chart [data-series="0"]{--ds-chart-color:var(--ds-accent)}
.ds-chart [data-series="1"]{--ds-chart-color:var(--ds-status-pending-line)}
.ds-chart [data-series="2"]{--ds-chart-color:var(--ds-status-booked-line)}
.ds-chart [data-series="3"]{--ds-chart-color:var(--ds-status-held-line)}
.ds-chart-body{display:grid;grid-template-columns:auto 1fr;gap:var(--ds-space-2);align-items:stretch}
.ds-chart-scale{display:flex;flex-direction:column;justify-content:space-between;padding:var(--ds-space-2) 0 var(--ds-space-4);font-size:var(--ds-text-xs);color:var(--ds-muted);text-align:end}
.ds-chart-plot{width:100%;height:calc(var(--ds-space-16) * 3);overflow:visible}
.ds-chart-axis{stroke:var(--ds-line);stroke-width:1}
.ds-chart-grid{stroke:var(--ds-line);stroke-width:1;stroke-dasharray:4 4}
.ds-chart-line{fill:none;stroke:var(--ds-chart-color);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.ds-chart-dot{stroke:var(--ds-chart-color);stroke-width:6;stroke-linecap:round;vector-effect:non-scaling-stroke}
.ds-chart-bar{fill:var(--ds-chart-color)}
.ds-chart-dates{display:flex;justify-content:space-between;font-size:var(--ds-text-xs);color:var(--ds-muted)}
.ds-chart-values summary{min-height:var(--ds-touch-target);display:flex;align-items:center;font-size:var(--ds-text-sm);cursor:pointer}
.ds-chart-values table{width:100%;border-collapse:collapse;font-size:var(--ds-text-sm)}
.ds-chart-values th,.ds-chart-values td{padding:var(--ds-space-1) var(--ds-space-2);border-bottom:1px solid var(--ds-line);text-align:start}
.ds-funnel-steps{display:grid;gap:var(--ds-space-3);margin:0;padding:0;list-style:none}
.ds-funnel-step{display:grid;gap:var(--ds-space-1)}
.ds-funnel-head{display:flex;justify-content:space-between;gap:var(--ds-space-3);font-size:var(--ds-text-md)}
.ds-funnel-value{color:var(--ds-ink)}
.ds-funnel-track{height:var(--ds-space-3);border-radius:var(--ds-radius-pill);background:var(--ds-soft);overflow:hidden}
.ds-funnel-track span{display:block;height:100%;border-radius:inherit;background:var(--ds-accent)}
.ds-funnel-note{margin:0;font-size:var(--ds-text-sm);color:var(--ds-muted)}
/* Night strip (Flow 11): one cell per night; colour plus legend counts, Mondays marked. */
.ds-night-strip{display:grid;gap:var(--ds-space-2);margin:0;min-width:0}
.ds-night-strip-cells{display:grid;grid-template-columns:repeat(var(--ds-night-count),minmax(0,1fr));gap:var(--ds-space-1)}
.ds-night-cell{display:block;height:var(--ds-space-8);border-radius:var(--ds-radius-sm);background:var(--ds-soft);border:1px solid transparent}
.ds-night-cell[data-week-start=true]{box-shadow:-3px 0 0 -1px var(--ds-ink)}
.ds-night-cell[data-state=free]{background:var(--ds-paper);border:2px solid var(--ds-accent)}
.ds-night-cell[data-state=short]{background:var(--ds-status-pending-bg);border-color:var(--ds-status-pending-line)}
.ds-night-cell[data-state=booked]{background:var(--ds-status-booked-bg);border-color:var(--ds-status-booked-line)}
.ds-night-cell[data-state=held]{background:var(--ds-status-held-bg);border-color:var(--ds-status-held-line)}
.ds-night-cell[data-state=blocked]{background:var(--ds-status-blocked-bg);border-color:var(--ds-status-blocked-line)}
.ds-night-strip-dates{display:grid;grid-template-columns:repeat(var(--ds-night-count),minmax(0,1fr));font-size:var(--ds-text-xs);color:var(--ds-muted);white-space:nowrap;overflow:visible}
.ds-night-strip-legend{display:flex;flex-wrap:wrap;gap:var(--ds-space-1) var(--ds-space-4);margin:0;padding:0;list-style:none;font-size:var(--ds-text-sm);color:var(--ds-muted)}
.ds-night-strip-legend li{display:flex;align-items:center;gap:var(--ds-space-2)}
.ds-night-strip-legend .ds-night-cell{width:var(--ds-space-4);height:var(--ds-space-4);box-shadow:none}
@media(max-width:700px){.ds-night-strip-cells{gap:0}.ds-night-cell{height:var(--ds-space-6)}}
.ds-night-strip[data-compact=true] .ds-night-strip-cells{gap:0;border-radius:var(--ds-radius-sm);overflow:hidden}
.ds-night-strip[data-compact=true] .ds-night-cell{height:var(--ds-space-4);border:0;border-radius:0}
.ds-night-strip[data-compact=true] .ds-night-cell[data-state=free]{background:var(--ds-accent-soft)}
.ds-night-strip[data-compact=true] .ds-night-cell[data-week-start=true]{box-shadow:inset 1px 0 0 var(--ds-paper)}
.ds-night-legend{display:grid;gap:var(--ds-space-2)}
.ds-night-strip[data-compact=true] .ds-night-cell[data-state],.ds-night-legend .ds-night-cell[data-state]{border:0}
.ds-night-strip[data-compact=true] .ds-night-cell[data-state=booked],.ds-night-legend .ds-night-cell[data-state=booked]{background:var(--ds-status-booked-line)}
.ds-night-strip[data-compact=true] .ds-night-cell[data-state=held],.ds-night-legend .ds-night-cell[data-state=held]{background:var(--ds-status-held-line)}
.ds-night-strip[data-compact=true] .ds-night-cell[data-state=short],.ds-night-legend .ds-night-cell[data-state=short]{background:var(--ds-status-pending-line)}
.ds-night-strip[data-compact=true] .ds-night-cell[data-state=blocked],.ds-night-legend .ds-night-cell[data-state=blocked]{background:var(--ds-muted)}
.ds-night-legend .ds-night-cell[data-state=free]{background:var(--ds-accent-soft)}
/* Plan card and plan picker (plans page, Pro popups). */
.ds-plan-card{display:grid;align-content:start;gap:var(--ds-space-3);padding:var(--ds-space-5);border:1px solid var(--ds-line);border-radius:var(--ds-radius-panel);background:var(--ds-paper);color:var(--ds-ink)}
.ds-plan-card[data-current=true]{border-color:var(--ds-ink)}
.ds-plan-card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-2)}
.ds-plan-card-name{margin:0;font-size:var(--ds-text-xl)}
.ds-plan-card-price{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--ds-space-1) var(--ds-space-2);margin:0}
.ds-plan-card-price strong{font-size:var(--ds-text-3xl);font-weight:var(--ds-weight-semibold);line-height:1}
.ds-plan-card-price span,.ds-plan-card-note,.ds-plan-card-baseline{font-size:var(--ds-text-sm);color:var(--ds-muted)}
.ds-plan-card-note,.ds-plan-card-tagline,.ds-plan-card-baseline{margin:0}
.ds-plan-card-tagline{font-size:var(--ds-text-md)}
.ds-plan-card-actions{display:grid;gap:var(--ds-space-2)}
.ds-plan-card-actions .ds-button{width:100%}
.ds-plan-card-features{display:grid;gap:var(--ds-space-2);margin:0;padding:0;list-style:none}
.ds-plan-card-features li{display:flex;align-items:flex-start;gap:var(--ds-space-2);font-size:var(--ds-text-md)}
.ds-plan-card-features .ds-icon{flex-shrink:0;width:var(--ds-space-5);height:var(--ds-space-5);color:var(--ds-accent)}
.ds-plan-card[data-compact=true]{padding:var(--ds-space-4);gap:var(--ds-space-2)}
.ds-plan-card[data-compact=true] .ds-plan-card-price strong{font-size:var(--ds-text-2xl)}
.ds-plan-card[data-compact=true] .ds-plan-card-features li{font-size:var(--ds-text-sm)}
.ds-plan-picker-dialog{width:min(760px,calc(100vw - var(--ds-space-8)));max-height:min(90dvh,820px);padding:0;border:0;border-radius:var(--ds-radius-panel);background:var(--ds-paper);color:var(--ds-ink);box-shadow:var(--ds-overlay-shadow)}
.ds-plan-picker-dialog[open]{display:grid;grid-template-rows:auto 1fr}
.ds-plan-picker-dialog::backdrop{background:var(--ds-overlay-backdrop)}
.ds-plan-picker-body{display:grid;gap:var(--ds-space-4);overflow:auto;padding:var(--ds-space-4) var(--ds-space-6) var(--ds-space-5)}
.ds-plan-picker-reason{margin:0;font-size:var(--ds-text-md)}
.ds-plan-picker-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:var(--ds-space-3)}
.ds-plan-picker-more{justify-self:center}
@media(max-width:700px){
 .ds-plan-picker-dialog{position:fixed;inset:auto 0 0;margin:0;width:100%;max-width:100%;max-height:92dvh;border-radius:var(--ds-radius-lg) var(--ds-radius-lg) 0 0;box-shadow:none}
 .ds-plan-picker-dialog[open]{animation:ds-sheet-enter var(--ds-motion-normal) ease-out}
 .ds-plan-picker-body{padding:var(--ds-space-4) var(--ds-space-4) calc(var(--ds-space-4) + var(--ds-safe-bottom))}
}
/* Plan comparison: grouped features, plans as columns, one highlighted column. */
.ds-plan-compare{min-width:0}
.ds-plan-compare-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;font-size:var(--ds-text-sm);color:var(--ds-ink)}
.ds-plan-compare-corner{width:40%}
.ds-plan-compare-plan{padding:var(--ds-space-4) var(--ds-space-3) var(--ds-space-3);text-align:start;vertical-align:top;font-weight:var(--ds-weight-regular)}
.ds-plan-compare-plan .ds-button{width:100%;margin-top:var(--ds-space-3)}
.ds-plan-compare-name{display:block;font-size:var(--ds-text-xl)}
.ds-plan-compare-price{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 var(--ds-space-1);margin-top:var(--ds-space-1)}
.ds-plan-compare-price strong{font-size:var(--ds-text-lg);font-weight:var(--ds-weight-semibold)}
.ds-plan-compare-price span{color:var(--ds-muted)}
.ds-plan-compare [data-highlight=true]{background:var(--ds-soft)}
.ds-plan-compare thead [data-highlight=true]{border-radius:var(--ds-radius-lg) var(--ds-radius-lg) 0 0}
.ds-plan-compare tbody:last-child tr:last-child [data-highlight=true]{border-radius:0 0 var(--ds-radius-lg) var(--ds-radius-lg)}
.ds-plan-compare-group th{padding:var(--ds-space-6) var(--ds-space-3) var(--ds-space-2) 0;text-align:start;font-size:var(--ds-text-md);font-weight:var(--ds-weight-semibold)}
.ds-plan-compare-label{padding:var(--ds-space-3) var(--ds-space-3) var(--ds-space-3) 0;border-bottom:1px solid var(--ds-line);text-align:start;font-weight:var(--ds-weight-regular)}
.ds-plan-compare-value{padding:var(--ds-space-3);border-bottom:1px solid var(--ds-line);vertical-align:top}
.ds-plan-compare-value[data-state=yes]{display:table-cell}
.ds-plan-compare-value .ds-icon{width:var(--ds-space-4);height:var(--ds-space-4);margin-right:var(--ds-space-2);vertical-align:-2px;color:var(--ds-ink)}
.ds-plan-compare-value[data-state=later]{color:var(--ds-muted)}
.ds-plan-compare tbody tr:last-child .ds-plan-compare-label,.ds-plan-compare tbody tr:last-child .ds-plan-compare-value{border-bottom:0}
@media(max-width:700px){
 .ds-plan-compare-corner{width:44%}
 .ds-plan-compare-plan{padding:var(--ds-space-3) var(--ds-space-2) var(--ds-space-2)}
 .ds-plan-compare-name{font-size:var(--ds-text-lg)}
 .ds-plan-compare-plan .ds-button{display:none}
 .ds-plan-compare-value{padding:var(--ds-space-3) var(--ds-space-2)}
}
/* Accordion: questions that open in place (FAQ); native details/summary, one or many open. */
.ds-accordion{display:grid;border-top:1px solid var(--ds-line)}
.ds-accordion-item{border-bottom:1px solid var(--ds-line)}
.ds-accordion-item>summary{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3);min-height:var(--ds-touch-target);padding:var(--ds-space-3) 0;font-size:var(--ds-text-md);font-weight:var(--ds-weight-semibold);list-style:none;cursor:pointer}
.ds-accordion-item>summary::-webkit-details-marker{display:none}
.ds-accordion-item>summary:focus-visible{outline:2px solid var(--ds-focus);outline-offset:2px}
.ds-accordion-item>summary .ds-icon{flex-shrink:0;width:var(--ds-space-5);height:var(--ds-space-5);color:var(--ds-muted);transition:transform var(--ds-motion-fast) ease}
.ds-accordion-item[open]>summary .ds-icon{transform:rotate(180deg)}
.ds-accordion-content{margin:0;padding:0 var(--ds-space-8) var(--ds-space-4) 0;font-size:var(--ds-text-md);line-height:1.6;color:var(--ds-muted)}
.ds-plan-compare th{text-transform:none;letter-spacing:normal;color:var(--ds-ink)}
.ds-plan-compare th,.ds-plan-compare td{background:transparent}
.ds-plan-compare [data-highlight=true]{background:var(--ds-soft)}
.ds-plan-compare-value .ds-icon{display:inline-block}
/* Plan comparison on phones: plan tabs above, one plan column, a dash for «not included». */
.ds-plan-compare-switch{display:none}
.ds-plan-compare-none{display:none}
@media(max-width:700px){
 .ds-plan-compare-switch{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;margin-bottom:var(--ds-space-2);border-bottom:1px solid var(--ds-line)}
 .ds-plan-compare-tab{display:grid;gap:var(--ds-space-1);min-height:var(--ds-touch-target);padding:var(--ds-space-2) var(--ds-space-1) var(--ds-space-3);border:0;border-bottom:2px solid transparent;background:none;color:var(--ds-muted);font:inherit;text-align:center;cursor:pointer}
 .ds-plan-compare-tab[aria-selected=true]{border-bottom-color:var(--ds-ink);color:var(--ds-ink)}
 .ds-plan-compare-tab:focus-visible{outline:2px solid var(--ds-focus);outline-offset:-2px}
 .ds-plan-compare-tab-name{font-size:var(--ds-text-md);font-weight:var(--ds-weight-semibold)}
 .ds-plan-compare-tab-price{font-size:var(--ds-text-sm)}
 .ds-plan-compare thead{display:none}
 .ds-plan-compare-table{table-layout:auto}
 .ds-plan-compare [data-highlight=true]{background:transparent}
 .ds-plan-compare[data-mobile-plan="0"] [data-plan]:not([data-plan="0"]),
 .ds-plan-compare[data-mobile-plan="1"] [data-plan]:not([data-plan="1"]),
 .ds-plan-compare[data-mobile-plan="2"] [data-plan]:not([data-plan="2"]){display:none}
 .ds-plan-compare-value{width:40%;text-align:end}
 .ds-plan-compare-value .ds-icon{display:inline-block;margin:0}
 .ds-plan-compare-value[data-state=yes] span:not(.ds-sr-only){display:block}
 .ds-plan-compare-none{display:inline-block;width:var(--ds-space-4);height:var(--ds-space-4);color:var(--ds-line)}
}
@media(max-width:700px){
 .ds-plan-compare .ds-plan-compare-value{text-align:end}
 .ds-plan-compare-value[data-text=true] .ds-icon{display:none}
}
.ds-plan-compare-value[data-text=true] .ds-icon{display:none}
.ds-plan-compare-value .ds-plan-compare-none{display:inline-block;width:var(--ds-space-4);height:var(--ds-space-4);color:var(--ds-muted)}
@media(max-width:700px){
 .ds-plan-compare-value>.ds-icon{float:inline-end}
 .ds-plan-compare-value[data-state=yes] span:not(.ds-sr-only),.ds-plan-compare-value[data-state=later] span{display:block;text-align:end}
}
/* Phones: the plan tabs stay on top while the table scrolls under them, within the comparison only. */
@media(max-width:700px){
 .ds-plan-compare-switch{position:sticky;top:0;z-index:2;background:var(--ds-paper)}
}
.ds-copy-link{display:grid;gap:var(--ds-space-2);min-width:0}
.ds-copy-link-row{display:flex;align-items:center;gap:var(--ds-space-2);min-width:0}
.ds-copy-link-field{flex:1;min-width:0;text-overflow:ellipsis;font-size:var(--ds-text-sm)}
.ds-copy-link>.ds-help:empty{display:none}
@media(max-width:700px){.ds-copy-link-row{flex-wrap:wrap}.ds-copy-link-field{flex-basis:100%}.ds-copy-link-row>.ds-button{flex:1 1 0;min-height:var(--ds-touch-target)}}


/* App shell — HMS navigation v1 (31.10.2026): primary sections, «Меню» pill, «Меню» panel, first steps. */
.ds-app-nav {
  display: flex;
  align-items: center;
  gap: var(--ds-space-1);
}
.ds-app-nav[data-variant=header] a {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: var(--ds-space-2) var(--ds-space-4);
  border-radius: var(--ds-radius-pill);
  color: var(--ds-muted);
  font-size: var(--ds-text-sm);
  font-weight: var(--ds-weight-medium);
  text-decoration: none;
  white-space: nowrap;
  transition: color var(--ds-motion-fast), background-color var(--ds-motion-fast);
}
.ds-app-nav[data-variant=header] a:hover {
  color: var(--ds-ink);
  background: var(--ds-soft);
}
.ds-app-nav[data-variant=header] a[aria-current=page] {
  color: var(--ds-action-ink);
  background: var(--ds-action);
  font-weight: var(--ds-weight-semibold);
}
.ds-app-nav[data-variant=tabbar] {
  display: grid;
  grid-auto-columns: minmax(0, 1fr);
  grid-auto-flow: column;
  gap: 0;
  padding: var(--ds-space-2) var(--ds-space-2) calc(var(--ds-space-3) + env(safe-area-inset-bottom,0px));
  background: var(--ds-paper);
  border-top: 1px solid var(--ds-line);
}
.ds-app-nav[data-variant=tabbar] > a,
.ds-app-nav-more {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--ds-space-1);
  min-height: var(--ds-control-md);
  border: 0;
  background: transparent;
  color: var(--ds-muted);
  font: inherit;
  font-size: var(--ds-text-xs);
  text-decoration: none;
  cursor: pointer;
}
.ds-app-nav[data-variant=tabbar] [aria-current=page] {
  color: var(--ds-action);
  font-weight: var(--ds-weight-semibold);
}
.ds-app-nav :focus-visible,
.ds-menu-pill:focus-visible,
.ds-app-menu :focus-visible,
.ds-first-steps :focus-visible {
  outline: 3px solid var(--ds-focus);
  outline-offset: 3px;
}
.ds-menu-pill {
  display: inline-flex;
  align-items: center;
  gap: var(--ds-space-3);
  height: 48px;
  padding: 0 var(--ds-space-1) 0 var(--ds-space-4);
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-pill);
  background: var(--ds-paper);
  color: var(--ds-ink);
  font: inherit;
  font-size: var(--ds-text-sm);
  font-weight: var(--ds-weight-semibold);
  cursor: pointer;
  transition: border-color var(--ds-motion-fast);
}
.ds-menu-pill:hover,
.ds-menu-pill[data-current=true] {
  border-color: var(--ds-ink);
}
.ds-menu-pill[data-current=true] {
  box-shadow: 0 0 0 1px var(--ds-ink);
}
.ds-menu-pill-avatar,
.ds-app-menu-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 38px;
  height: 38px;
  overflow: hidden;
  border-radius: 50%;
  background: var(--ds-action-soft);
  color: var(--ds-action);
}
.ds-menu-pill-avatar img,
.ds-app-menu-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ds-app-menu {
  width: min(440px, calc(100vw - 56px));
  max-width: none;
  height: 100vh;
  max-height: none;
  margin: 0 0 0 auto;
  padding: var(--ds-space-4) var(--ds-space-6) var(--ds-space-8);
  border: 0;
  border-radius: var(--ds-radius-panel) 0 0 var(--ds-radius-panel);
  background: var(--ds-paper);
  color: var(--ds-ink);
  font-family: var(--ds-font);
  overflow-y: auto;
}
.ds-app-menu[open] {
  animation: ds-app-menu-in var(--ds-motion-normal) ease-out;
}
@keyframes ds-app-menu-in {
  from {
    transform: translateX(40px);
    opacity: 0;
  }
}
.ds-app-menu[data-inline=true] {
  position: static;
  width: 100%;
  max-width: 440px;
  height: auto;
  margin: 0;
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-panel);
  animation: none;
}
.ds-app-menu::backdrop {
  background: rgb(0 0 0 / 0.32);
}
.ds-app-menu-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--ds-space-4);
}
.ds-app-menu-title {
  margin: 0;
  font-size: var(--ds-text-2xl);
  line-height: 1.1;
}
.ds-app-menu-close {
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--ds-control-md);
  height: var(--ds-control-md);
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--ds-ink);
  cursor: pointer;
}
.ds-app-menu-close:hover {
  background: var(--ds-soft);
}
.ds-app-menu-modes {
  display: grid;
  grid-auto-columns: 1fr;
  grid-auto-flow: column;
  gap: var(--ds-space-1);
  margin-top: var(--ds-space-4);
  padding: var(--ds-space-1);
  border: var(--ds-segment-border, 0);
  border-radius: var(--ds-segment-radius, var(--ds-radius-control));
  background: var(--ds-segment-track, var(--ds-soft));
}
.ds-app-menu-mode {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: var(--ds-control-sm);
  border-radius: var(--ds-segment-item-radius, var(--ds-radius-control));
  color: var(--ds-muted);
  font-size: var(--ds-text-sm);
  font-weight: var(--ds-weight-semibold);
  text-decoration: none;
}
.ds-app-menu-mode:hover {
  color: var(--ds-ink);
}
.ds-app-menu-mode[aria-current=page] {
  background: var(--ds-segment-selected-bg, var(--ds-paper));
  box-shadow: var(--ds-segment-selected-shadow, none);
  color: var(--ds-segment-selected-ink, var(--ds-ink));
}
.ds-app-menu-profile {
  display: flex;
  align-items: center;
  gap: var(--ds-space-3);
  color: var(--ds-ink);
  text-decoration: none;
}
.ds-app-menu-profile .ds-app-menu-avatar {
  width: 48px;
  height: 48px;
}
.ds-app-menu-profile[aria-current=page] .ds-app-menu-avatar {
  box-shadow: 0 0 0 2px var(--ds-paper), 0 0 0 4px var(--ds-ink);
}
.ds-app-menu-profile:hover strong,
.ds-app-menu-profile[aria-current=page] strong {
  text-decoration: underline;
  text-underline-offset: 3px;
}
.ds-app-menu-profile-copy {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.ds-app-menu-profile-copy > span:not(.ds-app-menu-settings) {
  overflow: hidden;
  color: var(--ds-muted);
  font-size: var(--ds-text-sm);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ds-app-menu-settings {
  display: inline-flex;
  align-items: center;
  gap: var(--ds-space-1);
  margin-top: var(--ds-space-1);
  font-size: var(--ds-text-sm);
  font-weight: var(--ds-weight-semibold);
}
.ds-app-menu-settings .ds-icon {
  width: 14px;
  height: 14px;
}
.ds-app-menu-divider {
  margin: var(--ds-space-4) 0;
  border: 0;
  border-top: 1px solid var(--ds-line);
}
.ds-app-menu-tiles {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--ds-space-3);
  margin-bottom: var(--ds-space-3);
}
.ds-app-menu-tiles[data-count='1'] {
  grid-template-columns: 1fr;
}
.ds-app-menu-tile {
  display: flex;
  flex-direction: column;
  min-height: 148px;
  padding: var(--ds-space-4);
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-panel);
  color: var(--ds-ink);
  text-decoration: none;
  box-shadow: 0 6px 20px rgb(0 0 0 / 0.06);
}
.ds-app-menu-tile[aria-current=page] {
  border-color: var(--ds-ink);
}
.ds-app-menu-tile-title {
  font-size: var(--ds-text-md);
  font-weight: var(--ds-weight-semibold);
}
.ds-app-menu-tile-meta {
  color: var(--ds-muted);
  font-size: var(--ds-text-sm);
}
.ds-app-menu-tile-value {
  margin-top: auto;
  font-size: var(--ds-text-xl);
  white-space: nowrap;
}
.ds-app-menu-chart {
  width: 100%;
  height: 44px;
  margin-top: auto;
  color: var(--ds-accent);
}
.ds-app-menu-promo {
  display: flex;
  align-items: center;
  gap: var(--ds-space-4);
  margin-bottom: var(--ds-space-2);
  padding: var(--ds-space-4) var(--ds-space-5);
  border-radius: var(--ds-radius-panel);
  background: var(--ds-soft);
  color: var(--ds-ink);
  text-decoration: none;
}
.ds-app-menu-promo-icon {
  display: flex;
  flex-shrink: 0;
  padding: var(--ds-space-3);
  border-radius: 50%;
  background: var(--ds-paper);
}
.ds-app-menu-promo-copy {
  display: flex;
  flex-direction: column;
}
.ds-app-menu-promo-copy span {
  color: var(--ds-muted);
  font-size: var(--ds-text-sm);
}
/* Brand card under the menu links: the Ґазда green with a light pill, like the landing's final call. */
.ds-app-menu-feature {
  display: grid;
  gap: var(--ds-space-2);
  margin-top: var(--ds-space-4);
  padding: var(--ds-space-5);
  border-radius: var(--ds-radius-panel);
  background: var(--ds-accent);
  color: var(--ds-paper);
  text-decoration: none;
}
.ds-app-menu-feature-eyebrow {
  font-size: var(--ds-text-xs);
  font-weight: var(--ds-weight-semibold);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  opacity: 0.8;
}
.ds-app-menu-feature-title {
  font-family: var(--ds-font-display);
  font-size: var(--ds-text-xl);
  font-weight: var(--ds-weight-regular);
  line-height: var(--ds-leading-tight);
}
.ds-app-menu-feature-text {
  font-size: var(--ds-text-sm);
  line-height: var(--ds-leading-snug);
  opacity: 0.9;
}
.ds-app-menu-feature-action {
  justify-self: start;
  margin-top: var(--ds-space-2);
  padding: var(--ds-space-2) var(--ds-space-4);
  border-radius: var(--ds-radius-pill);
  background: var(--ds-paper);
  color: var(--ds-ink);
  font-size: var(--ds-text-sm);
  font-weight: var(--ds-weight-semibold);
}
.ds-app-menu-feature:hover .ds-app-menu-feature-action {
  background: var(--ds-soft);
}
.ds-app-menu-links {
  display: flex;
  flex-direction: column;
}
.ds-app-menu-link {
  display: flex;
  align-items: center;
  gap: var(--ds-space-3);
  width: 100%;
  min-height: 52px;
  padding: var(--ds-space-2);
  border: 0;
  border-radius: var(--ds-radius-sm);
  background: transparent;
  color: var(--ds-ink);
  font: inherit;
  font-size: var(--ds-text-md);
  text-align: left;
  text-decoration: none;
  cursor: pointer;
}
.ds-app-menu-link:hover {
  background: var(--ds-soft);
}
.ds-app-menu-link[aria-current=page] {
  background: var(--ds-action-soft);
  font-weight: var(--ds-weight-semibold);
}
.ds-first-steps {
  padding: var(--ds-space-5);
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-panel);
  background: var(--ds-paper);
}
.ds-first-steps-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--ds-space-3);
}
.ds-first-steps-head h2 {
  margin: 0;
  font-size: var(--ds-text-lg);
}
.ds-first-steps-description {
  margin: var(--ds-space-1) 0 0;
  color: var(--ds-muted);
  font-size: var(--ds-text-sm);
}
.ds-first-steps-hide {
  min-height: var(--ds-control-sm);
  border: 0;
  background: none;
  color: var(--ds-muted);
  font: inherit;
  font-size: var(--ds-text-sm);
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}
.ds-first-steps-progress {
  display: flex;
  align-items: center;
  gap: var(--ds-space-1);
  margin: var(--ds-space-3) 0 var(--ds-space-4);
}
.ds-first-steps-segment {
  flex: 1;
  height: 6px;
  border-radius: var(--ds-radius-pill);
  background: var(--ds-soft);
}
.ds-first-steps-segment[data-done=true] {
  background: var(--ds-accent);
}
.ds-first-steps-count {
  margin-left: var(--ds-space-2);
  font-size: var(--ds-text-sm);
  font-weight: var(--ds-weight-semibold);
  white-space: nowrap;
}
.ds-first-steps-list {
  display: flex;
  flex-direction: column;
  gap: var(--ds-space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}
.ds-first-step {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--ds-space-4);
  padding: var(--ds-space-4);
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-control);
}
.ds-first-step[data-state=next] {
  border-color: var(--ds-ink);
}
.ds-first-step[data-state=todo] {
  background: var(--ds-canvas);
}
.ds-first-step[data-state=done] {
  padding: var(--ds-space-2) var(--ds-space-4);
  border-style: dashed;
  color: var(--ds-muted);
}
.ds-first-step-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--ds-action-soft);
}
.ds-first-step[data-state=done] .ds-first-step-icon {
  width: 28px;
  height: 28px;
  background: var(--ds-status-booked-bg);
  color: var(--ds-status-booked-ink);
}
.ds-first-step[data-state=done] .ds-first-step-icon .ds-icon {
  width: 16px;
  height: 16px;
}
.ds-first-step-copy {
  display: flex;
  flex-direction: column;
  gap: var(--ds-space-1);
}
.ds-first-step-title {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--ds-space-2);
  font-weight: var(--ds-weight-semibold);
}
.ds-first-step[data-state=done] .ds-first-step-title {
  font-weight: var(--ds-weight-regular);
}
.ds-first-step-text {
  color: var(--ds-muted);
  font-size: var(--ds-text-sm);
}
.ds-first-step-badge {
  justify-self: end;
  padding: 0 var(--ds-space-2);
  border-radius: var(--ds-radius-pill);
  background: var(--ds-soft);
  color: var(--ds-muted);
  font-size: var(--ds-text-xs);
  font-weight: var(--ds-weight-semibold);
}
.ds-first-step-lock {
  color: var(--ds-muted);
  font-size: var(--ds-text-sm);
  white-space: nowrap;
}
@media (max-width: 760px) {
  .ds-app-menu {
    width: 100vw;
    height: 100dvh;
    padding: var(--ds-space-4) var(--ds-space-5) var(--ds-space-8);
    border-radius: 0;
  }
  .ds-app-menu[open] {
    animation-name: ds-app-menu-up;
  }
  .ds-app-menu-tile {
    padding: var(--ds-space-3);
  }
  .ds-first-step {
    grid-template-columns: auto 1fr;
    gap: var(--ds-space-3);
  }
  .ds-first-step > .ds-button,
  .ds-first-step > .ds-first-step-lock {
    grid-column: 2;
    justify-self: start;
  }
}
@keyframes ds-app-menu-up {
  from {
    transform: translateY(24px);
    opacity: 0;
  }
}
/* notify(): the confirmation after a successful action, bottom centre, above bottom menus and tabs on phones. */
.ds-notify-region{position:fixed;left:50%;bottom:calc(var(--ds-space-6) + var(--ds-notify-offset,0px) + var(--ds-safe-bottom));z-index:60;transform:translateX(-50%);width:max-content;max-width:calc(100vw - var(--ds-space-8));pointer-events:none}
.ds-notify-region:empty{display:none}
.ds-notify{display:flex;align-items:center;gap:var(--ds-space-2);padding:var(--ds-space-3) var(--ds-space-4);border-radius:var(--ds-radius-pill);background:var(--ds-ink);color:var(--ds-paper);font-size:var(--ds-text-sm);font-weight:var(--ds-weight-semibold);box-shadow:var(--ds-overlay-shadow);animation:ds-notify-in var(--ds-motion-normal) ease-out}
.ds-notify[data-tone=danger]{background:var(--ds-danger)}
.ds-notify-mark{display:grid;place-items:center;width:var(--ds-space-6);height:var(--ds-space-6);border-radius:var(--ds-radius-pill);background:var(--ds-accent);color:var(--ds-paper);font-size:var(--ds-text-xs);flex-shrink:0}
.ds-notify[data-tone=danger] .ds-notify-mark{background:var(--ds-paper);color:var(--ds-danger)}
.ds-notify[data-leaving=true]{opacity:0;transition:opacity var(--ds-motion-normal)}
@keyframes ds-notify-in{from{opacity:0;transform:translateY(var(--ds-space-2))}to{opacity:1;transform:none}}
@media(max-width:760px){.ds-notify-region{--ds-notify-offset:var(--ds-space-16)}}
@media(prefers-reduced-motion:reduce){.ds-notify{animation:none}.ds-notify[data-leaving=true]{transition:none}}
.ds-discount-card{display:flex;align-items:center;gap:var(--ds-space-4);padding:var(--ds-space-2) var(--ds-space-4) var(--ds-space-2) var(--ds-space-2);border:1px solid var(--ds-accent);border-radius:var(--ds-radius-lg);background:var(--ds-paper);min-width:0}.ds-discount-value{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--ds-space-16);height:var(--ds-space-16);border-radius:var(--ds-radius-md);background:var(--ds-accent-soft);color:var(--ds-accent);font-size:var(--ds-text-xl);font-weight:var(--ds-weight-semibold);text-align:center;line-height:1.1}.ds-discount-body{display:grid;gap:var(--ds-space-1);min-width:0;justify-items:start}.ds-discount-body p{margin:0;overflow-wrap:anywhere}.ds-discount-title{font-size:var(--ds-text-md);font-weight:var(--ds-weight-semibold)}.ds-discount-text{color:var(--ds-muted);font-size:var(--ds-text-sm)}.ds-discount-scope{color:var(--ds-muted);font-size:var(--ds-text-xs)}.ds-discount-card[data-size=sm] .ds-discount-value{width:var(--ds-space-12);height:var(--ds-space-12);font-size:var(--ds-text-lg)}
.ds-discount-option{display:flex;align-items:center;gap:var(--ds-space-3);cursor:pointer;min-width:0}.ds-discount-option>.ds-discount-card{flex:1;border-color:var(--ds-line)}.ds-discount-option:has(:checked)>.ds-discount-card{border-color:var(--ds-ink);box-shadow:0 0 0 1px var(--ds-ink)}.ds-discount-option:has(:focus-visible)>.ds-discount-card{outline:3px solid var(--ds-focus);outline-offset:2px}
@media(max-width:700px){.ds-discount-option{min-height:var(--ds-touch-target)}.ds-discount-card{gap:var(--ds-space-3)}}
.ds-action-list{display:grid;margin:0;padding:0;list-style:none;border:1px solid var(--ds-line);border-radius:var(--ds-radius-panel);background:var(--ds-paper);min-width:0}.ds-action-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--ds-space-3) var(--ds-space-6);padding:var(--ds-space-4) var(--ds-space-5);border-bottom:1px solid var(--ds-line)}.ds-action-row:last-child{border-bottom:0}.ds-action-row-main{display:grid;gap:var(--ds-space-1);flex:1 1 320px;min-width:0}.ds-action-row-title{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ds-space-2);overflow-wrap:anywhere;font-size:var(--ds-text-sm)}.ds-action-row-line{margin:0;color:var(--ds-muted);font-size:var(--ds-text-sm);overflow-wrap:anywhere}.ds-action-row-quote{margin:0;padding-left:var(--ds-space-3);border-left:2px solid var(--ds-line);font-size:var(--ds-text-sm);overflow-wrap:anywhere}.ds-action-row-error{margin:0;color:var(--ds-danger);font-size:var(--ds-text-xs)}.ds-action-row-meta{margin:0;color:var(--ds-muted);font-size:var(--ds-text-xs)}.ds-action-row-actions{display:flex;flex-wrap:wrap;gap:var(--ds-space-2)}.ds-action-row[data-empty=true]{justify-content:center}
@media(max-width:700px){.ds-action-row{padding:var(--ds-space-4)}.ds-action-row-actions{width:100%}.ds-action-row-actions>.ds-button{flex:1 1 0;min-height:var(--ds-touch-target)}}

/* Catalog v0.1 (02.11.2026, owner decision): cabin card, compact search bar, map markers. */
.ds-stay-card {
  min-width: 0;
  color: var(--ds-ink);
  cursor: pointer;
}
.ds-stay-card:hover .ds-stay-title a {
  text-decoration: underline;
}
.ds-stay-media {
  position: relative;
  aspect-ratio: 4 / 3.3;
  margin-bottom: var(--ds-space-3);
  overflow: hidden;
  border-radius: var(--ds-radius-panel);
  background: var(--ds-soft);
}
.ds-stay-strip {
  display: flex;
  height: 100%;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
}
.ds-stay-strip::-webkit-scrollbar {
  display: none;
}
.ds-stay-strip > img {
  flex: 0 0 100%;
  width: 100%;
  height: 100%;
  object-fit: cover;
  scroll-snap-align: start;
}
.ds-stay-empty {
  display: grid;
  place-items: center;
  width: 100%;
  color: var(--ds-muted);
  font-size: var(--ds-text-sm);
}
.ds-stay-cover {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.ds-stay-dots {
  position: absolute;
  left: 50%;
  bottom: var(--ds-space-3);
  display: flex;
  gap: var(--ds-space-1);
  transform: translateX(-50%);
}
.ds-stay-dots i {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--ds-paper);
  opacity: 0.55;
}
.ds-stay-dots i.is-current {
  opacity: 1;
}
.ds-stay-arrow {
  position: absolute;
  top: 50%;
  left: var(--ds-space-2);
  display: none;
  place-items: center;
  width: 32px;
  height: 32px;
  border: 0;
  border-radius: 50%;
  background: var(--ds-paper);
  color: var(--ds-ink);
  box-shadow: var(--ds-overlay-shadow);
  transform: translateY(-50%);
  opacity: 0;
  cursor: pointer;
  transition: opacity var(--ds-motion-fast);
}
.ds-stay-arrow[data-step='1'] {
  left: auto;
  right: var(--ds-space-2);
}
@media (hover: hover) and (min-width: 720px) {
  .ds-stay-arrow {
    display: grid;
  }
  .ds-stay-media:hover .ds-stay-arrow,
  .ds-stay-arrow:focus-visible {
    opacity: 1;
  }
}
.ds-stay-save {
  position: absolute;
  top: var(--ds-space-2);
  right: var(--ds-space-2);
  display: grid;
  place-items: center;
  width: var(--ds-touch-target);
  height: var(--ds-touch-target);
  border: 0;
  background: transparent;
  color: var(--ds-paper);
  cursor: pointer;
  filter: drop-shadow(0 1px 2px color-mix(in srgb, var(--ds-ink) 45%, transparent));
}
/* The heart reads at a glance on the photo: 28px (between the 24 and 32 steps), above the 18px icon default. */
.ds-stay-save .ds-icon {
  width: calc(var(--ds-space-6) + var(--ds-space-1));
  height: calc(var(--ds-space-6) + var(--ds-space-1));
  stroke-width: 2;
}
.ds-stay-save[aria-pressed='true'] svg {
  fill: var(--ds-accent-2);
  stroke: var(--ds-paper);
}
.ds-stay-badges {
  position: absolute;
  top: var(--ds-space-3);
  left: var(--ds-space-3);
  display: grid;
  justify-items: start;
  gap: var(--ds-space-1);
}
.ds-stay-badge {
  padding: var(--ds-space-1) var(--ds-space-2);
  border-radius: var(--ds-radius-pill);
  background: var(--ds-paper);
  color: var(--ds-ink);
  font-size: var(--ds-text-xs);
  font-weight: var(--ds-weight-semibold);
}
.ds-stay-badge[data-tone='promo'] {
  background: color-mix(in srgb, var(--ds-ink) 80%, transparent);
  color: var(--ds-paper);
}
.ds-stay-badge[data-tone='deal'] {
  background: var(--ds-accent-2-soft);
  color: var(--ds-accent-2-ink);
}
/* Paid TOP (owner decision 02.11.2026): the catalog's second accent; the label is a button. */
.ds-stay-badge[data-tone='top'] {
  background: var(--ds-accent-2);
  color: var(--ds-accent-2-ink);
}
button.ds-stay-badge {
  border: 0;
  font-family: inherit;
  line-height: inherit;
  cursor: pointer;
}
button.ds-stay-badge:focus-visible {
  outline: 3px solid var(--ds-focus);
  outline-offset: 2px;
}
/* The touch target of a small label grows invisibly to 44px. */
@media (pointer: coarse) {
  button.ds-stay-badge {
    position: relative;
  }
  button.ds-stay-badge::before {
    content: '';
    position: absolute;
    inset: calc(var(--ds-space-3) * -1) calc(var(--ds-space-2) * -1);
  }
}
/* The panel is drawn outside the card (a spread shadow), so the grid does not shift or scroll sideways. */
.ds-stay-card[data-highlight='true'] {
  border-radius: var(--ds-radius-panel);
  background: var(--ds-accent-2-soft);
  box-shadow: 0 0 0 var(--ds-space-2) var(--ds-accent-2-soft);
}
.ds-stay-head {
  display: flex;
  justify-content: space-between;
  gap: var(--ds-space-2);
}
.ds-stay-title {
  margin: 0;
  font-size: var(--ds-text-md);
  font-weight: var(--ds-weight-semibold);
}
.ds-stay-title a {
  color: inherit;
  text-decoration: none;
}
.ds-stay-title a:hover {
  text-decoration: underline;
}
.ds-stay-rating {
  display: inline-flex;
  align-items: center;
  gap: var(--ds-space-1);
  white-space: nowrap;
  font-size: var(--ds-text-sm);
}
.ds-stay-rating svg {
  fill: currentColor;
}
.ds-stay-rating span {
  color: var(--ds-muted);
}
.ds-stay-meta {
  margin: var(--ds-space-1) 0 0;
  color: var(--ds-muted);
  font-size: var(--ds-text-sm);
}
.ds-stay-price {
  margin: var(--ds-space-2) 0 0;
  font-size: var(--ds-text-sm);
}
.ds-stay-price strong {
  font-size: var(--ds-text-md);
}
.ds-stay-price-note {
  color: var(--ds-muted);
}
.ds-stay-mode {
  display: inline-flex;
  align-items: center;
  gap: var(--ds-space-1);
  margin: var(--ds-space-1) 0 0;
  color: var(--ds-muted);
  font-size: var(--ds-text-xs);
}
.ds-stay-mode[data-mode='online'] {
  padding: var(--ds-space-1) var(--ds-space-2);
  border-radius: var(--ds-radius-pill);
  background: var(--ds-status-booked-bg);
  color: var(--ds-status-booked-ink);
  font-weight: var(--ds-weight-semibold);
}
.ds-search-bar {
  display: flex;
  align-items: center;
  width: 100%;
  min-height: 52px;
  padding: var(--ds-space-2) var(--ds-space-4);
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-pill);
  background: var(--ds-paper);
  color: var(--ds-ink);
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.ds-search-bar:hover {
  border-color: var(--ds-control-border);
}
.ds-search-bar-compact {
  display: flex;
  align-items: center;
  gap: var(--ds-space-3);
  min-width: 0;
}
.ds-search-bar-text {
  display: grid;
  min-width: 0;
  line-height: 1.3;
}
.ds-search-bar-text strong,
.ds-search-bar-text span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ds-search-bar-text span {
  color: var(--ds-muted);
  font-size: var(--ds-text-xs);
}
.ds-search-bar-parts {
  display: none;
}
@media (min-width: 720px) {
  .ds-search-bar {
    min-height: 60px;
    padding: var(--ds-space-1) var(--ds-space-1) var(--ds-space-1) var(--ds-space-6);
    box-shadow: var(--ds-overlay-shadow);
  }
  .ds-search-bar-compact {
    display: none;
  }
  .ds-search-bar-parts {
    display: grid;
    grid-template-columns: 1.3fr 1fr 1fr auto;
    align-items: center;
    width: 100%;
  }
  .ds-search-bar-part {
    display: grid;
    min-width: 0;
    padding: 0 var(--ds-space-4);
    border-left: 1px solid var(--ds-line);
    font-size: var(--ds-text-sm);
  }
  .ds-search-bar-part:first-child {
    padding-left: 0;
    border-left: 0;
  }
  .ds-search-bar-part small {
    font-size: var(--ds-text-xs);
    font-weight: var(--ds-weight-semibold);
  }
  .ds-search-bar-part span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .ds-search-bar-go {
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: var(--ds-action);
    color: var(--ds-action-ink);
  }
}
.ds-map-marker {
  display: inline-flex;
  align-items: center;
  gap: var(--ds-space-1);
  padding: var(--ds-space-1) var(--ds-space-3);
  border-radius: var(--ds-radius-pill);
  background: var(--ds-paper);
  color: var(--ds-ink);
  box-shadow: 0 2px 6px color-mix(in srgb, var(--ds-ink) 20%, transparent);
  font: var(--ds-weight-semibold) var(--ds-text-xs) / 1.2 var(--ds-font);
  white-space: nowrap;
  transform: translate(-50%, -50%);
}
.ds-map-marker[data-active='true'] {
  background: var(--ds-ink);
  color: var(--ds-paper);
  transform: translate(-50%, -50%) scale(1.08);
}
.ds-map-cluster[data-active='true'] {
  background: var(--ds-ink);
  outline-color: color-mix(in srgb, var(--ds-ink) 25%, transparent);
}
.ds-map-cluster {
  display: grid;
  place-items: center;
  align-content: center;
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: var(--ds-accent);
  color: var(--ds-paper);
  outline: 6px solid color-mix(in srgb, var(--ds-accent) 25%, transparent);
  font: var(--ds-weight-semibold) var(--ds-text-lg) / 1 var(--ds-font);
  transform: translate(-50%, -50%);
}
.ds-map-cluster small {
  max-width: 56px;
  overflow: hidden;
  font-size: var(--ds-text-xs);
  font-weight: var(--ds-weight-regular);
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* Consent banner: a quiet card in the bottom left corner; a bottom sheet on phones. */
.ds-consent-banner {
  position: fixed;
  left: var(--ds-space-6);
  bottom: var(--ds-space-6);
  z-index: 1000;
  display: grid;
  gap: var(--ds-space-3);
  width: min(440px, calc(100% - 2 * var(--ds-space-6)));
  padding: var(--ds-space-4) var(--ds-space-5);
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-panel);
  background: var(--ds-paper);
  box-shadow: var(--ds-overlay-shadow);
  color: var(--ds-ink);
  font-size: var(--ds-text-sm);
  line-height: var(--ds-leading-snug);
}
.ds-consent-banner-text {
  margin: 0;
}
.ds-consent-banner-more {
  color: var(--ds-ink);
  text-decoration: underline;
}
.ds-consent-banner-actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--ds-space-2);
}
@media (max-width: 700px) {
  .ds-consent-banner {
    left: 0;
    bottom: 0;
    width: 100%;
    padding: var(--ds-space-4) var(--ds-mobile-gutter) calc(var(--ds-space-4) + var(--ds-safe-bottom));
    border-width: 1px 0 0;
    border-radius: var(--ds-radius-panel) var(--ds-radius-panel) 0 0;
  }
  .ds-consent-banner-actions > .ds-button {
    flex: 1;
    min-height: var(--ds-touch-target);
  }
}
/* Date picker as a dropdown under its field (display: 'dropdown', desktop only; phones keep the bottom sheet). */
.ds-range-picker[data-display='dropdown'] {
  position: relative;
}
@media (min-width: 701px) {
  .ds-range-dialog.ds-range-dropdown {
    position: absolute;
    left: 0;
    right: auto;
    z-index: 40;
    width: 100%;
    min-width: 320px;
    max-height: none;
    margin: var(--ds-space-2) 0 0;
    border: 1px solid var(--ds-line);
  }
  .ds-range-dropdown > .ds-range-panel {
    padding: var(--ds-space-4);
  }
  .ds-range-dropdown .ds-range-footer {
    position: static;
    margin: var(--ds-space-3) 0 0;
    padding: var(--ds-space-3) 0 0;
    box-shadow: none;
  }
  .ds-range-dropdown .ds-range-footer > .ds-button[data-variant='secondary'] {
    display: none;
  }
}


/* Platform admin (prototype admin-v1, owner decision 03.11.2026): grouped side menu, task tiles,
   before/after of listing changes, the decision panel; media in action rows; «Рекомендуємо» label. */
.ds-action-row[data-media='true'] {
  flex-wrap: nowrap;
}
.ds-action-row-media {
  flex: none;
}
.ds-action-row-media > img {
  display: block;
  width: 72px;
  height: 56px;
  border-radius: var(--ds-radius-md);
  object-fit: cover;
  background: var(--ds-soft);
}
.ds-admin-nav-toggle,
.ds-admin-nav-dialog {
  display: none;
}
.ds-admin-nav-title {
  margin: var(--ds-space-6) 0 var(--ds-space-2);
  padding: 0 var(--ds-space-3);
  color: var(--ds-muted);
  font-size: var(--ds-text-xs);
  font-weight: var(--ds-weight-semibold);
}
.ds-admin-nav-groups > .ds-admin-nav-title:first-child {
  margin-top: 0;
}
.ds-admin-nav-list {
  display: grid;
  gap: var(--ds-space-1);
  margin: 0;
  padding: 0;
  list-style: none;
}
.ds-admin-nav-link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--ds-space-2);
  min-height: 40px;
  padding: var(--ds-space-2) var(--ds-space-3);
  border-radius: var(--ds-radius-md);
  color: var(--ds-ink);
  font-size: var(--ds-text-sm);
  text-decoration: none;
}
.ds-admin-nav-link:hover {
  background: var(--ds-soft);
}
.ds-admin-nav-link[aria-current='page'] {
  background: var(--ds-paper);
  font-weight: var(--ds-weight-semibold);
  box-shadow: inset 0 0 0 1px var(--ds-line);
}
.ds-admin-nav-dialog[open] {
  display: block;
  width: min(420px, calc(100vw - var(--ds-space-8)));
  max-height: calc(100vh - var(--ds-space-8));
  padding: var(--ds-space-5);
  border: 0;
  border-radius: var(--ds-radius-panel);
  background: var(--ds-paper);
  color: var(--ds-ink);
}
.ds-admin-nav-dialog::backdrop {
  background: color-mix(in srgb, var(--ds-ink) 40%, transparent);
}
.ds-admin-nav-dialog-head {
  margin-bottom: var(--ds-space-4);
  font-weight: var(--ds-weight-semibold);
}
.ds-admin-nav-dialog > .ds-button {
  position: absolute;
  top: var(--ds-space-4);
  right: var(--ds-space-4);
}
.ds-task-tiles {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: var(--ds-space-4);
}
.ds-task-tile {
  display: grid;
  gap: var(--ds-space-1);
  align-content: start;
  padding: var(--ds-space-5);
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-panel);
  background: var(--ds-paper);
  color: var(--ds-ink);
  font: inherit;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
}
.ds-task-tile:hover {
  border-color: var(--ds-ink);
}
.ds-task-count {
  font-size: var(--ds-text-2xl);
  font-weight: var(--ds-weight-semibold);
}
.ds-task-label {
  font-weight: var(--ds-weight-semibold);
}
.ds-task-note,
.ds-task-empty {
  margin: 0;
  color: var(--ds-muted);
  font-size: var(--ds-text-xs);
}
.ds-change-list {
  display: grid;
  gap: var(--ds-space-5);
  margin: 0;
  padding: 0;
  list-style: none;
}
.ds-change {
  display: grid;
  gap: var(--ds-space-2);
}
.ds-change-field {
  margin: 0;
  font-size: var(--ds-text-sm);
}
.ds-change-pair {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--ds-space-2);
}
.ds-change-side {
  display: grid;
  gap: var(--ds-space-1);
  padding: var(--ds-space-3);
  border-radius: var(--ds-radius-md);
  font-size: var(--ds-text-sm);
  overflow-wrap: anywhere;
}
.ds-change-side[data-kind='before'] {
  background: var(--ds-soft);
  color: var(--ds-muted);
}
.ds-change-side[data-kind='after'] {
  background: var(--ds-status-booked-bg);
  color: var(--ds-status-booked-ink);
}
.ds-change-label {
  font-size: var(--ds-text-xs);
  font-weight: var(--ds-weight-semibold);
}
.ds-change-text {
  margin: 0;
  white-space: pre-line;
}
.ds-change-photos {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  gap: var(--ds-space-2);
}
.ds-change-photo {
  position: relative;
  margin: 0;
}
.ds-change-photo img {
  width: 100%;
  aspect-ratio: 4 / 3;
  border-radius: var(--ds-radius-md);
  object-fit: cover;
  background: var(--ds-soft);
}
.ds-change-photo .ds-badge {
  position: absolute;
  top: var(--ds-space-2);
  left: var(--ds-space-2);
}
.ds-change-rest {
  margin: var(--ds-space-4) 0 0;
  color: var(--ds-muted);
  font-size: var(--ds-text-sm);
}
.ds-decision {
  display: grid;
  gap: var(--ds-space-4);
  padding: var(--ds-space-5);
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-panel);
  background: var(--ds-paper);
}
.ds-decision-title {
  margin: 0;
  font-size: var(--ds-text-md);
}
.ds-decision-lead {
  margin: 0;
  color: var(--ds-muted);
  font-size: var(--ds-text-sm);
}
.ds-decision-notice:empty {
  display: none;
}
.ds-decision-actions {
  display: grid;
  gap: var(--ds-space-2);
}
.ds-decision-actions .ds-button {
  width: 100%;
}
.ds-stay-badge[data-tone='pick'] {
  background: var(--ds-accent-soft);
  color: var(--ds-accent);
}
@media (max-width: 760px) {
  .ds-admin-nav > .ds-admin-nav-groups {
    display: none;
  }
  .ds-admin-nav-toggle {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
    width: 100%;
    min-height: 44px;
    padding: var(--ds-space-2) var(--ds-space-4);
    border: 1px solid var(--ds-line);
    border-radius: var(--ds-radius-pill);
    background: var(--ds-paper);
    color: var(--ds-ink);
    font: inherit;
    font-size: var(--ds-text-sm);
    cursor: pointer;
  }
  .ds-admin-nav-toggle-label {
    flex: 1;
    text-align: left;
  }
  .ds-action-row[data-media='true'] {
    flex-wrap: wrap;
  }
  .ds-change-pair {
    grid-template-columns: minmax(0, 1fr);
  }
  .ds-task-tiles {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--ds-space-3);
  }
}
