/*!
 * Altegio Utilities — themable CSS primitives
 *
 * Drop-in classes the agent (and theme code) compose into UI. Designed to
 * inherit theme colors via CSS custom properties, with sensible fallbacks.
 *
 * Naming: BEM-ish — .altegio-block, .altegio-block__element, .altegio-block--modifier.
 *
 * Theming knobs (override in your theme's :root or per-block):
 *   --altegio-gap                 spacing between grid items (default 16px)
 *   --altegio-card-bg             card background (default: theme surface or #fff)
 *   --altegio-card-border         card border color (default: theme outline or #e5e5e5)
 *   --altegio-card-radius         card border-radius (default 12px)
 *   --altegio-card-padding        card inner padding (default 16px)
 *   --altegio-card-shadow         card box-shadow (default subtle)
 *   --altegio-accent              accent color for prices, ratings, CTA bg (default #3A82FF)
 *   --altegio-accent-fg           accent foreground (default #fff)
 *   --altegio-text                primary text color (default inherit)
 *   --altegio-text-muted          muted text color (default 60% opacity)
 *   --altegio-button-radius       button border-radius (default 8px)
 *   --altegio-avatar-size         default avatar size (default 64px)
 *
 * Version: 0.2.0
 */
 :where([data-altegio]),:where(.altegio-grid),:where(.altegio-card),:where(.altegio-button),:where(.altegio-stack){--altegio-gap:16px;--altegio-card-bg:var(--surface-1, #ffffff);--altegio-card-border:var(--outline-variant, #e5e5e5);--altegio-card-radius:12px;--altegio-card-padding:16px;--altegio-card-shadow:0 1px 2px rgba(0, 0, 0, 0.04), 0 4px 12px rgba(0, 0, 0, 0.06);--altegio-accent:var(--primary, #3A82FF);--altegio-accent-fg:var(--on-primary, #ffffff);--altegio-text:var(--on-surface, inherit);--altegio-text-muted:var(--on-surface-variant, rgba(0, 0, 0, 0.6));--altegio-button-radius:8px;--altegio-avatar-size:64px;--altegio-rating-color:#f0a800}.altegio-stack{display:flex;flex-direction:column;gap:var(--altegio-gap)}.altegio-stack--row{flex-direction:row;flex-wrap:wrap;align-items:center}.altegio-stack--center{align-items:center;justify-content:center}.altegio-stack--between{justify-content:space-between}.altegio-stack--end{justify-content:flex-end}.altegio-stack--gap-xs{gap:4px}.altegio-stack--gap-sm{gap:8px}.altegio-stack--gap-md{gap:16px}.altegio-stack--gap-lg{gap:24px}.altegio-stack--gap-xl{gap:32px}.altegio-grid{display:grid;gap:var(--altegio-gap);grid-template-columns:repeat(auto-fill,minmax(min(100%, 240px),1fr))}.altegio-grid--1col{grid-template-columns:1fr}.altegio-grid--2col{grid-template-columns:repeat(2,1fr)}.altegio-grid--3col{grid-template-columns:repeat(3,1fr)}.altegio-grid--4col{grid-template-columns:repeat(4,1fr)}.altegio-grid--auto{grid-template-columns:repeat(auto-fill,minmax(min(100%, 280px),1fr))}.altegio-grid--auto-sm{grid-template-columns:repeat(auto-fill,minmax(min(100%, 180px),1fr))}.altegio-grid--auto-lg{grid-template-columns:repeat(auto-fill,minmax(min(100%, 360px),1fr))}@media (max-width:900px){.altegio-grid--3col,.altegio-grid--4col{grid-template-columns:repeat(2,1fr)}}@media (max-width:560px){.altegio-grid--2col,.altegio-grid--3col,.altegio-grid--4col{grid-template-columns:1fr}}.altegio-card{background:var(--altegio-card-bg);border:1px solid var(--altegio-card-border);border-radius:var(--altegio-card-radius);padding:var(--altegio-card-padding);color:var(--altegio-text);display:flex;flex-direction:column;gap:12px;transition:border-color 0.15s ease,box-shadow 0.2s ease,transform 0.2s ease}.altegio-card--interactive{cursor:pointer}.altegio-card--interactive:hover,.altegio-card--interactive:focus-within{border-color:var(--altegio-accent);box-shadow:var(--altegio-card-shadow)}.altegio-card--elevated{border-color:#fff0;box-shadow:var(--altegio-card-shadow)}.altegio-card--flat{border-color:#fff0;background:#fff0;padding:0}.altegio-card--compact{--altegio-card-padding:12px;gap:8px}.altegio-card--horizontal{flex-direction:row;align-items:stretch;gap:16px}.altegio-card__media{border-radius:calc(var(--altegio-card-radius) - 4px);overflow:hidden;background:var(--altegio-card-border);aspect-ratio:16 / 10}.altegio-card__media img,.altegio-card__media video{width:100%;height:100%;object-fit:cover;display:block}.altegio-card__title{font-weight:600;font-size:1.05em;line-height:1.3;margin:0}.altegio-card__subtitle{color:var(--altegio-text-muted);font-size:.875em;line-height:1.4;margin:0}.altegio-card__description{color:var(--altegio-text-muted);font-size:.92em;line-height:1.5;margin:0}.altegio-card__meta{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:.875em;color:var(--altegio-text-muted)}.altegio-card__footer{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:12px}.altegio-price{font-weight:700;color:var(--altegio-accent);white-space:nowrap;display:inline-flex;align-items:baseline;gap:4px}.altegio-price--lg{font-size:1.5em}.altegio-price--sm{font-size:.95em}.altegio-price__from{font-size:.75em;font-weight:400;color:var(--altegio-text-muted)}.altegio-price__currency{font-size:.85em;font-weight:500}.altegio-price__strikethrough{text-decoration:line-through;color:var(--altegio-text-muted);font-weight:400}.altegio-duration{display:inline-flex;align-items:center;gap:4px;color:var(--altegio-text-muted);font-size:.875em}.altegio-duration::before{content:"⏱";font-size:1em;opacity:.7}.altegio-avatar{width:var(--altegio-avatar-size);height:var(--altegio-avatar-size);flex:0 0 auto;background:var(--altegio-card-border);display:inline-block;overflow:hidden;position:relative}.altegio-avatar img{width:100%;height:100%;object-fit:cover;display:block}.altegio-avatar--circle{border-radius:50%}.altegio-avatar--rounded{border-radius:12px}.altegio-avatar--square{border-radius:0}.altegio-avatar--sm{--altegio-avatar-size:40px}.altegio-avatar--md{--altegio-avatar-size:64px}.altegio-avatar--lg{--altegio-avatar-size:96px}.altegio-avatar--xl{--altegio-avatar-size:128px}.altegio-avatar--full{--altegio-avatar-size:100%;aspect-ratio:1;height:auto}.altegio-rating{display:inline-flex;align-items:center;gap:4px;color:var(--altegio-rating-color);font-weight:600;font-size:.95em}.altegio-rating__stars{letter-spacing:1px;font-size:1em}.altegio-rating__value{color:var(--altegio-text)}.altegio-rating__count{color:var(--altegio-text-muted);font-weight:400;font-size:.875em}.altegio-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;border:1px solid #fff0;border-radius:var(--altegio-button-radius);background:var(--altegio-accent);color:var(--altegio-accent-fg);font-weight:600;font-size:.95em;text-decoration:none;cursor:pointer;white-space:nowrap;transition:filter 0.15s,transform 0.05s,box-shadow 0.2s;appearance:none;font-family:inherit;line-height:1}.altegio-button:hover{filter:brightness(.92)}.altegio-button:active{transform:translateY(1px)}.altegio-button:focus-visible{outline:2px solid var(--altegio-accent);outline-offset:2px}.altegio-button[disabled]{opacity:.5;cursor:not-allowed;filter:none;transform:none}.altegio-button--ghost{background:#fff0;color:var(--altegio-accent);border-color:var(--altegio-accent)}.altegio-button--ghost:hover{background:color-mix(in srgb,var(--altegio-accent) 8%,transparent);filter:none}.altegio-button--text{background:#fff0;color:var(--altegio-accent);padding:6px 8px}.altegio-button--text:hover{background:color-mix(in srgb,var(--altegio-accent) 8%,transparent);filter:none}.altegio-button--lg{padding:14px 28px;font-size:1em}.altegio-button--sm{padding:6px 12px;font-size:.85em}.altegio-button--block{display:flex;width:100%}.altegio-tag{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;background:color-mix(in srgb,var(--altegio-accent) 10%,transparent);color:var(--altegio-accent);border-radius:999px;font-size:.75em;font-weight:600;letter-spacing:.02em}.altegio-tag--neutral{background:var(--altegio-card-border);color:var(--altegio-text-muted)}.altegio-section{display:flex;flex-direction:column;gap:24px}.altegio-section__header{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.altegio-section__title{margin:0;font-size:1.5em;font-weight:700;line-height:1.2}.altegio-section__subtitle{color:var(--altegio-text-muted);font-size:1em;margin:0}.altegio-empty{text-align:center;padding:48px 16px;color:var(--altegio-text-muted);border:1px dashed var(--altegio-card-border);border-radius:var(--altegio-card-radius)}.altegio-empty__title{font-weight:600;margin-bottom:4px}.altegio-skeleton{background:linear-gradient(90deg,var(--altegio-card-border) 0%,color-mix(in srgb,var(--altegio-card-border) 60%,transparent) 50%,var(--altegio-card-border) 100%);background-size:200% 100%;animation:altegio-shimmer 1.4s infinite linear;border-radius:4px;height:1em}@keyframes altegio-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}.altegio-booking{--altegio-step-indicator-color:var(--altegio-accent);display:flex;flex-direction:column;gap:24px;max-width:720px;margin:0 auto}.altegio-booking__steps{display:flex;align-items:center;gap:8px;font-size:.875em;color:var(--altegio-text-muted);flex-wrap:wrap}.altegio-booking__step{display:inline-flex;align-items:center;gap:6px}.altegio-booking__step--active{color:var(--altegio-text);font-weight:600}.altegio-booking__step::before{content:counter(altegio-step);counter-increment:altegio-step;width:24px;height:24px;border-radius:50%;background:var(--altegio-card-border);display:inline-flex;align-items:center;justify-content:center;font-size:.75em;font-weight:700}.altegio-booking__steps{counter-reset:altegio-step}.altegio-booking__step--active::before{background:var(--altegio-step-indicator-color);color:var(--altegio-accent-fg)}.altegio-time-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:8px}.altegio-time-slot{border:1px solid var(--altegio-card-border);border-radius:8px;padding:8px 4px;text-align:center;font-weight:600;font-size:.95em;background:var(--altegio-card-bg);cursor:pointer;transition:border-color 0.1s,background 0.1s}.altegio-time-slot:hover{border-color:var(--altegio-accent)}.altegio-time-slot--selected{border-color:var(--altegio-accent);background:var(--altegio-accent);color:var(--altegio-accent-fg)}.altegio-time-slot[disabled]{opacity:.4;cursor:not-allowed}.altegio-field{display:flex;flex-direction:column;gap:6px}.altegio-field__label{font-size:.875em;font-weight:600;color:var(--altegio-text)}.altegio-field__hint{font-size:.75em;color:var(--altegio-text-muted)}.altegio-field__control{padding:10px 12px;border:1px solid var(--altegio-card-border);border-radius:8px;background:var(--altegio-card-bg);color:var(--altegio-text);font:inherit;width:100%}.altegio-field__control:focus{outline:2px solid var(--altegio-accent);outline-offset:-1px;border-color:var(--altegio-accent)}.altegio-field__error{font-size:.75em;color:#d33b3b}.altegio-visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}